小知识,大挑战!本文正在参与「程序员必备小知识」创作活动。
本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。
借一位大佬的话来说:对于一个程序员来说,计算机的基础知识就是内功,就是咱们的专业素养,只有内功深厚的人行走江湖才能少翻车。
程序员能不能走的远,能不能写高质量的代码,能不能快速找到系统的瓶颈,能不能快速抽丝剥茧找到系统的核心功能,肯定和咱们的专业素养有关系。只有足够了解基础,才能在工作中真正的游刃有余,才能更高效优雅地解决问题。
而408包含四门科目,包含各种计算机基础理论,就算你不考研,做题了解掌握一些基础知识也是极好的。欢迎关注我和我的专栏!
🎉 数据结构
将两个长度分别为lenl和len2的升序链表,合并为一个长度为lenl+len2的降序列表,釆用归并算法,在最坏情况下,比较操作的次数与___最接近。(中国科学院大学 2015年)
A. lenl+len2
C. min(lenl, len2)
B. Lenl*len2
D. Max(lenl, len2)
解析
答案:A
📢 对于归并算法而言包括两种情况:
- 两个链表还有剩下的元素时,则取两个链表中的最大值放入新链表中
- 一个无剩余元素,另一个有剩余元素时,直接将另一个链表直接放入新链表中
好久没写代码,写个伪代码给你们康康😎
void merge_list(LinkList &la, LinkList &lb) {
LNode *cur, *pa = la->next, *pb = lb->next;
la->next = NULL; // la为合并后的链表
while (pa && pb) {
if (pa->data <= pb->data) {
cur = pa->next; // 记录位置
pa->next = la->next; // 头插使之逆序
la->next = pa;
pa = cur; // 恢复位置
} else {
cur = pb->next;
pb->next = la->next;
la->next = pb;
pb = cur;
}
}
if (pa) pb = pa; // 只会剩下一个非空链表
while (pb) { // 将链表剩余部分全部头插
cur = pb->next;
pb->next = la->next;
la->next = pb;
pb = cur;
}
}
不难看出,合并两个有序链表最坏情况就是,a中除最后一个元素外都比b中第一个元素小,而最后一个又都比b中元素大,时间复杂度为len1+len2,故选A。
✨ 计算机网络
采用8种相位,每种相位各有两种幅度的QAM调制方法,在1200Baud的信号传输速率下能达到的数据传输速率为___ 。(北京航空航天大学 2006年)
A.2400bit/s
B.3600bit/s
C.9600bit/s
D.4800bit/s
解析
答案:D
📢 8种相位,每个相位2种幅度,可以有16种变化,即可以携带4bit的数据,故有:
🎨 操作系统
下列选项中,导致创建新进程的操作是___ 。(中国科学院大学 2018年)
1)管理员启动Web服务
2)用户启动浏览器程序
3)浏览器访问新的网页
A. 仅1和2
B. 仅2和3
C. 仅1和3
D. 1、2、3
解析
答案:A
📢 显然:浏览器访问新的网页不会创建新进程。
🎮 计算机组成原理
设相对寻址的转移指令占2个字节,第一字节为操作码,第二字节为位移量(用补码表示),每当CPU从存储器取出一个字节时,即自动完成(PC)+1→PC。设当前指令地址为3008H,要求转移到300FH,则该转移指令第二字节的内容应为__ 。若当前指令地址为300FH,要求转移到3004H,则该转移指令第二字节的内容为___。(哈尔滨工业大学 2007年)
A.05H,F2H
B.07H,F3H
C.05H,F3H
D.07H,F2H
解析
答案:C
📢 当前指令地址为3008H时,取指结束后PC=300AH,欲转移到300FH,转移指令第二字节的内容应为+5(十进制),补码表示即为05H。
当前指令地址为300FH时,取指结束后PC=3011H,欲转移到3004H,转移指令第二字节的内容应为-13(十进制),补码表示即为F3H,故选C。
习题来源于@王道微博
解析都是我自己写的,如有问题或错漏烦请评论告知。
我是Mancuoj,欢迎关注我和我的计算机考研专栏 (≧∇≦)ノ