java筆試練習題

選擇題(共50題,每題1.5分,共75分。多選題選不全或選錯都不得分。)
1. 如下屬於面向對象的特徵的是(C,D)。(兩項)
A) 重載
B) 重寫
C) 封裝
D) 繼承

2. 如下代碼運行輸出是(C)
public class Person{
private String name=」Person」;
int age=0;
}
public class Child extends Person{
public String grade;
public static void main(String[] args){
Person p = new Child();
System.out.println(p.name);
}
}
A) 輸出:Person
B) 沒有輸出
C) 編譯出錯
D) 運行出錯

3. 在使用super 和this關鍵字時,如下描述正確的是(A)
A) 在子類構造方法中使用super()顯示調用父類的構造方法,super()必須寫在子類構造方法的第一行,不然編譯不經過
B) super()和this()不必定要放在構造方法內第一行
C) this()和super()能夠同時出如今一個構造函數中
D) this()和super()能夠在static環境中使用,包括static方法和static語句塊

4. 如下對封裝的描述正確的是(D)
A) 只能對一個類中的方法進行封裝,不能對屬性進行封裝
B) 若是子類繼承了父類,對於父類中進行封裝的方法,子類仍然能夠直接調用
C) 封裝的意義不大,所以在編碼時儘可能不要使用
D) 封裝的主要做用在於對外隱藏內部實現細節,加強程序的安全性

5. 如下對繼承的描述錯誤的是(A)
A) Java中的繼承容許一個子類繼承多個父類
B) 父類更具備通用性,子類更具體
C) Java中的繼承存在着傳遞性
D) 當實例化子類時會遞歸調用父類中的構造方法

6. 如下程序的運行結果是(D)
class Person{
public Person(){
System.out.println(「this is a Person」);
}
}
public class Teacher extends Person{
private String name=」tom」;
public Teacher(){
System.out.println(「this is a teacher」);
super();
}
public static void main(String[] args){
Teacher teacher = new Teacher();
System.out.println(this.name);
}
}
A) this is a Person
this is a teacher
tom
B) this is a teacher
this is a Person
tom
C) 運行出錯
D) 編譯有兩處錯誤

7. 如下說法錯誤的是()
A) super.方法()能夠調用父類的全部非私有方法
B) super()能夠調用父類的全部非私有構造函數
C) super.屬性能夠調用父類的全部非私有屬性
D) this和super關鍵字能夠出如今同一個構造函數中

8. 如下關於final關鍵字說法錯誤的是(A,C)(兩項)
A) final是java中的修飾符,能夠修飾類、接口、抽象類、方法和屬性
B) final修飾的類確定不能被繼承
C) final修飾的方法不能被重載
D) final修飾的變量不容許被再次賦值

9. 訪問修飾符做用範圍由大到小是(D)
A) private-default-protected-public
B) public-default-protected-private
C) private-protected-default-public
D) public-protected-default-private

10. 如下(D)不是Object類的方法
A) clone()
B) finalize()
C) toString()
D) hasNext()

11. 多態的表現形式有(A)
A) 重寫
B) 抽象
C) 繼承
D) 封裝

12. 如下對重載描述錯誤的是(B)
A) 方法重載只能發生在一個類的內部
B) 構造方法不能重載
C) 重載要求方法名相同,參數列表不一樣
D) 方法的返回值類型不是區分方法重載的條件

13. 如下(D)添加到ComputerBook中不會出錯
class Book{
protected int getPrice(){
return 30;
}
}
public class ComputerBook extends Book{
}
A) protected float getPrice(){}
B) protected int getPrice(int page){}
C) int getPrice(){}
D) public int getPrice(){return 10;}

14. 如下對抽象類的描述正確的是(C)
A) 抽象類沒有構造方法
B) 抽象類必須提供抽象方法
C) 有抽象方法的類必定是抽象類
D) 抽象類能夠經過new關鍵字直接實例化

15. 如下對接口描述錯誤的有(D)
A) 接口沒有提供構造方法
B) 接口中的方法默認使用public、abstract修飾
C) 接口中的屬性默認使用public、static、final修飾
D) 接口不容許多繼承

16. 如下代碼,描述正確的有(A)
interface IDemo{
public static final String name;1
void print();2
public void getInfo();3
}
abstract class Person implements IDemo{4
public void print(){
}
}
A) 第1行錯誤,沒有給變量賦值
B) 第2行錯誤,方法沒有修飾符
C) 第4行錯誤,沒有實現接口的所有方法
D) 第3行錯誤,沒有方法的實現

17. 接口和抽象類描述正確的有(B,C)(兩項)
A) 抽象類沒有構造函數
B) 接口沒有構造函數
C) 抽象類不容許多繼承
D) 接口中的方法能夠有方法體

18. 如下描述錯誤的有(C)
A) abstract 能夠修飾類、接口、方法
B) abstract修飾的類主要用於被繼承
C) abstract 能夠修飾變量
D) abstract修飾的類,其子類也能夠是abstract修飾的

19. 如下描述正確的有(B)
A) 方法的重寫應用在一個類的內部
B) 方法的重載與返回值類型無關
C) 構造方法不能重載
D) 構造方法能夠重寫

20. 如下程序運行結果是(A)
public class Test extends Father{
private String name=」test」;
public static void main(String[] args){
Test test = new Test();
System.out.println(test.getName());
}
}
class Father{
private String name=」father」;
public String getName() {
return name;
}
}
A) father
B) test
C) 編譯出錯
D) 運行出錯,無輸出

21. 如下對異常的描述不正確的有(C)
A) 異常分爲Error和Exception
B) Throwable是全部異常類的父類
C) Exception是全部異常類父類
D) Exception包括RuntimeException和RuntimeException以外的異常

22. 在try-catch-finally語句塊中,如下能夠單獨與finally一塊兒使用的是(B)
A) catch
B) try
C) throws
D) throw

23. 下面代碼運行結果是(B)
public class Demo{
public int add(int a,int b){
try{
return a+b;
}catch(Exception e){
System.out.println(「catch 語句塊」);
}finally{
System.out.println(「finally 語句塊」);
}
return 0;
}
public static void main(String[] args){
Demo demo = new Demo();
System.out.println(「和是:」+demo.add(9,34));
}
}
A) 編譯異常
B) finally語句塊 和是:43
C) 和是:43 finally語句塊
D) catch語句塊 和是:43

24. 如下描述不正確的有(D)
A) try塊不能夠省略
B) 可使用多重catch塊
C) finally塊能夠省略
D) catch塊和finally塊能夠同時省略

25. 如下對自定義異常描述正確的是(C)
A) 自定義異常必須繼承Exception
B) 自定義異常能夠繼承自Error
C) 自定義異常能夠更加明肯定位異常出錯的位置和給出詳細出錯信息
D) 程序中已經提供了豐富的異常類,使用自定義異常沒有意義

26. 如下程序運行結果是(D)
public class Test {
public int div(int a, int b) {
try {
return a / b;
}catch(Exception e){
System.out.println(「Exception」);
}catch(NullPointerException e){
System.out.println(「ArithmeticException」);
}
catch (ArithmeticException e) {
System.out.println(「ArithmeticException」);
} finally {
System.out.println(「finally」);
}
return 0;
}
public static void main(String[] args) {
Test demo = new Test();
System.out.println(「商是:」 + demo.div(9, 0));
}
}
A) Exception finally 商是:0
B) ArithmeticException finally 商是:0
C) finally商是:0
D) 編譯報錯

27. 如下對TCP和UDP描述正確的是(D)
A) TCP不能提供數據的可靠性
B) UDP可以保證數據庫的可靠性
C) TCP數據傳輸效率高於UDP
D) UDP數據傳輸效率高於TCP

28. 在Java中,下面對於構造函數的描述正確的是(D)。(選擇一項)
A) 類必須顯示定義構造函數
B) 構造函數的返回類型是void
C) 構造函數和類有相同的名稱,而且不能帶任何參數
D) 一個類能夠定義多個構造函數

29. 根據下面的代碼,
String s = null;
會拋出NullPointerException異常的有(A,C)。[兩項]
A) if( (s!=null) & (s.length()>0) )
B) if( (s!=null) & & (s.length()>0) )
C) if( (s==null) | (s.length()==0) )
D) if( (s==null) || (s.length()==0) )

30. .在Java中,關於HashMap類的描述,如下廉潔錯誤的是( B )。
A) HashMap使用鍵/值得形式保存數據
B) HashMap 可以保證其中元素的順序
C) HashMap容許將null用做鍵
D) HashMap容許將null用做值

31. 下列選項中關於java中super關鍵字的說法錯誤的是( B )
A) super關鍵字是在子類對象內部指代其父類對象的引用
B) super關鍵字不只能夠指代子類的直接父類,還能夠指代父類的父類
C) 子類能夠經過super關鍵字調用父類的方法
D) 子類能夠經過super關鍵字調用父類的屬性

32. 在Java中,如下代碼( A )正確地建立了一個InputStreamReader對象。
A) InuptStreamReader(new FileInputStream(「1.dat」));
B) InuptStreamReader(new FileReader(「1.dat」));
C) InuptStreamReader(new BufferReader(「1.dat」));
D) InuptStreamReader (「1.dat」);

33. 在Java中,( D )類提供定位本地文件系統,對文件或目錄及其屬性進行基本操做。
A) FileInputStream
B) FileReader
C) FileWriter
D) File

34. Java中的集合類包括ArrayList、LinkedList、HashMap等類,下列關於集合類描述錯誤的是(C)(選擇一項)
A) ArrayList和LinkedList均實現了List接口
B) ArrayList的訪問速度比LinkedList快
C) 添加和刪除元素時,ArrayList的表現更佳
D) HashMap實現Map接口,它容許任何類型的鍵和值對象,並容許將null用做鍵或值

35. 在Java中開發JDBC應用程序時,使用DriverManager類的getConnection()方法
創建與數據源的鏈接語句爲:
Connection con = DriverManager.getConnection(「jdbc:odbc:news」);
URL鏈接中的」n ews」表示的是(C)(選擇一項)
A) 數據庫中表的名稱
B) 數據庫服務器的機器名
C) 數據源的名稱
D) 用戶名

36. 在Java中,JDBCAPI定義了一組用於與數據庫進行通訊的接口和類,它們包括在(B)包中。
A) java.lang
B) java.sql
C) java.util
D) java.math

37. Java中,如下( B )接口以鍵_值對的方式存儲對象。
A) java.util.Collection
B) java.util.Map
C) java.util.List
D) java.util.Set

38. 如下關於對象序列化描述正確的是( C,D )[兩項]
A) 使用FileOutputStream能夠將對象進行傳輸
B) 使用PrintWriter能夠將對象進行傳輸
C) 使用ObjectOutputStream類完成對象存儲,使用ObjectInputStream類完成對象讀取
D) 對象序列化的所屬類須要實現Serializable接口

39. 在Java中,( A )類可用於建立鏈表數據結構的對象。
A) LinkedList
B) ArrayList
C) Collection
D) HashMap

40. 分析下面這段Java代碼,它的運行結果是( C )。
Import java.io.*;
Public class B{
Public static void main(string [] args){
int i=12;
System.out.println(i+=i-=i*=i);}}

A) 100
B) 0
C) -120
D) 程序沒法編譯

41. 使用JDBC事務的步驟是(C,A,B,D)(多選)
A) 取消Connection的事務自動提交方式
B) 發生異常回滾事務
C) 獲取Connection對象
D) 操做完畢提交事務

42. 如下對JDBC事務描述錯誤的是( B )
A) JDBC事務屬於JAVA事務的一種
B) JDBC事務屬於容器事務類型
C) JDBC事務能夠保證操做的完整性和一致性
D) JDBC事務是由Connection發起的,並由Connection控制

43. 要經過可滾動的結果集更新數據,如下正確的是(A
A) pst=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE)
B) pst=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY)
C) pst=con.prepareStatement(sql, Resu ltSet.TYPE_SCROLL_SENSITIVE)
D) pst=con.prepareStatement(sql, ResultSet.CONCUR_UPDATABLE)

44. 存儲過程pro有兩個參數,第一個爲輸入參數,第二個爲輸出參數,如下代碼正確的是(C)
A) CallableStatement cst=con.prepareCall(「(call pro(?,?))」);
B) CallableStatement cst=con.prepareCall(「(call pro(?))」);
C) CallableStatement cst=con.prepareCall(「{call pro(?,?)}」);
D) CallableStatement cst=con.prepareCall(「{call pro(?,?,?)}」);

45. 如下描述正確的是(B)
A) CallableStatement是PreparedStatement的父接口
B) PreparedStatement是CallableStatement的父接口
C) CallableStatement是Statement的子接口
D) PreparedStatement是Statement的父接口

46. 要刪除book表中書籍(bookName)是」java」的記錄,如下代碼正確的是(A
String sql=」delete from book where bookName=?」;
PreparedStatement pst=con.preparedStatement(sql);
______________________________
pst.execute();
A) pst.setString(1,」java」);
B) pst.setString(0,」java」);
C) pst.setInt(0,」java」);
D) 以上選項都不正確

47. 獲取ResutlSet對象rst的第一行數據,如下正確的是(B)
A) rst.hashNext();
B) rst.next();
C) rst.first();
D) rst.nextRow();

48. 如下能夠正確獲取結果集的有(AD)(多選)
A) Statement sta=con.createStatement();
ResultSet rst=sta.executeQuery(「select * from book」);
B) Statement sta=con.createStatement(「select * from book」);
ResultSet rst=sta.executeQuery();
C) PreparedStatement pst=con.preparedStatement();
ResultSet rst=pst.executeQuery(「select * from book」);
D) PreparedStatement pst=con.preparedStatement(「select * from book」);
ResultSet rst=pst.executeQuery();

49. 如下負責創建與數據庫鏈接的是(D)
A) Statement
B) PreparedStatement
C) ResultSet
D) DriverManager

50. 使用JDBC鏈接數據庫的順序是(B,A,D,C,E)(多選)
A) 加載驅動
B) 導入驅動包
C) 發送並處理SQL語句
D) 創建於數據庫的鏈接
E 關閉鏈接java

 

2、簡答題(各5分,共25分)sql

一、在java中若是聲明一個類爲final,表示什麼意思?  (不計分)數據庫

答:final是最終的意思,final可用於定義變量、方法和類但含義不一樣,聲明爲final的類不能被繼承。  安全

一、父類的構造方法是否能夠被子類覆蓋(重寫)?  服務器

答:父類的構造方法不能夠被子類覆蓋,由於父類和子類的類名是不可能同樣的。  數據結構

二、請講述String 和StringBuffer的區別。  多線程

答:String 類所定義的對象是用於存放」長度固定」的字符串。  併發

StringBuffer類所定義的對象是用於存放」長度可變更」的字符串。  函數

三、若是有兩個類A、B(注意不是接口),你想同時使用這兩個類的功能,那麼你會如何編寫這個C類呢?  this

答:由於類A、B不是接口,因此是不能夠直接繼承的,但能夠將A、B類定義成父子類,那麼C類就能實現A、B類的功能了。假如A爲B的父類,B爲C的父類,此時C就能實現A、B的功能。  

四、結合Java視頻Lesson5(多線程),分析sleep()和wait()方法的區別。  

答: Sleeping睡眠的意思 : sleep() 方法用來暫時停止執行的線程。在睡眠後,線程將進入就緒狀態。  

waiting等待的意思: 若是調用了 wait() 方法,線程將處於等待狀態。用於在兩個或多個線程併發運行時。  

五、談談你對抽象類和接口的理解。  

答:定義抽象類的目的是提供可由其子類共享的通常形式、子類能夠根據自身須要擴展抽象類、抽象類不能實例化、抽象方法沒有函數體、抽象方法必須在子類中給出具體實現。他使用extends來繼承。  

接口:一個接口容許一個類從幾個接口繼承而來,Java 程序一次只能繼承一個類但能夠實現幾個接口,接口不能有任何具體的方法,接口也可用來定義可由類使用的一組常量。其實現方式是interface來實現。

相關文章
相關標籤/搜索