清风徐来,水波不兴。
一、选择题
1、下述哪种情况会提出中断请求
A.在键盘输入过程中,每按一次键
B.两数相加结果为零
C.计算结果溢出
D.一条系统汇编指令执行完成
答案:A。分析:每按键一次,或者是点击鼠标一次,就会产生一个中断,称为按键中断。
2、以下哪些不是内核对象()
A.进程
B.线程
C.互斥器
D.临界区
答案:D。分析:临界区是资源对象。
3、单任务系统中两个程序A和B,其中
A程序:CPU:10s->设备1:5s->CPU:5s->设备2:10s->CPU:10s;B程序:设备1:10s->CPU:10s->设备2:5s->CPU:5s->设备2:10s;执行顺序为A->B,那么CPU的利用率是()
A.30%
B.40%
C.50%
D.60%
答案:C。分析:A程序,CPU时间为10+5+10=25s,总时间为10+5+5+10+10=40s;B程序,CPU时间为10+5=15s,总时间为10+10+5+5+10=40s;CPU总时间为40s,两个进程的总时间为80s,
CPU的利用为40/80=0.5
3、进程调度是从()选择一个进程投入运行。
A、等待队列
B、提交队列
C、作业后备对列
D、就绪队列
答案:D。分析:就绪队列是等待CPU时间的队列。
4、某系统中有11台打印机,N个进程共享打印机资源,每个进程要求3台,当N的取值不超过()时系统不会
发生死锁。
A.4
B.5
C.6
D.7
答案:B。分析:不发生死锁的条件是至少能保证一个进程能获得三台打印机资源。
最坏的情况是1个进程获取三台打印机资源,另外N-1个进程获取到两台打印机,等待获取第三台。
3+(N-1)*2=11
5、什么是内存抖动(Thrashing)()
A.非常频繁的换页活动
B.非常高的CPU执行活动
C.一个极长的执行进程
D.一个极大的虚拟内存
答案:A。页面的频繁更换,导致整个系统效率急剧下降,这个现象称为内存抖动。
抖动一般是内存分配算法不好,内存太小引或者程序的算法不佳引起的页面频繁从内存调入调出。
编程题
1、剪花布条
我的思路是:把每个字符存起来,如果字符串s2有的字符s1 没有,就直接令flag = 1;然后输出0 ,接下来再测试下一组
如果s2的字符s1也有,就计算s1的字符和s2对应字符的数字相除最小的
结果有两组样例过不了;还是得用贪心算法
usingnamespacestd; intmain(){ stringstr, s; intcount=0; while(cin>>str>>s){ count=0; size_tpos=0; //while((pos = str.find(s)) != string::npos){// str.erase(pos, pos + s.size());// ++count;//}while((pos=str.find(s, pos)) !=string::npos){ pos+=s.size(); ++count; } cout<<count<<endl; } return0; }
2、客似云来
实际上也是斐波那契数列系列问题
usingnamespacestd; constintN=81; inta[N] = { 0 }; voidfbnx() { a[0] =1, a[1] =1; for (inti=2; i<81; i++) { a[i] =a[i-1] +a[i-2]; } } intmain() { intf, t; while (cin>>f>>t) { fbnx(); longlongans=0; for (inti=f-1; i<t; i++) { ans+=a[i]; } cout<<ans<<endl; } return0; }
总结
本文总共讲了5题牛客高频的选择题,以及两道牛客编程题,希望大家读后能够有所收获!