java筆試題


作者:xcbeyond
瘋狂源自夢想,技術(shù)成就輝煌!微信公眾號:《程序猿技術(shù)大咖》號主,專注后端開發(fā)多年,擁有豐富的研發(fā)經(jīng)驗,樂于技術(shù)輸出、分享,現(xiàn)階段從事微服務(wù)架構(gòu)項目的研發(fā)工作,涉及架構(gòu)設(shè)計、技術(shù)選型、業(yè)務(wù)研發(fā)等工作。對于Java、微服務(wù)、數(shù)據(jù)庫、Docker有深入了解,并有大量的調(diào)優(yōu)經(jīng)驗。 






   

  閑來無事,就做了一套Java筆試題,也不知道具體是那個公司的,里面的有些題目還是可以研究的,感覺值得一弄。題目答案或許有些錯誤,望大家給予糾正,共同探討!

一、判斷題(30分)
1.Java程序里,創(chuàng)建新的類對象用關(guān)鍵字new,回收無用的類對象使用關(guān)鍵字free。錯
2.對象可以賦值,只要使用賦值號(等號)即可,相當(dāng)于生成了一個各屬性與賦值對象相同的新對象。錯
3.有的類定義時可以不定義構(gòu)造函數(shù),所以構(gòu)造函數(shù)不是必需的。錯
4.類及其屬性、方法可以同時有一個以上的修飾符來修飾。對
5.Java的屏幕坐標(biāo)是以像素為單位,容器的左下角被確定為坐標(biāo)的起點 錯
6.抽象方法必須在抽象類中,所以抽象類中的方法都必須是抽象方法。錯
7.Final類中的屬性和方法都必須被final修飾符修飾。錯
8.最終類不能派生子類,最終方法不能被覆蓋。對

最終類(終極類):被final修飾的類,當(dāng)然不能派生出子類了。
9.子類要調(diào)用父類的方法,必須使用super關(guān)鍵字。錯
10.一個Java類可以有多個父類。對
11.如果p是父類Parent的對象,而c是子類Child的對象,則語句c = p是正確的。錯
12.在java集合中,Vector和HashMap是線程安全的。錯

Vector 和Hashtable 是同步的,安全的

 ArrayList 和 HashMap不是同步的 ,不安全
13.當(dāng)一個方法在運行過程中產(chǎn)生一個異常,則這個方法會終止,但是整個程序不一定終止運行。對
14.接口是特殊的類,所以接口也可以繼承,子接口將繼承父接口的所有常量和抽象方法。對
15.用“+”可以實現(xiàn)字符串的拼接,用- 可以從一個字符串中去除一個字符子串。錯

二、選擇題(30分)
1、關(guān)于垃圾收集的哪些敘述是正確的(  C ):
A.程序開發(fā)者必須自己創(chuàng)建一個線程進行內(nèi)存釋放的工作
B.垃圾收集允許程序開發(fā)者明確指定并立即釋放該內(nèi)存
C.垃圾收集將檢查并釋放不再使用的內(nèi)存
D.垃圾收集能夠在期望的時間釋放被java對象使用的內(nèi)存
2、下面的哪些賦值語句是不正確的( A  ):
A.float f=11.1;
B.double d=5.3E12;
C.double d=3.14159;
D.double d=3.14D;
3、下面關(guān)于變量及其范圍的陳述哪些是不正確的(  B ):
A.實例變量是類的成員變量
B.實例變量用關(guān)鍵字static聲明
C.在方法中定義的局部變量在該方法被執(zhí)行時創(chuàng)建
D.局部變量在使用前必須被初始化
4、下列關(guān)于修飾符混用的說法,錯誤的是( B ):
A.a(chǎn)bstract不能與final并列修飾同一個類
B.a(chǎn)bstract類中不可以有private的成員
C.a(chǎn)bstract方法必須在abstract類中
D.static方法中能處理非static的屬性
5、容器Panel和Applet缺省使用的布局編輯策略是(  B  ):
A、BorderLayout  B、FlowLayout      C、GridLayout      D、CardLayout
6、以下標(biāo)識符中哪項是不合法的(  C   ):
A、 BigMeaninglessName                     B、$int
C、1 st                                    D、$1
7、main方法是Java  Application程序執(zhí)行的入口點,關(guān)于main方法的方法頭以下哪項是合法的(   B ):
A、    public  static  void  main()
B、    public  static  void   main(String[ ]  args)
C、    public  static int  main(String[ ]  arg)
D、    public  void  main(String  arg[ ])
8、執(zhí)行完以下代碼int [ ]  x = new  int[25];后,以下哪項說明是正確的(   A ):
A、    x[24]為0
B、    x[24]未定義
C、    x[25]為0
D、    x[0]為空
9、以下代碼段執(zhí)行后的輸出結(jié)果為(  B   ):
int  x=3; int  y=10;
System.out.println(y%x);
A、0
B、1
C、2
D、3
10、以下哪個表達式是不合法的(   D ):
A、String  x=”Hello”;   int  y=9;   x+=y;
B、String  x=”Hello”;   int  y=9;  if(x= =y)  { }
C、String  x=”Hello”;  int  y=9;  x=x+y;
D、String  x=null;  int  y=(x!=null)&&(x.length()>0) ? x.length : 0

//String  x=null;  int  y=(x!=null)&&(x.length()>0) ? X.length() : 0
11、編譯運行以下程序后,關(guān)于輸出結(jié)果的說明正確的是 (   C ):
public  class   Conditional{
public  static  void  main(String  args[  ]){
int  x=4;
System.out.println(“value  is  “+ ((x>4) ? 99.9 :9));
}
}
A、    輸出結(jié)果為:value  is  99.99
B、    輸出結(jié)果為:value  is  9
C、    輸出結(jié)果為:value  is  9.0
D、    編譯錯誤
12、以下聲明合法的是(   D  ):
A、    default  String  s;
B、    public  final  static  native  int  w( )
C、    abstract  double  d;
D、    abstract  final  double  hyperbolicCosine( )
13、關(guān)于以下application的說明,正確的是(  C  ):
1.  class   StaticStuff
2. {
3.                  static  int  x=10;
4.                  static  { x+=5;}
5.                  public  static  void  main(String  args[ ])
6.                  {
7.                       System.out.println(“x=” + x);
8.                  }
9.                  static  { x/=3;}
10.   }
A、 4行與9行不能通過編譯,因為缺少方法名和返回類型
B、 9行不能通過編譯,因為只能有一個靜態(tài)初始化器
C、 編譯通過,執(zhí)行結(jié)果為:x=5
D、編譯通過,執(zhí)行結(jié)果為:x=3
14、關(guān)于以下程序代碼的說明正確的是( B  ):
1.class  HasStatic{
2.    private  static  int  x=100;
3.    public  static  void  main(String  args[  ]){
4.        HasStatic  hs1=new  HasStatic(  );
5.        hs1.x++;
6.        HasStatic  hs2=new  HasStatic(  );
7.        hs2.x++;
8.        hs1=new  HasStatic( );
9.        hs1.x++;
10.       HasStatic.x- -;
11.       System.out.println(“x=”+x);
12.   }
13.}





A、5行不能通過編譯,因為引用了私有靜態(tài)變量
B、10行不能通過編譯,因為x是私有靜態(tài)變量
C、程序通過編譯,輸出結(jié)果為:x=103
D、程序通過編譯,輸出結(jié)果為:x=102
15、以下選項中循環(huán)結(jié)構(gòu)合法的是( C   ):
A、while (int  i<7){
i++;
System.out.println(“i is “+i);
}
B、int  j=3;
while(j){
System.out.println(“ j  is “+j);
}
C、int  j=0;
for(int  k=0; j + k !=10; j++,k++){
System.out.println(“ j  is “+ j + “k  is”+ k);
}
D、int  j=0;
do{
System.out.println( “j  is “+j++);
if (j = = 3) {continue  loop;}
}while  (j<10);

三、簡答題(40分)
1.    寫出下列程序的運行結(jié)果
public class Cat
{
void mi( ) throws NullPointerException
{
System.out.println( “Cat mi mi .. “ );
}
}
public class SmallCat extends Cat
{int i=8;
void mi( ) throws Exception
{
System.out.println( “SmallCat mi mi .. “ );
}
public static void main( String[] a ) throws Exception
{
Cat cat = new SmallCat();
cat.mi();
}
}

運行結(jié)果:SmallCat mi mi ..

寫出下列程序的運行結(jié)果
interface Playable {
void play();
}
interface Bounceable {
void play();
}
interface Rollable extends Playable, Bounceable {
Ball ball = new Ball(“PingPang”);
}
class Ball implements Rollable {
private String name;
public String getName() {
return name;
}
public Ball(String name) {
this.name = name;
}
public void play() {
ball = new Ball(“Football”);
System.out.println(ball.getName());
}
}

寫出下列程序的運行結(jié)果
class Value{
public int i = 15;
}
public class Test{
public static void main(String argv[]){
Test t = new Test();
t.first();
}
public void first(){
int i = 5;
Value v = new Value();
v.i = 25; //i=25
second(v, i);
System.out.println(v.i);
}
public void second(Value v, int i){
i = 0;
v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i + ” ” + i);// i=20
}
}

運行結(jié)果:15 0

          20

寫出下列程序的運行結(jié)果
class MyThread extends Thread{
public void run(){
System.out.println(“MyThread: run()”);
}
public void start(){
System.out.println(“MyThread: start()”);
}
}
class MyRunnable implements Runnable{
public void run(){
System.out.println(“MyRunnable: run()”);
}
public void start(){
System.out.println(“MyRunnable: start()”);
}
}
public class MyTest {
public static void main(String args[]){
MyThread myThread  =  new MyThread();
MyRunnable myRunnable = new MyRunnable();
Thread thread  =  new Thread(myRunnable);
myThread.start();
thread.start();
}
}

運行結(jié)果:
MyThread: start()

MyRunnable: run()