刷题07
1.有時(shí)為了避免某些未識(shí)別的異常拋給更高的上層應(yīng)用,在某些接口實(shí)現(xiàn)中我們通常需要捕獲編譯運(yùn)行期所有的異常, catch 下述哪個(gè)類(lèi)的實(shí)例才能達(dá)到目的:()
正確答案:B
A. Error
B. Exception
C. RuntimeException
D. Throwable
解析:error是系統(tǒng)出錯(cuò),JVM問(wèn)題,catch是無(wú)法處理的,難以修復(fù)的;
首先Throwable分為Error和Exception.
Exception分為CheckedException和RuntimeException;
RuntimeException不需要程序員進(jìn)行捕獲處理.我們只需要對(duì)exception的實(shí)例進(jìn)行捕獲即可.
2.根據(jù)以下接口和類(lèi)的定義,要使代碼沒(méi)有語(yǔ)法錯(cuò)誤,則類(lèi)Hero中應(yīng)該定義方法( )。
interface Action{ void fly(); }class Hero implements Action{ //……
正確答案:D
A. private void fly(){}
B. void fly(){}
C. protected void fly(){}
D. public void fly(){}
解析:接口方法默認(rèn)是public abstract的,且實(shí)現(xiàn)該接口的類(lèi)中對(duì)應(yīng)的方法的可見(jiàn)性不能小于接口方法的可見(jiàn)性,因此也只能是public的。
3.下面有關(guān)maven和ant的描述,描述錯(cuò)誤的是?
正確答案:C
A. Ant沒(méi)有正式的約定如一個(gè)一般項(xiàng)目的目錄結(jié)構(gòu),你必須明確的告訴Ant哪里去找源代碼B. Maven擁有約定,因?yàn)槟阕裱思s定,它已經(jīng)知道你的源代碼
C. maven和ant都有“生命周期”的概念,當(dāng)你輸一個(gè)命令后,maven或者ant會(huì)執(zhí)行一系列的有序的步驟,直到到達(dá)你指定的生命周期
D. Ant構(gòu)建文件默認(rèn)命名為build.xml,Maven默認(rèn)構(gòu)建文件為pom.xml
解析:
Ant是軟件構(gòu)建工具,Maven的定位是軟件項(xiàng)目管理和理解工具。
Ant特點(diǎn) ?沒(méi)有一個(gè)約定的目錄結(jié)構(gòu) ?必須明確讓ant做什么,什么時(shí)候做,然后編譯,打包 ?沒(méi)有生命周期,必須定義目標(biāo)及其實(shí)現(xiàn)的任務(wù)序列?沒(méi)有集成依賴管理 Maven特點(diǎn) ?擁有約定,知道你的代碼在哪里,放到哪里去 ?擁有一個(gè)生命周期,例如執(zhí)行 mvninstall 就可以自動(dòng)執(zhí)行編譯,測(cè)試,打包等構(gòu)建過(guò)程?只需要定義一個(gè)pom.xml,然后把源碼放到默認(rèn)的目錄,Maven幫你處理其他事情 ?擁有依賴管理,倉(cāng)庫(kù)管理。
4.Consider the following code:
String s=null;
Which code fragments cause an object of type NullPointerException to be thrown?
正確答案: 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((snull)||(s.length()==0))
解析:||和&&會(huì)短路,而 | & 在邏輯運(yùn)算時(shí)不會(huì)短路,運(yùn)算符左右兩邊都會(huì)執(zhí)行。
| : 檢測(cè)ture;不具備短路功能,會(huì)檢查每一個(gè)條件,表達(dá)式中只要一個(gè)ture 就整體返回true;
|| : 檢測(cè)true;具備短路功能,一遇到true,就返回true;不再執(zhí)行||后面的語(yǔ)句;
按位與&: 檢測(cè)false:同理
5.對(duì) Map 的用法,正確的有:
正確答案: C D
A. new java.util.Map().put(“key” , “value”) ;
B. new java.util.SortedMap().put(“key” , “value”) ;
C. new java.util.HashMap().put( null , null ) ;
D. new java.util.TreeMap().put( 0 , null ) ;
解析:Map和SortedMap為接口,接口不能實(shí)例化對(duì)象,
HashMap集合的鍵和值可以為null,但是鍵只能設(shè)置一個(gè)null,而值可以有很多個(gè)null;
TreeMap會(huì)默認(rèn)按照key對(duì)存放的對(duì)象進(jìn)行排序,因此TreeMap允許value值為null,不允許key值為null.
6…一個(gè)文件中的數(shù)據(jù)要在控制臺(tái)上顯示,首先需要( )。
正確答案: C
A. System.out.print (buffer[i]);
B. FileOutputStream fout = new FileOutputStream(this.filename);
C. FileInputStream fin = new FileInputStream(this.filename);。
D. System.in.read(buffer)。
解析:一個(gè)文件中的數(shù)據(jù)要在控制臺(tái)顯示,首先需要獲取文件中的內(nèi)容,使用FileInputStream fin = new FileInputStream(this.filename);
7.下面哪一項(xiàng)不是加載驅(qū)動(dòng)程序的方法?
正確答案: A
A. 通過(guò)DriverManager.getConnection方法加載
B. 調(diào)用方法 Class.forName
C. 通過(guò)添加系統(tǒng)的jdbc.drivers屬性
D. 通過(guò)registerDriver方法注冊(cè)
解析:
加載驅(qū)動(dòng)方法
1).Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
2). DriverManager.registerDriver(new com.mysql.jdbc.Driver());
3).System.setProperty(“jdbc.drivers”, “com.mysql.jdbc.Driver”);
DriverManager.getConnection方法返回一個(gè)Connection對(duì)象,這是加載驅(qū)動(dòng)之后才能進(jìn)行的。
8.下面哪些具體實(shí)現(xiàn)類(lèi)可以用于存儲(chǔ)鍵,值對(duì),并且方法調(diào)用提供了基本的多線程安全支持:( )
正確答案: A E
A. java.util.ConcurrentHashMap
B. java.util.Map
C. java.util.TreeMap
D. java.util.SortMap
E. java.util.Hashtable
F. java.util.HashMap
解析:j
ava.util.concurrent.ConcurrentHashMap 線程安全
java.util.Map 接口
java.util.TreeMap非線程安全
java.util.SortedMap 接口
java.util.Hashtable 線程安全
java.util.HashMap非線程安全
9.根據(jù)下面這個(gè)程序的內(nèi)容,判斷哪些描述是正確的:( )
正確答案: C D
A. 這段程序有編譯錯(cuò)誤
B. 語(yǔ)句1輸出為:Hello, tommy
C. 語(yǔ)句2輸出為:Hello, tommy
D. 語(yǔ)句1輸出為:Welcome, tommy
E. 語(yǔ)句2輸出為:Welcome, tommy
F. 根據(jù)選用的Java編譯器不同,這段程序的輸出可能不同
解析:方法的調(diào)用首先以參數(shù)類(lèi)型最符合作為原則。
Java語(yǔ)言是靜態(tài)多分派,動(dòng)態(tài)單分派的。
如果是重載方法之間的選擇,則是使用靜態(tài)類(lèi)型。
如果是父類(lèi)與子類(lèi)之間的重寫(xiě)方法的選擇,則是使用動(dòng)態(tài)類(lèi)型。
如A a = new B(); 會(huì)使用類(lèi)型B去查找重寫(xiě)的方法,使用類(lèi)型A去查找重載的方法。
10.下列描述正確的是( )?
正確答案: A C
A. 類(lèi)不可以多繼承而接口可以多實(shí)現(xiàn)
B. 抽象類(lèi)自身可以定義成員而接口不可以
C. 抽象類(lèi)和接口都不能被實(shí)例化
D. 一個(gè)類(lèi)可以有多個(gè)基類(lèi)和多個(gè)基接口
解析:1.java支持單繼承,卻可以實(shí)現(xiàn)多個(gè)接口。
2.接口沒(méi)有構(gòu)造方法,所以不能實(shí)例化,抽象類(lèi)有構(gòu)造方法,但是不是用來(lái)實(shí)例化的,是用來(lái)初始化的。
3.抽象類(lèi)可以定義普通成員變量而接口不可以,但是抽象類(lèi)和接口都可以定義靜態(tài)成員變量,只是接口的靜態(tài)成員變量要用static final public 來(lái)修飾。
11.判斷一塊內(nèi)存空間是否符合垃圾收集器收集的標(biāo)準(zhǔn)有哪些?
正確答案: A B D
A. 給對(duì)象賦予了空值null,以下再?zèng)]有調(diào)用過(guò)
B. 對(duì)象重新分配了內(nèi)存空間
C. 給對(duì)象賦予了空值null
D. 給對(duì)象賦予了新值
解析:在java語(yǔ)言中,判斷一塊內(nèi)存空間是否符合垃圾收集器收集標(biāo)準(zhǔn)的標(biāo)準(zhǔn)只有兩個(gè):
1.給對(duì)象引用置為null,以下沒(méi)有調(diào)用過(guò)。obj=null;
2.給對(duì)象賦了新的值,重新分配了內(nèi)存空間,即對(duì)象的引用重新指向了另一個(gè)對(duì)象,回收上一個(gè)new的對(duì)象所占的內(nèi)存。obj = new Object1(); obj = new Object2();回收obj第一次指向的Object1()所占的內(nèi)存。
知識(shí)點(diǎn):
has-a表示從屬:Gadget has-a Sprocket就表示Gadget中有Sprocket的引用,Sprocket是Gadget的組成部分;
like-a表示組合:如果A like-a B,那么B就是A的接口
總結(jié)
- 上一篇: 小记6月19
- 下一篇: 设计抗住千万级流量的架构思路(转)