一、选择题
1、求函数返回值,输入x=9999
int func(int x){
int count=0;
while (x)
{
count++;
x=x&(x-1);//与运算
}
return count;
}
A.8
B.9
C.10
D.12
参考答案:A
2、设a,b,c三个元素的进栈次序是a,b,c,请指出不可能出现的出栈序列 。
A.acb
B.bac
C.bca
D.cab
参考答案:D
3、常见的网络嗅探器,以下哪个不是?
A.tcpdump
B.wireshark
C.wvs
D.sniffit
参考答案:C
4、在Java中,以下关于方法重载和方法重写描述正确的是?
A.方法重写的返回值类型必须相同或相容。(或是其子类)
B.方法重载和方法的重写实现的功能相同
C.方法重载出现在父子关系中,方法重写是在同一类中
D.方法重载的返回值类型必须一致,参数项必须不同
参考答案:A
5、关于volatile关键字,下列描述不正确的是?
A.用volatile修饰的变量,每次更新对其他线程都是立即可见的。
B.对volatile变量的操作是原子性的。
C.对volatile变量的操作不会造成阻塞。
D.不依赖其他锁机制,多线程环境下的计数器可用volatile实现。
参考答案:BD
6、下列选项中,能缩短程序执行时间的措施是__
I提高CPU时钟频率;
II.优化数据通路结构;
III.对程序进行编译优化
A.I和II
B.II和III
C.I和III
D.I/II和III
参考答案:D
7、有订单表orders,包含字段用户信息userid,字段产品信息productid,以下语句能够返回至少被订购过两会的productid?
A.select productid from orders where count(productid)>1
B.select productid from orders group by productid having count(productid)>1
C.select productid from orders where max(productid)>1
D.select productid from orders where having count(productid)>1 group by productid
参考答案:B
二、解答题
1、分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)
参考答案:
BOOL型变量:if(!var)
int型变量: if(var==0)
float型变量:
const float EPSINON = 0.00001;
if ((x >= - EPSINON) && (x <= EPSINON)
指针变量:if(var==NULL)
2、假设你只有一台内存2G的笔记本,I5的四核CPU以及4T的硬盘,请设计一个程序,实现对1T英文数据进行词频分析,完成以下两个小题:
(1)求所有词的词频,把相应的值存入文件;
(2)找出这些词里卖弄出现频次高的100个词,并用代码实现
名词解释:1T=1024G,为硬盘空间单位,词频,每个单词出现的次数
参考答案:
(1)将1T的数据使用哈希函数映射到10000个文件当中去,这样做可以将所有一样的数据映射到同一个文件当中。依次将10000个文本文件读入内存,使用hashmap对每一个文本中每一个单词进行词频统计,将单词作为key,单词出现次数作为value,每读入一个单词,都查看其在hashmap中是否存在,存在则将value值加1,不存在就将其加入hashmap,并将value值置为1,然后将结果写入一个文件即可。文件的每一行只存储一个单词以及这个单词出现的次数,并且二者之间用空格隔开.
(2)要求出现次数高的100个单词。可以建立只有100个元素的小根堆来实现目的。首先取出100个元素建立小根堆,继续从文件中取出元素与小根堆的堆顶元素进行比较,如果比堆顶元素大,就替换掉堆顶元素,并且重建为小根堆,依次做下去,后堆中保留的100个元素就是top100. 使用hashmap进行词频统计的时候,先用小根堆统计出每个文件中Top100,然后10000个文件的top100汇总到一起后在使用上述同样的方法得到终的top100.