“小企鹅”IT公司,就是做IM的那个。“小企鹅”的笔试考得覆盖面比较全,但都比较基础,评记忆存档一份吧。由于记忆不全,有些题只给出描述,后面的括号是我当时的答案。
选择题:20*3=60分
1、R1、R2、R3三个组件,其中R1、R3串联,两个R2并联再和R1、R3串联,已经R1、R3的可靠性是c1,c3,如果想要整个系统的可靠性达到c,问R2的可靠性最少要达到多少?(c=c1*x*c3, x = 1-(1-c2)2 )
2、Fibonacci数列, f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2), n>=2, 问用简单递归方法f(5)总共做了几次加操作?(7次)
3、HTTP协议相关(是服务器与客户端协议,应用层协议)
4、有三个进程P1、P2、P3优先级为P1>P2>P3,分时抢占式占用单处理器,三个进程可以并行使用IO。如果每个进程都要CPU执行10S,IO操作13s,然后再CPU执行5s。问三个进程同时执行,问CPU空闲多少时间?(13s)
5、操作系统中所说的“颠簸”是指什么?(频繁的刚替换出去的内存页不久又被替换回来)
6、如果一个进程申请到了排它锁,可以进行读写?(可读可写)
7、if(x<500){
...
}else if(x<=2000){
}else{
}
给出满足覆盖率100%的测试用例?
8、SQL语句,s表,c表,sc表,求每门课的平均成绩,要求按两点排序。(AVG函数,然后需要group by子语)
9、一个算术表达式,求后缀表达式
10、一段程序:
for(int i=0;i<150;i++)
for(int j=0;j<100;j++)
A[i][j]=0;
为此段程序分配两个数据页,每个页面可存放150个int, 其中i、j已经存放到代码页中,初始时两个数据页为空,问执行此段程序共会
产生多少次页中断?(50次)
11、MST最小生成树,给一个图,图上边有权值,求MST的边权和。
12、MD5(消息摘要算法),问输出为多少比特位?(4个32位并联,共128位)
13、已经一棵二叉树,问通过左儿子右兄弟转化结果?
14、数据流图(DFD)、UML图、ER图中哪个用来表示数据流传送,数据加工过程?(DFD)
15、给一组数据,问经过qsort一次时结果?
16、给一个虚拟地址,给出页表,问转换后的物理地址?
17、5个点的权值分别是a、b、c、d、e,问构造5个叶子节点的哈夫曼树权值和?(原理一样,只不过比哈夫曼前缀编码表述不一样)
18、tcp协议中,关于send()与recv()的一些问题。send()成功是否表示数据已经接受成功。两次send()是否一次recv()就可以等等。
19、cache的原理哪些不正确?(增加了内存容量)
20、给一组数据进行排序,给出迭代三次结果,问是哪种排序?
程序填空题 4*10=40分
1、文字描述:创建单链表、单链表逆序
2、设计一个计算器,支持简单数字形式,即+-*/操作(支持括号)。
细节:操作是用函数跳转表、支持括号使用递归做的。相比前一题有难度。
附加题:不算成绩,只是给面试者参考
(C/C++方向)
文字描述:一个嵌入式设备,有一个连续8M的内存。程序运行会申请内存,有16B、16B~32B、32B~64B...128B~1K,并且每种块大小范围的请求有一定比例。让设计一个内存分配器,达到最佳性能。问如何使更多请求得到满足,估算内存利用率有多少?