要知道如何用你正在使用的編程語言來**讀取**和**寫入**文件,并且要知道如何生成**隨機數**。
### 數學
你并不是在面試數學相關的職位,但考慮到我們被計數和測量的問題所包圍,所以有一些數學概念也成了編程面試時關注的東西,比較重要的有質數、進制轉換([**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個不同的元素,然后再進行排序。這種排列可以用下面的公式來表達:
