2021秋招软件开发方向
试题来源:牛客网(https://www.nowcoder.com/test/31332154/summary)
1.下述算法的时间复杂度为()
int fact(int n) {
if (n <= 1) return 1;
return n * fact(n-1);
}
A.O(log2n)
B.O(n)
C.O(nlog2n)
D.O(n^2)
答案:B
答案解析:这个相当于就是遍历了一遍,从N到1的值。 然后每次去乘以上次得到的值。
2.在现代Linux 系统和 Windows 系统中,如果希望可以在任意目录下直接通过输入文件名 运行一个程序,需要把程序所在路径添加到哪个环境变量里面?( )
A.PWD
B.PATH
C.SHELL
D.EXEC
答案:B
3.小米有品的消费记录分别为900,512,613,700,810,若采用选择排序算法对其进行递增排序,则第三趟排序结果为 ( )
A.900 512 613 700 810
B.512 900 613 700 810
C.512 613 700 900 810
D.512 613 700 810 900
答案:C
答案解析:
选择排序的思路,以由小到大排序为例,首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
原序列:900,512,613,700,810
第一趟排序结果:512,900,613,700,810
第二趟排序结果:512,613,900,700,810
第三趟排序结果:512,613,700,900,810
第四趟排序结果:512,613,700,810,900
4.假设有一个栈,元素依次进栈的顺序是A,B,C,D,E。下列不可能的出栈顺序是( )
A选项: E,D,C,B,A
B选项: A,B,C,D,E
C选项: B,C,D,E,A
D选项: E,A,B,C,D
答案:D
答案解析:↓代表进栈,↑代表出栈。
A选项:A↓,B↓,C↓,D↓,E↓,E↑, D↑, C↑, B↑, A↑
B选项:A↓, A↑,B↓, B↑,C↓, C↑,D↓, D↑,E↓, E↑
C选项:A↓, B↓, B↑, C↓, C↑,D↓, D↑,E↓, E↑, A↑
D选项:无法实现
5.以下关于死锁,描述正确的有? ( )
A.有序分配锁资源可以预防死锁
B.银行家算法是用于检测死锁的
C.剥夺死锁进程的所有资源可以解除死锁
D.其他描述都不对
答案:AC
答案解析:银行家算法用于预防死锁
6.关于主键,描述正确的是()
A.一个表可以有多个主键
B.主键不可以为空
C.建立主键的同时也会建立一个唯一性索引
D.主键可以包含多个属性,如联合主键
答案:BCD
7.下面对于进程和线程的叙述错误的是()
A.地址空间:进程至少有一个线程,线程共享进程的地址空间,而进程有自己独立的地址空间
B.进程是资源分配和拥有的单位,同一进程内的线程共享进程的资源
C.两者均可并发执行
D.进程是处理器调度的基本单位,但线程不是
答案:D
- 下列关于继承的描述正确的是?()
A.在Java中允许定义一个子类的引用,指向父类的对象
B.在Java中一个子类可以继承多个抽象类,在extends关键字后依次列出用逗号隔开
C.在Java中继承是通过extends关键字来描述的,而且只允许继承自一个直接父类
D.在Java中抽象类之间不允许出现继承关系,所有的抽象类都相互独立
答案:C
9.关于Java 中的垃圾回收,下列说法错误的是:()
A.可以使用System.gc()来显式进行垃圾回收,但是不保证能够执行
B.因为有垃圾回收机制,所以java 不会存在内存泄漏问题
C.GC 是 JVM内部的一个线程,回收无效对象的内存用于将来的分配
D.创建对象时,GC就开始监控这个对象的地址,大小及使用情况
答案:AB
答案解析:
调用了System.gc()只是告诉虚拟机要回收,但究竟什么时候回收由虚拟机说了算,java垃圾回收机制就是这样,一般等到内存快不够用了才回收。
A错误我觉得是因为题意的 “但是不保证能够执行” 是指gc这条命令不保证执行,但是命令是必定执行的,建议能够到 JVM。
10.在Java 的 switch(expression) 语句中, expression 的数据类型不能是( )
A.long
B.boolean
C.int
D.String
答案:AB