笔试题集锦

第一部分(必做):计算机基础类
(所有的选择题都是多项选择)

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)的返回值是()

  1. int func(unsigned int i)  
  2. {  
  3.     unsigned int temp = i;  
  4.     temp = (temp & 0x55555555) + ((temp & 0xaaaaaaaa)>>1);  
  5.     temp = (temp & 0x33333333) + ((temp & 0xcccccccc)>>2);  
  6.     temp = (temp & 0x0f0f0f0f) + ((temp & 0xf0f0f0f0)>>4);  
  7.     temp = (temp & 0xff00ff) + ((temp & 0xff00ff00)>>8);  
  8.     temp = (temp & 0xffff) + ((temp & 0xffff0000)>>16);  
  9.     return temp;  
  10. }  

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、下面的程序的输出是什么?

 

 1     #include<stdio.h>  
 2       
 3     int main(void)  
 4     {  
 5         int n;  
 6         char y[10] = "ntse";  
 7         char *x = y;  
 8         n = strlen(x);  
 9         *x = x[n];  
10         x++;  
11         printf("x=%s\n",x);  
12         printf("y=%s\n",y);  
13         return 0;  
14     }  

 

输出:
x=tse
y=
因为n=4,则*x = x[n];  的功能是将x指向的第一个字符n修改为\0,这样y字符串就结束了,所以第二输出为空,x++操作后,x指向第二个字符t,所以第一个输出为:tse。
2、请给出下面程序的输出结果,并说明原因。

 

 1     #include<iostream>  
 2     #include<vector>  
 3     using namespace std;  
 4       
 5     template<class t>  
 6     class array  
 7     {  
 8     public:  
 9         array(int size);  
10         size_t getVectorSize()  
11         {  
12             return _data.size();  
13         }  
14         size_t getSize()  
15         {  
16             return _size;  
17         }  
18     public:  
19         vector<t> _data;  
20         size_t _size;  
21     };  
22       
23     template<class t>  
24     array<t>::array(int size) : _size(size) , _data(_size)  
25     {    }  
26       
27       
28       
29     int main(void)  
30     {  
31         array<int> *arr = new array<int>(3);  
32         cout<<arr->getVectorSize()<<endl;  
33         cout<<arr->getSize()<<endl;  
34       
35         return 0;  
36     }  

 

原因:




数据挖掘岗位    第三部分 专业知识(简答题)
1、数据预处理在数据挖掘中是一个重要的步骤,请你谈谈你对数据预处理的理解
2、请说出你对中文分词的理解,并谈谈它的难点和切分算法
3、请列举并说明几个知名的分类算法
4、请阐述K-均值聚类算法
5、如果设计一个商品推荐系统,请谈谈你的思路
6、请你谈谈你对观点挖掘的理解

 

转自:http://blog.csdn.net/hackbuteer1/article/details/8060917

 

 

posted on 2012-12-13 18:43  猿人谷  阅读(362)  评论(0编辑  收藏  举报