Java笔试/面试题目
1、运算符优先级问题,下面代码的结果是多少?(笔试)
public class Test { public static void main(String[] args) { int k = 0; int ret = ++k + k++ + ++k + k; // ret的值为多少 System.err.println(ret); } }
ret == 8
ret == 1 + 1 + 3 + 3, K值不同;(栈空间)
2、运算符问题,下面代码分别输出什么?(笔试)
public class Test { public static void main(String[] args) { int i1 = 10, i2 = 10; System.err.println("i1 + i2 = " + i1 + i2); System.err.println("i1 - i2 = " + (i1 - i2)); System.err.println("i1 * i2 = " + i1 * i2); System.err.println("i1 / i2 = " + i1 / i2); } }
i1 + i2 = 1010 (优先级) i1 - i2 = 0 i1 * i2 = 100 i1 / i2 = 1
3、下面代码的结果是什么?还是抛出异常?(笔试)
public class Test { public void myMethod(String str) { System.err.println("string"); // str == "null" } public void myMethod(Object obj) { System.err.println("object"); } public static void main(String[] args) { Test t = new Test(); t.myMethod(null); // null is not a instance of "Object", it's a null type;
// The null reference can always be cast to any reference type } }
string
4、假设今天是9月8日,下面代码输出什么?(笔试)
public class Test { public static void main(String[] args) { Date date = new Date(); System.err.println(date.getMonth() + " " + date.getDate()); } }
?? 8 8
5、下面代码的输出结果是什么?
public class Test { public static void main(String[] args) { double val = 11.5; System.err.println(Math.round(val)); System.err.println(Math.floor(val)); System.err.println(Math.ceil(val)); } }
12
11.0
12.0
6、编程输出一个目录下的所有目录及文件名称,目录之间用tab。(笔试)
public class Test { public static void main(String[] args) { new Test().read("D:/test", ""); } public void read(String path, String tab) { File file = new File(path); File[] childFiles = file.listFiles(); //返回当前文件夹下的所有文件的方法是listFiles() for (int i = 0; childFiles != null && i < childFiles.length; i++) { System.err.println(tab + childFiles[i].getName()); if (childFiles[i].isDirectory()) { read(childFiles[i].getPath(), tab + "\t"); } } } }
7、从键盘读入10个整数,然后从大到小输出。(笔试)
public class Test { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意这里的数组,不是int的 Integer[] arr = new Integer[10]; for (int i = 0; i < 10; i++) { arr[i] = in.nextInt(); } Arrays.sort(arr, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { if (o1 > o2) return -1; if (o1 < o2) return 1; return 0; } }); System.err.println(Arrays.toString(arr)); } }
8、下面代码的结果是什么?
public class Test extends Base { public static void main(String[] args) { Base b = new Test(); b.method(); Test t = new Test(); t.method(); } @Override public void method() { System.err.println("test"); } } class Base { public void method() throws InterruptedException { System.err.println("base"); } }
test
test
9、以下代码的结果是什么?
public class Test extends Base { public static void main(String[] args) { new Test().method(); } public void method() { System.err.println(super.getClass().getName());
System.err.println(this.getClass().getName());
System.err.println(super.getClass().getSuperclass().getName());
System.err.println(this.getClass().getSuperclass().getName()); } } class Base { }
CheckTest.Test
CheckTest.Test
CheckTest.Base
CheckTest.Base
10、true or false?
public class Test { public static void main(String[] args) { String str1 = new String("abc"); String str2 = new String("abc"); System.err.println(str1.equals(str2)); StringBuffer sb1 = new StringBuffer("abc"); StringBuffer sb2 = new StringBuffer("abc"); System.err.println(sb1.equals(sb2)); } }
true
false
11、输出的结果是什么?
public class Test { public static void main(String[] args) { System.err.println(new Test().method1()); System.err.println(new Test().method2()); } public int method1() { int x = 1; try { return x; } finally { ++x; } } public int method2() { int x = 1; try { return x; } finally { return ++x; } } }
1 (暂时无法解释.....)
2