JAVA面试题

来源:互联网 发布:dota2 mac版分辨率 编辑:程序博客网 时间:2024/06/15 13:49

1.下列属于合法的Java标识符是()

A. cat

B. 5books

C. +static

D. -3.14159

E. $3212

F. @tom

2.JAVA接口的修饰符可以为()

A. Private

B. Protected

C. Final

D. abstract

3.ArrayList  list=new  ArrayList(20);中的list扩充几次()

A. 0

B. 1

C. 2

D. 3

4.下列说法正确的有()

A. Class中的constructor不可省略

B. Constructor必须与class同名,但方法不能与class同名

C. Constructor在一个对象被new时执行

D. 一个class只能定义一个constructor

5.下列运算符合法的是()

A. &&

B. <>

C. If

D. :=

6. 执行如下程序代码   

a=0;c=0;   

do{   

--c;   

a=a-1;   

}while(a>0);   后,C的值是()   

A0 B1C-1 D.死循环

7.下列哪一种叙述是正确的()   

A.abstract修饰符可修饰字段、方法和类    

B.抽象方法的body部分必须用一对大括号{}包住   

C.声明抽象方法,大括号可有可无  

D.声明抽象方法不可写出大括号

8.以下运算符按运算优先级从高到低排列顺序正确的是()

A. !,*<=

B. !,=*>=

C. !,*&&>=

D. =*&&>=

9.public class text1 {

private static void changeStr(String str) {

str="hello";

}

public static void main(String[] args) {

String str="1234";

changeStr(str);

System.out.println(str);

}

} 输出结果是()

A. Hello

B. 1234hello

C. 编译错误

D. 1234

10.执行下列代码后,哪个结论是正确的String[] s=new String[10];()

A. S[9]null;

B. S[10]””;

C. S[0]为未定义;

D. S.length10

11."=="equals方法究竟有什么区别?

答:

==操作符专门用来比较两个变量的值是否相等, 

equals 方法是用于比较两个独立对象的内容是否相同 

12.Overload Override的区别。 Overloaded的方法是否可以改变返回值的类型?

答:

Overload 是重载的意思,Override 是覆盖的意思,也就是重写。 

13.多线程有几种实现方法?同步有几种实现方法?

答:

多线程有两种实现方法,分别是继承 Thread类与实现 Runnable接口

同步的实现方面有两种,分别是 synchronized,waitnotify

wait():使一个线程处于等待状态,并且释放所持有的对象的lock

sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉

InterruptedException(中断异常)异常。

notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒

某一个等待状态的线程,而是由 JVM确定唤醒哪个线程,而且不是按优先级。

Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是

让它们竞争。

14.编写一段代码讲字符串反转,例如:”abcd”,输出”dcba”.

答:

public class text1{

public void swap(char[] arr, int begin, int end) {  

        while(begin < end) {  

            char temp = arr[begin];  

            arr[begin] = arr[end];  

            arr[end] = temp;  

            begin++;  

            end--;  

        }  

    }  

    public String swapWords(String str) {  

        char[] arr = str.toCharArray();  

        swap(arr, 0, arr.length - 1);  

        int begin = 0;  

        for (int i = 1; i < arr.length; i++) {  

            if (arr[i] == ' ') {  

                swap(arr, begin, i - 1);  

                begin = i + 1;  

            }  

        }  

  

        return new String(arr);  

    }  

      

    public static void main(String[] args) {  

        String str = "abcd";  

        System.out.println(new text1().swapWords(str));  

    }  

}

15.设计 4 个线程,其中两个线程每次对j 增加1,另外两个线程对j 每次减少1。写出程序。

答:

public class text1 {

private int j;

 

public static void main(String args[]) {

text1 tt = new text1();

Inc inc = tt.new Inc();

Dec dec = tt.new Dec();

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

Thread t = new Thread(inc);

t.start();

t = new Thread(dec);

t.start();

}

}

 

private synchronized void inc() {

j++;

System.out.println(Thread.currentThread().getName() + "-inc:" + j);

}

 

private synchronized void dec() {

j--;

System.out.println(Thread.currentThread().getName() + "-dec:" + j);

}

 

class Inc implements Runnable {

public void run() {

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

inc();

}

}

}

 

class Dec implements Runnable {

public void run() {

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

dec();

}

}

}

}

0 1
原创粉丝点击