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