15道非常经典的Java面试题 附详细答案

试题如下:

参考答案:

import java.io.FileNotFoundException;

import java.io.IOException;

import java.util.ArrayList;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

/**

* Created by ysc on 7/26/16.

*/

public class Interview {

private static void one(){

String str1 = "hello";

String str2 = "he"+new String("llo");

System.err.println(str1==str2);

System.out.println("1. false");

}

private static void two(){

int i = Integer.MAX_VALUE;

System.err.println((i+1)<i);

System.out.println("2. 存在一个i, 使得(i+1)<i");

}

private static void three(){

System.err.println("gc is not a Java Thread, it is a native thread");

Thread.getAllStackTraces().keySet().forEach(thread -> System.out.println(thread.getName()+"->"+thread.isDaemon()+" "+thread.getPriority()));

System.out.println("3. gc线程是daemon线程");

}

private static volatile int count = 0;

private static void four(){

ExecutorService executorService = Executors.newCachedThreadPool();

for(int j=0; j<10; j++){

executorService.submit(()->{

for(int i=0; i<1000000; i++){

count++;

}

});

}

System.out.println("count should be: "+10000000+", actual be: "+count);

System.out.println("4. volatile不能保证线程安全");

}

private static void five(){

ArrayList<Integer> list = new ArrayList<>(20);

list.add(1);

System.out.println("debug code, not execute grow method");

System.out.println("5. list grow 0 times");

}

private static void six() {

System.out.println("BufferedReader's constructor only accepts a Reader instance");

System.out.println("6. new BufferedReader(new FileInputStream(\"a.dat\")); is wrong");

}

private static void seven() {

try{

if(true){

throw new IOException();

}

}catch (FileNotFoundException e){

System.out.print("FileNotFoundException!");

}catch (IOException e){

System.out.print("IOException!");

}catch (Exception e){

System.out.print("Exception!");

}

System.out.println("\n7. IOException!");

}

private static void eight() {

System.out.println("String s;System.out.println(s); error: variable s might not have been initialized\nRecompile with -Xlint:unchecked for details.");

System.out.println("8. 由于String s没有初始化, 代码不能编译通过");

}

private static void nine() {

System.out.println("5"+2);

System.out.println("9. 52");

}

private static void ten() {

int i = 2;

int result = 0;

switch(i){

case 1:

result = result + i;

case 2:

result = result + i * 2;

case 3:

result = result + i * 3;

}

System.out.println("result="+result);

System.out.println("10. 10");

}

private static class Null{

public static void hello(){

System.out.println("hello");

}

public static void main(String[] args) {

((Null)null).hello();

Null _null = (Null)null;

_null.hello();

}

}

private static class StringExample1{

String str = new String("good");

char[] ch = {'a', 'b', 'c'};

public void change(String str, char[] ch){

str = "test ok";

ch[0] = 'g';

}

public static void main(String[] args) {

StringExample1 ex = new StringExample1();

ex.change(ex.str, ex.ch);

System.out.print(ex.str+" and ");

System.out.print(ex.ch);

System.out.println();

}

}

private static class StringExample2{

public static void change(String str){

str = "welcome";

}

public static void main(String[] args) {

String str = "1234";

change(str);

System.out.println(str);

}

}

private static class ForLoop{

static boolean foo(char c){

System.out.print(c);

return true;

}

public static void main(String[] args) {

int i=0;

for(foo('A');foo('B')&&(i<2);foo('C')){

i++;

foo('D');

}

System.out.println();

}

}

private static class HelloA{

public HelloA(){

System.out.println("HelloA");

}

{ System.out.println("I'm A class"); }

static {

System.out.println("static A");

}

}

private static class HelloB extends HelloA{

public HelloB(){

System.out.println("HelloB");

}

{ System.out.println("I'm B class"); }

static {

System.out.println("static B");

}

public static void main(String[] args) {

System.out.println("main start");

new HelloB();

new HelloB();

System.out.println("main end");

}

}

public static void main(String[] args) {

one();

two();

three();

four();

five();

six();

seven();

eight();

nine();

ten();

Null.main(null);

StringExample1.main(null);

StringExample2.main(null);

ForLoop.main(null);

HelloB.main(null);

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是 15道非常经典的Java面试题 附详细答案 的全部内容, 来源链接: utcz.com/p/210679.html

回到顶部