『壹』 初級java面試,面試官是如何出題的
您好,贛州中公教育為您解答:
Java技術題:
問題一:會前端開發么,都會用哪些開發技術呢?
答案:如果熟悉前端的,就說:我對前端這塊還是比較熟練的,能夠熟悉運用 html5、css3、js、jQuery 等前端開發技術;如果不太熟悉的,就答前台js寫的比較熟練,html5+css3的框架寫得也不錯,只是jQuery特效能力比較差。
問題二:Java是什麼?(此題90%的公司必問)
解答:這個結合自己的理解回答,不要將網路上的知識生搬硬套。
問題三:jjvm GC的原理是什麼?
答案:JVM工作原理和特點主要是指操作系統裝入JVM是通過jdk中Java.exe來完成,通過下面4步來完成JVM環境.
1.創建JVM裝載環境和配置
2.裝載JVM.dll
3.初始化JVM.dll並掛界到JNIENV(JNI調用介面)實例
4.調用JNIEnv實例裝載並處理class類。
問題四:spring ioc aop 的原理是什麼?
答案:IOC(反轉控制):對成員變數的賦值的控制權從代碼中反轉到配置文件中。
AOP:Aspect(切面) Oriented(面向) Programming(編程),面向切面編程。
差不多就夠了,再看就是Spring的事務處理,基本就這些。
問題五:Java的集合都有哪些?
答案:集合主要有Collection和Map介面。Collection介面定義了一個包含一批對象的集合。Map介面在Collection的基礎上,為其中的每個對象指定了一個key,並使用Entry保存每個key-value對,以實現通過key快速定位到對象(value)。
問題六:java創建對象有幾種常用方法?
答案:四種,分別是:1.用new語句創建對象,這是最常用的創建對象的方式。
2.運用反射手段,調用Java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。
3.調用對象的clone()方法。
4.運用反序列化手段,調用java.io.ObjectInputStream對象的readObject()方法。
『貳』 Java軟體工程師面試時項目經驗應該怎樣講述
基本點:
1.介紹你的項目背景、用途。比如:銀行項目、ERP等等。
2.介紹項目使用到的是什麼技術。比如:mvc設計模式、ssh框架。
3.介紹你在項目中承擔的職責。比如:編碼、測試、資料庫設計。。。
加分點:
你在項目中遇到過什麼困難,如何解決的。
你需要傳達給面試官的信息是:我能做什麼、我會什麼技術、我能幫你完成何種任務。
圍繞這幾點,自由發揮,祝你成功。
『叄』 java面試題有哪些常見的啊
第一,談談final, finally, finalize的區別。
最常被問到。
第二,Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)?
第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統)。
第四,&和&&的區別。
這個問得很少。
第五,HashMap和Hashtable的區別。
常問。
第六,Collection 和 Collections的區別。
你千萬別說一個是單數一個是復數。
第七,什麼時候用assert。
API級的技術人員有可能會問這個。
第八,GC是什麼? 為什麼要有GC?
基礎。
第九,String s = new String("xyz");創建了幾個String Object?
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
第十一,short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?
面試題都是很變態的,要做好受虐的准備。
第十二,sleep() 和 wait() 有什麼區別?
搞線程的最愛。
第十三,Java有沒有goto?
很十三的問題,如果哪個面試的問到這個問題,我勸你還是別進這家公司。
第十四,數組有沒有length()這個方法? String有沒有length()這個方法?
第十五,Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?
常問。
第十六,Set里的元素是不能重復的,那麼用什麼方法來區分重復與否呢? 是用==還是equals()? 它們有何區別?
第十七,給我一個你最常見到的runtime exception。
如果你這個答不出來,面試的人會認為你沒有實際編程經驗。
第十八,error和exception有什麼區別?
第十九,List, Set, Map是否繼承自Collection介面?
第二十,abstract class和interface有什麼區別?
常問。
第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
第二十二,介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類(concrete class)?
第二十三,啟動一個線程是用run()還是start()?
第二十四,構造器Constructor是否可被override?
第二十五,是否可以繼承String類?
第二十六,當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?
第二十七,try {}里有一個return語句,那麼緊跟在這個try後的finally {}里的code會不會被執行,什麼時候被執行,在return前還是後?
第二十八,編程題: 用最有效率的方法算出2乘以8等於幾?
有C背景的程序員特別喜歡問這種問題。
第二十九,兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
第三十,當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這里到底是值傳遞還是引用傳遞?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
第三十二,編程題: 寫一個Singleton出來。
好先說這么一些。
答:
第一,談談final, finally, finalize的區別。
final—修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變數或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變數必須在聲明時給定初值,而在以後的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。
finally—再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的 catch 子句就會執行,然後控制就會進入 finally 塊(如果有的話)。
finalize—方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。
第二,Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)?
匿名的內部類是沒有名字的內部類。不能extends(繼承) 其它類,但一個內部類可以作為一個介面,由另一個內部類實現。
第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統)。
Nested Class (一般是C++的說法),Inner Class (一般是JAVA的說法)。Java內部類與C++嵌套類最大的不同就在於是否有指向外部的引用上。具體可見 http: //www.frontfree.net/articles/services/view.asp?id=704&page=1
註: 靜態內部類(Inner Class)意味著1創建一個static內部類的對象,不需要一個外部類對象,2不能從一個static內部類的一個對象訪問一個外部類對象
第四,&和&&的區別。
&是位運算符。&&是布爾邏輯運算符。
第五,HashMap和Hashtable的區別。
都屬於Map介面的類,實現了將惟一鍵映射到特定的值上。
HashMap 類沒有分類或者排序。它允許一個 null 鍵和多個 null 值。
Hashtable 類似於 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因為它是同步的。
第六,Collection 和 Collections的區別。
Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。
Collection是個java.util下的介面,它是各種集合結構的父介面。第七,什麼時候用assert。
斷言是一個包含布爾表達式的語句,在執行這個語句時假定該表達式為 true。如果表達式計算為 false,那麼系統會報告一個 Assertionerror。它用於調試目的:
assert(a > 0); // throws an Assertionerror if a <= 0
斷言可以有兩種形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 應該總是產生一個布爾值。
Expression2 可以是得出一個值的任意表達式。這個值用於生成顯示更多調試信息的 String 消息。
斷言在默認情況下是禁用的。要在編譯時啟用斷言,需要使用 source 1.4 標記:
javac -source 1.4 Test.java
要在運行時啟用斷言,可使用 -enableassertions 或者 -ea 標記。
要在運行時選擇禁用斷言,可使用 -da 或者 -disableassertions 標記。
要系統類中啟用斷言,可使用 -esa 或者 -dsa 標記。還可以在包的基礎上啟用或者禁用斷言。
可以在預計正常情況下不會到達的任何位置上放置斷言。斷言可以用於驗證傳遞給私有方法的參數。不過,斷言不應該用於驗證傳遞給公有方法的參數,因為不管是否啟用了斷言,公有方法都必須檢查其參數。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試後置條件。另外,斷言不應該以任何方式改變程序的狀態。
第八,GC是什麼? 為什麼要有GC? (基礎)。
GC是垃圾收集器。Java 程序員不用擔心內存管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
第九,String s = new String("xyz");創建了幾個String Object?
兩個對象,一個是「xyx」,一個是指向「xyx」的引用對象s。
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;
『肆』 誰有java面試時,常見的邏輯推理題嗎,分享一下
1.一個粗細均勻的長直管子,兩端開口,裡面有4個白球和4個黑球,球的直徑、兩端開口的直徑等於管子的內徑,現在白球和黑球的排列是wwwwbbbb,要求不取出任何一個球,使得排列變為bbwwwwbb。
2.一隻蝸牛從井底爬到井口,每天白天蝸牛要睡覺,晚上才出來活動,一個晚上蝸牛可以向上爬3尺,但是白天睡覺的時候會往下滑2尺,井深10尺,問蝸牛幾天可以爬出來?
3.在一個平面上畫1999條直線最多能將這一平面劃分成多少個部分?
4.在太平洋的一個小島上生活著土人,他們不願意被外人打擾,一天,一個探險家到了島上,被土人抓住,土人的祭司告訴他,你臨死前還可以有一個機會留下一句話,如果這句 話是真的,你將被燒死,是假的,你將被五馬分屍,可憐的探險家如何才能活下來?
5.怎樣種四棵樹使得任意兩棵樹的距離相等。
6.27個小運動員在參加完比賽後,口渴難耐,去小店買飲料,飲料店搞促銷,憑三個空瓶可以再換一瓶,他們最少買多少瓶飲料才能保證一人一瓶?
7.有一座山,山上有座廟,只有一條路可以從山上的廟到山腳,每周一早上8點,有一個聰明的小和尚去山下化緣,周二早上8點從山腳回山上的廟里,小和尚的上下山的速度是任 意的,在每個往返中,他總是能在周一和周二的同一鍾點到達山路上的同一點。例如,有一次他發現星期一的8點30和星期二的8點30他都到了山路靠山腳的3/4的地方,問這是為什麼?
8.有兩根不均勻分布的香,每根香燒完的時間是一個小時,你能用什麼方法來確定一段15分鍾的時間?
2.10個海盜搶到了100顆寶石,每一顆都一樣大小且價值連城。他們決定這么分:
(1)抽簽決定自己的號碼(1~10);
(2)首先,由1號提出分配方案,然後大家表決,當且僅當超過半數的人同意時,按照他的方案進行分配,否則將被扔進大海喂鯊魚;
(3)如果1號死後,再由2號提出分配方案,然後剩下的4個人進行表決,當且僅當超過半數的人同意時,按照他的方案進行分配,否則將被扔入大海喂鯊魚;
(4)依此類推……
條件:每個海盜都是很聰明的人,都能很理智地做出判斷,從而做出選擇。
問題:第一個海盜提出怎樣的分配方案才能使自己的收益最大化?
12.從同一地點出發的相同型號的飛機,可是每架飛機裝滿油只能繞地球飛半周,飛機之間可以加油,加完油的飛機必須回到起點。問至少要多少架次,才能滿足有一架繞地球一周。
參考答案:
1.兩邊一起燒。
2.96,0,1,0,1,0,1,0,1,0。
3.因為口是圓的。
4.很多。
5.分1,2,4。
6.6/7北京到廣州的距離。
7.100%。
8.平面鏡成像原理(或者是「眼睛是左右長的」)。
9.3先裝滿,倒在5里,再把3裝滿,倒進5里。把5里的水倒掉,把3里剩下的水倒進5里,再把3裝滿,倒進5里,ok!
10.一次。
11.首先1000為一個解。連續數的平均值設為x,1000必須是x的整數倍。假如連續數的個數為偶數個,x就不是整數了。x的2倍只能是5,25,125才行。因為平均值為12.5,要連續80個達不到。125/2=62.5是可以的。即62,63,61,64,等等。連續數的個數為奇數時,平均值為整數。1000為平均值的奇數倍。1000=2×2×2×5×5×5;x可以為2,4,8,40,200排除後剩下40和200是可以的。所以答案為平均值為62.5,40,200,1000的4組整數。
12.答案是5架次。一般的解法可以分為如下兩個部分:
(1)直線飛行
一架飛機載滿油飛行距離為1,n架飛機最遠能飛多遠?在不是兜圈沒有迎頭接應的情況,這問題就是n架飛機能飛多遠?存在的極值問題是不要重復飛行,比如兩架飛機同時給
一架飛機加油且同時飛回來即可認為是重復,或者換句話說,離出發點越遠,在飛的飛機就越少,這個極值條件是顯然的,因為n架飛機帶的油是一定的,如重復,則浪費的油就越多。比如最後肯定是只有一架飛機全程飛行,注意「全程」這兩個字,也就是不要重復的極值條件。如果是兩架飛機的話,肯定是一架給另一架加滿油,並使剩下的油剛好能回去,就說第二架飛機帶的油耗在3倍於從出發到加油的路程上,有三架飛機第三架帶的油耗在5倍於從出發到其加油的路程上,所以n架飛機最遠能飛行的距離為s=1+1/3+…+1/(2n+1
)這個級數是發散的,所以理論上只要飛機足夠多最終可以使一架飛機飛到無窮遠,當然實際上不可能一架飛機在飛行1/(2n+1)時間內同時給n-1個飛機加油。
(2)可以迎頭接應加油
一架飛機載滿油飛行距離為1/2,最少幾架飛機能飛行距離1?也是根據不要重復飛行的極值條件,得出最遠處肯定是只有一架飛機飛行,這樣得出由1/2處對稱兩邊1/4肯定是
一架飛機飛行,用上面的公式即可知道一邊至少需要兩架飛機支持,(1/3+1/5)/2>1/4(左邊除以2是一架飛機飛行距離為1/2),但是有一點點剩餘,所以想像為一個滑輪(中間
一個飛機是個繩子,兩邊兩架飛機是個棒)的話,可以滑動一點距離,就說加油地點可以在一定距離內變動(很容易算出來每架飛機的加油地點和加油數量,等等)
『伍』 Java面試中有哪些陷阱
Java開發求職,Java程序員面試中的常見陷阱。羅了一些網路上以及我和身邊大牛們去面試的時候曾經踩過的一些坑,分享給大家,在面試的時候提高面試成功率。
很多小夥伴去面試的時候應該都經歷過這樣的情況「面試官問的我都知道可就是回答不上來,明明在IDE中幾分鍾就可以寫出來的代碼可是一放在考卷上就不會了」。
其實面試並沒有什麼道理可講,很少會有公司去面試的時候給你一個IDE工具讓你現場編碼,基本都是面試官會當場問,或者是筆試等等。
有的同學可能認為如果對於先進的框架掌握了那面試基本就十拿九穩了,其實不然一個老道的面試官大多不會問你Hibernate、Struts等框架底層實現,只是要求你會用就行。而給你挖的最多的坑還是對於基礎的掌握。
我搜羅了一些網路上以及我和身邊大牛們去面試的時候曾經踩過的一些坑,希望可以對大家面試有一點點幫助。
Java程序員面試常見陷阱一、final finally finalize的區別
1、final修飾符,Java中的關鍵字,用final修飾變數的必須在聲明時就給定初始值,而且不允許被修改;用final修飾方法不允許被重寫;用final修飾的類不允許被繼承。
2、finally語句塊是異常處理結構的最後執行部分,完整的異常處理語句一定要包含finally語句,無論程序中有無異常發生,並且無論之間的try-catch是否順利執行完畢,都會執行finally語句。
3、finalize()是Java為類提供的一種特殊方法,垃圾收集器一旦准備好釋放無用對象佔用的內存會首先調用finalize()方法然後才能真正回收對象的內存,通過finalize()方法就可以在垃圾收集器運行期間進行一些特殊的工作。
Java程序員面試常見陷阱二、HashMap和Hashtable的區別
1、HashMap和Hashtable都實現了Map介面,兩者最主要的區別在於Hashtable是線程安全,而HashMap則是非線程安全。
2、HashMap可以使用null作為key,而Hashtable則不允許null作為key。
3、HashMap是對Map介面的實現,而Hashtable實現了Map介面和Dictionary抽象類。
Java程序員面試常見陷阱三、String 和 StringBuffer 的區別
JAVA 平台提供了兩個類:String 和 StringBuffer,它們可以儲存和操作字元串,即包含多個 字元的字元數據。這個 String 類提供了數值不可改變的字元串。而這個 StringBuffer 類提供 的字元串進行修改。當你知道字元數據要改變的時候你就可以使用 StringBuffer。典型地你可以使用 StringBuffers 來動態構造字元數據。另外,String 實現了 equals 方法,new String(「abc」).equals(newString(「abc」)的結果為true,而StringBuffer沒有實現equals方法, 所以,new StringBuffer(「abc」).equals(newStringBuffer(「abc」)的結果為 false。
Java程序員面試常見陷阱四、Java實現多態的機制是什麼
靠的是父類或介面定義的引用變數可以指向子類或具體實現類的實例對象,而程序調用的方法在運行期才動態綁定,就是引用變數所指向的具體實例對象的方法,也就是內存里正在運 行的那個對象的方法,而不是引用變數的類型中定義的方法。
Java程序員面試常見陷阱五、說出數據連接池的工作機制是什麼
J2EE 伺服器啟動時會建立一定數量的池連接,並一直維持不少於此數目的池連接。客戶端 程序需要連接時,池驅動程序會返回一個未使用的池連接並將其表記為忙。如果當前沒有空
閑連接,池驅動程序就新建一定數量的連接,新建連接的數量有配置參數決定。當使用的池 連接調用完成後,池驅動程序將此連接表記為空閑,其他調用就可以使用這個連接。 實現方式,返回的 Connection 是原始 Connection 的代理,代理 Connection 的 close 方法 不是真正關連接,而是把它代理的 Connection 對象還回到連接池中。
Java程序員面試常見陷阱六、JSP和Servlet的區別
JSP 是 Servlet技術的擴展,本質上是 Servlet 的簡易方式,更強調應用的外表表達。JSP 編譯後是"類 servlet"。
Servlet 和 JSP 最主要的不同點在於,Servlet 的應用邏輯是在 Java 文件中,並且完全從表示層中的 HTML 里分離開來。而 JSP 的情況是 Java 和 HTML 可以 組合成一個擴展名為.jsp 的文件。JSP 側重於視圖,Servlet主要用於控制邏輯。