|
1、 两个二进制数的异或结果 2、 递归函数最终会结束,那么这个函数一定(不定项选择): 1. 使用了局部变量 2. 有一个分支不调用自身 3. 使用了全局变量或者使用了一个或多个参数 3、以下函数的结果? int cal(int x) { if(x==0) return 0; else return x+cal(x-1); } 4、 以下程序的结果? void foo(int*a, int* b) { *a = *a+*b; *b = *a-*b; *a = *a-*b; } void main() { int a=1, b=2, c=3; foo(&a,&b); foo(&b,&c); foo(&c,&a); printf("%d, %d, %d", a,b,c); } 5、下面哪项不是链表优于数组的特点? 1. 方便删除 2. 方便插入 3. 长度可变 4. 存储空间小 6、T(n) = 25T(n/5)+n^2的时间复杂度? 7、n个顶点,m条边的全连通图,至少去掉几条边才能构成一棵树? 8、正则表达式(01|10|1001|0110)*与下列哪个表达式一样? 1.(0|1)* 2.(01|01)* 3.(01|10)* 4.(11|01)* 5.(01|1)* 9、如何减少换页错误? 1. 进程倾向于占用CPU 2. 访问局部性(locality of reference)满足进程要求 3. 进程倾向于占用I/O 4.使用基于最短剩余时间(shortest remaining time)的调度 机制 5. 减少页大小
10、实现两个N*N矩阵的乘法,矩阵由一维数组表示 11、找到单向链表中间那个元素,如果有两个则取前面一个 12、长度为n的整数数组,找出其中任意(n-1)个乘积最大的那一组,只能用乘法,不可 以用除法。要求对算法的时间复杂度和空间复杂度作出分析,不要求写程序。
面试时1V1 除了开场之外 都是真刀真抢的白纸上写程序
1.热身题:写个memmove函数,注意源地址和目标地址可能有重合的部分 一开始没有空间限制,开个临时空间,作为中间量,回避源地址和目标地址有重合的情况 之后不许使用临时空间,要求O(N) 利用指针的比较运算,决定从前开始拷贝还是从后开始拷贝 2.热身题:100!的结果中,末尾有几个0 其实就是1到100每个整数分解质因数,有几个5就有几个0
热身题注意细节,考官看的很仔细
3.围棋中,每下一子之后,判断那些棋子需要被提走 我用FloodFill做的 4. 给定一系列规则,形式如下A<B,B<C等等 之后判断一个命题的真假比如A<C 我是用传递闭包的W-F算法O(N^3)做的
还有一些写链表插入删除 二叉树插入删除 归并排序 等纯细节题目 剩下的实在没有印象 |