好消息来了!知乎今年秋招提前批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