一、选择题
1、下列关于编程优化的说法正确的是():
A.使用编译器的优化选项(如-O3)后程序性能一定会获得提高
B.循环展开得越多越彻底,程序的性能越好
C.寄存器分配能够解决程序中的数据依赖问题
D.现代主流C/C++编译器可以对简单的小函数进行自动Iinline
参考答案:D
2、以下程序是用来计算两个非负数之间的大公约数:
long long gcd(long long x, long long y) {
if (y == 0)
return x;
else
return gcd(y, x % y);
}
我们假设x,y中大的那个数的长度为n,基本运算时间复杂度为O(1),那么该程序的时间复杂度为():
A.O(1)
B.O(logn)
C.O(n)
D.O(n^2)
参考答案:B
3、对有序数组{2、11、15、19、30、32、61、72、88、90、96}进行二分查找,则成功找到15需比较()次
A.3
B.4
C.2
D.5
参考答案:C
4、以下程序执行的结果是:
class X{
Y y=new Y();
public X(){
System.out.print("X");
}
}
class Y{
public Y(){
System.out.print("Y");
}
}
public class Z extends X{
Y y=new Y();
public Z(){
System.out.print("Z");
}
public static void main(String[] args) {
new Z();
}
}
A.ZYXX
B.ZYXY
C.YXYZ
D.XYZX
参考答案:C
5、关键字super的作用是?
A.用来访问父类被隐藏的成员变量
B.用来调用父类中被重载的方法
C.用来调用父类的构造函数
D.以上都是
参考答案:D
6、init启动进程需要读取()配置文件
A./sbin/init
B./bin/sh
C./etc/sysvinit
D./etc/inittab
参考答案:D
7、可维护性的特性中,相互矛盾的是()
A.可理解性与可测试性
B.效率与可修改性
C.可修改性和可理解性
D.可理解性与可读性
参考答案:B
8、下列有关Socket的说法,错误的是()
A.Socket用于描述IP地址和端口,是一个通信链的句柄
B.Socket通信必须建立连结
C.Socket客户端的端口是不固定的
D.Socket服务端的端口是固定的
参考答案:B
二、解答题
轮询任务调度和可抢占式调度有什么区别?
参考答案:(1)轮询调度的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。只有在当前任务主动放弃CPU控制权的情况下(比如任务挂起),才允许其他任务(包括高优先级的任务)控制CPU。其优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。但不利于后面的请求及时得到响应。
(2)抢占式调度允许高优先级的任务打断当前执行的任务,抢占CPU的控制权。这有利于后面的高优先级的任务也能及时得到响应。但实现相对较复杂且可能出现低优先级的任务长期得不到调度。