2013 年度网易校园招聘笔试题集锦
第一部分(必做):计算机基础类
(所有的选择题都是多项选择)
1、假设进栈次序是 e1, e2, e3, e4,那可能的出栈次序是()
A、e2, e4, e3, e1
B、e2, e3, e4, e1
C、e3, e2, e4, e1
D、e1, e2, e4, e3
2、表达式 X=A+B*(C-D)/E 的后缀表示形式可以是()
A、XAB+CDE/-*=
B、XA+BC-DE/*=
C、XABCD-*E/+=
D、XABCDE+*/=
3、以下排序算法是非稳定排序的是()
A、冒泡排序
B、归并排序
C、快速排序
D、堆
排序
E、希尔排序
4、一个包含 n 个结点的四叉树,每一个节点都有 4 个指向孩子节点的指针,这 4n 个指针有
(3*n+1)个空指针.
4*n-(n-1) = 3*n+1
5、请问 func(0x7f530829)的返回值是()
[cpp] view plaincopyprint?
1. int
func(unsigned
int i)
2. {
3.
4.
5.
6.
7.
unsigned int
temp
=
i;
temp =
(temp
&
0x55555555)
+
((temp
&
0xaaaaaaaa)>>1);
temp =
(temp
&
0x33333333)
+
((temp
&
0xcccccccc)>>2);
temp =
(temp
&
0x0f0f0f0f)
+
((temp
&
0xf0f0f0f0)>>4);
temp =
(temp
&
0xff00ff)
+
((temp
&
0xff00ff00)>>8);
8.
9.
10. }
temp =
(temp
&
0xffff)
+
((temp
&
0xffff0000)>>16);
return
temp;
A、15
B、16
C、17
D、18
函数实现的是求二进制表示的时候,1 的个数,一共 15 个
最开始把每一个位看做一个节点,相邻节点值相加,结果用两个位表示。。。
然后每两个位看做一个节点,相邻节点值相加,结果用四个位表示。。。
以此类推,直到只剩下一个节点。。。
6、进程和线程的差别有()
A、操作系统只调度进程,不调度线程
B、线程共享内存地址空间,进程不共享
C、线程可以共享内存数据,但进程不可以
D、进程间可以通过 IPC 通信,但线程不可以
7、关于段页式管理中,地址映像表是()
A、每个进程一张段表,一张页表
B、进程的每个段一张段表,一张页表
C、每个进程一张段表,每个段一张页表
D、每个进程一张页表,每个段一张段表
8、关于 TCP 协议,下面哪种说法是错误的()
A、TCP 关闭连接过程中,两端的 socket 都会经过 TIME_WAIT 状态
B、对一个 Established 状态的 TCP 连接,调用 shutdown 函数可以让主动调用的一方进入半
关闭状态
C、TCP 协议默认保证了当 TCP 的一端发生意外崩溃(当机、网线断开或路由器故障),另
一端能自动检测到连接失效
D、在成功建立连接的 TCP 上,只有在 Established 状态才能收发数据,其他状态都不可以。
9、关于主键 Primary Key 和索引 index 的说法哪些是错误的?()
A、唯一索引的列允许为 NULL 值
B、一个关系表中的外键必定是另一表中的主键
C、一个表中只能有一个唯一性索引
D、索引主要影响查询过程,对数据的插入影响不大
10、数据库的事务隔离级别一般分为 4 个级别,其中可能发生“不可重复读”的事物级别有
()
A、SERIALIZABLE
B、READ COMMITTED
C、READ UNCOMMITTED
D、REPEATABLE READ
11、如果 F(n)为该数列的第 n 项,那么这句话可以写成如下形式:
F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2) (n>=3)
请实现该函数 F(n)的求解,并给出算法复杂度,要求算法复杂度小于 O(n^2)。
思路:使用矩阵的二分求幂可以明显加快速度,减少空间复杂度。
第二 部分(必做):程序设计
1、下面的程序的输出是什么?
[cpp] view plaincopyprint?
1. #include
2.
3. int
main(void)
int
n;
char
y[10]
=
"ntse";
char
*x
=
y;
n
=
strlen(x);
*x
=
x[n];
x++;
printf("x=%s\n",x);
printf("y=%s\n",y);
return
0;
4. {
5.
6.
7.
8.
9.
10.
11.
12.
13.
14. }
输出:
x=tse
y=
因为 n=4,则*x = x[n]; 的功能是将 x 指向的第一个字符 n 修改为\0,这样 y 字符串就
结束了,所以第二输出为空,x++操作后,x 指向第二个字符 t,所以第一个输出为:tse。
2、请给出下面程序的输出结果,并说明原因。
[cpp] view plaincopyprint?
1. #include
2. #include
3. using
namespace
std;
4.
5. template
6. class
array
7. {
8. public:
array(int
size);
size_t
getVectorSize()
{
}
return
_data.size();
size_t
getSize()
{
}
return
_size;
vector
_data;
size_t
_size;
9.
10.
11.
12.
13.
14.
15.
16.
17.
18. public:
19.
20.
21. };
22.
23. template
24. array::array(int
size)
:
_size(size)
,
_data(_size)
25. {
}
26.
27.
28.
29. int
main(void)
30. {
31.
32.
33.
34.
35.
36. }
原因:
array
*arr =
new array(3);
cout<getVectorSize()<getSize()<第三部分 专业知识(简答题)
数据挖掘岗位
1、数据预处理在数据挖掘中是一个重要的步骤,请你谈谈你对数据预处理的理解
2、请说出你对中文分词的理解,并谈谈它的难点和切分算法
3、请列举并说明几个知名的分类算法
4、请阐述 K-均值聚类算法
5、如果设计一个商品推荐系统,请谈谈你的思路
6、请你谈谈你对观点挖掘的理解