A. 银行家算法 避免死锁 允许进程动态地申请资源,但在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。
B. 资源有序分配法 预防死锁 预防死锁是设法至少破坏产生死锁的必要条件之一,严格预防死锁出现。
C. 资源分配图化简法 检测死锁 允许死锁发生,定期检测。
D. 撤销进程法 解决死锁
【银行家算法】
1. 当进程首次申请资源时,测试其对资源的最大需求量,如果系统当前资源能满足该最大需求量,那么就按该进程的当前申请量分配资源,否则就推迟分配;
2. 当进程在执行过程继续申请资源时,先测试该次申请的资源量是否超过现存资源量,如果不超过就分配,否则拒绝并推迟分配。
2. 下列代码的输出结果是?
boolean result=false?false:true==false?true:false;
System.out.println(""+result+"");
【解析:】正确答案:false
三目运算符的执行顺序是自右向左。
3. 下列代码的输出结果是?
public class NULL {
public static void print(){
System.out.println(“MTDP”);
}
public static void main(String[] args) {
try {
((NULL) null).print();
} catch (NullPointerException e) {
System.out.println("NullPointerException");
}
}
}
【解析:】正确答案:MTDP
null 是java的关键字,无需事先声明,可将其赋值给任何“引用类型”,也可以直接
转化成某种“引用类型”,但是 null 既不是对象也不是一种类型,他只是一种特殊的值。所以(NULL)null.print();是一种类名调用,而非对象调用,当把print()方法的static声明去掉后,该段代码将会输出“NullPointerException”。
4. 继承问题
①子类继承自父类的方法,控制符的访问级别必须大于或等于父类:public > protected > 无(默认)> private
②重写的方法,不能抛出新的异常,不能抛出检查范围更大的异常,可以抛出范围更小、更少的异常,甚至可以不抛异常。
5. 进程和线程是操作系统中最基本的概念,下列有关描述错误的是?
A. 进程是程序的一次执行,而线程可以理解为程序中运行的一个片段
B. 由于线程没有独立的地址空间,因此同一个进程的一组线程可以访问该进程资源,这些线程之间的通信也很高效
C. 线程之间的通信简单(共享内存即可,但须注意互斥访问的问题),而不同进程之间的通信更为复杂,通常需要调用内核实现
D. 线程有独立的虚拟地址空间,但是拥有的资源相对进程来说,只有运行所必须的堆栈,寄存器等
【解析:】正确答案:B
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。
线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
6. 1024!的末尾有多少个0?
【解析:】末尾0的个数取决于乘法中因子2和5的个数。显然乘法中因子2的个数大于5的个数,所以我们只需统计因子5的个数。是5的倍数的数有: 1024 / 5 = 204个
是25的倍数的数有:1024 / 25 = 40个
是125的倍数的数有:1024 / 125 = 8个
是625的倍数的数有:1024 / 625 = 1个
所以1024! 中总共有204+40+8+1=253个因子5。
也就是说1024! 末尾有253个0。
7. 从 n 个数中找出最小的 k 个数(n>>k),最优平均时间复杂度是多少?
【解析:】正确答案:O(nlogk)
视 n 与 k 的大小关系而定:
1. 当k接近于N时:先直接排序,再取排序后数据的前k个数。排序算法用最快的堆排序,复杂度也会达到O(N*logN)。
2. 当k很小时:先排序前k个数,对于后面N-k个数,依次进行插入。时间复杂度为O(k*n)。
3. 当k和N都很大时:对前k个数,建立最大堆,对于后面N-k个数,依次和最大堆的最大数比较,如果小于最大数,则替换最大数,并重新建立最大堆。时间复杂度为O(N*logk)。
8. 一台主机安装了1GB的内存,操作系统为支持MMU的32位Linux发行版,现在运行了abc三个进程,以下哪些使用内存的方式是可以实现的?
【解析:】有虚拟内存,可以申请大于物理内存的内存空间,但是32位系统最多只能寻址4GB空间,只要abc三个进程申请的资源小于4G即可。
9. 红黑树
10. 有四个整数,用8位补码分别表示为r1=FEH, r2=F2H, r3=90H, r4=F8H。运算结构存入8位寄存器中,不会溢出的是?
【解析:】用补码表示时8位寄存器所能表示的整数范围为-128到+127。
X = xyH,X的十进制值即为:
(x*16+y)-256 正数不需要-256,补码最高位为1,为负数。
r 1 =(15×16+14)-256=-2;
r 2 =(15×16+2)-256=-14;
r 3 =(9×16+0)-256=-112;
r 4 =(15×16+8)-256=-8;
则r 1 ×r 2 =28,r 2 ×r 3 =1568,r 1 ×r 4 =16,r 2 ×r 4 =112,只有r 2 ×r 3 结果溢出。
11. TCP的有限状态机
12. 下面对于cookie的描述中正确的是?
A. 用于实现session跟踪技术
B. Cookie是由服务器保存在客户端的文本文件,大小限制在4kb左右
C. Cookie在服务端与客户端之间往返时通过HTTP Headers进行传输
D. HTTP请求中的Cookie是加密传递的
【解析:】正确答案:ABC
在HTTP请求中的cookie是明文传递的,所以安全性成问题。(除非用HTTPS)
13. 关于数据库索引,以下说法正确的是?
A. 针对某些字段建立索引,能够有效的减少相关数据库表的磁盘空间占用
B. 针对某些字段建立索引,能够有效的提升相关字段的读与写的效率
C. 常见数据库管理系统,通常使用hash表来存储索引
D. 数据库索引的存在,可能导致相关字段删除的效率降低
【解析:】正确答案:D
A:增加索引会增加磁盘占用
B:建立索引可以提升查询速度,即读速度;但在一定程度上降低写速度
C:数据库一般使用B*树作为索引
D:删除数据需要调整索引,所以会降低效率
14.