开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第27天,点击查看活动详情
天空好像下雨,我好想住你隔壁。
一、选择题
1、下列进程调度算法中,()可能会出现进程长期得不到调度的情况。
A.非强占式静态优先权法
B.强占式静态优先权法
C.时间片轮转调度算法
D.非强占式动态优先权法
答案:B。
2、如果信号量的当前值为-4,则表示系统中在该信号量上有()个进程等待。
A、3
B、4
C、0
D、5
答案:B。分析:信号量为-m,就说明有m个进程在等待,一共m + 1个进程,还有一个在临界区。
3、第一份对于Linux说法,下列说法正确的是( )
A.线性访问内存非法时,当前线程会进入信号处理函数
B.用mv命令移动文件时,文件的修改时间会发生变化
C.ulimit-c设置的是函数调用栈的大小
D.malloc函数是应用程序向操作系统申请内存的接口
答案:A。分析:
4、某台微机安装的是 64 位操作系统,64 位指的是()
A、CPU的运算速度,即Cpu每秒钟能计算64位二进制数据
B、CPU的型号
C、CPU的时钟主频
D、CPU的字长,即CPU每次能处理64位二进制数据
答案:D。
5、由源代码生成可执行文件需要经过预编译,编译,汇编,链接等阶段,错误:unresolved external symbol Beginscene属于()阶段错误。
A、预编译
B、链接
C、汇编
D、编译
答案: B。分析:无法解析的外部符号,说明单个文件已经编译过了。在链接时,查找不到外部符号。 6、下述哪种情况会提出中断请求
A.在键盘输入过程中,每按一次键
B.两数相加结果为零
C.计算结果溢出
D.一条系统汇编指令执行完成
答案:A。分析:每按键一次,或者是点击鼠标一次,就会产生一个中断,称为按键中断。
7、以下哪些不是内核对象()
A.进程
B.线程
C.互斥器
D.临界区
答案:D。分析:临界区是资源对象。
8、单任务系统中两个程序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
9、进程调度是从()选择一个进程投入运行。
A、等待队列
B、提交队列
C、作业后备对列
D、就绪队列
答案:D。分析: 就绪队列是等待CPU时间的队列。
10、某系统中有11台打印机,N个进程共享打印机资源,每个进程要求3台,当N的取值不超过()时系统不会
发生死锁。
A.4
B.5
C.6
D.7
答案:B。分析:不发生死锁的条件是至少能保证一个进程能获得三台打印机资源。
最坏的情况是1个进程获取三台打印机资源,另外N-1个进程获取到两台打印机,等待获取第三台。
*3+(N-1)2=11
11、什么是内存抖动(Thrashing)()
A.非常频繁的换页活动
B.非常高的CPU执行活动
C.一个极长的执行进程
D.一个极大的虚拟内存
答案:A。页面的频繁更换,导致整个系统效率急剧下降,这个现象称为内存抖动。
抖动一般是内存分配算法不好,内存太小引或者程序的算法不佳引起的页面频繁从内存调入调出。
二、编程题
1、淘宝网店
中等难度的日期类问题,需要考虑是不是闰年和是不是质数。
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int a[13] = { 0, 62, 90, 121, 181, 212, 272, 303, 365, 425, 487, 517,579 };
bool isleapyeaar(int year)
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
return true;
else
return false;
}
bool isPrime(int n) {
if (n <= 3) {
return n > 1;
}
for (int i = 2; i < n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
//非闰年一年的利润是579,闰年的利润是580
int main()
{
int y1, y2, m1, m2, d1, d2;
int h = 579;
while (cin >> y1 >> m1 >> d1 >> y2 >> m2 >> d2)
{
int s1 = 0, s2 = 0;
if (isPrime(m1))
{
s1 = a[m1 - 1] + d1;
}
else
{
s1 = a[m1 - 1] + 2 * d1;
}
if (isPrime(m2))
{
s2 = a[m2 - 1] + d2;
}
else
{
s2 = a[m2 - 1] + d2 * 2;
}
if (isleapyeaar(y1) && a[m1 - 1] > 2) s1 += 1;
if (isleapyeaar(y2) && a[m2 - 1] > 2) s2 += 1;
if (y1 == y2)
{
if (isPrime(m1))
cout << s2 - s1 + 1 << endl;
else
cout << s2 - s1 + 2 << endl;
}
else
{
while (y1 < y2)
{
if (isleapyeaar(y1))
{
s2 += 580;
}
else s2 += 579;
y1++;
}
if (isPrime(m1))
cout << s2 - s1 + 1 << endl;
else
cout << s2 - s1 + 2 << endl;
}
}
return 0;
}
2、斐波那契凤尾
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
const int N = 100010;
int a[N] = { 0 };
void fbnx()
{
a[0] = 1, a[1] = 1;
for (int i = 2; i < 100001; i++)
{
a[i] = (a[i - 1] + a[i - 2]) % 1000000;
}
}
int main()
{
int n;
fbnx();
while (cin >> n)
{
if (n < 29)
//斐波那契数列小于6位
{
printf("%d\n", a[n]);
}
else
{
printf("%06d\n", a[n]);
}
}
return 0;
}
总结
本文总共讲了11题牛客高频的选择题,以及两道牛客编程题,希望大家读后能够有所收获!