java高級(jí)工程師面試題和答案_第1頁
java高級(jí)工程師面試題和答案_第2頁
java高級(jí)工程師面試題和答案_第3頁
java高級(jí)工程師面試題和答案_第4頁
java高級(jí)工程師面試題和答案_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、:選擇題1 .關(guān)于以下程序代碼的說明正確的是(D)1. classHasStatic2. privatestaticintx=100;3. publicstaticvoidmain(Stringargs)4. HasStatichs1=newHasStatic();5. hs1.x+;6. HasStatichs2=newHasStatic();7. hs2.x+;8. hs1=newHasStatic();9. hs1.x+;10. HasStatic.x-;11. System.out.println("x="+x);12. 13. A、5行不能通過編譯,因?yàn)橐昧怂接?/p>

2、靜態(tài)變量B、10行不能通過編譯,因?yàn)閤是私有靜態(tài)變量C、程序通過編譯,輸出結(jié)果為:x=103Dk程序通過編譯,輸出結(jié)果為:x=1022 .下列關(guān)于for循環(huán)和while循環(huán)的說法中哪個(gè)是正確的?(B)A. while循環(huán)能實(shí)現(xiàn)的操作,for循環(huán)也都能實(shí)現(xiàn)B. while循環(huán)判斷條件一般是程序結(jié)果,for循環(huán)判斷條件一般是非程序結(jié)果C.兩種循環(huán)任何時(shí)候都可替換D.兩種循環(huán)結(jié)構(gòu)中都必須有循環(huán)體,循環(huán)體不能為空3 .以下選項(xiàng)中循環(huán)結(jié)構(gòu)合法的是(CA、while(inti<7)i+;System.out.println("iis"+i);B、intj=3;while(j)Sy

3、stem.out.println("jis"+j);C、intj=0;for(intk=0;j+k!=10;j+,k+)System.out.println("jis"+j+"kis”+k);D>intj=0;doSystem.out.println("jis"+j+);if(j=3)continueloop;while(j<10);4 .給出下面代碼段,哪行將引起一個(gè)編譯時(shí)錯(cuò)誤?(D1) publicclassTest2) intn=0;3) intm=0;4) publicTest(inta)m=a;5) p

4、ublicstaticvoidmain(Stringarg口)6) Testt1,t2;7) intj,k;8) j=3;k=5;9) t1=newTest();10) t2=newTest(k);11) 12) A.行1B.行4C.行6D.行95.下面的方法,當(dāng)輸入為2的時(shí)候返回值是多少?(D)publicintgetValue(inti)intresult=0;switch(i)case 1:result=result+i;case 2:result=result+i*2;case 3:result=result+i*3;returnresult;A0B2C4D10二:簡述題1、描述一下J

5、VM加載class文件的原理機(jī)制?JVM中類的裝載是由ClassLoader和它的子類來實(shí)現(xiàn)的,JavaClassLoader是一個(gè)重要的Java運(yùn)行時(shí)系統(tǒng)組件。它負(fù)責(zé)在運(yùn)行時(shí)查找和裝入類文件的類。2、heap和stack有什么區(qū)別。java的內(nèi)存分為兩類,一類是棧內(nèi)存,一類是堆內(nèi)存。棧內(nèi)存是指程序進(jìn)入一個(gè)方法時(shí),會(huì)為這個(gè)方法單獨(dú)分配一塊私屬存儲(chǔ)空間,用于存儲(chǔ)這個(gè)方法內(nèi)部的局部變量,當(dāng)這個(gè)方法結(jié)束時(shí),分配給這個(gè)方法的棧會(huì)釋放,這個(gè)棧中的變量也將隨之釋放。堆是與棧作用不同的內(nèi)存,一般用于存放不放在當(dāng)前方法棧中的那些數(shù)據(jù),例如,使用new創(chuàng)建的對象都放在堆里,所以,它不會(huì)隨方法的Z束而消失。方法中

6、的局部變量使用final修飾后,放在堆中,而不是棧中。3、GC是什么?為什么要有GC?GC是垃圾收集的意思(GabageCollection),內(nèi)存處理是編程人員容易出現(xiàn)問題的地方,忘記或者錯(cuò)誤的內(nèi)存回收會(huì)導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能可以自動(dòng)監(jiān)測對象是否超過作用域從而達(dá)到自動(dòng)回收內(nèi)存的目的,Java語言沒有提供釋放已分配內(nèi)存的顯示操作方法。4、列舉出一些常用的類,包,接口,請各舉5個(gè)要讓人家感覺你對javaee開發(fā)很熟,所以,不能僅僅只列corejava中的那些東西,要多列你在做ssh項(xiàng)目中涉及的那些東西。就寫你最近寫的那些程序中涉及的那些類。常用的類:Buffere

7、dReaderBufferedWriterFileReaderFileWirterStringintegerjava.util.Date,System,Class,List,HashMap常用的包:java.langjava.iojava.utiljava.sql,javax.servlet,org.apache.strtuts.action,org.hibernate常用的接口:RemoteListMapDocumentNodeList,Servlet,HttpServletRequest,HttpServletResponse,Transaction(Hibernate)、Session(

8、Hibernate),HttpSession5java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?字節(jié)流,字符流。字節(jié)流繼承于InputStreamOutputStream,字符流繼承于InputStreamReaderOutputStreamWriter。在java.io包中還有許多其他的流,主要是為了提高性能和使用方便。6、多線程有幾種實(shí)現(xiàn)方法?同步有幾種實(shí)現(xiàn)方法?多線程有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable接口同步的實(shí)現(xiàn)方面有兩種,分別是synchronized,wait與notifywait():使一個(gè)線程處于等待狀態(tài)

9、,并且釋放所持有的對象的lockosleep():使一個(gè)正在運(yùn)行的線程處于睡眠狀態(tài),是一個(gè)靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException(中斷異常)異常。notify():喚醒一個(gè)處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時(shí)候,并不能確切的喚醒某一個(gè)等待狀態(tài)的線程,而是由JVM確定喚醒哪個(gè)線程,而且不是按優(yōu)先級(jí)。Allnotity():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個(gè)對象的鎖,而是讓它們競爭。7、說一說Servlet的生命周期?答:servlet有良好的生存期的定義,包括加載和實(shí)例化、初始化、處理請求以及服務(wù)結(jié)束。這個(gè)生存期由javax.servle

10、t.Servlet接口的init,service和destroy方法表達(dá)。Servlet被服務(wù)器實(shí)例化后,容器運(yùn)行其init方法,請求到達(dá)日運(yùn)行其service方法,service方法自動(dòng)派遣運(yùn)行與請求對應(yīng)的doXXX方法(doGet,doPost)等,當(dāng)服務(wù)器決定將實(shí)例銷毀的時(shí)候調(diào)用其destroy方法。web容器加載servlet,生命周期開始。通過調(diào)用servlet的init()方法進(jìn)行servlet的初始化。通過調(diào)用service()方法實(shí)現(xiàn),根據(jù)請求的不同調(diào)用不同的do*()方法。結(jié)束服務(wù),web容器調(diào)用servlet的destroy()方法。8、說出數(shù)據(jù)連接池的工作機(jī)制是什么?J2

11、EE服務(wù)器啟動(dòng)時(shí)會(huì)建立一定數(shù)量的池連接,并一直維持不少于此數(shù)目的池連接??蛻舳顺绦蛐枰B接時(shí),池驅(qū)動(dòng)程序會(huì)返回一個(gè)未使用的池連接并將其表記為忙。如果當(dāng)前沒有空閑連接,池驅(qū)動(dòng)程序就新建一定數(shù)量的連接,新建連接的數(shù)量有配置參數(shù)決定。當(dāng)使用的池連接調(diào)用完成后,池驅(qū)動(dòng)程序?qū)⒋诉B接表記為空閑,其他調(diào)用就可以使用這個(gè)連接。實(shí)現(xiàn)方式,返回的Connection是原始Connection的代理,代理Connection的close方法不是真正關(guān)連接,而是把它代理的Connection對象還回到連接池中。9、這段代碼有什么不足之處?tryConnectionconn=;Statementstmt=;Result

12、Setrs=stmt.executeQuery("select*fromtable1");while(rs.next()catch(Exceptionex)答:沒有finally語句來關(guān)閉各個(gè)對象,另外,使用finally之后,要把變量的定義放在try語句塊的外面,以便在try語句塊之外的finally塊中仍可以訪問這些變量。10、一個(gè)用戶具有多個(gè)角色,請查詢出該表中具有該用戶的所有角色的其他用戶。selectcount(*)asnum,tb.idfromtb,(selectrolefromtbwhereid=xxx)ast1wheretb.role=t1.roleandt

13、b.id!=t1.idgroupbytb.idhavingnum=selectcount(role)fromtbwhereid=xxx;11、一個(gè)用戶表中有一個(gè)積分字段,假如數(shù)據(jù)庫中有100多萬個(gè)用戶,若要在每年第一天凌晨將積分清零,你將考慮什么,你將想什么辦法解決?altertabledropcolumnscore;altertableaddcolunmscoreint;可能會(huì)很快,但是需要試驗(yàn),試驗(yàn)不能拿真實(shí)的環(huán)境來操刀,并且要注意,這樣的操作時(shí)無法回滾的,在我的印象中,只有inertupdatedeleteDML語句才能回滾,對于createtable,droptable,alterta

14、ble等DDL語句是不能回滾。解決方案一,updateusersetscore=0;解決方案二,假設(shè)上面的代碼要執(zhí)行好長時(shí)間,超出我們的容忍范圍,那我就altertableuserdropcolumnscore;altertableuseraddcolumnscoreint。下面代碼實(shí)現(xiàn)每年的那個(gè)凌晨時(shí)刻進(jìn)行清零。Runnablerunnable=newRunnable()publicvoidrun()clearDb();schedule(this,newDate(newDate().getYear()+1,0,0);schedule(runnable,newDate(newDate().ge

15、tYear()+1,0,1);12、你對Spring的理解,什么是spring的IOCAOP。S2.Spring提供了對IOC良好支持,IOC是一種編程思想,是一種架構(gòu)藝術(shù),利用這種思想1p可Dr唐如,ClassProgrammeren艮p子eComputercomputer=null;ncpublicvoidcode()yIn.e/Computercomputer=newIBMComputer();/Computercomputer=beanfacotry.getComputer();computer.write();publicvoidsetComputer(Computercompute

16、r)puter=computer;)另外兩種方式都由依賴,第一個(gè)直接依賴于目標(biāo)類,第二個(gè)把依賴轉(zhuǎn)移到工廠上,第三個(gè)徹底與目標(biāo)和工廠解耦了。在spring的配置文件中配置片段如下:<beanid="computer"class="erview.Computer”></bean><beanid="programmer"class="erview.Programmer”><propertyname="computer"ref=&

17、quot;computer"></property></bean>3.Spring提供了對AOP技術(shù)的良好封裝,AOP稱為面向切面編程,就是系統(tǒng)中有很多各不相干的類的方法,在這些眾多方法中要加入某種系統(tǒng)功能的代碼,例如,加入日志,加入權(quán)限判斷,加入異常處理,這種應(yīng)用稱為AOP實(shí)現(xiàn)AOP功能采用的是代理技術(shù),客戶端程序不再調(diào)用目標(biāo),而調(diào)用代理類,代理類與目標(biāo)類對外具有相同的方法聲明,有兩種方式可以實(shí)現(xiàn)相同的方法聲明,一是實(shí)現(xiàn)相同的接口,二是作為目標(biāo)的子類在,JDK中采用Proxy類產(chǎn)生動(dòng)態(tài)代理的方式為某個(gè)接口生成實(shí)現(xiàn)類,如果要為某個(gè)類生成子類,則可以用CGLIB。在生成的代理類的方法中加入系統(tǒng)功能和調(diào)用目標(biāo)類的相應(yīng)方法,系統(tǒng)功能的代理以Advice對象進(jìn)行提供,顯然要?jiǎng)?chuàng)建出代理對象,至少需要目標(biāo)類和Advice類。spring提供了這種支持,只需要在spri

溫馨提示

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

最新文檔

評論

0/150

提交評論