2019京东Java校招笔试

1 TCP协议的拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。常用的方法有:
正确答案 : BC 您的答案 : BC
A 慢启动、窗口滑动
B 慢开始、拥塞控制
C 快重传、快恢复
D 快开始、快恢复

2 Shell 脚本(shell script),是一种为 shell 编写的脚本程序。现有一个test.sh文件,且有可执行权限,文件中内容为:
#!/bin/bash
aa=’Hello World !’
请问下面选项中哪个能正常显示Hello World !
正确答案 : D 您的答案 : D
A sh test.sh >/dev/null 1 && echo $aa
B ./test.sh >/dev/null 1 && echo $aa
C bash test.sh >/dev/null 1 && echo $aa
D source test.sh >/dev/null 1 && echo $aa

3 bash脚本文件一般第一行开头是
正确答案 : C 您的答案 : C
A //
B ##
C #!
D #/

4 在bash编程中,算术比较大于、大于等于的运算符是( )
正确答案 : CD 您的答案 : CD
A >
B >=
C ge
D gt

5 系统管理员编写扫描临时文件的shell程序tmpsc.sh, 测试该程序时提示拒绝执行,解决的方法有( )
正确答案 : BCD 您的答案 : BC
A chmod 644 tmpsc.sh
B chmod 755 tmpsc.sh
C chmod a+x tmpsc.sh
D chmod u+x tmpsc.sh
解析:
目录/文件的满权限的形式:
drwxrwxrwx
-rwxrwxrwx 其中:(r:读取,w:写,x:执行)
数字对应:(r:4,w:2,x:1), 命令行中的三个数字对应的授权角色为owner, group, others

  1. 通过数字修改权限
    chmod 777 [-R]
  2. 符号类型修改
    u: owner
    g: group
    o: others
    a : all
    chmod a+x [-R] 所有人都拥有执行权限

6

1
2
3
4
5
6
7
8
9
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) {
ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 15, TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(5), new ThreadPoolExecutor.CallerRunsPolicy());
}
}

线程池executor在空闲状态下的线程个数是?
正确答案 : B 您的答案 : B
A 0
B 5
C 10
D 不确定

7 Object类不含有以下哪种方法?
正确答案 : A 您的答案 : A
A equal
B wait
C notify
D clone

8

1
2
3
4
5
6
7
8
9
10
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
for(int i=0;i<100;i++){
list.add("a");
}
}
}

JDK1.8中,执行以上程序后,该list进行了几次扩容?
正确答案 : C 您的答案 : D
A 4
B 5
C 6
D 7
解析:初始容量被设置为10,那么容量变化的规则是((旧容量 * 3) / 2) + 1,也就是1.5倍增长

9

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Main {
public static void main(String[] args) {
System.out.print(fun1());
}
public static String fun1() {
try {
System.out.print("A");
return fun2();
} finally {
System.out.print("B");
}
}
public static String fun2() {
System.out.print("C");
return "D";
}
}

执行以上程序后,输出结果正确的是?
正确答案 : C 您的答案 : C
A ABCD
B ACDB
C ACBD
D 不确定

10 根据类加载器加载类的初始化原理,推断以下代码的输入结果为?

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Test {
public static void main(String[] args) throws Exception{
ClassLoader classLoader=ClassLoader.getSystemClassLoader();
Class clazz=classLoader.loadClass("A");
System.out.print("Test");
clazz.forName("A");
}
}
class A{
static {
System.out.print("A");
}
}

正确答案 : A 您的答案 : A
A TestA
B ATestA
C ATest
D Test

11 继承是JAVA语言的一个特性,针对类的继承,虚拟机会如何进行父类和子类的初始化加载呢?请阅读代码选择出该段代码
的输入结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Test {
public static void main(String[] args) {
System.out.print(B.c);
}
}
class A {
public static String c = "C";
static {
System.out.print("A");
}
}
class B extends A{
static {
System.out.print("B");
}
}

正确答案 : A 您的答案 : A
A AC
B ABC
C C
D BC

12 继承是JAVA语言的一个特性,针对类的继承,虚拟机会如何进行父类和子类的初始化加载呢?请阅读代码选择出该段代码
的输入结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Test {
public static void main(String[] args) {
System.out.print(B.c);
}
}
class A {
static {
System.out.print("A");
}
}
class B extends A{
static {
System.out.print("B");
}
public final static String c = "C";
}

正确答案 : C 您的答案 : C
A AB
B ABC
C C
D BC

13 JAVA的类加载期负责整个生命周期内的class的初始化和加载工作,就虚拟机的规范来说,以下代码会输出什么结果?

1
2
3
4
5
6
7
8
9
10
11
public class Test {
public static void main(String[] args) {
System.out.println(Test2.a);
}
}
class Test2{
static {
System.out.print("OK");
}
public static final String a=new String("JD");
}

正确答案 : D 您的答案 : D
A 只有JD
B 只有OK
C 输出 JDOK
D 输出 OKJD

14 JAVA的类加载期负责整个生命周期内的class的初始化和加载工作,就虚拟机的规范来说,以下代码会输出什么结果?

1
2
3
4
5
6
7
8
9
10
11
public class Test {
public static void main(String[] args) {
System.out.println(Test2.a);
}
}
class Test2{
public static final String a=new String("JD");
static {
System.out.print("OK");
}
}

正确答案 : D 您的答案 : D
A 只有JD
B 只有OK
C 输出 JDOK
D 输出 OKJD

15 JAVA的类加载期负责整个生命周期内的class的初始化和加载工作,就虚拟机的规范来说,以下代码会输出什么结果?

1
2
3
4
5
6
7
8
9
10
11
public class Test {
public static void main(String[] args) {
System.out.println(Test2.a);
}
}
class Test2{
public static final String a="JD";
static {
System.out.print("OK");
}
}

正确答案 : A 您的答案 : A
A 只有JD
B 只有OK
C 输出 JDOK
D 输出 OKJD

16

1
2
3
4
5
6
7
8
9
public class Main {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);
String s3 = new String("abc");
System.out.println(s1 == s3);
}
}

执行以上程序后,输出结果正确的是?
正确答案 : B 您的答案 : B
A true true
B true false
C false fasle
D false true

17

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Main {
private static int x = 10;
private static Integer y = 10;
public static void updateX(int value) {
value = 3 * value;
}
public static void updateY(Integer value) {
value = 3 * value;
}
public static void main(String[] args) {
updateX(x);
updateY(y);
}
}

执行以上程序后,x和y的值分别是多少?
正确答案 : A 您的答案 : A
A 10,10
B 10,30
C 30,10
D 30,30

18

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Main {
public static void main(String[] args) {
System.out.println("A");
new Main();
new Main();
}
public Main() {
System.out.println("B");
}
{
System.out.println("C");
}
static {
System.out.println("D");
}
}

以上程序输出的结果,正确的是?
正确答案 : C 您的答案 : C
A DCABB
B DABCBC
C DACBCB
D DACBB

19 兼容接口不同的类在一起工作,采用以下哪种设计模式最好?
正确答案 : B 您的答案 : C
A 建造者模式
B 适配器模式
C 桥接模式
D 代理模式

20 下图的UML类结构图表示的是哪种设计模式:
图
正确答案 : A 您的答案 : A
A 抽象工厂模式
B 享元模式
C 装饰模式
D 责任链模式

21 以下哪条SQL语句可以返回table1中的全部的key:
正确答案 : D 您的答案 : D
A select tabel1.key from table1 join tabel2 on table1.key=table2.key
B select tabel1.key from table1 right outer join tabel2 on table1.key=table2.key
C select tabel1.key from table1 left semi join tabel2 on table1.key=table2.key
D select tabel1.key from table1 left outer join tabel2 on table1.key=table2.key

22 下列有关软连接描述正确的是
正确答案 : C 您的答案 : C
A 与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块
B 不能对目录创建软链接
C 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径
D 不可以对不存在的文件创建软链接

23 以下哪种设备工作在数据链路层?
正确答案 : B 您的答案 : B
A 中继器
B 集线器
C 交换机
D 路由器

24 一颗二叉树的叶子节点有5个,出度为1的结点有3个,该二叉树的结点总个数是?
正确答案 : B 您的答案 : B
A 11
B 12
C 13
D 14

25 若串S=”UP!UP!JD”,则其子串的数目
正确答案 : B 您的答案 : B
A 33
B 37
C 39
D 35
解析:(n*(n+1)/2)+1

26 已知小顶堆:{51,32,73,23,42,62,99,14,24,3943,58,65,80,120},请问62对应节点的左子节点是
正确答案 : B 您的答案 : B
A 99
B 73
C 3943
D 120

27 关于递归法的说法不正确的是( )
正确答案 : D 您的答案 : D
A 程序结构更简洁
B 占用CPU的处理时间更多
C 要消耗大量的内存空间,程序执行慢,甚至无法执行
D 递归法比递推法的执行效率更高

28 以下为求0到1000以内所有奇数和的算法,从中选出描述正确的算法( )
正确答案 : A 您的答案 : A
A ①s=0;②i=1;③s=s+i;④i=i+2;⑤如果i≤1000,则返回③;⑥结束
B ①s=0;②i=1;③i=i+2;④s=s+i;⑤如果i≤1000,则返回③;⑥结束
C ①s=1;②i=1;③s=s+i;④i=i+2;⑤如果i≤1000,则返回③;⑥结束
D ①s=1;②i=1;③i=i+2;④s=s+i;⑤如果i≤1000,则返回③;⑥结束

29 如何在多线程中避免发生死锁?
正确答案 : ABCD 您的答案 : ABCD
A 允许进程同时访问某些资源。
B 允许进程强行从占有者那里夺取某些资源。
C 进程在运行前一次性地向系统申请它所需要的全部资源。
D 把资源事先分类编号,按号分配,使进程在申请,占用资源时不会形成环路。

30 下面有关值类型和引用类型描述正确的是()?
正确答案 : ABC 您的答案 : ABC
值类型的变量赋值只是进行数据复制,创建一个同值的新对象,而引用类型变量赋值,仅仅是把对象的引用
的指针赋值给变量,使它们共用一个内存地址。
A
值类型数据是在栈上分配内存空间,它的变量直接包含变量的实例,使用效率相对较高。而引用类型数据是
分配在堆上,引用类型的变量通常包含一个指向实例的指针,变量通过指针来引用实例。
B
C 引用类型一般都具有继承性,但是值类型一般都是封装的,因此值类型不能作为其他任何类型的基类。
D 值类型变量的作用域主要是在栈上分配内存空间内,而引用类型变量作用域主要在分配的堆上。