2017年最新Java經(jīng)典筆試面試題
想要成為java程序員可不是容易的事情,下面YJBYS小編為大家精心搜集了關(guān)于Java經(jīng)典筆試的面試題,歡迎大家參考借鑒,希望可以幫助到大家!
一.選擇題(共50題,每題1.5分,共75分。多選題選不全或選錯都不得分。)
1. 以下屬于面向?qū)ο蟮奶卣鞯氖?C,D)。(兩項)
A) 重載
B) 重寫
C) 封裝
D) 繼承
2. 以下代碼運(yùn)行輸出是(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) 運(yùn)行出錯
3. 在使用super 和this關(guān)鍵字時,以下描述正確的是(A)
A) 在子類構(gòu)造方法中使用super()顯示調(diào)用父類的構(gòu)造方法,super()必須寫在子類構(gòu)造方法的第一行,否則編譯不通過
B) super()和this()不一定要放在構(gòu)造方法內(nèi)第一行
C) this()和super()可以同時出現(xiàn)在一個構(gòu)造函數(shù)中
D) this()和super()可以在static環(huán)境中使用,包括static方法和static語句塊
4. 以下對封裝的描述正確的是(D)
A) 只能對一個類中的方法進(jìn)行封裝,不能對屬性進(jìn)行封裝
B) 如果子類繼承了父類,對于父類中進(jìn)行封裝的方法,子類仍然可以直接調(diào)用
C) 封裝的意義不大,因此在編碼時盡量不要使用
D) 封裝的主要作用在于對外隱藏內(nèi)部實(shí)現(xiàn)細(xì)節(jié),增強(qiáng)程序的安全性
5. 以下對繼承的描述錯誤的是(A)
A) Java中的繼承允許一個子類繼承多個父類
B) 父類更具有通用性,子類更具體
C) Java中的繼承存在著傳遞性
D) 當(dāng)實(shí)例化子類時會遞歸調(diào)用父類中的構(gòu)造方法
6. 以下程序的運(yùn)行結(jié)果是(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) 運(yùn)行出錯
D) 編譯有兩處錯誤
7. 以下說法錯誤的是()
A) super.方法()可以調(diào)用父類的所有非私有方法
B) super()可以調(diào)用父類的所有非私有構(gòu)造函數(shù)
C) super.屬性可以調(diào)用父類的所有非私有屬性
D) this和super關(guān)鍵字可以出現(xiàn)在同一個構(gòu)造函數(shù)中
8. 以下關(guān)于final關(guān)鍵字說法錯誤的是(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. 多態(tài)的表現(xiàn)形式有(A)
A) 重寫
B) 抽象
C) 繼承
D) 封裝
12. 以下對重載描述錯誤的是(B)
A) 方法重載只能發(fā)生在一個類的內(nèi)部
B) 構(gòu)造方法不能重載
C) 重載要求方法名相同,參數(shù)列表不同
D) 方法的返回值類型不是區(qū)分方法重載的條件
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) 抽象類沒有構(gòu)造方法
B) 抽象類必須提供抽象方法
C) 有抽象方法的類一定是抽象類
D) 抽象類可以通過new關(guān)鍵字直接實(shí)例化
15. 以下對接口描述錯誤的有(D)
A) 接口沒有提供構(gòu)造方法
B) 接口中的方法默認(rèn)使用public、abstract修飾
C) 接口中的屬性默認(rèn)使用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行錯誤,沒有實(shí)現(xiàn)接口的全部方法
D) 第3行錯誤,沒有方法的實(shí)現(xiàn)
17. 接口和抽象類描述正確的有(B,C)(兩項)
A) 抽象類沒有構(gòu)造函數(shù)
B) 接口沒有構(gòu)造函數(shù)
C) 抽象類不允許多繼承
D) 接口中的方法可以有方法體
18. 以下描述錯誤的有(C)
A) abstract 可以修飾類、接口、方法
B) abstract修飾的類主要用于被繼承
C) abstract 可以修飾變量
D) abstract修飾的類,其子類也可以是abstract修飾的
19. 以下描述正確的有(B)
A) 方法的重寫應(yīng)用在一個類的內(nèi)部
B) 方法的重載與返回值類型無關(guān)
C) 構(gòu)造方法不能重載
D) 構(gòu)造方法可以重寫
更多相關(guān)java筆試題目分享:
2014最新Java筆試題集錦 吉聯(lián)JAVA筆試題 2014巨人網(wǎng)絡(luò)java筆試題 大唐電信java筆試題目 華為Java筆試題 2015校園招聘JAVA筆試題 JAVA常見面試筆試題及解答(精華) 關(guān)于Javascript之AJAX的基礎(chǔ)知識筆試題目 中興軟件筆試題及答案 java基礎(chǔ)筆試題
Java面試題集
20. 以下程序運(yùn)行結(jié)果是(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) 運(yùn)行出錯,無輸出
21. 以下對異常的描述不正確的有(C)
A) 異常分為Error和Exception
B) Throwable是所有異常類的父類
C) Exception是所有異常類父類
D) Exception包括RuntimeException和RuntimeException之外的異常
22. 在try-catch-finally語句塊中,以下可以單獨(dú)與finally一起使用的是(B)
A) catch
B) try
C) throws
D) throw
23. 下面代碼運(yùn)行結(jié)果是(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) 自定義異常可以更加明確定位異常出錯的位置和給出詳細(xì)出錯信息
D) 程序中已經(jīng)提供了豐富的異常類,使用自定義異常沒有意義
26. 以下程序運(yùn)行結(jié)果是(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不能提供數(shù)據(jù)的可靠性
B) UDP能夠保證數(shù)據(jù)庫的可靠性
C) TCP數(shù)據(jù)傳輸效率高于UDP
D) UDP數(shù)據(jù)傳輸效率高于TCP
28. 在Java中,下面對于構(gòu)造函數(shù)的描述正確的是(D)。(選擇一項)
A) 類必須顯示定義構(gòu)造函數(shù)
B) 構(gòu)造函數(shù)的返回類型是void
C) 構(gòu)造函數(shù)和類有相同的名稱,并且不能帶任何參數(shù)
D) 一個類可以定義多個構(gòu)造函數(shù)
29. 根據(jù)下面的代碼,
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中,關(guān)于HashMap類的描述,以下廉潔錯誤的是( B )。
A) HashMap使用鍵/值得形式保存數(shù)據(jù)
B) HashMap 能夠保證其中元素的順序
C) HashMap允許將null用作鍵
D) HashMap允許將null用作值
31. 下列選項中關(guān)于java中super關(guān)鍵字的說法錯誤的是( B )
A) super關(guān)鍵字是在子類對象內(nèi)部指代其父類對象的引用
B) super關(guān)鍵字不僅可以指代子類的直接父類,還可以指代父類的父類
C) 子類可以通過super關(guān)鍵字調(diào)用父類的方法
D) 子類可以通過super關(guān)鍵字調(diào)用父類的屬性
32. 在Java中,以下代碼( A )正確地創(chuàng)建了一個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 )類提供定位本地文件系統(tǒng),對文件或目錄及其屬性進(jìn)行基本操作。
A) FileInputStream
B) FileReader
C) FileWriter
D) File
34. Java中的集合類包括ArrayList、LinkedList、HashMap等類,下列關(guān)于集合類描述錯誤的是(C)(選擇一項)
A) ArrayList和LinkedList均實(shí)現(xiàn)了List接口
B) ArrayList的訪問速度比LinkedList快
C) 添加和刪除元素時,ArrayList的表現(xiàn)更佳
D) HashMap實(shí)現(xiàn)Map接口,它允許任何類型的鍵和值對象,并允許將null用作鍵或值
35. 在Java中開發(fā)JDBC應(yīng)用程序時,使用DriverManager類的getConnection()方法
建立與數(shù)據(jù)源的連接語句為:
Connection con = DriverManager.getConnection(“jdbc:odbc:news”);
URL連接中的”n ews”表示的.是(C)(選擇一項)
A) 數(shù)據(jù)庫中表的名稱
B) 數(shù)據(jù)庫服務(wù)器的機(jī)器名
C) 數(shù)據(jù)源的名稱
D) 用戶名
36. 在Java中,JDBCAPI定義了一組用于與數(shù)據(jù)庫進(jìn)行通信的接口和類,它們包括在(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. 以下關(guān)于對象序列化描述正確的是( C,D )[兩項]
A) 使用FileOutputStream可以將對象進(jìn)行傳輸
B) 使用PrintWriter可以將對象進(jìn)行傳輸
C) 使用ObjectOutputStream類完成對象存儲,使用ObjectInputStream類完成對象讀取
D) 對象序列化的所屬類需要實(shí)現(xiàn)Serializable接口
39. 在Java中,( A )類可用于創(chuàng)建鏈表數(shù)據(jù)結(jié)構(gòu)的對象。
A) LinkedList
B) ArrayList
C) Collection
D) HashMap
40. 分析下面這段Java代碼,它的運(yùn)行結(jié)果是( 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事務(wù)的步驟是(C,A,B,D)(多選)
A) 取消Connection的事務(wù)自動提交方式
B) 發(fā)生異;貪L事務(wù)
C) 獲取Connection對象
D) 操作完畢提交事務(wù)
42. 以下對JDBC事務(wù)描述錯誤的是( B )
A) JDBC事務(wù)屬于JAVA事務(wù)的一種
B) JDBC事務(wù)屬于容器事務(wù)類型
C) JDBC事務(wù)可以保證操作的完整性和一致性
D) JDBC事務(wù)是由Connection發(fā)起的,并由Connection控制
43. 要通過可滾動的結(jié)果集更新數(shù)據(jù),以下正確的是(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有兩個參數(shù),第一個為輸入?yún)?shù),第二個為輸出參數(shù),以下代碼正確的是(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的第一行數(shù)據(jù),以下正確的是(B)
A) rst.hashNext();
B) rst.next();
C) rst.first();
D) rst.nextRow();
48. 以下可以正確獲取結(jié)果集的有(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. 以下負(fù)責(zé)建立與數(shù)據(jù)庫連接的是(D)
A) Statement
B) PreparedStatement
C) ResultSet
D) DriverManager
50. 使用JDBC連接數(shù)據(jù)庫的順序是(B,A,D,C,E)(多選)
A) 加載驅(qū)動
B) 導(dǎo)入驅(qū)動包
C) 發(fā)送并處理SQL語句
D) 建立于數(shù)據(jù)庫的連接
E 關(guān)閉連接
二、簡答題(各5分,共25分)
1、在java中如果聲明一個類為final,表示什么意思? (不計分)
答:final是最終的意思,final可用于定義變量、方法和類但含義不同,聲明為final的類不能被繼承。
1、父類的構(gòu)造方法是否可以被子類覆蓋(重寫)?
答:父類的構(gòu)造方法不可以被子類覆蓋,因為父類和子類的類名是不可能一樣的。
2、請講述String 和StringBuffer的區(qū)別。
答:String 類所定義的對象是用于存放”長度固定”的字符串。
StringBuffer類所定義的對象是用于存放”長度可變動”的字符串。
3、如果有兩個類A、B(注意不是接口),你想同時使用這兩個類的功能,那么你會如何編寫這個C類呢?
答:因為類A、B不是接口,所以是不可以直接繼承的,但可以將A、B類定義成父子類,那么C類就能實(shí)現(xiàn)A、B類的功能了。假如A為B的父類,B為C的父類,此時C就能實(shí)現(xiàn)A、B的功能。
4、結(jié)合Java視頻Lesson5(多線程),分析sleep()和wait()方法的區(qū)別。
答: Sleeping睡眠的意思 : sleep() 方法用來暫時中止執(zhí)行的線程。在睡眠后,線程將進(jìn)入就緒狀態(tài)。
waiting等待的意思: 如果調(diào)用了 wait() 方法,線程將處于等待狀態(tài)。用于在兩個或多個線程并發(fā)運(yùn)行時。
5、談?wù)勀銓Τ橄箢惡徒涌诘睦斫狻?/p>
答:定義抽象類的目的是提供可由其子類共享的一般形式、子類可以根據(jù)自身需要擴(kuò)展抽象類、抽象類不能實(shí)例化、抽象方法沒有函數(shù)體、抽象方法必須在子類中給出具體實(shí)現(xiàn)。他使用extends來繼承。
接口:一個接口允許一個類從幾個接口繼承而來,Java 程序一次只能繼承一個類但可以實(shí)現(xiàn)幾個接口,接口不能有任何具體的方法,接口也可用來定義可由類使用的一組常量。其實(shí)現(xiàn)方式是interface來實(shí)現(xiàn)。
【2017年最新Java經(jīng)典筆試面試題】相關(guān)文章:
Java經(jīng)典筆試題12-15
2016最新Java筆試題集錦10-15
最新java面試題及答案08-20
JAVA經(jīng)典面試題目匯總10-12
JAVA經(jīng)典筆試題目及答案11-06