收录各种猥琐的Java笔试/面试题目

本文收录各种猥琐的Java笔试/面试题,一些比较容易忘记的,不定期更新。也希望大家在底下留言,贴出自己碰到或看到的各种猥琐笔试、面试题目。

J2EE基础部分
1、运算符优先级问题,下面代码的结果是多少?(笔试)


[java] view plaincopyprint?package test; 
 
public class Test { 
    public static void main(String[] args) { 
        int k = 0; 
        int ret = ++k + k++ + ++k + k; 
        // ret的值为多少  
        System.err.println(ret); 
    } 


package test;

public class Test {
public static void main(String[] args) {
int k = 0;
int ret = ++k + k++ + ++k + k;
// ret的值为多少
System.err.println(ret);
}
}2、运算符问题,下面代码分别输出什么?(笔试)


[java] view plaincopyprint?package test; 
 
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); 
    } 


package test;

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);
}
}3、下面代码的结果是什么?还是抛出异常?(笔试)


[java] view plaincopyprint?package test; 
 
public class Test { 
     
    public void myMethod(String str) { 
        System.err.println("string"); 
    } 
     
    public void myMethod(Object obj) { 
        System.err.println("object"); 
    } 
     
    public static void main(String[] args) { 
        Test t = new Test(); 
        t.myMethod(null); 
    } 


package test;

public class Test {

public void myMethod(String str) {
System.err.println("string");
}

public void myMethod(Object obj) {
System.err.println("object");
}

public static void main(String[] args) {
Test t = new Test();
t.myMethod(null);
}
}
4、假设今天是9月8日,下面代码输出什么?(笔试)


[java] view plaincopyprint?package test; 
 
import java.util.Date; 
 
public class Test { 
 
    public static void main(String[] args) { 
        Date date = new Date(); 
        System.err.println(date.getMonth() + " " + date.getDate()); 
    } 


package test;

import java.util.Date;

public class Test {

public static void main(String[] args) {
Date date = new Date();
System.err.println(date.getMonth() + " " + date.getDate());
}
}
5、下面代码的输出结果是什么?


[java] view plaincopyprint?package test; 
 
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)); 
    } 


package test;

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));
}
}
6、编程输出一个目录下的所有目录及文件名称,目录之间用tab。(笔试)


[java] view plaincopyprint?package test; 
 
import java.io.File; 
 
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(); 
        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"); 
            } 
        } 
    } 


package test;

import java.io.File;

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();
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");
}
}
}
}
不要觉得很简单,最起码你要记得返回当前文件夹下的所有文件的方法是listFiles(),isDirectory别拼错了。

7、从键盘读入10个整数,然后从大到小输出。(笔试)


[java] view plaincopyprint?package test; 
 
import java.util.Arrays; 
import java.util.Comparator; 
import java.util.Scanner; 
 
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)); 
    } 
     


package test;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

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));
}

}
自己手写排序算法的可以无视此题,如果是Arrays.sort()的,请注意Comparator与Comparable接口的区别,别搞混了。

8、下面代码的结果是什么?


[java] view plaincopyprint?package test; 
 
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"); 
    } 


package test;

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");
}
}
9、以下代码的结果是什么?


[java] view plaincopyprint?package test; 
 
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().getSuperclass().getName()); 
    } 
     

 
class Base { 


package test;

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().getSuperclass().getName());
}

}

class Base {
}
10、true or false?
[java] view plaincopyprint?package test; 
 
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)); 
    } 


package test;

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));
}
}
11、输出的结果是什么?


[java] view plaincopyprint?package test; 
 
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; 
        } 
    } 


package test;

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;
}
}
}
这样呢?输出什么


[java] view plaincopyprint?package test; 
 
public class Test { 
 
    public static void main(String[] args) { 
        System.err.println(method()); 
    } 
     
    public static boolean method() {  
         try {  
            return true;  
        } finally {  
          return false; 
        }  
    } 


package test;

public class Test {

public static void main(String[] args) {
System.err.println(method());
}

public static boolean method() {
     try {
        return true;
    } finally {
      return false;
    }
}
}
12、方法m1和m2有区别吗?什么区别


[java] view plaincopyprint?package test; 
 
public class Test { 
 
    public static void main(String[] args) { 
    } 
 
    public synchronized void m1() { 
    } 
 
    public static synchronized void m2() { 
    } 


package test;

public class Test {

public static void main(String[] args) {
}

public synchronized void m1() {
}

public static synchronized void m2() {
}
}
13、true or false?理由


[java] view plaincopyprint?package test; 
 
public class Test { 
 
    public static void main(String[] args) { 
        Integer i1 = 127; 
        Integer i2 = 127; 
        System.err.println(i1 == i2); 
         
        i1 = 128; 
        i2 = 128; 
        System.err.println(i1 == i2); 
    } 


package test;

public class Test {

public static void main(String[] args) {
Integer i1 = 127;
Integer i2 = 127;
System.err.println(i1 == i2);

i1 = 128;
i2 = 128;
System.err.println(i1 == i2);
}
}
14、true or false?理由


[java] view plaincopyprint?package test; 
 
public class Test { 
 
    public static void main(String[] args) { 
        String str1 = "a"; 
        String str2 = "a"; 
        String str3 = new String("a"); 
         
        System.err.println(str1 == str2); 
        System.err.println(str1 == str3); 
        str3 = str3.intern(); 
        System.err.println(str1 == str3); 
    } 


package test;

public class Test {

public static void main(String[] args) {
String str1 = "a";
String str2 = "a";
String str3 = new String("a");

System.err.println(str1 == str2);
System.err.println(str1 == str3);
str3 = str3.intern();
System.err.println(str1 == str3);
}
}
15、true or false?理由


[java] view plaincopyprint?package test; 
 
public class Test { 
 
    public static void main(String[] args) { 
        System.err.println(12 - 11.9 == 0.1); 
    } 


package test;

public class Test {

public static void main(String[] args) {
System.err.println(12 - 11.9 == 0.1);
}
}
16、以下代码输出是什么?


[java] view plaincopyprint?package test; 
 
import java.math.BigInteger; 
 
public class Test { 
 
    public static void main(String[] args) { 
        BigInteger one = new BigInteger("1"); 
        BigInteger two = new BigInteger("2"); 
        BigInteger three = new BigInteger("3"); 
        BigInteger sum = new BigInteger("0"); 
        sum.add(one); 
        sum.add(two); 
        sum.add(three); 
        System.out.println(sum.toString()); 
    } 


package test;

import java.math.BigInteger;

public class Test {

public static void main(String[] args) {
BigInteger one = new BigInteger("1");
BigInteger two = new BigInteger("2");
BigInteger three = new BigInteger("3");
BigInteger sum = new BigInteger("0");
sum.add(one);
sum.add(two);
sum.add(three);
System.out.println(sum.toString());
}
}
17、输出的结果是什么?12345?根据单词排序?还是?


[java] view plaincopyprint?package test; 
 
import java.util.HashSet; 
import java.util.Iterator; 
import java.util.Set; 
 
public class Test { 
 
    public static void main(String[] args) { 
        Set<String> set = new HashSet<String>(); 
        set.add("one"); 
        set.add("two"); 
        set.add("three"); 
        set.add("four"); 
        set.add("five"); 
        for (Iterator<String> it = set.iterator(); it.hasNext();) { 
            System.err.println(it.next()); 
        } 
    } 


package test;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Test {

public static void main(String[] args) {
Set<String> set = new HashSet<String>();
set.add("one");
set.add("two");
set.add("three");
set.add("four");
set.add("five");
for (Iterator<String> it = set.iterator(); it.hasNext();) {
System.err.println(it.next());
}
}
}
18、如何迭代Map容器,别所大概是......,手写个试试?

19、以下代码输出的结果(笔试选择题)


[java] view plaincopyprint?public class Test { 
 
    public static void main(String[] args) { 
        System.err.println(args.length); 
    } 
     

/*
A. null     B. 0        C. Test
D. Exception in thread "main" java.lang.NullPointerException
*/ 

public class Test {

public static void main(String[] args) {
System.err.println(args.length);
}

}
/*
A. null B. 0 C. Test
D. Exception in thread "main" java.lang.NullPointerException
*/20、下面为一个单例的实现代码,请指出代码中有几个错误或不合理之处,并改正。


[java] view plaincopyprint?public class Test { 
     
    public Test instance = null; 
     
    public static Test getInstance() { 
        if (instance == null) { 
            instance = new Test(); 
            return instance; 
        } 
    } 

你可能感兴趣的:(java)