🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!欢迎志同道合的朋友一起加油喔🤺🤺🤺
目录
一、选择题
二、编程题
🔥淘宝网店
🔥斐波那契凤尾
一、选择题
1、处于运行状态的操作系统程序应放在()
A 寄存器中
B 主存中
C 辅存中
正确答案: B
A容量有限,只是加载cpu执行代码行需要的数据(从主存加载到寄存器)
B进程挂起状态,进程就会保存在辅存中
2、在系统内存中设置磁盘缓冲区的主要目的是()。
A 减少磁盘 I/O 次数
B 减少平均寻道时间
C 提高磁盘数据可靠性
D 实现设备无关性
正确答案: A
磁盘磁盘缓冲区
cpu执行速度 比 磁盘io速度 要快很多
为了提高效率,经常访问的磁盘数据,可以使用磁盘缓存来提高io速度。
3、下列选项中,会导致进程从执行态变为就绪态的事件是()。
A 执行 P(wait)操作
B 申请内存失败
C 启动 I/O 设备
D 被高优先级进程抢占
正确答案: D
A、B、C进入阻塞态。进程通信其中一种方式,信号量:p(wait)信号量-1,v(signal)信号量+1。
4、下面哪一种表述不属于操作系统的主要功能?()
A 处理机管理
B 存储器管理
C 设备管理和文件管理
D 可移植
正确答案: D
5、在现代操作系统中采用缓冲技术的主要目的是()。
A 改善用户编程环境
B 提高CPU的处理速度
C 提高CPU和设备之间的并行程度
D 实现与设备无关性
正确答案: C
6、进程和程序的一个本质区别是()。
A 前者为动态的,后者为静态的
B 前者存储在内存,后者存储在外存
C 前者在一个文件中,后者在多个文件中
D 前者分时使用CPU,后者独占CPU
正确答案: A
7、一个进程的读磁区操作完成后,操作系统针对该进程必做的是 ()
A 修改进程状态为就绪态
B 降低进程优先级
C .进程分配用户内存空间
D 增加进程的时间片大小
正确答案:A
8、选择在最近的过去很久未访问的页面予以淘汰的算法称为()。
A Opt.
B LRU
C MFU
D LFU
正确答案:B
OPT (Optimal page replacement algorithm)
最佳页面替换算法,预测哪个页面最晚出现,就替换哪个页面。
LRU(Least Recently Used)
最近最少使用页面置换算法,也就是首先淘汰最长时间未被使用的页面。
MFU(Most Frequently Used)
最常使用算法,替换最常使用的页面
LFU(Least Frequently Used)
最近最不常用页面置换算法,淘汰一定时期内被访问次数最少的页面。
9、并发进程之间()。
A 彼此无关
B 必须同步
C 必须互斥
D 可能需要同步或互斥
正确答案: D
互斥
是指散步在不同任务之间的若干程序片断,当某个任务运行其中一个程序片段时,其它任务就不能运行它们之中的任一程序片段,只能等到该任务运行完这个程序片段后才可以运行。最基本的场景就是:一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。
同步
是指散步在不同任务之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖干要完成的特定的任务。最基本的场景就是:两个或两个以上的进程或线程在运行过程中协同步调,按预定
的先后次序运行。比如A任务的运行依赖于B任务产生的数据。
显然,同步是一种更为复杂的互斥,而互斥是一种特殊的同步。
10、一次I/O操作的结束,有可能导致()。
A 一个进程由睡眠变就绪
B 几个进程由睡眠变就绪
C 一个进程由睡眠变运行
D 几个进程由睡眠变运行
正确答案: A
二、编程题
🔥淘宝网店
淘宝网店__牛客网
【解题思路】:
既然是一个变相的日期计算器,那就写一个日期计算器,然后加以修改即可。那么,日期计算器怎么写呢?
日期计算器的话,我们将会把日期计算分为三个部分:第一个不足一年的年份,最后一个不足一年的年份,和中间的足年年份。足年年份我们只需要判断闰年后加365或366就行了。不足年,我们就要求出这个日期是这一年的第
几天。假设要求的是1994年5月27日到2003年4月29日,那么,我们就要先求出5月27日是这一年的第几天,然后判断1994年不是闰年,不是,所以用365减去这个天数,就得到结果了。本题中第一天也要算,所以还要加上这一天。然后再算出4月29日是2003年的第几天,就可以解决问题了。所以,我们需要一个函数,功能是给出一个年月日,求出这是这一年的第几天。
这些功能全部实现后,再去改造使得1、4、6、8、9、10、12月的天数翻倍,那么程序就全部完成了。
import java.util.*;
public class Main {
private static boolean isLeapYear(int year) {
return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
}
private static int profitOfYear(int year) {
return 2 * 31
+ 1 * 28
+ 1 * 31
+ 2 * 30
+ 1 * 31
+ 2 * 30
+ 1 * 31
+ 2 * 31
+ 2 * 30
+ 2 * 31
+ 1 * 30
+ 2 * 31
+ (isLeapYear(year) ? 1 : 0);
}
private static boolean isPrime(int month) {
return month == 2 || month == 3 || month == 5 || month == 7 || month == 11;
}
private static int profitOfThisYear(int year, int month, int day) {
int profit = 0;
if (!isPrime(month)) {
profit = day * 2;
} else {
profit = day;
}
while (--month > 0) {
switch (month) {
case 1: case 8: case 10: case 12:
profit += 62;
break;
case 3: case 5: case 7:
profit += 31;
break;
case 4: case 6: case 9:
profit += 60;
break;
case 11:
profit += 30;
break;
default: // case 2
profit += (28 + (isLeapYear(year) ? 1 : 0));
break;
}
}
return profit;
}
public static void main(String[] args) {
int year1, month1, day1, year2, month2, day2;
int profit = 0;
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
year1 = scanner.nextInt();
month1 = scanner.nextInt();
day1 = scanner.nextInt();
year2 = scanner.nextInt();
month2 = scanner.nextInt();
day2 = scanner.nextInt();
profit = profitOfYear(year1) - profitOfThisYear(year1, month1, day1 - 1);
profit += profitOfThisYear(year2, month2, day2);
if (year1 == year2) {
profit -= profitOfYear(year1);
}
for (int i = year1 + 1; i < year2; i++) {
profit += profitOfYear(i);
}
System.out.println(profit);
}
}
}
🔥斐波那契凤尾
斐波那契凤尾__牛客网
【解题思路】:
先求斐波那契数列在100000以内的每一项的后六位,然后需要的时候直接输出数组里的对应值即可。
import java.util.*;
public class Main {
public static void main(String[] args) {
int border = -1;
long[] ans = new long[100000];
ans[0] = 1;
ans[1] = 2;
for (int i = 2; i < 100000; i++) {
long next = ans[i - 1] + ans[i - 2];
if (border == -1 && next >= 1000000) {
border = i + 1;
}
ans[i] = next % 1000000;
}
Scanner s = new Scanner(System.in);
while (s.hasNextInt()) {
int n = s.nextInt();
long f = ans[n - 1];
if (n < border) {
System.out.printf("%d\n", f);
} else {
System.out.printf("%06d\n", f);
}
}
}
}