1、以下哪个协议属于传输层协议()
A、FTP
B、UDP
C、IP
D、HTTP
2、以下哪个算法不是对称加密算法()
A、DES
B、RC5
C、AES
D、RSA
3、在多线程系统中,线程在它的生命周期中会处于不同的状态,其中不是线程状态的是:()
A、Ready
B、Busied
C、Blocked
D、Running
4、设数组data[m]作为循环队列的存储空间。front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为()
A、front=front+1
B、front=(front+1)%(m-1)
C、front=(front-1)%m
D、front=(front+1)%m
5、下列关于管道(Pipe)通信的叙述中,正确的是()
A、一个管道可以实现双向数据传输
B、管道的容量仅受磁盘容量大小限制
C、进程对管道进行读操作和写操作都可能被阻塞
D、一个管道只能有一个读进程或一个写进程对其操作
6、已知数组元素基本有序的情况下,下面采用那个算法对数组排序时间复杂度最低()
A、直接选择排序
B、堆排序
C、快速排序
D、插入排序
7、下面关于B和B+树的描述中,不正确的是()
A、B树和B+树都是平衡的多叉树
B、B树和B+树都可用于文件的索引结构
C、B树和B+树都能有效的支持顺序检索
D、B树和B+树都能有效的支持随机检索
8、关于依赖注入,下列选项中说法错误的是()
A、依赖注入能够独立开发各组件,然后根据组件间关系进行组装
B、依赖注入使组件之间相互依赖,相互制约
C、依赖注入提供使用接口编程
D、依赖注入指对象在使用时动态注入
9、下列哪个地址不可能是子网掩码()
A、255.224.0.0
B、255.255.240.0
C、255.255.255.248
D、255.255.255.250
10、若一颗二叉树具有10个度为2的节点,5个度为1的节点,度为0的节点个数为()
A、9
B、11
C、15
D、不确定
11、在Java中,以下关于方法重载和方法重写描述正确的是()
A、方法重载和方法的重写实现的功能相同
B、方法重载出现在父子关系中,方法重写是在同一类中
C、方法重载的返回值类型必须一致,参数项必须不同
D、方法重写的返回值类型必须相同或相容。
12、下面有关JVM内存,说法错误的是()
A、程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
B、Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
C、方法区用于存储JVM加载的类信息、常量、静态变量、即使编译器编译后的代码等数据,是线程隔离的
D、原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的
13、C++中,下面四个表达式中错误的一项是()
A、a+=(a++)
B、a+=(++a)
C、(a++)+=a
D、(++a)+=(a++)
14、多线程中栈与堆是公有的还是私有的()
A、栈公有,堆私有
B、栈公有,堆公有
C、栈私有,堆公有
D、栈私有,堆私有
15、有如下4条语句:
Integer i01=59; int i02=59; Integer i03=Integer.valueOf(59); Integer i04=new Integer(59);
以下输出结果为false的是()
A、System.out.println(i01==i02);
B、System.out.println(i01==i03);
C、System.out.println(i03==i04);
D、System.out.println(i02==i04);
16、设有5000个待排序的记录的关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列哪个方法可以达到此目的()
A、快速排序
B、堆排序
C、归并排序
D、插入排序
17、三个程序a,b,c,它们使用同一个设备进行I/O操作,并按a,b,c的优先级执行(a优先级最高,c最低).这三个程序的计算和I/O时间如下图所示。假设调度的时间可忽略。则在单道程序环境和多道程序环境下(假设内存中可同时装入这三个程序,系统采用不可抢占的调度策略).运行总时间分别为()
计算 I/O 计算
A、260,180
B、240,180
C、260,190
D、240,190
18、6支笔,其笔身和笔帽颜色相同:但6支笔颜色各不相同,求全部笔身都戴错笔帽的可能性有多少种()
A、265
B、266
C、267
D、268
E、19
19、已知有序序列b c d e f g q r s t,则在二分查找关键字b的过程中,先后进行比较的关键字依次是多少?()
A、f d b
B、f c b
C、g c b
D、g d b
20、如果待排序的数组已经近似递增排序,则此时快排算法的时间复杂度为()
A、O(n)
B、O(n^2)
C、O(nlogn)
D、O((n^2)*logn)
21、1000以内与105互质的偶数有多少个?
A、227
B、228
C、229
D、230
E、22
22、函数x的定义如下,问x(x(8))需要调用几次函数x(int n)()
int x(int n){ cnt++; if (n<=3) { return 1; } else { return x(n-2)+x(n-4)+1; } }
A、16
B、18
C、20
D、22
E、23
23、2015!后面有几个0()
A、500
B、501
C、502
D、503
24、输入一个字符串,要求输出字符串中字符所有的排列,例如输入"abc",得到"abc","acb","bca","bac","cab","cba" 。
25、编写一个程序,将小于n的所有质数找出来。
26 、在一次活动中,我们需要按可控的比例来随机发放我们的奖品,,假设需要随机的物品id和概率都在给定的Map<String,Double>prizeMap中,请实现如下这个函数: String getRandomPrize(Map<String,Double>prizeMap){}使得返回的结果为参与者 即将得到的一个随机物品id。
物品id 投放概率1 0.52 0.33 0.14 0.955 0.05
1、B 2、D 3、B 4、D 5、C 6、D 7、C 8、B 9、D 10、B 11、D
12、C 13、C 14、C 15、C 16、B 17、A 18、A 19、B 20、B 21、C 22、B 23、C
24、参考代码:
// 利用stl快速得到枚举排列 #include <iostream> #include <string> #include <algorithm> using namespace std; int main() { string s; while (cin >> s) { sort(s.begin(), s.end()); do { cout << s << ' '; } while (next_permutation(s.begin(), s.end())); cout << endl; } return 0; }
25、参考代码:
#include <iostream> #include <cmath> #include <vector> using namespace std; bool isprime(int x) { if (x <= 1) return false; else if (x == 2) return true; for (int i = 2; i <= sqrt(x); ++i) { if (x % i == 0) return false; } return true; } vector<int> getAllPrimes(int n) { vector<int> res; if (n < 2) return res; for (int i = 2; i < n; ++i) { if (isprime(i)) res.push_back(i); } return res; } int main(void) { int n; cin >> n; vector<int> prms = getAllPrimes(n); for (auto p : prms) cout << p << " "; cout << endl; return 0; }
26、参考代码:
#include <iostream> #include <map> #include <string> #include <ctime> using namespace std; string getRandomPrize(map<string, double> hm) { double all = 0.0; map<double, string> mp; map<string, double>::iterator it = hm.begin(); while (it != hm.end()) { all += (*it).second; mp.insert(pair<double, string>(all, (*it).first)); ++it; } srand((unsigned)time(NULL)); double total = rand() / double(RAND_MAX) * all; map<double, string>::iterator mpit = mp.begin(); while (mpit != mp.end()) { if (total < (*mpit).first) return (*mpit).second; ++mpit; } return ""; } int main(void) { map<string, double> hm; hm.insert(pair<string, double>("1", 0.5)); hm.insert(pair<string, double>("2", 0.3)); hm.insert(pair<string, double>("3", 0.1)); hm.insert(pair<string, double>("4", 0.95)); hm.insert(pair<string, double>("5", 0.05)); while (1) cout << getRandomPrize(hm); return 0; }