2019春招Java开发类试卷
试题来源:牛客网(https://www.nowcoder.com/test/14266493/summary)
1.以下程序输出的结果,正确的是?
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");}}
DCABB
DABCBC
DACBCB
DACBB
答案:C
答案解析:
解析:在同一类里面,首先静态代码块在类加载的时候就执行了,而且只执行一次,不论你是否new了对象,而构造代码块和构造方法是在每次创建对象时都会被调用,并且构造代码块的执行次序优先于构造方法。
2.执行以下程序后,x和y的值分别是多少?
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);}}
10,10
10,30
30,10
30,30
答案:A
3.执行以下程序后,输出结果正确的是?
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);}}
true true
true false
false fasle
false true
答案:B
4.以下代码会输出什么结果?
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");}}
只有JD
只有OK
输出 JDOK
输出 OKJD
答案:A
5.以下代码会输出什么结果?
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");}}
只有JD
只有OK
输出 JDOK
输出 OKJD
答案:D
6.请阅读代码选择出该段代码的输入结果。
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";}
AB
ABC
C
BC
答案:C
7.执行以下程序后,输出结果正确的是?
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";}}
ABCD
ACDB
ACBD
不确定
答案:C
8.JDK1.8中,执行以下程序后,该list进行了几次扩容?
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");}}}
4
5
6
7
答案:C
答案解析初始值为10,增长幅度为1.5倍,答案为10->15->22->33->49->73->109,故答案为6次。
通过反射的实验,可以在每次添加一个元素时,打印内部数组的长度,即可得到容量。
import java.lang.reflect.Field;import java.util.ArrayList;import java.util.List;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();Class<? extends List> clazz = list.getClass();try {Field ed =clazz.getDeclaredField("elementData");ed.setAccessible(true);for(int i=0;i<100;i++){list.add("a");Object[] arr = (Object[])ed.get(list);System.out.println(arr.length);}} catch (NoSuchFieldException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
