java高級(jí)工程師面試題及復(fù)習(xí)資料_第1頁
java高級(jí)工程師面試題及復(fù)習(xí)資料_第2頁
java高級(jí)工程師面試題及復(fù)習(xí)資料_第3頁
java高級(jí)工程師面試題及復(fù)習(xí)資料_第4頁
java高級(jí)工程師面試題及復(fù)習(xí)資料_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1/ 8選擇題1.關(guān)于以下程序代碼的說明正確的是(D2.下列關(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)合法的是(C)A、while (int i7) i+;System.out.println(“ i is “ +i);B、 int j=3; while(j)System.out.println( is“ “j +j);C、 int j=0;f

2、or(int k=0; j + k !=10; j+,k+)System.out.println( is“ “j + j + is “”k+ k);D、int j=0; doSystem.out.println( is “j +j+); if (j = = 3) continue loop;1 class HasStatic2private staticint x=100;3public staticvoid main(String args4HasStatic hs1=new HasStatic( );5hs1.x+;6HasStatic hs2=new HasStatic( );7hs2.

3、x+;8hs1=newHasStatic( );9hs1.x+;10HasStatic.x- -;11System.out.println( “x=” +x);1213)A、 5 行不能通過編譯,因?yàn)橐昧怂接徐o態(tài)變量B、 10 行不能通過編譯,因?yàn)?x 是私有靜態(tài)變量C、 程序通過編譯,輸出結(jié)果為: x=103D、 程序通過編譯,輸出結(jié)果為: x=1022/ 8while (j10);4.給出下面代碼段,哪行將引起一個(gè)編譯時(shí)錯(cuò)誤?(D)1) public class Test 2)int n = 0;3)int m = 0;4)public Test(int a) m=a; 5)public

4、 static void main(String arg) 6)Test t1,t2;7)int j,k;8)j=3; k=5;9)t1=new Test();10)t2=new Test(k);11)12) A. 行 1 B. 行 4 C. 行 6 D. 行 95.下面的方法,當(dāng)輸入為2的時(shí)候返回值是多少?(D)public int getValue(int i) int result = 0;switch (i) case 1:result = result + i;case 2:result = result + i * 2;case 3:result = result + i * 3;

5、return result;A 0 B 2 C 4 D 10二 : 簡(jiǎn)述題1、描述一下JVM加載class文件的原理機(jī)制?JVM 中類的裝載是由 C lassLoader 和它的子類來實(shí)現(xiàn)的 ,Java ClassLoader 是一個(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è)棧中的變量也將隨之釋放。堆是與棧作用不同的

6、內(nèi)存, 一般用于存放不放在當(dāng)前方法棧中的那些數(shù)據(jù), 例如,使用 new 創(chuàng) 建的對(duì)象都放在堆里, 所以, 它不會(huì)隨方法的結(jié)束而消失。 方法中的局部變量使用 final 修飾 后,放在堆中,而不是棧中。3、GC是什么?為什么要有GC?GC 是垃圾收集的意思 (Gabage Collection ),內(nèi)存處理是編程人員容易出現(xiàn)問題的地方, 忘 記或者錯(cuò)誤的內(nèi)存回收會(huì)導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰, Java 提供的 GC 功能可以 自 動(dòng)監(jiān)測(cè)對(duì)象是否超過作用域從而達(dá)到自動(dòng)回收內(nèi)存的目的, Java 語言沒有提供釋放已分 配 內(nèi)存的顯示操作方法。4、列舉出一些常用的類,包,接口,請(qǐng)各舉5個(gè)3/ 8要

7、讓人家感覺你對(duì) java ee 開發(fā)很熟, 所以,不能僅僅只列 core java 中的那些東西, 要多 列 你在做 ssh項(xiàng)目中涉及的那些東西。就寫你最近寫的那些程序中涉及的那些類。常用的類:BufferedReader BufferedWriter StringInteger java.util.Date ,System ,Class ,List,HashMap常用的包: java.lang java.io java.util java.sql,javax.servlet,org.apache.strtuts.action,org.hibernate 常用的接口: Remote List

8、Map DocumentNodeList,Servlet,HttpServletRequest,HttpServletResponse,Transaction(Hibernate) 、Session(Hibernate),HttpSession5 java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承, 請(qǐng)說出他們分別是哪些類?字節(jié)流,字符流。字節(jié)流繼承于 I nputStream OutputStream ,字符流繼承于 InputStream ReaderOutputStreamWriter 。在 java.io 包中還有許多其他的流, 主要是為了提 高性能和使用方便。6、

9、多線程有幾種實(shí)現(xiàn)方法?同步有幾種實(shí)現(xiàn)方法?多線程有兩種實(shí)現(xiàn)方法,分別是繼承Thread 類與實(shí)現(xiàn) R unnable 接口 同步的實(shí)現(xiàn)方面有兩種, 分別是 synchronized,wait與 notify wait():使一個(gè)線程處于等待狀態(tài),并且釋放所持有的對(duì)象的 lock 。sleep(): 使一個(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í)。

10、Allnotity(): 喚醒 所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個(gè)對(duì)象的鎖,而是 讓它們競(jìng)爭(zhēng)。7、說一說Servlet的生命周期?答:servlet 有良好的生存期的定義,包括加載和實(shí)例化、初始化、處理請(qǐng)求以及服務(wù)結(jié)束。這個(gè)生存期由 javax.servlet.Servlet 接口的 init,service 和 destroy 方法表達(dá)。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í)

11、候調(diào)用其destroy 方法。web 容器加載 servlet ,生命周期開始。 通過調(diào)用 servlet 的 init() 方法進(jìn)行 servlet 的初始化。 通 過調(diào)用 service() 方法實(shí)現(xiàn),根據(jù)請(qǐng)求的不同調(diào)用不同的 do*() 方法。結(jié)束服務(wù), web 容 器調(diào) 用 servlet的 destroy。方法。8、說出數(shù)據(jù)連接池的工作機(jī)制是什么?J2EE 服務(wù)器啟動(dòng)時(shí)會(huì)建立一定數(shù)量的池連接, 并一直維持不少于此數(shù)目的池連接。 客戶端 程 序需要連接時(shí), 池驅(qū)動(dòng)程序會(huì)返回一個(gè)未使用的池連接并將其表記為忙。 如果當(dāng)前沒有空 閑連 接,池驅(qū)動(dòng)程序就新建一定數(shù)量的連接, 新建連接的數(shù)量有配

12、置參數(shù)決定。 當(dāng)使用的池 連接調(diào) 用完成后,池驅(qū)動(dòng)程序?qū)⒋诉B接表記為空閑,其他調(diào)用就可以使用這個(gè)連接。實(shí)現(xiàn)方式,返回的 Co nn ection 是原始 Conn ection 的代理,代理 Conn ection 的 close 方法 不 是真正4/ 8關(guān)連接,而是把它代理的 Connection 對(duì)象還回到連接池中。9、這段代碼有什么不足之處?try Connection conn = .;Statement stmt = .;ResultSet rs =stmt.executeQuery(select * from table1);while(rs.next() catch(Except

13、ion ex) 答:沒有 finally 語句來關(guān)閉各個(gè)對(duì)象,另外,使用 finally 之后, 要把變量的定義放在 try 語 句 塊的外面,以便在 try 語句塊之外的 finally 塊中仍可以訪問這些變量。10、一個(gè)用戶具有多個(gè)角色, 請(qǐng)查詢出該表中具有該用戶的所有角色的其他用戶。select count(*) as num,tb.idfromtb,(select role from tbwhere id=xxx) as t1wheretb.role = t1.role and tb.id != t1.idgroup bytb.id havingnum = select count(r

14、ole)from tb where id=xxx;11、一個(gè)用戶表中有一個(gè)積分字段, 假如數(shù)據(jù)庫中有100多萬個(gè)用戶,若要在 每年第一天凌晨將積分清零,你將考慮什么,你將想什么辦法解決?alter table drop column score;5/ 8cialter table add colunm score int; 可能會(huì)很快, 但是需要試驗(yàn), 試驗(yàn)不能拿真實(shí)的環(huán)境來操刀,并且要注意,這樣的操作時(shí)無法回滾的,在我的印象中,只有 inert update delete 等 DML 語句才能回滾, 對(duì)于 create table,drop table ,alter table 等 DDL

15、語句是不能回滾。解決方案一, update user set score=0; 解決方案二,假設(shè)上面的代碼要執(zhí)行好長(zhǎng)時(shí)間, 超出我 們的容忍范圍,那我就 alter table user drop columnscore;alter table user add column score int下面代碼實(shí)現(xiàn)每年的那個(gè)凌晨時(shí)刻進(jìn)行清零。Runnable runnable =new Runnable()public voidrun()clearDb();schedule(this,newDate(new Date().getYear()+1,0,0);schedule(runnable,new D

16、ate(newDate().getYear()+1,0,1);Computer computer =null;public void code()/Computercomputer = new IBMCompIuter();n/Computercomputer = beanfacotry.gejtComputer();e12、你對(duì)Spring的理解,什么是spring的IOC AOP。Sp2. Spring 提供了對(duì) IOC 良好支持, IOC可是一種編程思想,是一種架構(gòu)藝術(shù),利用這種思想以譬如,很Class Programmer塊廠之模模間式式的的解解computer.write();6/ 8public voidsetComputer(Computer computer)7/ puter= computer; 另外兩種方式都由依賴, 第一個(gè)直接依賴于目標(biāo)類, 第二個(gè)把依賴轉(zhuǎn)移到工廠上, 第三個(gè) 徹 底與目標(biāo)和工廠解耦了。在 spring 的配置文件中配置片段如下:3. Spring 提供了對(duì) AOP 技術(shù)的良好封裝, AOP 稱為面向切面編程,就是系統(tǒng)中有很多 各 不相干的類的方法, 在這些眾多方法中要加入某種系統(tǒng)功能的代碼, 例如,加入日志, 加入 權(quán)限判斷,加入異常處理,這種應(yīng)用稱為 AOP。實(shí)現(xiàn) AOP 功能采用的是代理技術(shù),客戶端 程序不再調(diào)用目標(biāo), 而調(diào)用代理類,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論