- 相關推薦
java中級工程師面試題
目前,我國對軟件人才的需求已達20萬,并且以每年20%左右的速度增長。在未來5年內,合格軟件人才的需求將遠大于供給。下面是關于java中級工程師面試題,希望大家認真閱讀!
一、 單選題(共12題,每題2分,共24分)
1.下面關于Java的表述有錯誤的是________
A.Java中沒有sizeof操作符,所有數據類型的長度都是確定的,與平臺無關。
B.在Java中,局部變量不會被自動初始化,需要顯式的賦初值。
C.Java中的instanceof運算符,可以判斷一個對象是否屬于某個類的實例。
D.一個Java文件里可以有多個public類,但Java文件名必須和包含main方法的那個public類名精確一致。
2.下面關于Java中static關鍵字的表述錯誤的是________
A.被static修飾的類成員變量在編譯時由內存分配一塊空間,直到程序停止運行才會被釋放。
B.被static修飾的類方法只能訪問其自身類未被static修飾的實例方法,而不能訪問其他類的。
C.被static修飾的類方法不能使用this關鍵字。
D.在沒有創建該類的對象時,該類中用static修飾的類方法就可以被調用。
3.下面關于Java中abstract關鍵字的表述有錯誤的是________
A.用abstract修飾不在類內實現的方法,稱為抽象方法;抽象方法必須在子類派生時被重載。
B.用abstract修飾的類為抽象類;抽象類可以同時被static或final關鍵字修飾。
C.抽象類中不一定包含抽象方法,但包含抽象方法的類一定要聲明為抽象類。
D.如果一個類被定義為抽象類,則該類不能進行實例化。
4.下面關于Java中垃圾回收(gc)的表述有錯誤的是_______
A.在String str1 = ̶Hello”;String str2 = str1;str1 = null;中,對象”Hello”不會被垃圾回收。
B.調用Runtime.getRuntime().gc()會立即啟動垃圾回收線程對當前程序進行垃圾回收。
C.調用Systmer.gc()只是提示垃圾回收器進行垃圾回收操作,但并不保證gc線程立即啟動。
D.當垃圾回收器將要釋放無用對象的內存時,先調用該對象的finalize()方法。
5.下面關于Java中接口(interface)的表述有錯誤的是________
A.在接口中定義的常量可以被多個類共享,具有public,final,static屬性,可被任意類訪問。
B.接口中只對方法進行聲明而沒有實現體,而且用分號結尾,具有public和abstract屬性
C.子接口中定義了與父接口同名的常量或者相同的方法,則父接口的常量被隱藏,方法被重寫
D.實現接口的類必須實現接口和其父接口中的所有方法。
6.下面哪個方法不屬于String類提供的______
A.IndexOf()
B.getChar2()
C.replace()
D.append()
7.在Java多線程中,調用下面哪種方法不會使線程進入阻塞狀態?________
A.sleep()
B.suspend()
C.wait()
D.yield()
8.下面程序被編譯運行時,下面哪些描述是正確的_________。
class B{
public int f(int i){
return i+i;
}
public int f(int i, int j){
return i+j;
}
public int f(char c){
return c;
}
}
public class Test extends B{
public int f(int i, int j){
return super.f(i,j);
}
public int f(int j){
return -j;
}
public static void main(String[] args){
B x = new Test();
System.out.println(x.f(5,1)+” ̶+x.f(4)+” ̶+x.f(‘A’));
}
}
A.編譯不通過,B x = new Test() 出錯,類型不匹配
B.編譯不通過,原因是B.f(char c),一個char類型不能直接當做int類型返回
C.編譯通過,運行輸出結果是15 -4 65
D.編譯通過,運行輸出結果是15 8 65
9.下面哪個類或接口定義了wait()、notify()、notifyAll()方法_______
A.java.lang.Thread
B.java.lang.Runnable
C.java.lang.Object
D.java.lang.TreadGroup
1.在Java API文檔中,下面的哪部分未被包括在內_______
A.類的用途的描述
B.類層次
C.父類方法的列表
D.成員變量的列表
11.下面列出的修飾符中,哪一個用來修飾方法(method)要求此方法必須顯式地獲得某個對象才能執行________
A.final
B.synchronized
C.static
D.public
12.下面的各種異常中,哪種異常在一個方法中沒有聲明拋出此異常時也可以在其方法體中直接拋出________
A.java.lang.ClassNotFoundException
B.java.lang.Exception
C.java.lang.NullPointerException
D.java.ioException
二、 多選題(共5題,每題3分,共15分)
1.下面對操作系統中線程和進程的表述有錯誤的是_______
A.進程是程序的運行實例,它包含內存和資源,而線程是由進程進一步派生出來的一組代碼的執行過程
B.每個進程都有一個主線程,還可以建立另外的線程。進程中的線程是并行執行的,每個線程占用CPU的時間由此進程來調度。
C.進程中的所有線程共享進程的虛擬地址空間,這意味著所有線程都可以訪問進程的全局變量和資源。
D.進程中的每個線程的聲明周期都在該進程中,每個線程都有自己的私有虛擬地址空間。
2.下面關于HashMap與Hashtable區別的表述正確的是______
A.HashMap與Hashtable采用的hash/rehas算法基本一致。
B.HashMap允許將null作為一個entry得key或value,而Hashtable不允許。
C.HashMap與Hashtable都是Map interface的實現。
D.Hashtable的方法是syncronized的,而HashMap不是,因此HashMap非線程安全
3.對于一個abstract的method,不能用下面哪個Java關鍵字同時修飾_______
A.static
B.native
C.synchronized
D.final
4.下面關于Java中Vector、ArrayList、LinkedList的表述正確的是_______
A.這三個類都實現了java.util.List接口,但只有Vector是線程安全的
B.ArrayList與Vector在從指定位置用index檢索一個元素的時候,時間開銷是O(1)
C.LinkedList在插入、刪除任意位置元素的時間開銷都是O(1),但它在索引一個元素的時候比較慢,為O(i),其中i是索引的位置。
D.當向這幾種類型中增加元素時,如果數目超出了其目前的長度,Vector缺省情況下自動增長原來一倍的長度,而ArrayList與LinkedList則增長5%的長度。
5.在J2EE中,JSP可以使用下列哪些技術對客戶端會話狀態進行跟蹤__________
A.建立匿名的表格字段
B.使用URL重寫
C.使用持久化Cookies
D.使用session會話機制
三、 填空題(共5題,每題3分,共15分)
1.下面程序的運行結果為_________
public class Test{
public static void main(String[] args){
B obj = new B();
}
}
class A{
static {System.out.print(̶X”);}
public A(){System.out.print(̶A”);}
}
class B extends A{
static {System.out.print(̶Y”);}
public B(){System.out.print(̶B”);}
}
2.下面程序的運行結果為_________
public class Test{
public static void main(String[] args)
{
Sub obj = new Sub();
obj.print();
}
}
class Base{
public String s = ̶X”;
public void print()
{
System.out.print(s);
printAgain();
}
public void printAgain()
{
System.out.print(̶A”);
}
}
class Sub extends Base{
public String s = ̶Y”;
public void printAgain()
{
System.out.print(̶B”);
}
}
3.下面程序的運行結果為________
public class Test{
static int func(int i, int j){
try{
return i/j;
}catch(ArithmeticException e){
System.out.print(̶A”);
return ;
}catch(Exception e){
System.out.print(̶B”);
return ;
}finally{
System.out.print(̶C”);
}
}
public static void main(String[] args){
System.out.println(func(1,));
}
}
4.下面程序的運行結果為_______
class A{
void func1(){
System.out.print(̶A”);
}
}
class B extends A{
void func2(){
System.out.print(̶B”);
}
}
class C extends B{
void func2(){
System.out.print(̶C”);
}
}
public class Test{
public static void main(String[] args){
B obj = new C();
obj.func1();
obj.func2();
}
}
5.請填寫下面程序的輸出結果
class A{int a = 1;}
public class Test{
public static void main(String[] args){
A obj1 = new A();
A obj2 = new A();
A obj3 = obj1;
String s1 = new String(̶abc”);
String s2 = new String(̶abc”);
String s3 = ̶abc”;
System.out.println(obj1 == obj2);
System.out.println(obj1.equals(obj2));
System.out.println(obj1 == obj3);
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
}
}
四、 簡答題(共3題,前兩題每題5分,最后一題6分,共16分)
1.請編寫一個函數func(),將此函數的輸入參數(int型)逆序輸出顯示,如54321 –> 12345,要求使用遞歸,并且函數體代碼不超過8行。
public class Test{
public void func(int i){
}
public static void main(String[] args){
Test t=new Test();
t.func(987);
}
}
2.請用兩種方式實現Java中的Singletone模式的類的基本框架,并分析其是否線程安全。
3. 請用Java實現一個多線程的程序,其中一個線程對某靜態全局變量進行1次自加,另一個線程對該變量進行1次自減,要求這兩個線程的實現方式不同。
【java中級工程師面試題】相關文章:
Java工程師面試題03-29
Java工程師面試題及答案10-25
Java高級工程師面試題及答案03-24
經典的Java基礎面試題03-07
Java中級開發工程師知識點歸納02-27
java面試題2017及答案03-06
java基礎面試題201703-30
Java認證經典面試題目03-31