ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
要知道如何用你正在使用的编程语言来**读取**和**写入**文件,并且要知道如何生成**随机数**。 ### 数学 你并不是在面试数学相关的职位,但考虑到我们被计数和测量的问题所包围,所以有一些数学概念也成了编程面试时关注的东西,比较重要的有质数、进制转换([**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://box.kancloud.cn/2015-10-23_5629f64e0befa.png)