2013 年 9 月 22 日微软校园招聘笔试题
2. 下面哪一项不能用于 Widows 中进程间通信?
A.
B.
C.
D.
3.
A.
B.
C.
D.
4.
A.
B.
C.
D.
命名事件
命名管道
临界区
共享内存
下面哪一种操作不是 stack 的基本操作?
入栈
出栈
检查是否为空
排序栈中元素
下面哪一种属于“creational”的设计模式?
Façade
Singleton
Bridge
Composite
E. 上面都不是
5.
A.
B.
当建立连接时,下面哪一个数据包发送顺序是正确的 TCP 握手协议过程?
SYN,SYN+ACK,SYN+ACK
SYN+ACK,SYN+ACK,SYN
C.
D.
SYN,SYN+ACK,RST
SYN,SYN,ACK
E. 以上都不是
6.
A.
B.
C.
D.
E.
7.
A.
B.
C.
D.
函数式编程的性质有?(TheCharacteristicsof functional programming are?)
Avoidof changing state and mutable data
Referentialtransparency
Lambdacalculus
Threadsafe
All of Above
关于 HTTP 协议说明,哪些是正确的?
在 CS 模式下,作为一种 request-response 协议
无状态,对每一个请求看成独立的
WWW 和 Email 使用的协议
HTTP 响应包括数字状态码,404 经常代表“PageNot Found”
E. 以上都不是
9.
4 个袋子,15 个球,每个袋子至少放一个球,而且袋子中的球数量不能重复,有多
少种方式?
A.
B.
C.
D.
4
5
6
7
11. 有两个 32bit 的数 A、B,使用下面方式得到 32bit 的数 C、D。哪一种可以使用 C、
D 得到 A、B 的值
A.
B.
C.
D.
E.
C=(int32)(A+B),D=(int32)(A-B)
C=(int32)(A+B),D=(int32)((A-B)>>1)
C=(int32)(A+B),D=B
C=(int32)(A+B),D=(int32)(A+2*B)
C=(int32)(A*B),D=(int32)(A/B)
12. 如果一个二叉树的前序遍历结果是 abcdefg,下面哪一个是可能的中序遍历结果?
ABCE
A.
B.
C.
D.
E.
abcdefg
gfedcba
bcdefga
bceadfg
bcdaefg
13.
T(n)=1(n<=1),T(n)=25+T(n/5)+n^2,T(n)复杂度是多少?B
A.
B.
C.
D.
E.
O(nlogn)
O(n^2logn)
O(n^2)
O(n^3)
O(n^3logn)
14. 两个线程运行在双核机器上,每个线程主程序如下,线程 1:x=1;r1=y;线程 2:
y=1;r2=x。x 和 y 是两个全局变量,初始为 0。以下哪一个是 r1 和 r2 的可能值?ABC
A.
B.
C.
D.
r1=1,r2=1
r1=1,r2=0
r1=0,r2=1
r1=0,r2=0
15. 有 n 个元素的完全二叉树的深度是:
A.
B.
C.
D.
D(n)=log2(n)
D(n)=1+log2(n)
D(n)=n+log2(n)
D(n)=1+n*log2(n)
16.
1,2,3,…999,1000?
A.
B.
C.
D.
189
191
193
195
2 月 28 日出生和 2 月 29 日出生的人的比例是多少?2012 年 2 月 28 日和 2012 年 2
17.
月 29 日出生的人的比例是多少?B
A.
B.
C.
D.
1:1 和 1:1
4:1 和 1:1
1:1 和 4:1
4:1 和 4:1
18. 下面哪些使用的是贪心算法
A.
B.
C.
D.
单源最短路径中的 Dijkstra 算法
最小生成树的 Prim 算法
最小生成树的 Kruskal 算法
计算每对顶点最短路径的 Floyd-Warshall 算法
E. 字符串匹配中的 KMP 算法
19.
Class A{
Public:
Intk1;int k2;
};
一个数组 A a[5]={{3,4},{6,5},{2,7},{3,1},{1,2}}
下面哪一个是函数调用之后的结果
{{1,2},{2,7},{3,1},{3,4},{6,5}}
A.
B.
C.
D.
f1(a,5,cmp)
f2(a,5,cmp)
f3(a,5,cmp)
f4(a,5,cmp)
E. 以上都不对
20.
:: ||
:: |
::|
::a|b|c|…|y|z
::0|1|2|…|9
下面哪一个词可以从的规则中产生?Iabcd II bcdef III d22
A.
B.
C.
D.
E.
都不是
只有 I 和 II
只有 I 和 III
只有 II 和 III
I 和 II 和 III 都是
答案与分析:
2. 下面哪一项不能用于 Widows 中进程间通信?
A.
B.
C.
D.
命名事件
命名管道
临界区
共享内存
答案:C
Wiki 的结果是,Windows 中进程间通信方式有:File, 管道(Pipe),命名管道(named pipe),
信号(Signal),消息队列(Message queue),共享内存(shared memory),内存映射
(memory –mapped file),信号量(semaphore),套接口(Socket)。不太确定命名事
件(Named Event)这个对不对,查了一些资料,好像也没有提到的,但是有些进程间通信代
码会用到这个,有谁帮忙解释一下吗?而临界区事实上应该算是由信号量来保证的。
3.
下面哪一种操作不是 stack 的基本操作?
A.
B.
C.
D.
入栈
出栈
检查是否为空
排序栈中元素
答案:D
可以看一下 stack 的 ADT 结构,前三种都在基本操作函数中。
4.
A.
B.
C.
D.
下面哪一种属于“creational”的设计模式?
Façade
Singleton
Bridge
Composite
E. 上面都不是
答案:B
Creational 包括下面几种: Singleton ;Factory Method ;Abstract Factory;Builder ;
Prototype
5.
A.
B.
C.
D.
当建立连接时,下面哪一个数据包发送顺序是正确的 TCP 握手协议过程?
SYN,SYN+ACK,SYN+ACK
SYN+ACK,SYN+ACK,SYN
SYN,SYN+ACK,RST
SYN,SYN,ACK
E. 以上都不是
答案:E
这是握手的三次协议的更为详细的内容:
SYN, seqA
SYN, ACK=1,seqB, ack number=seqA+1
ACK=1, ack number=seqB+1
C 中 RST 意思为:连接复位 Resettinga connection。想重置连接时,会发送 RST 数据包。
所以有人说,C 应该也是可以的,因为可以在收到 SYN+ACK 后,设置发送 RST,而且这
种方式可以用在网络探测上,但是题目中明确说了是在建立 TCP 链接的时候正确的三次握
手协议,所以我认为答案应该是选择 E。
6.
A.
B.
C.
D.
E.
函数式编程的性质有?(TheCharacteristicsof functional programming are?)
Avoidof changing state and mutable data
Referentialtransparency
Lambdacalculus
Threadsafe
All of Above
答案:E
这个 wiki 了一下,也不太懂,貌似就是说 functionalprogramming 是种编程典范,它将电脑
运算视为数学意义上的函数的计算。在 wiki 中,avoidsstate and mutable data,
Lambdacalculus,Referential transparency 都有,Threadsafe 而是正确的。可以参考一下
这个 http://www.programmer.com.cn/12717/
7.
A.
B.
关于 HTTP 协议说明,哪些是正确的
在 CS 模式下,作为一种 request-response 协议
无状态,对每一个请求看成独立的