【正文】
第一篇:JAVA程序員面試題7JAVA程序員面試題(7)20080612 10:44?請(qǐng)列舉。用JAVA實(shí)現(xiàn)一個(gè)快速排序。排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸并排序,分配排序(箱排序、基數(shù)排序)快速排序的偽代碼。/ /使用快速排序方法對(duì)a[ 0 :n1 ]排序從a[ 0 :n1 ]中選擇一個(gè)元素作為m i d d l e,該元素為支點(diǎn)把余下的元素分割為兩段left 和r i g h t,使得l e f t中的元素都小于等于支點(diǎn),而right 中的元素都大于等于支點(diǎn)遞歸地使用快速排序方法對(duì)left 進(jìn)行排序遞歸地使用快速排序方法對(duì)right 進(jìn)行排序所得結(jié)果為l e f t + m i d d l e + r i g h t。(或簡(jiǎn)單描述)web容器:給處于其中的應(yīng)用程序組件(JSP,SERVLET)提供一個(gè)環(huán)境,使JSP,SERVLET直接更容器中的環(huán)境變量接**互,不必關(guān)注其它系統(tǒng)問(wèn)題。主要有WEB服務(wù)器來(lái)實(shí)現(xiàn)。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴(yán)格遵守J2EE規(guī)范中的WEB APPLICATION 標(biāo)準(zhǔn)。我們把遵守以上標(biāo)準(zhǔn)的WEB服務(wù)器就叫做J2EE中的WEB容器。EJB容器:Enterprise java bean 容器。更具有行業(yè)領(lǐng)域特色。他提供給運(yùn)行在其中的組件EJB各種管理功能。只要滿足J2EE規(guī)范的EJB放入該容器,馬上就會(huì)被容器進(jìn)行高效率的管理。并且可以通過(guò)現(xiàn)成的接口來(lái)獲得系統(tǒng)級(jí)別的服務(wù)。例如郵件服務(wù)、事務(wù)管理。JNDI:(Java Naming amp。 Directory Interface)JAVA命名目錄服務(wù)。主要提供的功能是:提供一個(gè)目錄系統(tǒng),讓其它各地的應(yīng)用程序在其上面留下自己的索引,從而滿足快速查找和定位分布式應(yīng)用程序的功能。JMS:(Java Message Service)JAVA消息服務(wù)。主要實(shí)現(xiàn)各個(gè)應(yīng)用程序之間的通訊。包括點(diǎn)對(duì)點(diǎn)和廣播。JTA:(Java Transaction API)JAVA事務(wù)服務(wù)。提供各種分布式事務(wù)服務(wù)。應(yīng)用程序只需調(diào)用其提供的接口即可。JAF:(Java Action FrameWork)JAVA安全認(rèn)證框架。提供一些安全控制方面的框架。讓開(kāi)發(fā)者通過(guò)各種部署和自定義實(shí)現(xiàn)自己的個(gè)性安全控制策略。RMI/IIOP:(Remote Method Invocation /internet對(duì)象請(qǐng)求中介協(xié)議)他們主要用于通過(guò)遠(yuǎn)程調(diào)用服務(wù)。例如,遠(yuǎn)程有一臺(tái)計(jì)算機(jī)上運(yùn)行一個(gè)程序,它提供股票分析服務(wù),我們可以在本地計(jì)算機(jī)上實(shí)現(xiàn)對(duì)其直接調(diào)用。當(dāng)然這是要通過(guò)一定的規(guī)范才能在異構(gòu)的系統(tǒng)之間進(jìn)行通信。RMI是JAVA特有的。,關(guān)鍵字:throws,throw,try,catch,finally分別代表什么意義?在try塊中可以拋出異常嗎?Java通過(guò)面向?qū)ο蟮姆椒ㄟM(jìn)行異常處理,把各種不同的異常進(jìn)行分類,并提供了良好的接口。在Java中,每個(gè)異常都是一個(gè)對(duì)象,它是Throwable類或其它子類的實(shí)例。當(dāng)一個(gè)方法出現(xiàn)異常后便拋出一個(gè)異常對(duì)象,該對(duì)象中包含有異常信息,調(diào)用這個(gè)對(duì)象的方法可以捕獲到這個(gè)異常并進(jìn)行處理。Java的異常處理是通過(guò)5個(gè)關(guān)鍵詞來(lái)實(shí)現(xiàn)的:try、catch、throw、throws和finally。一般情況下是用try來(lái)執(zhí)行一段程序,如果出現(xiàn)異常,系統(tǒng)會(huì)拋出(throws)一個(gè)異常,這時(shí)候你可以通過(guò)它的類型來(lái)捕捉(catch)它,或最后(finally)由缺省處理器來(lái)處理。用try來(lái)指定一塊預(yù)防所有“異?!钡某绦?。緊跟在try程序后面,應(yīng)包含一個(gè)catch子句來(lái)指定你想要捕捉的“異?!钡念愋汀hrow語(yǔ)句用來(lái)明確地拋出一個(gè)“異?!?。throws用來(lái)標(biāo)明一個(gè)成員函數(shù)可能拋出的各種“異常”。Finally為確保一段代碼不管發(fā)生什么“異?!倍急粓?zhí)行一段代碼??梢栽谝粋€(gè)成員函數(shù)調(diào)用的外面寫一個(gè)try語(yǔ)句,在這個(gè)成員函數(shù)內(nèi)部寫另一個(gè)try語(yǔ)句保護(hù)其他代碼。每當(dāng)遇到一個(gè)try語(yǔ)句,“異?!钡目蚣芫头诺蕉褩I厦?,直到所有的try語(yǔ)句都完成。如果下一級(jí)的try語(yǔ)句沒(méi)有對(duì)某種“異?!边M(jìn)行處理,堆棧就會(huì)展開(kāi),直到遇到有處理這種“異?!钡膖ry語(yǔ)句。java面試筆試題大匯總(2)[轉(zhuǎn)]“.java”源文件中是否可以包括多個(gè)類(不是內(nèi)部類)?有什么限制?可以。必須只有一個(gè)類名與文件名相同。?如何實(shí)現(xiàn)?MVC是Model-View-Controller的簡(jiǎn)寫?!癕odel” 代表的是應(yīng)用的業(yè)務(wù)邏輯(通過(guò)JavaBean,EJB組件實(shí)現(xiàn)),“View” 是應(yīng)用的表示面(由JSP頁(yè)面產(chǎn)生),“Controller” 是提供應(yīng)用的處理過(guò)程控制(一般是一個(gè)Servlet),通過(guò)這種設(shè)計(jì)模型把應(yīng)用邏輯,處理過(guò)程和顯示邏輯分成不同的組件實(shí)現(xiàn)。這些組件可以進(jìn)行交互和重用。?用什么關(guān)鍵字修飾同步方法? stop()和suspend()方法為何不推薦使用?有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable接口用synchronized關(guān)鍵字修飾同步方法反對(duì)使用stop(),是因?yàn)樗话踩?。它?huì)解除由線程獲取的所有鎖定,而且如果對(duì)象處于一種不連貫狀態(tài),那么其他線程能在那種狀態(tài)下檢查和修改它們。結(jié)果很難檢查出真正的問(wèn)題所在。suspend()方法容易發(fā)生死鎖。調(diào)用suspend()的時(shí)候,目標(biāo)線程會(huì)停下來(lái),但卻仍然持有在這之前獲得的鎖定。此時(shí),其他任何線程都不能訪問(wèn)鎖定的資源,除非被“掛起”的線程恢復(fù)運(yùn)行。對(duì)任何線程來(lái)說(shuō),如果它們想恢復(fù)目標(biāo)線程,同時(shí)又試圖使用任何一個(gè)鎖定的資源,就會(huì)造成死鎖。所以不應(yīng)該使用suspend(),而應(yīng)在自己的Thread類中置入一個(gè)標(biāo)志,指出線程應(yīng)該活動(dòng)還是掛起。若標(biāo)志指出線程應(yīng)該掛起,便用wait()命其進(jìn)入等待狀態(tài)。若標(biāo)志指出線程應(yīng)當(dāng)恢復(fù),則用一個(gè)notify()重新啟動(dòng)線程。?JDK為每種類型的流提供了一些抽象類以供繼承,請(qǐng)說(shuō)出他們分別是哪些類?字節(jié)流,字符流。字節(jié)流繼承于InputStream OutputStream,字符流繼承于InputStreamReader OutputStreamWriter。,主要是為了提高性能和使用方便。: How could Java classes direct program messages to the system console, buterror messages, say to a file?.The class System has a variable out that represents the standard output, and the variable err that represents the standard error default, they both point at the system how the standard output could be redirected: Stream st = new Stream(new FileOutputStream(“”))。(st)。(st)。:題What39。s the difference between an interface and an abstract class? abstract class may contain code in method bodies, which is not allowed in an abstract classes, you have to inherit your class from it and Java does not allow multiple the other hand, you can implement multiple interfaces in your :Why would you use a synchronized block method?Synchronized blocks place locks for shorter periods than synchronized methods.第二篇:java程序員面試題你怎樣理解Struts,又那些配置文件,以及作用? 理解:: 作用:struts 框架mvc 實(shí)現(xiàn)低耦合,便于程序的維護(hù)~ 配置文件控制流程的轉(zhuǎn)向 很清晰~ 主要負(fù)責(zé)具體業(yè)務(wù)的實(shí)現(xiàn)和頁(yè)面的轉(zhuǎn)向~怎么樣來(lái)捕獲數(shù)據(jù)庫(kù)中的異常?如何處理網(wǎng)頁(yè)中的驗(yàn)證信息,如何友好的進(jìn)行處理?用javaScript實(shí)現(xiàn)java中的監(jiān)聽(tīng)器功能?你對(duì)對(duì)日外包的看法?數(shù)據(jù)庫(kù)連接方式由哪幾種?Jdbc、連接池、hibernate你清楚哪幾種設(shè)計(jì)模式,談?wù)劯鞣N設(shè)計(jì)模式的類結(jié)構(gòu)。談?wù)刯sp和sevlet的區(qū)別,以及它們性能上的區(qū)別。jsp是servlet的一種簡(jiǎn)化,jsp編譯后是“類servlet”。servlet 主要是用來(lái)處理業(yè)務(wù)層;jsp 則是主要負(fù)責(zé) 表現(xiàn)層。servlet完全是java程序代碼構(gòu)成,擅長(zhǎng)于流程控制和事務(wù)處理,而通過(guò)servlet來(lái)生成動(dòng)態(tài)網(wǎng)頁(yè)很不直觀; 對(duì)于靜態(tài)的html標(biāo)簽,servlet都必須使用頁(yè)面輸出流逐行輸出。Servlet中沒(méi)有內(nèi)置對(duì)象。Jsp由html代碼和jsp標(biāo)簽構(gòu)成可以方便地編寫動(dòng)態(tài)網(wǎng)頁(yè),在struts框架中,jsp位于MVC設(shè)計(jì)模式的視圖層,而servlet位于控制層??傊?,使用jsp只需要完成程序員需要輸出到客戶端的內(nèi)容,至于jsp中的java腳本如果鑲嵌到一個(gè)類中,由jsp容器完成,而servlet則是個(gè)完整的java類,這個(gè)類的service方法用于生成對(duì)客戶端的響應(yīng)如何來(lái)編寫存儲(chǔ)過(guò)程,如何優(yōu)化存儲(chǔ)過(guò)程,以及存儲(chǔ)過(guò)程和TSQL的區(qū)別。提供的培訓(xùn),CMM5軟件開(kāi)發(fā)流程培訓(xùn)、代碼編寫規(guī)范和業(yè)務(wù)流程培訓(xùn)、對(duì)日語(yǔ)的培訓(xùn)。為什么要選擇這個(gè)行業(yè),和計(jì)算機(jī)專業(yè)的相比有什么優(yōu)勢(shì)?Servlet是什么,以及生命周期?Servlet被服務(wù)器實(shí)例化后,容器運(yùn)行其init方法,請(qǐng)求到達(dá)時(shí)運(yùn)行其service方法,service方法自動(dòng)派遣運(yùn)行與請(qǐng)求對(duì)應(yīng)的doXXX方法(doGet,doPost)等,當(dāng)服務(wù)器決定將實(shí)例銷毀的時(shí)候調(diào)用其destroy方法。與cgi的區(qū)別在于servlet處于服務(wù)器進(jìn)程中,它通過(guò)多線程方式運(yùn)行其service方法,一個(gè)實(shí)例可以服務(wù)于多個(gè)請(qǐng)求,并且其實(shí)例一般不會(huì)銷毀,而CGI對(duì)每個(gè)請(qǐng)求都產(chǎn)生新的進(jìn)程,服務(wù)完成后就銷毀,所以效率上低于servlet。怎么理解事務(wù)?怎么理解MVC?自己做自己的事情,主要強(qiáng)調(diào)分層,同時(shí)插入大量數(shù)據(jù),使用何種方法優(yōu)化?Batch多個(gè)有關(guān)系得怎么樣操作?你認(rèn)為你還有什么優(yōu)點(diǎn)在前面沒(méi)有提到?對(duì)加班的看法?與上級(jí)意見(jiàn)不一致時(shí)怎么樣處理?111111111222你如何理解團(tuán)隊(duì)精神?你怎樣處理學(xué)習(xí)新技術(shù)和項(xiàng)目開(kāi)發(fā)之間的矛盾? 怎樣去學(xué)習(xí)新技術(shù)?作為一個(gè)初級(jí)程序員怎么樣彌補(bǔ)與有經(jīng)驗(yàn)程序員之間的差距? 你對(duì)索引的理解,索引有幾種,什么時(shí)候用索引? 對(duì)Oracle理解?怎樣優(yōu)化復(fù)雜的查詢語(yǔ)句? 你對(duì)Jdbc理解?對(duì)Finally塊的理解和應(yīng)用? 游標(biāo)的理解? ResultSet 重載,重寫? 簽名EJB的事務(wù),Hibernate的事務(wù)? Struts的標(biāo)簽? 重定向和跳轉(zhuǎn)? A、:效率高,速度快——服務(wù)器端跳轉(zhuǎn),服務(wù)器之間內(nèi)部轉(zhuǎn),相同的request,可傳參;——之后的代碼不再被執(zhí)行;注意:如果使用forward跳轉(zhuǎn),則一定要在跳轉(zhuǎn)之前釋放掉全部的資源;,request設(shè)置的屬性依然能保留在下一個(gè)頁(yè)面(setAttribute)?!?”代表是:://localhost:8080/Test B、(“地址”):效率低,速度慢——客戶端跳轉(zhuǎn)(其中地址可以是任意的),跳轉(zhuǎn)語(yǔ)句后面的代碼還是會(huì)執(zhí)行,除非在其后面加上return(return)需復(fù)雜一些。% (“”)。boolean b = true。/ppif(b){ Return。} (“aaaaaaaaaa”)。%——地址改變了,客戶端跳轉(zhuǎn),不同的request :(“?id=mldn”)?!?”代表是:://localhost:8080/下面是兩種比較重要的跳轉(zhuǎn),我還是與上次的一次,把我做的筆記貼出來(lái):22Hibernate的左聯(lián)結(jié)和右連接,緩存,數(shù)據(jù)加載? 面向?qū)ο笕绾卫斫?2EJB中CMP和BMP,SessionBean的機(jī)制?222對(duì)日外包是否有抵觸情緒? 如何減少Servlet的請(qǐng)求? 對(duì)設(shè)計(jì)模式了解多少?作過(guò)的項(xiàng)目中用過(guò)那些設(shè)計(jì)模式? 33333333344444怎樣看待團(tuán)隊(duì)合作,在團(tuán)隊(duì)合作中你扮演什么樣的角色,遇到技術(shù)難題時(shí)怎么解決? Exception的層次結(jié)構(gòu)? EJB對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)機(jī)制? Struts中是否有事務(wù)處理? H