编程应该知道的事情
最后更新于:2022-04-01 04:26:03
要知道如何用你正在使用的编程语言来**读取**和**写入**文件,并且要知道如何生成**随机数**。
### 数学
你并不是在面试数学相关的职位,但考虑到我们被计数和测量的问题所包围,所以有一些数学概念也成了编程面试时关注的东西,比较重要的有质数、进制转换([**base conversions**](http://www.cs.trincoll.edu/~ram/cpsc110/inclass/conversions.html))和一些基本的组合数学。
对于**质数**,要大概知道为什么它们很重要,并且要知道每一个数都可以被分解成质数的和。你还得知道如何实现埃拉托斯特尼筛法([**sieve of Eratosthenes**](http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes))。
对于基本的组合数学,你得知道排列和组合。
**排列**是对一个集合中的数按照一定的次序或者顺序进行整理。比如对于集合{1,2,3},就有6种排列的方式,也就是(1,2,3)、(1,3,2)、(2,1,3)、(2,3,1)、(3,1,2)和(3,2,1)。n个不同数字的排列方式一共有n!种。
还有一种排列叫**部分排列**,也就是从n个数字的集合中取出k个不同的元素,然后再进行排序。这种排列可以用下面的公式来表达:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-10-23_5629f64e0befa.png)