javaweb常見面試題及參考答案
javaweb常見面試題及參考答案
javaweb個人求職者要去參加面試之前,得先了解一下javaweb面試中一些常見的面試題并學(xué)會怎么回答。下面是學(xué)習(xí)啦小編為大家?guī)淼膉avaweb常見面試題及參考答案,相信對你會有幫助的。
javaweb常見面試題及參考答案
(1)下列各題ABCD四個選頊中,只有一個選項是正確的,請將正確選項填寫在答題紙上
(1)下列關(guān)于棧的描述中錯誤的是( B)
A. 棧是先進后出的線性表
B 棧只能順序存儲
C 棧具有記憶作用
D 對棧的插入弓刪除操作中,不需要改變棧底指針
正確答案: B
分析: 棧是鏈式存儲的
(2)對于長度為n的線性表,在最壞情況下,下列各排序法所對應(yīng)的比較次數(shù)中正確的是( )
A 冒泡排序為n/2
B 冒泡排序為n
C 快速排序為n
D 快速排序為n(n-l)/2
正確答案: D
分析:
想想快速排序,每次都會選取線性表的軸值,隨后以此軸值劃分為兩個子線性表再分別進行快排,在最壞情況下,也就是說每次選出的線性表軸值完全不能將這個線性表劃分為兩個子線性表。那么此時快速排序退化為冒泡排序了。
那么第一趟排序時,軸值(線性表的中間位置)被選出,這個值絕對是這個線性表中最大的(不然也不能是最壞情況),其他值都比他小,那么線性表現(xiàn)在分為完全不對等的兩段(一段是0,另一段是n - 1),一段是這個值,一段是其他值。同樣第二趟排序在剛才剩下的值中選中間值(剩余值中最大的那個),又分為不對等兩段,依次遞推。也就是說每次都比較了N - 1個元素(軸值選出后都與它比較大小),那么肯定是比較了n - 1次(如第一次先挑了個軸值,然后剩下n - 1比較),n代表當(dāng)前子線性表中元素個數(shù) 由此最白癡的數(shù)列問題出現(xiàn)了,如下
1 + 2 + 3 + .......... + n - 2 + n - 1 = n(n - 1) / 2
還有一種投機取巧的方法,在最垃圾情況下既然快排變?yōu)槊芭?,那由時間復(fù)雜度知其必為o(n ^ 2)的復(fù)雜度,答案中ABC都是線性時間復(fù)雜,顯然錯誤
(3)下列對于線性鏈表的描述中正確的是( )
A 存儲空間間不一定是連續(xù),且各元素的存儲順序是任意的
B 存儲空間不一定是連續(xù),且前件元素一定存儲在后件元素的前面
C 存儲定間必須連續(xù),且前件元素一定存儲在后件元素的前面
D 存儲空間必須連續(xù),且各元素的存儲順序是任意的
答案是A, 分析 鏈接存儲并不要求存儲空間連續(xù),存儲位置也不用有序
(4)為了使模塊爆可能獨立,要求( )
A 模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強
B 模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱
C 模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱
D 模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強
答案:B
分析:高內(nèi)聚,低耦合。
5)下列敘述中,正確的是( )
A Java語言的標識符是區(qū)分大小寫的
B 源文件名與public類名可以不相同
C 源文件擴展名為.jar
D 源文件中public類的數(shù)目不限
答案:A
6)下列屬于合法的Java標識符是( )
A _cat
B 5books
C +static
D -3.14159
答案:A
7) 在Java中,表示換行符的轉(zhuǎn)義字符是( )
A \n
B \f
C ‘n’
D \dd
答案:A
( 8)扯Java中,所有類的根類是( )
A. java.lang.Object
B.java.lang.Class
C.java.applet.Applet
D.java.awt.Frame
答案:A
(9).在Java+中,用Package語句說明一個包時,該包的層次結(jié)構(gòu)必須是(
A 與文件的結(jié)構(gòu)相同
B 與文件目錄的層次相同 )
C 與文件類型相同
D 與文件大小相同
答案:A
(10)在讀字符文件Employee.dat時,使用該文件作為參數(shù)的類是( )。
A BufferReader
B DatalnputStream
C DataOutoutStream
D FileInputStream
答案:D
(11)在Java中,能實現(xiàn)多重繼承效果的方式是( )。
A 內(nèi)部類
B 適配器
C 接口
D 同步
答案:C
(12) char類型的取值范圍是( )。
A 2-7~27-1
B 0~216-1
C -215~215—1
D 0~28-1
答案:A
(13)下列方法中可以用來創(chuàng)建一個新線程的是( )。
A 實現(xiàn)java.lang.Runnable接口并重寫start0方法
B 實現(xiàn)java.iang.Runnable接口并重寫run0方法
C 繼承java.lang.Thread類并重寫run0方法
D 繼承java.lang.Thread類并重寫start0方法
答案:C
(14)下列關(guān)于線程優(yōu)先級的說法中,正確的是( )。
A.線程的優(yōu)先級是不能改變的
B.線程的優(yōu)先級是在創(chuàng)建線程時設(shè)置的
C.在創(chuàng)建線程后的任何時候都可以設(shè)置
D. B和C
答案:C
(15)下列代碼中,將引起一個編譯錯誤的行是( )。
1) public class Test{
2) int m, n;
3) public Test(){}
4)
5)
6)
7)
8)
9)
10)
11)
12)} public Test(int a){ m=a;) public static void main(String args0){ Test t1, t2; int j, k; j=0; k=0; t1 = new Test(); } t2 = new Test(j,k);
A.第3行
B.第5行
C.第6行
D.第10行
答案:D
(16)閱讀下列代碼后
public class Person{
int arr[]=new int[10];
public static void main(String args[ ]){
System.out.println(arr[l]);
正確的說法是( )。
A 編譯時將產(chǎn)生錯誤
B 編譯時正確,運行時將產(chǎn)生錯誤
C 輸出零
D 輸出空
答案:A
(17) AIDL支持以下哪種數(shù)據(jù)類型?l)string 2)list 3)map 4)All native java datatype( ){,
A.1,2和3
B.4
C.以上所有
D.都不支持
答案:C
分析:
AIDL 服務(wù)只支持有限的數(shù)據(jù)類型,如果用AIDL服務(wù)傳遞一些復(fù)雜的數(shù)據(jù)就需要做更一步處理,AIDL 服務(wù)支持的數(shù)據(jù)類型如下:
1. Java 的原生類型
2. String 和CharSequence
3. List 和 Map ,List和Map 對象的元素必須是AIDL支持的數(shù)據(jù)類型;
以上三種類型都不需要導(dǎo)入(import)
4. AIDL 自動生成的接口
需要導(dǎo)入(import)
5. 實現(xiàn)android.os.Parcelable 接口的類. 需要導(dǎo)入(import)。
二、多項選擇題
下列各題A.、B.、C.、D.四個選項中,有一個或多個選項是正確的, (l)下列說法正確的有( )。
A. 環(huán)境變量可在編譯source code時指定.
B.在編譯程序時,所能指定的環(huán)境變盛不包括class path
C.javac -次可同時編譯數(shù)個Java源文件
D. javac.exe能指定編譯結(jié)果要置于哪個目錄(directory)
答案:BCD
(2)不能用來修飾interface的有( )
A. private B.public C.protected D.static
答案:ACD
(3)下列說法錯誤的有( )
A.在類方法中可用this來調(diào)用本類的類方法
B。在類方法中調(diào)用本類的類方法時可直接調(diào)用
C.在類方法中只能調(diào)用本類中的類方法
D.在類方法中絕對不能調(diào)用實例方法
答案:ACD
請將正確選項填寫在答題紙上
(4)下列說法錯誤的有( )
A. Java面向?qū)ο笳Z言容許單獨的過程與函數(shù)存在
B. Java面向?qū)ο笳Z言容許單獨的方法存在
C. Java語畝中的方法屬于類中的成員(member)
D. Java語言中的方法必定隸屬于某…類(對象),調(diào)用方法與過程或函數(shù)相同 答案:ABC
(5)下列說法錯誤的有( )。
A.能被java.exe成功運行的java class文件必須有main()方法
B.J2SDK就是Java API
C. Appletviewer.exe可利用jar選項運行Jar文件
D.能被Appletviewer成功運行的java class文件必須有main()方法
答案:BCD
三、判斷題
請將每空的正確答案寫在答題紙上,答在試卷上不得分。
(1) Java程序中的起始類名稱必須與存放該類的文件名相同。(對)
(2) Unicode是用16位來表示一個字的。(對)
(3) 原生類中的數(shù)據(jù)類型均可任意轉(zhuǎn)換。(對)
三、填空題
請將每空的正確答案寫在答題紙上【l】至【25】序號的橫線上,答在試卷上不得分。 (l)某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【1】 二叉樹的終端結(jié)點(葉子結(jié)點)數(shù)等于雙分支結(jié)點數(shù)加1。
(2)在面向?qū)ο蠓椒ㄖ?,類的實例稱為【2】
(3)診斷和改正程序中錯誤的工作通常稱為【3】
(4)在關(guān)系數(shù)據(jù)庫中,把數(shù)據(jù)表示成二維表,每一個二維表稱為【4】
(5)Java 源文件中最多只能有一個【5】 public 類, 其他類的個數(shù)不限。
(6)線程在生命周期中要經(jīng)歷5中狀態(tài),分別是新建狀態(tài)(準備)、可運行狀態(tài)(就緒)、運行狀態(tài)(運行)?!?】 暫停(阻塞) 狀態(tài)和終止狀態(tài)(死亡)。
(7)FileInputStream 是字節(jié)流;BufferedWriter是字符流, ObjectOutputStream是 【7】 對象序列化流
(8)當(dāng)使用Thread t = new Thread(r)創(chuàng)建一個線程時,表達式r instance of Thread 的值為【8】 false 。 r instanceOf Runnable
1.抽象類和接口的區(qū)別?
抽象類:
1)抽象方法,只有行為的概念,沒有具體的行為實現(xiàn)。使用abstract
關(guān)鍵字修飾,沒有方法體。子類必須重寫這些抽象方法。
2)包含抽象方法的類,一定是抽象類。
3)抽象類只能被繼承,一個類只能繼承一個抽象類。
接口:
1)全部的方法都是抽象方法,屬型都是常量
2)不能實例化,可以定義變量。 3)接口變量可以引用具體實現(xiàn)類的實例 4)接口只能被實現(xiàn),一個具體類實現(xiàn)接口,必須實現(xiàn)全部的抽象方法 5)接口之間可以多實現(xiàn) 6)一個具體類可以實現(xiàn)多個接口,實現(xiàn)多繼承現(xiàn)象
2.列舉你所知道的線程同步的方法:
1)wait():讓線程等待。將線程存儲到一個線程池中。
2)notify():喚醒被等待的線程。通常都喚醒線程池中的第一個。讓被喚醒的線程處于臨時阻塞狀態(tài)。
3)notifyAll(): 喚醒所有的等待線程。將線程池中的所有線程都喚醒。
3.equals()方法和“==”操作符的區(qū)別是什
么?重寫equals()方法的時候,我們還需要重寫哪些方法?為什么?
“==”比較的是一個對象在內(nèi)存中的地址值,棧中的內(nèi)容是否相同
equals()是針對引用的,比較的是引用類型的內(nèi)容一樣不一樣,堆中的內(nèi)容是否相同
重寫equals()方法的時候,需重寫hashcode方法,這樣比較的時候,比較的是兩個對象的hash值,不同對象的hash值不同。
7.寫一個函數(shù)計算但參數(shù)為n(n很大)時
的值1-2+3-4+5-6+7„„+n。(提示:考慮程序執(zhí)行效率)
private static void jisuan(int n) {
int sum=0;
if(n%2==0){
sum=-(n/2);
(11)簡述String和StringBuffer、ArrayList和LinkedList、HashMap和HashTable的特點及區(qū)別。
答:String 對象的長度一旦定義就固定就不可以改變,對于已經(jīng)存在的String對象的修改都是創(chuàng)建一個新的對象,然后把新的值存進去,String類不能被繼承。StringBuffer是一個可變對象,當(dāng)對它進行修改的時候不會像String那樣重新建立對象。它只能通過構(gòu)造函數(shù)來建立對象。另外StringBuffer還是一個線程安全的類。
ArrayList是實現(xiàn)了基于動態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu)用于,LinkedList基于連表的數(shù)據(jù)結(jié)構(gòu),二者都可以存儲對象的引用。對于隨機訪問get和set,ArrayList優(yōu)于LinkedList,因為LinkedList要移動指針。對于新增和刪除操作add和remove,LinkedList比較占優(yōu)勢,因為ArrayList要移動數(shù)據(jù)。
HashMap是Hashtable的輕量級實現(xiàn)(非線程安全的實現(xiàn)),他們都完成了Map接口,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程安全,在只有一個線程訪問的情況下,效率要高于Hashtable。
HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。 HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。
Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現(xiàn)。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現(xiàn)同步,而HashMap 就必須
} System.out.println(""+sum); }else{ sum=-(n-1)/2+n; System.out.println(""+sum); }
為之提供外同步。
點擊下頁還有更多>>>javaweb常見面試題及參考答案