JAVA模擬面試題庫_第1頁
JAVA模擬面試題庫_第2頁
JAVA模擬面試題庫_第3頁
JAVA模擬面試題庫_第4頁
JAVA模擬面試題庫_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

JAVA基礎(chǔ)部分

1.我們能不能聲明main。方法為非靜態(tài)?

不能,main。方法必需聲明為靜態(tài)的,這樣JVM才可以調(diào)用main()方法而無需實例化

它的類。

假如從main。方法去掉“static”這個聲明,雖然編譯照舊可以成功,但在運行時會

導(dǎo)致程序失敗。

2.不用main方法如何定義一個類?

不行,沒有main方法我們不能運行Java類。

在Java7之前,你可以通過運用靜態(tài)初始化運行Java類。但是,從Java7起先就行不通

了。

3.String類為什么是final的。

主要是為了“效率”和“平安性”的緣由。若String允許被繼承,由于它的高度被

運用率,可能會降低程序的性能,所以String被定義成final;

4.運用final關(guān)鍵字修飾一個變量時,是引用不能變,還是

引用的對象不能變?

運用final關(guān)鍵字修飾一個變量時,是指引用變量不能變,引用變量所指向的對象中

的內(nèi)容還是可以變更的。

5.string、stringbuilder、stringbuffer

a.可變及不行變

String類中運用字符數(shù)組保存字符串,如下就是,因為有“final”修飾符,所以可以

知道string對象是不行變的。

privatefinalcharvalue[];

StringBuilder及StringBuffer都繼承自AbstractStringBuiIder類,在

AbstractStringBuilder中也是運用字符數(shù)組保存字符串,如下就是,可知這兩種對象都是

可變的。

char[]value;

b.是否多線程平安

String中的對象是不行變的,也就可以理解為常量,明顯線程平安。

AbstractStringBuiIder是StringBuilder及StringBuffer的公共父類,定義了一些

字符串的基本操作,如expandCapacity、append、insert>indexOf等公共方法。

StringBuffer對方法加了同步鎖或者對調(diào)用的方法加了同步鎖,所以是線程平安的

StringBuilder并沒有對方法進行加同步鎖,所以是非線程平安的

c.StringBuilder及StringBuffer共同點

StringBuilder及StringBuffer有公共父類AbstractStringBuiIder(抽象類)。

抽象類及接口的其中一個區(qū)分是:抽象類中可以定義一些子類的公共方法,子類只須要

增加新的功能,不須要重復(fù)寫已經(jīng)存在的方法;而接口中只是對方法的申明和常量的定義。

StringBuiIder>StringBuffer的方法都會調(diào)用AbstractStringBuiIder中的公共方法,

如super,append(...)o只是StringBuffer會在方法上加synchronized關(guān)鍵字,進行同步。

最終,假如程序不是多線程的,那么運用StringBuilder效率高于StringBuffer。

6.抽象類和接口的區(qū)分

1).抽象類可以有構(gòu)造方法,接口中不能有構(gòu)造方法。

2).抽象類中可以有一般成員變量,接口中沒有一般成員變量

3).抽象類中可以包含非抽象的一般方法,接口中的全部方法必需都是抽象的,不能有非抽

象的

一般方法。

4).抽象類中的抽象方法的訪問類型可以是public,protected和(默認類型,雖然

eclipse下不報錯,但應(yīng)當也不行),但接口中的抽象方法只能是public類型的,并且默

認即為

publicabstract類型。

5).抽象類中可以包含靜態(tài)方法,接口中不能包含靜態(tài)方法

6).抽象類和接口中都可以包含靜態(tài)成員變量,抽象類中的靜態(tài)成員變量的訪問類型可以隨

息、,

但接口中定義的變量只能是publicstaticfinal類型,并且默認即為publicstaticfinal

類型。

7).一個類可以實現(xiàn)多個接口,但只能繼承一個抽象類。

7.Java中應(yīng)當運用什么數(shù)據(jù)類型來代表價格?

假如不是特殊關(guān)切內(nèi)存和性能的話,運用BigDecimaL否則運用預(yù)定義精度的double

類型。

8.靜態(tài)變量和實例變量的區(qū)分?

在語法定義上的區(qū)分:

靜態(tài)變量前要加static關(guān)鍵字,而實例變量前則不加。

在程序運行時的區(qū)分:

實例變量屬于某個對象的屬性,必需創(chuàng)建了實例對象,其中的實例變量才會被支配空間,

才能運用這個實例變量。靜態(tài)變量不屬于某個實例對象,而是屬于類,所以也稱為類變量,

只要程序加載了類的字節(jié)碼,不用創(chuàng)建任何實例對象,靜態(tài)變量就會被支配空間,靜態(tài)變量

就可以被運用了??傊?,實例變量必需創(chuàng)建對象后才可以通過這個對象來運用,靜態(tài)變量則

可以干脆運用類名來引用。

9.vfinal,finally,finalize的區(qū)分。

final用于聲明屬性,方法和類,分別表示屬性不行變,方法不行覆蓋,類不行繼承。

內(nèi)部類要訪問局部變量,局部變量必需定義成final類型,例如,一段代碼……

finally是異樣處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。

finalize是Object類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用被回收對象的此

方法,可以覆蓋此方法供應(yīng)垃圾收集時的其他資源回收,例如關(guān)閉文件等。JVM不保證此方

法總被調(diào)用

10.sieep()和wait。有什么區(qū)分?

sleep就是正在執(zhí)行的線程主動讓出cpu,cpu去執(zhí)行其他線程,在sleep指定的時間

過后,cpu才會回到這個線程上接著往下執(zhí)行,假如當前線程進入了同步鎖,sleep方法并

不會釋放鎖,即使當前線程運用sleep方法讓出了cpu,但其他被同步鎖擋住了的線程也無

法得到執(zhí)行。

wait是指在一個已經(jīng)進入了同步鎖的線程內(nèi),讓自己短暫讓出同步鎖,以便其他正在

等待此鎖的線程可以得到同步鎖并運行,只有其他線程調(diào)用了notify方法(notify并不

釋放鎖,只是告知調(diào)用過wait方法的線程可以去參及獲得鎖的競爭了,但不是立即得到鎖,

因為鎖還在別人手里,別人還沒釋放。假如notify方法后面的代碼還有許多,須要這些代

碼執(zhí)行完后才會釋放鎖,可以在notfiy方法后增加一個等待和一些代碼,看看效果),調(diào)

用wait方法的線程就會解除wait狀態(tài)和程序可以再次得到鎖后接著向下運行。

11.HashMap和Hashtable的區(qū)分

HashMap是Hashtable的輕量級實現(xiàn)(非線程平安的實現(xiàn)),他們都完成了Map接口,

主要區(qū)分在于HashMap允許空(null)鍵值(key),由于非線程平安,在只有一個線程訪

問的狀況下,效率要高于Hashtableo

HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。

HashMapJEHashtable的contains方法去掉了,改成containsvalue和containsKey。

因為contains方法簡潔讓人引起誤會。

Hashtable繼承自Dictionary類,而HashMap是Javal.2引進的Mapinterface的

一個實現(xiàn)。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程

訪問Hashtable時,不須要自己為它的方法實現(xiàn)同步,而HashMap就必需為之供應(yīng)外同步。

Hashtable和HashMap接受的hash/rehash算法都或許一樣,所以性能不會有很大的差異。

就HashMap及HashTable主要從三方面來說。

一.歷史緣由:Hashtable是基于陳舊的Dictionary類的,HashMap是Java1.2引進的Map

接口的一個實現(xiàn)

二.同步性:Hashtable是線程平安的,也就是說是同步的,而HashMap是線程序擔憂全的,

不是同步的

三.值:只有HashMap可以讓你將空值作為一個表的條目的key或value

12.jsp有哪些內(nèi)置對象?作用分別是什么?分別有什么方

法?

答:JSP共有以下9個內(nèi)置的對象:

request用戶端請求,此請求會包含來自GET/POST請求的參數(shù)

response網(wǎng)頁傳回用戶端的回應(yīng)

pageContext網(wǎng)頁的屬性是在這里管理

session及請求有關(guān)的會話期

applicationservlet正在執(zhí)行的內(nèi)容

out用來傳送回應(yīng)的輸出

configservlet的構(gòu)架部件

pageJSP網(wǎng)頁本身

exception針對錯誤網(wǎng)頁,未捕獲的例外

13.JSP禾口Servlet有哪些相同點和不同點,他們之間的聯(lián)

系是什么?

JSP是Servlet技術(shù)的擴展,本質(zhì)上是Servlet的簡易方式,更強調(diào)應(yīng)用的外表表達。

JSP編譯后是〃類servlet"。Servlet和JSP最主要的不同點在于,Servlet的應(yīng)用邏輯是

在Java文件中,并且完全從表示層中的HTML里分別開來。而JSP的狀況是Java和HTML

可以組合成一個擴展名為.jsp的文件。JSP側(cè)重于視圖,Servlet主要用于限制邏輯。

14.get及post之間的區(qū)分:

1〉請求參數(shù)的存放位置:

get:在url后面用?拼接

post:參數(shù)放在請求數(shù)據(jù)包請求實體部分。

2》參數(shù)的數(shù)據(jù)量大?。?/p>

get:傳遞數(shù)據(jù)量大小有限制

post:理論上沒有限制,存放在實體部分

3>平安性:

get:相對擔憂全

post:相對平安

4>編碼相關(guān):

get:不適合傳遞中文參數(shù)

post:適合傳遞中文參數(shù)

15.同步和異步有何異同,在什么狀況下分別運用他們?舉

例說明。

假如數(shù)據(jù)將在線程間共享。例如正在寫的數(shù)據(jù)以后可能被另一個線程讀到,或者正在讀

的數(shù)據(jù)可能已經(jīng)被另一個線程寫過了,那么這些數(shù)據(jù)就是共享數(shù)據(jù),必需進行同步存取。當

應(yīng)用程序在對象上調(diào)用了一個須要花費很長時間來執(zhí)行的方法,并且不希望讓程序等待方法

的返回時,就應(yīng)當運用異步編程,在許多狀況下接受異步途徑往往更有效率。

16.說說你寫程序時經(jīng)常遇到那些異樣,什么緣由產(chǎn)生的?

你是怎么解決的!

17.Servlet當中如何獲得到j(luò)sp的9個隱含對象!

JspFactoryJf=JspFactory.getDefaultFactory();

//PageContextpageContext=jf.getPageContext(

//this,request,response,null,false,

//JspWriter.DEFAULT_BUFFER,true);

18.問題:Servlet是如何工作的?Servlet如何實例化、

共享變量、并進行多線程處理?

假設(shè)我有一個運行了大量Servlet的web服務(wù)器。通過Servlet之間傳輸信息

得到Servlet上下文,并設(shè)置session變量。

現(xiàn)在,假如有兩名或更多運用者向這個服務(wù)發(fā)送請求,接下來session變量會發(fā)生什么變

更?原委是全部用戶都是用共同的變量?還是不同的用戶運用的變量都不一樣?假如是后

者,服務(wù)器如何區(qū)分不同用戶?

另一個相像的問題,假如有*n*名用戶訪問一個特定的Servlet,那么該Servlet是

僅在第一個用戶首次訪問的時候?qū)嵗?,還是分別為每個用戶實例化?

回答(BalusC):

ServletContext

當Servlet容器(比如ApacheTomcat)啟動后,會部署和加載全部web應(yīng)用。當

web應(yīng)用被加載,Servlet容器會創(chuàng)建一次ServletContext,然后將其保存在服務(wù)器的內(nèi)

存中。web應(yīng)用的web.xml被解析,找到其中全部servlet、

filter和Listener或@WebServlet>?WebFilter^?WebListener注解的內(nèi)容,

創(chuàng)建一次并保存到服務(wù)器的內(nèi)存中。對于全部過濾器會立刻調(diào)用init()。當Servlet容

器停止,將卸載全部web應(yīng)用,調(diào)用全部初始化的Servlet和過濾器的destroy()方

法,最終回收ServletContext和全部Servlet、Filter及Listener實例。

當問題中的Servlet配置的load-on-startup或

者?WebServlet(loadOnStartup)設(shè)置了一個大于0的值,則同樣會在啟動的時候立刻

調(diào)用init()方法。"load-on-startup”中的值表示那些Servlet會以相同依次初始

化。假如配置的值相同,會遵循web.xml中指定的依次或?WebServlet類加載的依次。

另外,假如不設(shè)置“l(fā)oad-on-startup”值,init()方法只在第一次請求命中問

題中的Servlet時才被調(diào)用。

ServletRequest及ServletResponse

Servlet容器附加在一個web服務(wù)上,這個web服務(wù)會在某個端口號上監(jiān)聽請

求,在開發(fā)環(huán)境中這個端口通常為8080,生產(chǎn)環(huán)境中通常為80?當客戶端(web閱讀器)

發(fā)送了一個請求,Servlet容器會創(chuàng)建新

的ServletRequest和ServletResponse對象,傳遞給已創(chuàng)建好并且請求的

URL匹配url-pattern的Filter和Servlet實例中的方法,全部工作都在同一個

線程中處理。

request對象可以訪問全部該請求中的信息,例如requestheader和request

bodyoresponse對象為你供應(yīng)須要的限制和發(fā)送響應(yīng)方法,例如設(shè)置header和

body(通常會帶有JSP文件中的HTML內(nèi)容)。提交并完成響應(yīng)后,將回收request

和response對象。

Session

當用戶第一次訪問該web應(yīng)用時,會通過request.getSessionO第一次獲得

Sessiono之后Servlet容器將會創(chuàng)建Session,生成一個唯一的ID(可以通

過session.getldO獲得)并儲存在服務(wù)器內(nèi)存中。然后Servlet容器在該次響

應(yīng)的Set-Cookie頭部設(shè)置一個Cookie,以JSESSIONID作為Cookie名字,那個唯

一的sessionID作為Cookie的值。

依據(jù)cookie規(guī)則(正常web閱讀器和web服務(wù)端必需遵循的標準),當cookie

有效時,要求客戶端(閱讀器)在后續(xù)請求的Cookie頭中返回這個cookieo運用閱讀

器內(nèi)置的流量監(jiān)控器,你可以查看它們(在Chrome.Firefox23+>IE9+中按F12,

然后查看Net/Network標簽)。Servlet容器將會確定每個進入的請求

的Cookie頭中是否存在名為JSESSIONID的cookie,然后用它的值(sessionID)從

服務(wù)端內(nèi)存中找到關(guān)聯(lián)的Sessiono

你可以在web.xml中設(shè)置session-timeout,默認值為30分鐘。超時到達之

前Session會始終存活。所以當客戶端不再訪問該web應(yīng)用超過30分鐘后,

Servlet容器就會回收這個session。后續(xù)每個請求,即使指定cookie名稱也不能再訪問

到相同的sessionoServlet容器會創(chuàng)建一個新的Cookie。

另一方面,客戶端上的sessioncookie有一個默認存活時間,該事務(wù)和該閱讀器實例運行

時間一樣長。所以,當客戶端關(guān)閉該閱讀器實例(全部標簽和窗口)后,這個session就

會被客戶端回收。新閱讀器實例不再發(fā)送及該session關(guān)聯(lián)的cookieo一個新

的request.getSession()將會返回新的Session并設(shè)置一個擁有

新sessionID的cookie。

概述

ServletContext及web應(yīng)用存活時間一樣長。它被全部session中的全部請求共

享。

只要客戶端始終及相同閱讀器實例的web應(yīng)用交互并且沒有超時,Session就會存

在。

ServletRequest和ServletResponse的存活時間為客戶端發(fā)送完成到完整的

響應(yīng)(web頁面)到達的這段時間。不會被其他地方共享。

全部Servlet、Filter和Listener對象在web應(yīng)用運行時都是活躍的。它們被

全部session中的請求共享。

你設(shè)置在ServletRequest>ServletResponse和Session中的全部

屬性在問題中的對象存活時都會始終保持存活。

線程平安

即便如此,你最關(guān)切的可能是線程平安。你現(xiàn)在應(yīng)當學(xué)習(xí)到Servlet和filter被全

部請求共享。那是Java的一個優(yōu)點,使得多個不同線程(讀取請求)可以運用同一

個實例。否則為每個請求重新創(chuàng)建線程的開銷實在過于昂貴。

但你應(yīng)當也意識到恒久不要將任何request或session域中的數(shù)據(jù)賦值給servlet

或filter的實例變量。它將會被全部其他session中的全部請求共享。那是非線程平安

的!

19.LinkedList和ArrayList的區(qū)分

LinkedeList和ArrayList都實現(xiàn)了List接口,但是它們的工作原理卻不一樣。它們

之間最主要的區(qū)分在于ArrayList是可變更大小的數(shù)組,而LinkedList是雙向鏈接串列

(doublyLinkedList)oArrayList更受歡迎,許多場景下ArrayList比LinkedList更為適

用。這篇文章中我們將會看看LinkedeList和ArrayList的不同,而且我們試圖來看看什么

場景下更適宜運用LinkedList,而不用ArrayList。

LinkedList和ArrayList的區(qū)分

LinkedList和ArrayList的差別主要來自于Array和LinkedList數(shù)據(jù)結(jié)構(gòu)的不同。假

如你很熟悉Array和LinkedList,你很簡潔得出下面的結(jié)論:

1)因為Array是基于索引(index)的數(shù)據(jù)結(jié)構(gòu),它運用索引在數(shù)組中搜尋和讀取數(shù)據(jù)是很快

的。Array獲得數(shù)據(jù)的時間困難度是0(1),但是要刪除數(shù)據(jù)卻是開銷很大的,因為這須要重

排數(shù)組中的全部數(shù)據(jù)。

2)相對于ArrayList,LinkedList插入是更快的。因為LinkedList不像ArrayList一樣,

不須要變更數(shù)組的大小,也不須要在數(shù)組裝滿的時候要將全部的數(shù)據(jù)重新裝入一個新的數(shù)

組,這是ArrayList最壞的一種狀況,時間困難度是0(n),而LinkedList中插入或刪除的

時間困難度僅為0(1)。ArrayList在插入數(shù)據(jù)時還須要更新索引(除了插入數(shù)組的尾部)。

3)類似于插入數(shù)據(jù),刪除數(shù)據(jù)時,LinkedList也優(yōu)于ArrayList。

4)LinkedList須要更多的內(nèi)存,因為ArrayList的每個索引的位置是實際的數(shù)據(jù),而

LinkedList中的每個節(jié)點中存儲的是實際的數(shù)據(jù)和前后節(jié)點的位置。

什么場景下更適宜運用LinkedList,而不用ArrayList

我前面已經(jīng)提到,許多場景下ArrayList更受歡迎,但是還有些狀況下LinkedList更

為合適。譬如:

1)你的應(yīng)用不會隨機訪問數(shù)據(jù)。因為假如你須要LinkedList中的第n個元素的時候,你須

要從第一個元素依次數(shù)到第n個數(shù)據(jù),然后讀取數(shù)據(jù)。

2)你的應(yīng)用更多的插入和刪除元素,更少的讀取數(shù)據(jù)。因為插入和刪除元素不涉及重排數(shù)

據(jù),所以它要比ArrayList要快。

以上就是關(guān)于ArrayList和LinkedList的差別。你須要一個不同步的基于索引的數(shù)據(jù)訪問

時,請盡量運用ArrayList。ArrayList很快,也很簡潔運用。但是要記得要給定一個合適

的初始大小,盡可能的削減更改數(shù)組的大小。

20.為什么接口要規(guī)定成員變量必需是publicstatic

final的呢?

首先接口是一種高度抽象的"模版",,而接口中的屬性也就是‘模版'的成員,就應(yīng)當

是全部實現(xiàn)"模版"的實現(xiàn)類的共有特性,所以它是publicstatic的,是全部實現(xiàn)類共有的.

假如可以是非static的話,因一個類可以繼承多個接口,出現(xiàn)重名的變量,如何區(qū)分呢?

其次,接口中假如可能定義非final的變量的話,而方法又都是abstract的,這就自相

沖突了,有可變成員變量但對應(yīng)的方法卻無法操作這些變量,雖然可以干脆修改這些靜態(tài)成

員變量的值,但全部實現(xiàn)類對應(yīng)的值都被修改了,這跟抽象類有何區(qū)分?又接口是一種更高

層面的抽象,是一種規(guī)范、功能定義的聲明,全部可變的東西都應(yīng)當歸屬到實現(xiàn)類中,這樣

接口才能起到標準化、規(guī)范化的作用。所以接口中的屬性必定是final的。

最終,接口只是對事物的屬性和行為更高層次的抽象。對修改關(guān)閉,對擴展(不同的

實現(xiàn)implements)開放,接口是對開閉原則(Open-ClosedPrinciple)的一種體現(xiàn)。

21.遍歷一個List有哪些不同的方式?運用哪種方式更加

線程平安?

1)for-each(增加for循環(huán))

2)迭代器遍歷(線程更加平安)

22.Array和ArrayList有何區(qū)分?什么時候更適合用

Array?

Array可以容納基本類型和對象,而ArrayList只能容納對象。

Array是指定大小的,而ArrayList大小是固定的。

Array沒有供應(yīng)ArrayList那么多功能,比如addAlKremoveAll和iterator等。盡

管ArrayList明顯是更好的選擇,但也有些時候Array比較好用。

(1)假如列表的大小已經(jīng)指定,大部分狀況下是存儲和遍歷它們。

(2)對于遍歷基本數(shù)據(jù)類型,盡管Collections運用自動裝箱來減輕編碼任務(wù),在指

定大小的基本類型的列表上工作也會變得很慢。

(3)假如你要運用多維數(shù)組,運用□□比List<List〈>>更簡潔。

23.創(chuàng)建線程有幾種不同的方式?你寵愛哪一種?為什

么?

有三種方式可以用來創(chuàng)建線程:

繼承Thread類

實現(xiàn)Runnable接口

應(yīng)用程序可以運用Executor框架來創(chuàng)建線程池

實現(xiàn)Runnable接口這種方式更受歡迎,因為這不須要繼承Thread類。在應(yīng)用設(shè)計中已

經(jīng)繼承了別的對象的狀況下,這須要多繼承(而Java不支持多繼承),只能實現(xiàn)接口。同

時,線程池也是特殊高效的,很簡潔實現(xiàn)和運用。

24.什么是死鎖(deadIock)?如何避開deadlock?

兩個進程都在等待對方執(zhí)行完畢才能接著往下執(zhí)行的時候就發(fā)生了死鎖。結(jié)果就是兩個

進程都陷入了無限的等待中。

運用多線程的時候,一種特殊簡潔的避開死鎖的方式就是:指定獲得鎖的依次,并強制

線程依據(jù)指定的依次獲得鎖。因此,假如全部的線程都是以同樣的依次加鎖和釋放鎖,就不

會出現(xiàn)死鎖了。

25.在System,out.printin()里面,System,out,println

分別是什么?

System是系統(tǒng)供應(yīng)的預(yù)定義的final類,out是一個PrintStream對象,printin是out

對象里面一個重載的方法。

26.JAVA源文件仲是否可以包括多個類,有什么限制?

答:一個java源文件中可以包含多個類,但每個源文件中只允許一個public類,

假如源文件中沒有public類,則源文件用什么名字都可以。

27.類有哪三個基本特性?各特性的優(yōu)點?

答:類具有封裝性、繼承性和多態(tài)性。

封裝性:類的封裝性為類的成員供應(yīng)公有、缺省、愛惜和私有等多級訪問權(quán)限,目的

是隱藏類中的私有變量和類中方法的實現(xiàn)微小環(huán)節(jié)。

繼承性:類的繼承供應(yīng)從已存在的類創(chuàng)建新類的機智,繼承使一個新類自動擁有被

繼承類(父類)的全部可繼承的成員。

多態(tài)性:類的多態(tài)性供應(yīng)類中方法執(zhí)行的多樣性,多態(tài)性有兩種表示形式:重載和

覆蓋。

28.列出你常用的JDK包?

答:java,io:這里面是全部輸入輸出有關(guān)的類,都是基于這個包下;比如文件操作等

java,net:這里面是及網(wǎng)絡(luò)有關(guān)的類,比如URL,URLConnection等。

java.util:這個是系統(tǒng)幫助類,特殊是集合類Collection,List,Map等。

Java,sql:這個是數(shù)據(jù)庫操作的類,Connection,Statemenmt,ResultSet等。

29.JavaScript如何定義數(shù)組?

答:vararrTest二newArray();

30.JavaScript能否操作cookie和session?

答:JavaScript可以操作cookie,但是不能操作session。

31.請寫出JavaScript中常用的三種事務(wù)?

答:onclick,onblur,onChange

32.JS中的三種彈出式消息提示的叮囑是什么?

答:alert,confirmprompt

33.請說出5種常見的runtimeexception?

答:NullPointerException:當操作一個空引用時會出現(xiàn)此錯誤。

NumnerFormatException:數(shù)據(jù)格式轉(zhuǎn)換出現(xiàn)問題時出現(xiàn)此異樣。

ClassCastException:強制類型轉(zhuǎn)換類型不匹配時出現(xiàn)此異樣。

ArrayIndexOutOfBoundsException:數(shù)組下標越界,當運用一個不存在

的數(shù)組下標時出現(xiàn)此異樣。

34.數(shù)組有沒有l(wèi)ength。這個方法?String有沒有

Iength()這個方法?

答:數(shù)組沒有l(wèi)ength。這個方法,但有這個屬性;String有l(wèi)ength。方法。

35.JSP頁面之間傳遞參數(shù)的方式有哪些?

答:request、session、application>提交表單、超鏈接

36.Oracle對象有哪些?并分別說明下用途?

答:試圖,序列,存儲函數(shù),同義詞,索引,表。

約束條件:保證數(shù)據(jù)完整性

試圖:虛表,命名的查詢語句

索引:加速查詢的速度

序列:一串連續(xù)遞增或遞減的數(shù)字,步長相同,(代理鍵)。

同義詞:一個對象的另外一個叫法(對象的別名)。

存儲過程:用于操作。

函數(shù):用作困難運算的。用于計算。

觸發(fā)器:由事務(wù)觸發(fā)的存儲過程。

37.一般內(nèi)連接的基本語法是什么?

答:select*froma,bwherea.id二b.id;

38.說說數(shù)據(jù)庫觸發(fā)器的好處?

答:比如上網(wǎng)發(fā)日志,事先會自動通知好友;其實就是在增加發(fā)日志時做

了一個后觸發(fā),先告知好友,再向通知表中寫入信息;效率高。

39.說一些關(guān)于數(shù)據(jù)庫優(yōu)化方面的閱歷?

答:有外鍵約束會影響(DML)插入和刪除性能,假如程序能夠保證數(shù)據(jù)的完整性,

那么就在創(chuàng)建數(shù)據(jù)庫時去掉外鍵約束。

擴展:實際開發(fā)有一個種叫分區(qū)優(yōu)化技術(shù)。

40.處理數(shù)據(jù)庫大數(shù)據(jù)量下的分頁解決方法?

答:最好的方法是利用sql語句進行分頁,這樣每次查詢出的結(jié)果集中就只包含某

頁數(shù)據(jù)內(nèi)容,再sql語句無法實現(xiàn)分頁的狀況下,可以考慮對大的結(jié)果集通過游標定位方式

來獲得某頁的數(shù)據(jù)。

總結(jié):簡潔就是用sql分頁語句進行分頁;再大的數(shù)據(jù)量可以考慮對大的結(jié)果集

通過游標定位方式來獲得某頁的數(shù)據(jù)。

擴展:(說說你對數(shù)據(jù)庫大數(shù)據(jù)量怎么處理)?

答:可以用分區(qū)功能:

范圍分區(qū):范圍分區(qū)就是對數(shù)據(jù)表中的某個值的范圍進行分區(qū),依據(jù)某個值的

范圍,確定將該數(shù)據(jù)存儲在哪個分區(qū)上。如依據(jù)序號分區(qū),依據(jù)時間等來進行分區(qū)。

Hash分區(qū)(散列分區(qū)):散列分區(qū)為通過指定分區(qū)編號來勻整分布數(shù)據(jù)的一種分區(qū)

類型,因為通過在I/O設(shè)備上進行散列分區(qū),使得這些分區(qū)大小一樣。

也就是只命名分區(qū)名稱,這樣勻整進行數(shù)據(jù)分布。

復(fù)合分區(qū):有時候我們須要依據(jù)范圍分區(qū)后,每個分區(qū)內(nèi)的數(shù)據(jù)再散列地分布

在幾個表空間中,這樣我們就要運用復(fù)合分區(qū)。復(fù)合分區(qū)是先運用范圍分區(qū),然后在每個

分區(qū)內(nèi)再運用散列分區(qū)的一種分區(qū)方法。

41.運行異樣及一般異樣有何異同?

答:異樣表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時異樣表示虛擬機

的通常操作中可能遇到異樣,是一種常見運行錯誤,java編譯器要求方法

必需聲明拋出可能發(fā)生的非運行時異樣,但是并不要去必需聲明拋出未被

捕獲的運行時異樣。

42.JDBC中的perparedStatement比Statement的好處?

答:一個sql叮囑發(fā)給服務(wù)器區(qū)執(zhí)行的步驟是:語法檢查,語言分析,

編譯成內(nèi)部指令,緩存指令,執(zhí)行指令等過程;所以perparedStatement比

Statement可以防止sql注入。

43.Servlet的生命周期?

答:1:實例化:容器收到請求時,會創(chuàng)建一個serlvet實例。

2:初始化:容器在創(chuàng)建好servlet對象之后,會接著調(diào)用servlet對象的init()

方法。留意:該方法只會執(zhí)行一次。作用是,獲得資源。

3:就緒:調(diào)用servlet對象的service。方法

4:銷毀:容器會依據(jù)自身的算法,刪除servlet對象。在刪除之前,會先調(diào)用

destroy()方法。

44.說說XML的理解?說明web應(yīng)用中的web.xml文件的作

用?

答:XML即可擴展標記語言,它及HTML一樣,都是SGML標準通用標記語言;

XML是Internet環(huán)境中跨平臺的,依靠于內(nèi)容的技術(shù),是當前處理結(jié)構(gòu)化

文檔信息的有力工具。擴展標記語言XML是一種簡潔的數(shù)據(jù)存儲語言,運用

一系列簡潔的標記描述數(shù)據(jù),而這些標記可以用便利的方式建立,雖然XML

占用的空間比二進制數(shù)據(jù)要占用更多的空間,但XML極其簡潔易于駕馭和運用。

Web.xml的作用是配置歡迎頁,servlet,filter,listener等的。

45.協(xié)議的一些技術(shù)特點是什么?

答:無連接:無連接的含義是限制每次連接只處理一個請求。

服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。接受這種方式

可以節(jié)約傳輸時間。

無狀態(tài):協(xié)議是無狀態(tài)協(xié)議O無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶實力。

缺少狀態(tài)意味著假如后續(xù)處理須要前面的信息,則它必需重傳,這樣可能導(dǎo)致每次連接傳送

的數(shù)據(jù)量增大。另一方面,在服務(wù)器不須要從前信息時它的應(yīng)答就較快。

46.什么是web容器?

答:容器就是一種服務(wù)程序,在服務(wù)器一個端口就有一個供應(yīng)相應(yīng)服務(wù)的程序,

而這個程序就是處理從客戶端發(fā)出的請求,如JAVA仲的Tomcat容器,ASP

的HS或PWS都是造樣的容器。

47.Tomcat服務(wù)器的默認端口是多少?怎樣修改tomcat的

端口?

答:默認端口為8080,可以通過service,xml的connector元素的port屬性來修改

端口。

48.基于<bean>(xml配置)的SpringMVC限制流程:

客戶端發(fā)送請求經(jīng)過DispatcherServlet限制器處理之后,通過

HandlerMapping組件找到

相應(yīng)的Controller限制器,Controller會調(diào)用業(yè)務(wù)層Model處理請求并且返回

ModelAndView,

然后DispatcherServlet會通過ViewResolver返回相應(yīng)的jsp視圖,在客戶端進

行頁面呈現(xiàn);

49.接收請求參數(shù)值的3種方式:

-運用ServletRequest獲得(getParameter()方法)

*優(yōu)點:干脆獲得數(shù)據(jù),獲得到的數(shù)據(jù)比較完整(表單,ip,url,cookies等);

缺點:須要自己處理數(shù)據(jù)類型轉(zhuǎn)換;

-Spring會自動將表單name屬性參數(shù)注入到方法參數(shù)中(參數(shù)名一樣)

運用@RequestParam注解映射參數(shù)名不一樣的屬性

*優(yōu)點:數(shù)據(jù)類型自動轉(zhuǎn)換;

缺點:有可能出現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換異樣;

-運用自動機制封裝成Bean屬性

定義FromBean實體類,屬性名及表單組件的name名一樣

*優(yōu)點:表單屬性量大,解耦,簡化代碼量;

50.說說Tomcat有幾種部署方式?

答:(1)利用Tomcat自動部署

(2)利用限制臺進行部署

3)增加自定義的Web部署文件

(%Tomcat_Home%\conf\Catalina\localhost\AppName.xml)

51.Tomcat的優(yōu)化閱歷?

答:去掉對web.xml的監(jiān)視,把jsp提前編輯成Servleto

有富余物理內(nèi)存的狀況,加大tomcat運用的jvm的內(nèi)存。

52.說說您對Ajax的理解,還有為什么要用Ajax?有什么好

處?

答:Ajax就是異步的JavaScript跟xml同時訪問數(shù)據(jù)庫。

53.Hibernate是什么及優(yōu)缺點?

答:hibernate是基于0RM對象關(guān)系映射(完成對象數(shù)據(jù)到關(guān)系數(shù)據(jù)映射的機制)實現(xiàn)

的,做數(shù)據(jù)許久化的工具。

Hibernate的缺點:

1.性能比較差,尤其是批處理方面,假如在大數(shù)據(jù)量開發(fā)的時候,最好運用JDBC。

54.Hibemate的核心接口有哪些?

答:Session、SessionFactory>Transaction>Query>Criteria、Configuration

55.Hibernate中,不看數(shù)據(jù)庫,不看XML文件,不看查詢

語句,怎么樣能

知道表結(jié)構(gòu)?

答:可以看及XML文件對應(yīng)的域模型。

56.Struts是什么?

答:strutsl是基于JSP和servlet的一個開源的Web應(yīng)用框架,運用的是MVC

的設(shè)計模式struts2是基于webwork技術(shù)的框架,是sun和webwork公司聯(lián)手開發(fā)的一個

功能特殊齊全的框架,struts2和strutsl沒有關(guān)系,是一個全新的框架。

57.說說你對Struts的理解?

答:struts是一個按MVC模式設(shè)計的Web層框架,其實它就是一個大大的servlet,

這個Servlet名為ActionServlet,或是ActionServlet的子類。我們可以在

web

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論