知乎19秋招Java后端笔试题回馈牛客~
一、单选题
1. (本题2分)在操作系统中同时存在多个进程,它们( C)
A:不能共享系统资源
B:不能调用同一段程序代码
C:可以共享允许共享的系统资源
D:可以共享所有的系统资源
2. (本题2分)某进程在运行过程中需要等待从磁盘上读入数据,此时进程的状态将: (C )
A:从就绪变为运行
B:从运行变为就绪
C:从运行变为阻塞
D:从阻塞变为就绪
3. (本题2分)以下符合LIFO行为的是:A
A:栈
B:队列
C:哈希表
D:堆
4. (本题2分)对信号量描述错误的是D
A:是一个计数器
B:是一种锁机制
C:多个进程可以同时访问
D:多个线程不可以同时访问
5. (本题2分)如果某系统15★4 = 112成立,则系统采用的是( A)进制。
A:6
B:7
C:8
D:9
二、简答题
1. (本题10分)简述程序运行空间内的堆和栈的区别?
2. (本题10分)请简述你对并发和并行的理解
3. (本题10分)请简述并发与并行的区别,并简述什么是「线程安全」
三、编程题
1、题目名称:查找整数(25分)
时间限制:1000ms
题目描述:给定一个非降序的整数数组,数组中包含重复数字(重复数字很多) ,给定任意整数,对数组进行二分查找,返回数组正确的位置,给出函数实现。
a. 连续相同的数字,返回最后一个匹配的位置
b. 如果数字不存在返回 -1。(测试用例仅做参考,我们会根据代码质量进行评分)
输入描述:第一行给定数组长度n,目标值tar。(1<=n,tar<=10000)
第二行给出n个整数a.(1<=a<=10000)
输出描述:按题目描述输出。
示例1
输入
7 4
1 2 2 3 4 4 10
输出
5
2、题目名称:求并集(25分)
时间限制:1000ms
题目描述:输出两个单向有序链表的并集 如链表 A {1 -> 2 -> 5 -> 7} 链表 B {3 -> 5 -> 7 -> 8} 输出: {1 -> 2 ->3 -> 5 -> 7 ->8} 。(测试用例仅做参考,我们会根据代码质量进行评分)
输入描述:第一行输入整数n,m,(1<=n,m<=1000)分别表示两个链表的长度。
第二行给出A链表所包含元素。(1<=a<=1000)
第三行给出B链表所包含元素。(1<=b<=1000)
输出描述:按题目描述输出。
示例1
输入
4 4
1 2 5 7
3 5 7 8
输出
1 -> 2 ->3 -> 5 -> 7 ->8
3、题目名称:计算逆波兰表达式的结果(25分)
时间限制:1000ms
题目描述:逆波兰记法中,操作符置于操作数的后面。例如表达“三加四”时,写作“3 4 +”,而不是“3 + 4”。如果有多个操作符,操作符置于第二个操作数的后面,所以常规中缀记法的“3 - 4 + 5”在逆波兰记法中写作“3 4 - 5 +”:先3减去4,再加上5。使用逆波兰记法的一个好处是不需要使用括号。例如中缀记法中“3 - 4 * 5”与“(3 - 4)*5”不相同,但后缀记法中前者写做“3 4 5 * -”,无歧义地表示“3 (4 5 *) -”;后者写做“3 4 - 5 *”。(测试用例仅做参考,我们会根据代码质量进行评分)
输入描述:第一行输入一个整数 n,表示包含元素数量.(1<=n<=1000)
第二行输入n个元素。
输出描述:输出计算后的结果。
示例1
输入
2 1 + 3 *
输出
9