第一篇:Java程序員面試-2010最新版
1.抽象:
抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節(jié)。抽象包括兩個方面,一是過程抽象,二是數(shù)據(jù)抽象。
2.繼承:
繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現(xiàn)有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。
3.封裝:
封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的界面。面向?qū)ο笥嬎闶加谶@個基本概念,即現(xiàn)實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。
4.多態(tài)性:
多態(tài)性是指允許不同類的對象對同一消息作出響應。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢,很好的解決了應用程序函數(shù)同名問題。
7、說出ArrayList,Vector, LinkedList的存儲性能和特性
ArrayList和Vector都是使用數(shù)組方式存儲數(shù)據(jù),此數(shù)組元素數(shù)大于實際存儲的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數(shù)組元素移動等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現(xiàn)存儲,按序號索引數(shù)據(jù)需要進行前向或后向遍歷,但是插入數(shù)據(jù)時只需要記錄本項的前后項即可,所以插入速度較快。
8、EJB是基于哪些技術實現(xiàn)的?并說出SessionBean和EntityBean的區(qū)別,StatefulBean和StatelessBean的區(qū)別。
EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技術實現(xiàn)。
SessionBean在J2EE應用程序中被用來完成一些服務器端的業(yè)務操作,例如訪問數(shù)據(jù)庫、調(diào)用其他EJB組件。EntityBean被用來代表應用系統(tǒng)中用到的數(shù)據(jù)。
對于客戶機,SessionBean是一種非持久性對象,它實現(xiàn)某些在服務器上運行的業(yè)務邏輯。
對于客戶機,EntityBean是一種持久性對象,它代表一個存儲在持久性存儲器中的實體的對象視圖,或是一個由現(xiàn)有企業(yè)應用程序?qū)崿F(xiàn)的實體。
Session Bean 還可以再細分為 Stateful Session Bean 與 Stateless Session Bean,這兩種的 Session Bean都可以將系統(tǒng)邏輯放在 method之中執(zhí)行,不同的是 Stateful Session Bean 可以記錄呼叫者的狀態(tài),因此通常來說,一個使用者會有一個相對應的 Stateful Session Bean 的實體。Stateless Session Bean 雖然也是邏輯組件,但是他卻不負責記錄使用者狀態(tài),也就是說當使用者呼叫 Stateless Session Bean 的時候,EJB Container 并不會找尋特定的 Stateless Session Bean 的實體來執(zhí)行這個 method。換言之,很可能數(shù)個使用者在執(zhí)行某個 Stateless Session Bean 的 methods 時,會是同一個 Bean 的 Instance 在執(zhí)行。從內(nèi)存方面來看,Stateful Session Bean 與 Stateless Session Bean 比較,Stateful Session Bean 會消耗 J2EE Server 較多的內(nèi)存,然而 Stateful Session Bean 的優(yōu)勢卻在于他可以維持使用者的狀態(tài)。
13、sleep()和 wait()有什么區(qū)別?
sleep是線程類(Thread)的方法,導致此線程暫停執(zhí)行指定時間,給執(zhí)行機會給其他線程,但是監(jiān)控狀態(tài)依然保持,到時后會自動恢復。調(diào)用sleep不會釋放對象鎖。
wait是Object類的方法,對此對象調(diào)用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法(或notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態(tài)。
31、EJB包括(SessionBean,EntityBean)說出他們的生命周期,及如何管理事務的?
SessionBean:Stateless Session Bean 的生命周期是由容器決定的,當客戶機發(fā)出請求要建立一個Bean的實例時,EJB容器不一定要創(chuàng)建一個新的Bean的實例供客戶機調(diào)用,而是隨便找一個現(xiàn)有的實例提供給客戶機。當客戶機第一次調(diào)用一個Stateful Session Bean 時,容器必須立即在服務器中創(chuàng)建一個新的Bean實例,并關聯(lián)到客戶機上,以后此客戶機調(diào)用Stateful Session Bean 的方法時容器會把調(diào)用分派到與此客戶機相關聯(lián)的Bean實例。
EntityBean:Entity Beans能存活相對較長的時間,并且狀態(tài)是持續(xù)的。只要數(shù)據(jù)庫中的數(shù)據(jù)存在,Entity beans就一直存活。而不是按照應用程序或者服務進程來說的。即使EJB容器崩潰了,Entity beans也是存活的。Entity Beans生命周期能夠被容器或者 Beans自己管理。
EJB通過以下技術管理實務:對象管理組織(OMG)的對象實務服務(OTS),Sun Microsystems的Transaction Service(JTS)、Java Transaction API(JTA),開發(fā)組(X/Open)的XA接口。
抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數(shù)。
50、Java中的異常處理機制的簡單原理和應用。
當JAVA程序違反了JAVA的語義規(guī)則時,JAVA虛擬機就會將發(fā)生的錯誤表示為一個異常。違反語義規(guī)則包括2種情況。一種是JAVA類庫內(nèi)置的語義檢查。例如數(shù)組下標越界,會引發(fā)IndexOutOfBoundsException;訪問null的對象時會引發(fā)NullPointerException。另一種情況就是JAVA允許程序員擴展這種語義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時用throw關鍵字引發(fā)異常。所有的異常都是java.lang.Thowable的子類。
71、簡述synchronized和java.util.concurrent.locks.Lock的異同 ?
主要相同點:Lock能完成synchronized所實現(xiàn)的所有功能
主要不同點:Lock有比synchronized更精確的線程語義和更好的性能。synchronized會自動釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally從句中釋放。
74、EJB規(guī)范規(guī)定EJB中禁止的操作有哪些?
1.不能操作線程和線程API(線程API指非線程對象的方法如notify,wait等),2.不能操作awt,3.不能實現(xiàn)服務器功能,4.不能對靜態(tài)屬生存取,5.不能使用IO操作直接存取文件系統(tǒng),6.不能加載本地庫.,7.不能將this作為變量和返回,8.不能循環(huán)調(diào)用。
99、java中有幾種方法可以實現(xiàn)一個線程?用什么關鍵字修飾同步方法? stop()和suspend()方法為何不推薦使用?
有兩種實現(xiàn)方法,分別是繼承Thread類與實現(xiàn)Runnable接口 用synchronized關鍵字修飾同步方法
反對使用stop(),是因為它不安全。它會解除由線程獲取的所有鎖定,而且如果對象處于一種不連貫狀態(tài),那么其他線程能在那種狀態(tài)下檢查和修改它們。結(jié)果很難檢查出真正的問題所在。suspend()方法容易發(fā)生死鎖。調(diào)用suspend()的時候,目標線程會停下來,但卻仍然持有在這之前獲得的鎖定。此時,其他任何線程都不能訪問鎖定的資源,除非被“掛起”的線程恢復運行。對任何線程來說,如果它們想恢復目標線程,同時又試圖使用任何一個鎖定的資源,就會造成死鎖。所以不應該使用suspend(),而應在自己的Thread類中置入一個標志,指出線程應該活動還是掛起。若標志指出線程應該掛起,便用wait()命其進入等待狀態(tài)。若標志指出線程應當恢復,則用一個notify()重新啟動線程。
107、寫clone()方法時,通常都有一行代碼,是什么?
Clone 有缺省行為,super.clone();他負責產(chǎn)生正確大小的空間,并逐位復制。
119、STRUTS的應用(如STRUTS架構)
Struts是采用Java Servlet/JavaServer Pages技術,開發(fā)Web應用程序的開放源碼的framework。采用Struts能開發(fā)出基于MVC(Model-View-Controller)設計模式的應用構架。Struts有如下的主要功能: 一.包含一個controller servlet,能將用戶的請求發(fā)送到相應的Action對象。二.JSP自由tag庫,并且在controller servlet中提供關聯(lián)支持,幫助開發(fā)員創(chuàng)建交互式表單應用。三.提供了一系列實用對象:XML處理、通過Java reflection APIs自動處理JavaBeans屬性、國際化的提示和消息。
JSP和SERVLET的區(qū)別:
SUN首先發(fā)展出SERVLET,其功能比較強勁,體系設計也很先進,只是,它輸出HTML語句還是采用了老的CGI方式,是一句一句輸出,所以,編寫和修改HTML非常不方便。后來SUN推出了類似于ASP的JSP,把JAVA代碼嵌套到HTML語句中,這樣,就大大簡化和方便了網(wǎng)頁的設計和修改。ASP,PHP,JSP都是嵌套型的SCRIPT語言。一個分布式系統(tǒng)應分為三層:表示層,業(yè)務邏輯層,數(shù)據(jù)存取層,在J2EE體系結(jié)構中,SERVLET用來寫業(yè)務邏輯層是很強大的,但是對于寫表示層就很不方便。JSP則主要是為了方便寫表示層而設計的。ENTITY BEAN實現(xiàn)數(shù)據(jù)存取層,SESSION BEAN實現(xiàn)業(yè)務邏輯層。如果是簡單的應用系統(tǒng),可采用JSP+BEANS的結(jié)構進行設計,JSP中應該僅僅存放與表示層有關的東西,也就是說,只放輸出 HTML網(wǎng)頁的部份。而所有的數(shù)據(jù)計算,數(shù)據(jù)分析,數(shù)據(jù)庫聯(lián)結(jié)處理,統(tǒng)統(tǒng)是屬于業(yè)務邏輯層,應該放在JAVA BEANS中。通過JSP調(diào)用JAVA BEANS,實現(xiàn)兩層的整合。實際上,微軟的DNA技術,簡單說,就是ASP+COM/DCOM技術。與JSP+BEANS完全類似,所有的表示層由ASP完成,所有的業(yè)務邏輯由 COM/DCOM完成。為什么要采用這些組件技術呢?因為單純的ASP/JSP語言是非常低效率執(zhí)行的,如果出現(xiàn)大量用戶點擊,純SCRIPT語言很快就到達了他的功能上限,而組件技術就能大幅度提高功能上限,加快執(zhí)行速度。另外一方面,純SCRIPT語言將表示層和業(yè)務邏輯層混在一起,造成修改不方便,并且代碼不能重復利用,采用組件技術就只改組件就可以了。對于復雜的應用,應該采用ENTITY BEAN實現(xiàn)數(shù)據(jù)存取層,SESSION BEAN實現(xiàn)業(yè)務邏輯層,用JSP來調(diào)用SESSION BEAN,由SESSION BEAN調(diào)用ENTITY BEAN。即采用JSP+EJB來構建一個復雜的分布式系統(tǒng)。它比JSP+BEAN具有更高的吞吐量,可靠性,安全性。綜上所述,對簡單應用,可采用 JSP+BAEN,對復雜的應用系統(tǒng),應采用JSP+EJB,SERVLET變的無足輕重。用JSP完全可替代它。當然不要忘記struts阿:)
第二篇:JAVA程序員面試技巧
java程序員面試題 第一部分:選擇題 question no: 1
1、public class test { public static void changestr(string str){ } public static void main(string[] args){ string str=1234;changestr(str);system.out.println(str);} } please write the output result : question no:2 1.public class test { 2.static boolean foo(char c){ 3.system.out.print(c);4.return true;5.} 6.public static void main(string[] argv){ 7.int i =0;8.for(foo(a);foo(b)&&(i<2);foo(c)){ 9.i++;10.foo(d);12.} 13.} 14.} what is the result? a.abdcbdcb b.abcdabcd d.an exception is thrown at runtime.question no: 3 1.class a { 2.protected int method1(int a, int b){ return 0;} 3.} which two are valid in a class that extends class a?(choose two)a.public int method1(int a, int b){ return 0;} b.private int method1(int a, int b){ return 0;} c.private int method1(int a, long b){ return 0;} d.public short method1(int a, int b){ return 0;} e.static protected int method1(int a, int b){ return 0;} question no: 4 1.public class outer{ 2.public void someoutermethod(){ 3.// line 3 4.} 5.public class inner{} 6.public static void main(string[]argv){ 7.outer o = new outer();8.// line 8 9.} 10.} which instantiates an instance of inner? a.new inner();// at line 3 b.new inner();// at line 8 c.new o.inner();// at line 8 d.new outer.inner();// at line 8//new outer().new inner()question no: 5 which method is used by a servlet to place its session id in a url that is written to the servlet’s response output stream? question no: 6 which two are equivalent?(choose two)a.b.c.d.e.f.g.question no: 7 which of the following statements regarding the lifecycle of a session bean are correct? 1.java.lang.illegalstateexception is thrown if sessioncontext.getejbobject()is invoked when a stateful session bean instance is passivated.2.sessioncontext.getrollbackonly()does not throw an exception when a session bean with bean-managed transaction demarcation is activated.3.an exception is not thrown when sessioncontext.getusertransaction()is called in the afterbegin method of a bean with container-managed transactions.5.accessing resource managers in the sessionsynchronization.afterbegin method of a stateful session bean with bean-managed transaction does not throw an exception.第二部分:概念題
1.描述struts體系結(jié)構?對應各個部分的開發(fā)工作主要包括哪些? 3.jsp有哪些內(nèi)置對象和動作?它們的作用分別是什么?
4、sql問答題
select * from table 和
select * from table where name like %% and addr like %% and(1_addr like %% or 2_addr like %% or 3_addr like %% or 4_addr like %%)的檢索結(jié)果為何不同?
5、sql問答題
表結(jié)構:
1、表名:g_cardapply 字段(字段名/類型/長度): g_applyno varchar 8;//申請單號(關鍵字)g_applydate bigint 8;//申請日期 g_state varchar 2;//申請狀態(tài)
2、表名:g_cardapplydetail 字段(字段名/類型/長度): g_applyno varchar 8;//申請單號(關鍵字)g_name varchar 30;//申請人姓名 g_idcard varchar 18;//申請人身份證號 g_state varchar 2;//申請狀態(tài)
其中,兩個表的關聯(lián)字段為申請單號。
題目:
1、查詢身份證號碼為***的申請日期
2、查詢同一個身份證號碼有兩條以上記錄的身份證號碼及記錄個數(shù)
3、將身份證號碼為***的記錄在兩個表中的申請狀態(tài)均改為07
4、刪除g_cardapplydetail表中所有姓李的記錄
華為java筆試題
一、單項選擇題
1.java是從()語言改進重新設計。a.a(chǎn)da b.c++ c.pasacal d.basic篇二:java程序員面試注意事項
一、回答問題的思路
先正面敘述一些基本的核心知識,然后描述一些特殊的東西,最后再來一些錦上添花的東西。要注意有些不是錦上添花,而是畫蛇添足的東西,不要隨便寫上。把答題像寫書一樣寫。我要回答一個新技術的問題大概思路和步驟是:我們想干什么,干這個遇到了什么問題,現(xiàn)在用什么方式來解決。其實我們講課也是這樣一個思路。
答題時,先答是什么,再答有什么作用和要注意什么(這部分最重要,展現(xiàn)自己的心得)。答案的層次分明,條理清楚都非常重要,從這些表面的東西也可以看出一個人的習慣、辦事風格、條理等。要講你做出答案的思路過程,或者說你記住答案的思想都寫下來。把答題想著是辯論賽。答題就是給別人講道理、擺事實。答題不局限于什么格式和形式,就是要將自己的學識展現(xiàn)出來!
另外,不要因為人家題目本來就模棱兩可,你就心里膽怯和沒底氣了,不敢回答了。你要大膽地指出對方題目很模糊和你的觀點,不要把面試官想得有多高,其實他和你就是差不多的,你想想,如果他把你招進去了,你們以后就是同事了,可不是差不多的嗎?
二、關于就業(yè)薪水
如果你是應屆生,那不能要高工資,好比大餅的故事,要拿高工資,就去中關村!少數(shù)人基礎確實很好,在校期間確實又做過一些項目,那仍然是可以要到相對高的工資的。
初級程序員薪水:2000-4500 中級程序員薪水:4000-7000 高級程序員薪水:7000以上
公司招聘程序員更看重的要用到的編碼技術、而不是那些業(yè)務不太相關的所謂項目經(jīng)歷:
三、公司想招什么樣的人
對于一些公司接到了一些項目,想招聘一些初中級的程序員過來幫助寫代碼,完成這個項目,你更看重的是他的專業(yè)技術功底,還是以前做過幾個項目的經(jīng)歷呢?我們先排除掉那些編碼技術功底好,又正好做過相似項目的情況,實際上,這種魚和熊掌兼得的情況并不常見。其實公司很清楚,只要招聘進來的人技術真的很明白,那他什么項目都可以做出來,公司招人不是讓你去重復做你以前的項目,而是做一個新項目,業(yè)務方面,你只要進了項目團隊,自然就能掌握。所以,大多數(shù)招聘單位在招聘那些編碼級別的程序員時也沒指望能招聘到做過類似項目的人,也不會刻意去找做過類似項目的人,用人單位也不是想把你招進,然后把你以前做過的項目重做一遍,所以,用人單位更看重招進來的人對要用到的編碼技術的功底到底怎樣,技術扎實不扎實,項目則只要跟著開發(fā)團隊走,自然就沒問題。除非是一些非常專業(yè)的行業(yè),要招聘特別高級的開發(fā)人員和系統(tǒng)分析師,招聘單位才特別注重他的項目經(jīng)驗和行業(yè)經(jīng)驗,要去找到行業(yè)高手,公司才關心項目和與你聊項目的細節(jié),這樣的人通常都不是通過常規(guī)招聘渠道去招聘進來的,而是通過各種手段挖過來的,這情況不再我今天要討論的范圍中。
四、公司面試會問什么,.技術學得明白不明白,人家?guī)讉€問題就把你的深淺問出來了,只要問一些具體的技術點,就很容易看出你是真懂還是假懂,很容看出你的技術深度和實力,所以,技術是來不得半點虛假的,必須扎扎實實。
由于項目的種類繁多,涉及到現(xiàn)實生活中的各行各業(yè),什么五花八門的業(yè)務都有,例如,酒店房間預定管理,公司車輛調(diào)度管理,學校課程教室管理,超市進銷存管理,知識內(nèi)容管理,等等……成千上萬等等,但是,不管是什么項目,采用的無非都是我們學習的那些目前流行和常用的技術。技術好、經(jīng)驗豐富,則項目做出來的效率高些,程序更穩(wěn)定和更容易維護些;技術差點,碰碰磕磕最后也能把項目做出來,無非是做的周期長點、返工的次數(shù)多點,程序代碼寫得差些,用的技術笨拙點。如果一個人不是完完全全做過某個項目,他是不太關心該項目的業(yè)務的,對其中的一些具體細節(jié)更是一竅不知,(如果我招你來做圖書管理,你項目經(jīng)歷說你做過汽車調(diào)度,那我能問你汽車調(diào)度具體怎么回事嗎?不會,所以,你很容易蒙混過去的)而一個程序員的整個職業(yè)生涯中能實實在在和完完整整做出來的項目沒幾個,更別說在多個不同行業(yè)的項目了,有的程序員更是一輩子都只是在做某一個行業(yè)的項目,結(jié)果他就成了這個行業(yè)的專家(專門干一件事的家伙)。所以,技術面試官通常沒正好親身經(jīng)歷過你簡歷寫的那些項目,他不可能去問你寫的那些項目的具體細節(jié),而是只能泛泛地問你這個項目是多少人做的,做了多長時間,開發(fā)的過程,你在做項目的過程中有什么心得和收獲,用的什么技術等面上的問題,所以,簡歷上的項目經(jīng)歷可以含有很多水分,很容易作假,技術面試官也無法在項目上甄別你的真?zhèn)巍?/p>
五、簡歷怎么寫
簡歷該怎么寫:精通哪些技術,有一些什么項目經(jīng)歷
六、怎樣達到簡歷上的標準(培訓中心教項目的目的)教項目是為了鞏固和靈活整合運用技術,增強學習的趣味性,熟悉做項目的流程,或得一些專業(yè)課程中無法獲得的特有項目經(jīng)驗,增強自己面試的信心。講的項目應該真實可靠才有價值,否則,表面上是項目,實際上還是知識點的整合,對鞏固技術點和增強學習的趣味性,但無法獲得實際的項目經(jīng)驗。
第三篇:java程序員面試必讀
Java程序員,面試必讀
☆★☆★快來!10月25日讀者見面會☆★☆★
清華大學出版社《Java程序員,上班那點事兒》作者:鐘聲 章節(jié):1.2.2:
面試是一個“簡單”而又“復雜”的事情,正因為它具有“簡單”和“復雜”的雙重性質(zhì),才使我們對這個問題不敢掉以輕心。介紹如何面試,有時候甚至可以寫一本書,而有時候,你什么都不準備卻可以面試成功。
因為,面試的成功與否完全取決于主考官,因此,這門學問的主要科目就是研究主考官的招聘心理。
我們研究好主考官的招聘心理,自然就可以做到“知己知彼”了。
本小節(jié)只是說說面試的“心理戰(zhàn)”,而想真正的能夠?qū)Υ鹑缌?,需要的是“真功夫”,要想具備“真功夫”還是需要真正的技術水平作為前提的,本小節(jié)的內(nèi)容只是給那些已經(jīng)具備相應技術水平的應聘者提供一定的應聘技巧而已,以避免沒有把自己的“真功夫”完全展示出來從而喪失工作機會。
面試前對自己的心理暗示:
面試并不是考試,只是和未來的同事聊聊天。
“心理戰(zhàn)”對象,可能出現(xiàn)的主考官如下幾類:
人物1,人力資源部主管(HR)
人物2,你未來的主管
人物3,你未來主管的主管
我們分別來分析遇到不同類型的主考官的不同情況。
人物1:人力資源部主管(HR)
“人物1”的出現(xiàn)往往是進行該職位的初審,給出一個概觀定論,如果合格將會提交給“人物2”?!叭宋?”他們所要進行的是對人的心理和基本技能方面的一個判斷。
不過,也有一些公司,首次面試仍然是由業(yè)務主管來進行,然后再將初審合格的人交給人力部門來復試,如果,是這種情況,你應該就算90%入職成功了,因為,這個復試往往是走個形式,看看此人有沒有被主管忽略的大問題,如果沒有,基本就差不多了。
那么,我們僅僅以第一種情況為例,看看“人物1”大多提出的是哪些問題。
常見提問1:請你自我介紹一下
這個問題,是人力部主考官必問的問題,這個問題的提問并不是真的想了解你的個人情況,因為,你的情況基本上在簡歷上都寫著呢。他提出這個問題的主要目的是來考察你的語言表達能力,和你在表達過程中的一些細節(jié)表現(xiàn)。
所以,我們應該怎么回答呢?
看看如下對話:
HR:“請你自我介紹一下”
A君:“您看簡歷吧,基本上我都寫在簡歷上了?!?/p>
HR:汗?
HR:“請你自我介紹一下”
B君:“我叫XXX,年齡24,性別男,籍貫??”
HR:倒?
HR:“請你自我介紹一下”
C君:“這話從何說起呢?話說10年前??”
HR:暈?
首先,不要認為主考官沒有認真的看你的簡歷,沒有看你的簡歷就讓你來面試,是在浪費他自己的時間,所以絕對是首先認為簡歷比較合適,才約你來的。
第二,自我介紹并不是讓你重復一下你簡歷上的所有內(nèi)容,那些內(nèi)容簡歷上都有,主考官主要是想聽聽你如何表達和語言的邏輯能力。
第三,這個表達不要滔滔不絕,要有張有弛,有收有放,主要將自己的想說的優(yōu)勢部分分別道來,能夠通過你的介紹讓人感覺到你的“親和力”為佳。
“語言表達能力”并非我們?nèi)粘Kf的“能侃”或者“口才”,這是片面的理解,在面試過程中,我們要展現(xiàn)的“語言表達能力”是指,“語言親和力”,能夠讓人感受到你的“溝通”能力。
回答范例:
您好!我來自XXX大學,是應屆畢業(yè)生,所學專業(yè)是計算機應用技術,我在校期間參加多項課余工作,參與了多個應用系統(tǒng)的開發(fā)與設計,熟練掌握Java開發(fā)工具和應用系統(tǒng)的各種開發(fā)方法。在學習與工作期間,總結(jié)與實踐了各種技術實現(xiàn)手段,有了一些小的積累。
近期已經(jīng)畢業(yè),看到您公司的招聘信息,感覺自己的技術與能力非常合適,就投遞了簡歷。希望能過了您這關,呵呵??(注:最后的微笑最好不要太牽強,目的是緩和氣氛)
大家看到了,這個回答范例的自我介紹非常簡練,但是,什么也沒有落下。既實事求是的說了自己是應屆畢業(yè)生,又說明了自己雖然是應屆畢業(yè)生,但是參加了很多的課余工作,并且具有實際的項目開發(fā)經(jīng)驗,而且有了一些小的積累。
既說了自己的對這份工作和自己能力之間的考量,又表達了自己對主考官的期望。
意思表達時不卑不亢,言簡意賅,讓人聽起來就感覺很舒服。
這時候你的目的就達到了,展現(xiàn)出自己的“語言表達能力”和“語言親和力”,同時又能夠讓人感受到你的“溝通”能力。
常見提問2:你最大的優(yōu)點是什么?
這個問題如果是HR問,則最好回答了。
回答這個問題的關鍵是“圍繞自己的技術特長”展開話題,為什么這樣?
因為,往往HR都不懂技術,圍繞技術說自己的特長很容易給他說暈(當然,個別懂技術的HR除外)。這里要注意的是,在說技術問題的時候,不要讓HR感覺自己什么都不懂,要注意說話的節(jié)奏,不要太快,不要太驕傲。
常見提問3:你最大的缺點是什么?
這個問題是HR的殺手锏,可以說這是HR的狠招,這個問題最難回答,一般應聘者都本著“揚長避短”的心態(tài)去面試,冷不防冒出這么一個問題,還真是挺棘手的。
需要清楚HR問這個問題的目的,其目的仍然不是要真的需要知道你的缺點是什么,還是看看你的表達能力,尤其是需要考察應聘者面對危機的時候的處理能力。所以,我們不要用下列方式作答:
1、說出自己的真實缺點,尤其是在前面談話中沒有暴露出來的缺點
2、認為說說某些大眾化的缺點即可,認為說一兩個無妨
3、說自己沒有缺點,強調(diào)自己比較完美
總之,HR心里想的是:需要了解他面前的這個人在面對困難的時候,是如何處理問題的,從處理危機的方法來判斷此人的處理事情的靈活性。當然,如果此人自己暴露出自己的缺點當然更好,省得需要去想辦法問更多的問題去發(fā)現(xiàn)了。
所以,在回答這個問題的時候,要看起來“真誠”、“坦白”,同時,說出來的并非自己的缺點,而是最好在別人看來是優(yōu)點的那些方面。
這個問題問的概率很大,通常如果求職者說自己小心眼、愛忌妒人、非常懶、脾氣大、工作效率低,肯定不會錄用你。HR喜歡求職者從自己的優(yōu)點說起,中間加一些小缺點,最后再把問題轉(zhuǎn)回到優(yōu)點上,目的還是突出自己優(yōu)點的部分。
HR喜歡聰明的求職者。
這一點比較難掌握,我們也給出范例:
回答范例:
呵呵,這個問題好難回答??!我想想??(親和力表現(xiàn),也緩解了自己的緊張情緒)
我的缺點是,比較執(zhí)著,比如在技術方面比較愛鉆研,有的時候會為一個技術問題加班到深夜。還有就是,工作比較按部就班,總是按照主管的要求完成任務。另外的缺點是,總在自己的工作范圍內(nèi)有創(chuàng)新意識,并沒有擴展給其他同事。這些問題我想我可以進入公司以后以最短的時間來解決,我的學習能力很強,我相信可以很快融入公司的企業(yè)文化,進入工作狀態(tài)。
嗯??,我想就這些吧。
這個回答范例開頭第一句話就讓人覺得很自然,因為這個求職者所說的話恰恰表達了一般人聽到這個問題后的心理狀態(tài),還有你一定會有一個思考的時間,因為,誰也不會立刻說出自己的缺點。
后面說出的幾個缺點都是一環(huán)套一環(huán)的,說了自己“比較執(zhí)著”,但又說自己其實是“比較愛鉆研”,說自己總是“按部就班”,但又補充了其實那是“按照主管的要求完成任務”,這時候,如果用人單位覺得,此人是不是沒有“創(chuàng)新思維”的時候,馬上就補充道“在自己的范圍內(nèi)有創(chuàng)新意識”,至于“沒有擴展給其他同事”這件事,其實無關緊要,干脆就賣給HR吧。
以上回答確實賣弄了些“技巧”,相信HR也一定能看的出來,但是,即使看出來了也無妨,HR也會心領神會,知道你是一個比較善于溝通并且善于表達的人。
人物2:你未來的主管
當見到未來主管的時候,往往是應聘者已經(jīng)過了HR那一關,或者應聘者已經(jīng)過了筆試的那一關,因此見到這位人物意味著距離成功已經(jīng)向前進了一步。
“人物2”的面試也有他的目的,他是和你在日常工作中接觸最多的人,作為你的直接上司,他需要在工作中經(jīng)常給你分配任務,他需要對他的主管負責,因此,他招聘的這個人選必須是可以幫助他完成他整個Team的目標的人。
往往那個吸引你來面試的“招聘啟示”就是這個人物所撰寫的,因此,其實在你和他見面以前,早已經(jīng)通過“招聘啟示”和他有過交往了。因此,從“招聘啟示”中就可以初顯這位主管的端倪。
注意,主管同志并不是人事領域的高手,不會用各種語言技巧去發(fā)掘你身上的缺點或者優(yōu)點,往往問題都是實打?qū)嵉模蛘弑容^一針見血的,而且,更偏重于日常工作。
那么,我們下面和他過過招。
常見提問1:請你自我介紹一下
這個問題,HR也問過了,到他那里有可能還會問,主管問這個問題和HR雖然問的問題一致,但是,其目的并不是完全相同的。
他不僅僅想考察一下你的表達能力,同時還想考察一下你思路的清晰程度。
我們在回答他的問題前,一定要想清楚一件事:他是該技術領域的高手,就是我們“程序員修煉三境界”中描述的“第二層境界”的那個人物,如果還想更清楚的了解這個人物,可以去重新看看前面的那個章節(jié)。
這個自我介紹最好說的較為簡潔,不要過分炫耀自己的技術如何如何強,免得引起這位主管的興趣,引起他的技術興趣沒有什么好處,只會帶來更多的技術問題的發(fā)問。
常見提問2:你最引以為自豪的項目是什么?
他問這個問題的意圖是想考察你的成長路徑和編程習慣,因為,最讓你自豪的項目往往是你成長最快的項目,那個成長最快的項目往往會給你今后的編程習慣留下很多痕跡。
所以,通過你對那個引以為豪的項目的描述,有經(jīng)驗的他會很快鎖定你技術成長中的缺陷和閃光點,從而判斷是否能夠“為我所用”。
你最好拿出一個自己最擅長技術的那個項目進行介紹,這個項目最好能夠比較貼近招聘要求的那些指標。如果,沒有做過什么有規(guī)模的正規(guī)項目,你就拿些自己非常擅長或者有創(chuàng)意的開發(fā)作品來說。這樣做的好處是,他聽完你的介紹后,會接下來進行提問,他所有發(fā)問,你都成竹在胸了。
切忌拿一個別人的項目,或者自己參與很少的項目來介紹,如果這樣的話,一旦他深入的詢問這個項目的問題,很可能你會所答非所問,反而造成更嚴重的影響。你大可以和他大談特談你在那個項目中獲得的經(jīng)驗,那會引起此君的共鳴,有可能的話,說出一些你自己的小技巧,他會很高興。
常見提問3:如果我錄用你,你將怎樣開展工作
他問這個問題的意圖是,希望看看你對這個職位工作展開的一些設想,仍然是“實打?qū)崱睆墓ぷ鞒霭l(fā)來提問的。所以,你在回答這個問題的時候也要“實打?qū)崱?,切忌虛無縹緲的一通“高、大、全”。
一般要列出自己的入職之后的工作計劃,而這些計劃需要詳盡,同時需要體現(xiàn)出你工作的嚴謹性,也不能是想當然的說出一些與工作無關的計劃,這都有可能適得其反。
回答范例:
針對這個如何展開工作的問題,我目前僅僅是對咱們公司的大體情況有一個了解,因此,對這個職位的工作性質(zhì)僅僅是自己的一個理解。
所以呢,我也不知道是否合適,我只能說一個大概。
作為這個職位而言,我想我首先要對本公司的主營業(yè)務要有一個相當?shù)牧私猓私馕覀児镜臉I(yè)務組成部分、業(yè)務的發(fā)展方向、我們面向的客戶性質(zhì)等等。
第二,我要了解所屬部門在公司中的地位,以及部門的工作目標,從而確定自身的工作努力方向。
第三,了解我參與項目的開發(fā)方式,架構方式,緊密配合領導工作,盡快投入具體的開發(fā)工作。
這就是我開展工作的計劃。
從大到小的方式進行了解,這么說可以讓領導知道你不是一個盲目工作的人,而是一個按部就班,穩(wěn)扎穩(wěn)打的人,使人覺得和你合作很踏實。另外,一定要強調(diào)所屬項目或部門的目標,因為這關系到面試你的主管的切身利益。最后,強調(diào)“盡快”投入開發(fā)工作,這樣,領導就放心了,你不是一個“只了解,不工作”的人。
面對主管唯一要盡量表現(xiàn)的就是,你看起來非常像一個“工具”,入職后馬上就可以發(fā)揮作用。
人物3:主管的主管
遇到“主管的主管”的時,往往已經(jīng)是復試,這說明基本上已經(jīng)是最后一關了。但要注意,這個最后一關是非常關鍵的一“關”。因為,往往如果你未來的主管在公司中某個專業(yè)夠權威的話,他的主管一般不會管招聘的事情。因此,你看到這位“老大”的原因,多半是你未來的那位主管的專業(yè)地位還沒有“穩(wěn)定”。
最后的“搏殺”
過程大概是這樣的,一般會將兩個或三個人提交給“老大”,讓“老大”定奪,去選擇其中的一個人,因此,這個階段是一個最后的“搏殺”關鍵階段。老大”關注的問題:成本+人員素質(zhì)
所以,我們在和“老大”過招的時候,一定要注意自己的言行,切忌不要穿“奇裝異服”,或者男士留有個性的頭發(fā)或胡子,總之一定要讓人看起來特別的“平?!保m然不是“西裝革履”但也要“衣冠整潔”。
因為,老板們最不喜歡“個性”員工,而最喜歡的是“優(yōu)秀”的普通員工。
清華大學出版社《Java程序員,上班那點事兒》作者:鐘聲 章節(jié):1.2.2。
本文來自CSDN博客,轉(zhuǎn)載請http://blog.csdn.net/useway/archive/2009/08/02/4402385.aspx
標
明
出
處
:
第四篇:java程序員面試要點
第一,談談final, finally, finalize的區(qū)別。
final 用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。finally是異常處理語句結(jié)構的一部分,表示總是執(zhí)行。finalize是 Object類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉文件等。
第二,Anonymous Inner Class(匿名內(nèi)部類)是否可以extends(繼承)其它類,是否可以implements(實現(xiàn))interface(接口)?
可以繼承其他類或完成其他接口,在swing編程中常用此方式。
第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統(tǒng))。
Static Nested Class是被聲明為靜態(tài)(static)的內(nèi)部類,它可以不依賴于外部類實例被實例化。而通常的內(nèi)部類需要在外部類實例化后才能實例化。
第四,&和&&的區(qū)別。
&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and).第五,HashMap和Hashtable的區(qū)別。
HashMap是Hashtable的輕量級實現(xiàn)(非線程安全的實現(xiàn)),他們都完成了Map接口,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上可能高于Hashtable.第六,Collection 和 Collections的區(qū)別。
Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.Collections是針對集合類的一個幫助類,他提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化等操作。
第七,什么時候用assert。
1.4新增關鍵字(語法),用于測試boolean表達式狀態(tài),可用于調(diào)試程序。使用方法 assert,表示如果表達式為真(true),則下面的語句執(zhí)行,否則拋出AssertionError。另外的使用方式assert < boolean表達式>:,表示如果表達式為真,后面的表達式忽略,否則后面表達式的值用于AssertionError的構建參數(shù)。注意編譯時要增加-source 1.4 參數(shù),否則報錯。]運行時要增加 –ea參數(shù),否則assert行被忽略
第八,GC是什么? 為什么要有GC?
GC是垃圾收集的意思(Gabage Collection),內(nèi)存處理是編程人員容易出現(xiàn)問題的地方,忘記或者錯誤的內(nèi)存回收會導致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能可以自動監(jiān)測對象是否超過作用域從而達到自動回收內(nèi)存的目的,Java語言沒有提供釋放已分配內(nèi)存的顯示操作方法。
第九,String s = new String(“xyz”);創(chuàng)建了幾個String Object?
兩個
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12Math.round(-11.5)==-11round方法返回與參數(shù)最接近的長整數(shù),參數(shù)加1/2后求其floor.第十一,short s1 = 1;s1 = s1 + 1;有什么錯? short s1 = 1;s1 += 1;有什么錯?
short s1 = 1;s1 = s1 + 1;(s1+1運算結(jié)果是int型,需要強制轉(zhuǎn)換類型)short s1 = 1;s1 += 1;(可以正確編譯)
第十二,sleep()和 wait()有什么區(qū)別?
sleep是線程類(Thread)的方法,導致此線程暫停執(zhí)行指定時間,給執(zhí)行機會給其他線程,但是監(jiān)控狀態(tài)依然保持,到時后會自動恢復。調(diào)用 sleep不會釋放對象鎖。wait是Object類的方法,對此對象調(diào)用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法(或notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態(tài)。
第十三,Java有沒有goto?
沒有
很十三的問題,如果哪個面試的問到這個問題,我勸你還是別進這家公司。
第十四,數(shù)組有沒有l(wèi)ength()這個方法? String有沒有l(wèi)ength()這個方法?
數(shù)組沒有l(wèi)ength()這個方法,有l(wèi)ength的屬性。
String有有l(wèi)ength()這個方法。
第十五,Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?
方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫(Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被“屏蔽”了。如果在一個類中定義了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。
第十六,Set里的元素是不能重復的,那么用什么方法來區(qū)分重復與否呢? 是用==還是equals()? 它們有何區(qū)別?
Set里的元素是不能重復的,那么用iterator()方法來區(qū)分重復與否。equals()是判讀兩個Set是否相等。
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的內(nèi)容和類型相配的話,返回真值。
第十七,給我一個你最常見到的runtime exception。
參考如下:
ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,RasterFormatException,SecurityException,SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException
第十八,error和exception有什么區(qū)別?
error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內(nèi)存溢出。不可能指望程序能處理這樣的情況。
exception 表示一種設計或?qū)崿F(xiàn)問題。也就是說,它表示如果程序運行正常,從不會發(fā)生的情況。
第十九,List, Set, Map是否繼承自Collection接口?
List,Set是
Map不是
第二十,abstract class和interface有什么區(qū)別?
聲明方法的存在而不去實現(xiàn)它的類被叫做抽象類(abstract class),它用于要創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實現(xiàn)該類的情況。不能創(chuàng)建abstract 類的實例。然而可以創(chuàng)建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構造函數(shù)或抽象靜態(tài)方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現(xiàn),否則它們也是抽象類為。取而代之,在子類中實現(xiàn)該方法。知道其行為的其它類可以在類中實現(xiàn)這些方法。
接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個 有程序體。接口只可以定義static final成員變量。接口的實現(xiàn)與子類相似,除了該實現(xiàn)類不能從接口定義中繼承行為。當類實現(xiàn)特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現(xiàn)了該接口的類的任何對象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof 運算符可以用來決定某對象的類是否實現(xiàn)了接口。
第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
都不能
第二十二,接口是否可繼承接口? 抽象類是否可實現(xiàn)(implements)接口? 抽象類是否可繼承實體類(concrete class)?
接口可以繼承接口。抽象類可以實現(xiàn)(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數(shù)。
第二十三,啟動一個線程是用run()還是start()?
啟動一個線程是調(diào)用start()方法,使線程所代表的虛擬處理機處于可運行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會立即運行。run()方法可以產(chǎn)生必須退出的標志來停止一個線程。
第二十四,構造器Constructor是否可被override?
構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。
第二十五,是否可以繼承String類?
String類是final類故不可以繼承。
第二十六,當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?
不能,一個對象的一個synchronized方法只能由一個線程訪問。
第二十七,try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后?
會執(zhí)行,在return前執(zhí)行。
第二十八,編程題: 用最有效率的方法算出2乘以8等於幾?
有C背景的程序員特別喜歡問這種問題。< < 3
第二十九,兩個對象值相同(x.equals(y)== true),但卻可有不同的hash code,這句話對不對?
不對,有相同的hash code。
第三十,當一個對象被當作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?
是值傳遞。Java 編程語言只由值傳遞參數(shù)。當一個對象實例作為一個參數(shù)被傳遞到方法中時,參數(shù)的值就是對該對象的引用。對象的內(nèi)容可以在被調(diào)用的方法中改變,但對象的引用是永遠不會改變的。
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一個整數(shù)表達式。因此傳遞給 switch 和 case 語句的參數(shù)應該是 int、short、char 或者 byte。long,string 都不能作用于swtich。
第三十二,編程題: 寫一個Singleton出來。
Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。
一般Singleton模式通常有幾種種形式:
第一種形式: 定義一個類,它的構造函數(shù)為private的,它有一個static的private的該類變量,在類初始化時實例話,通過一個public的getInstance方法獲取對它的引用,繼而調(diào)用其中的方法。
public class Singleton {
private Singleton(){}
//在自己內(nèi)部定義自己一個實例,是不是很奇怪?
//注意這是private 只供內(nèi)部調(diào)用
private static Singleton instance = new Singleton();
//這里提供了一個供外部訪問本class的靜態(tài)方法,可以直接訪問
public static Singleton getInstance(){
return instance;
} }
第二種形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance(){
//這個方法比上面有所改進,不用每次都進行生成對象,只是第一次
//使用時生成實例,提高了效率!
if(instance==null)
instance=new Singleton();
return instance;} }
其他形式:
定義一個類,它的構造函數(shù)為private的,所有方法為static的。
一般認為第一種形式要更加安全些
其中也存在一些問題,下面補充一下.希望大家繼續(xù)補充
1.最好介紹一下final修飾變量的情形(分開說明基本類型變量和引用類型變量)。
2.不知道如何描述比較好,匿名內(nèi)部類本身是一個實現(xiàn)了特定接口或繼承了其他類的類。
3.非靜態(tài)類不能有static的方法。參考一下java collections framework的代碼,還能說出很多東西來。
4.&既是位運算符,也是邏輯操作符。
&和&&都是邏輯運算符,它們的區(qū)別是,&&進行短路計算。
6.可以補充一下,參考文檔。
11.說一下具體的原因可能更好。
13.java有goto這個keyword,不過還沒有使用。
15.overload和多態(tài)沒有任何關系。多態(tài)是面向?qū)ο蟮幕咎卣?,是和繼承、overriding相關的。原來以為把overload當作多態(tài)的一種是從C++來的,后來翻了基本c++的經(jīng)典的書,也強調(diào)多態(tài)只是和繼承,虛函數(shù),overriding相關,所以不知道這個錯誤思想從哪來的了.16.public interface Set
看文檔就是了.22.“抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數(shù)?!笔裁匆馑?誰規(guī)定的?
27.這個比較復雜,例如
public class Main {
public static void main(String[] args){
System.out.println(test());}
public static boolean test(){
boolean b = false;
try {
return b = 4 > 3;
} finally {
System.out.println(b);
//return false;} } }
這個例子中可以看出,return后面的表達式已經(jīng)計算了,感覺return語句這里被掛起了,如果finally中沒有return,這個return就返回.如果finally也有return,那么就是finally中的return返回了.29.碰上不守規(guī)矩的程序員誰也沒辦法.31.還有枚舉呢
32.注釋有問題.
第五篇:Java程序員面試
Java程序員面試三十二問
第一,談談final,finally,finalize的區(qū)別。
Fanal 修飾符 可以修飾類,屬性和方法。被修飾的類不可以派生子類,不能被作為父類被繼承。它修飾的屬性和方法必須在聲明的時候給定初值,以后不能修改。
Fanaly 在捕獲異常的時候最后執(zhí)行的語句,可以不寫。
Fanalize 是Object類中定義的,所以所有的類都繼承了它,這個方法是垃圾收集器將對象從內(nèi)存中清除出去之前做必要的清理工作。
第二,Anonymous Inner Class(匿名內(nèi)部類)是否可以extends(繼承)其它類,是否可以implements(實現(xiàn))interface(接口)?
可以繼承其他類,也可以實現(xiàn)其他接口。匿名內(nèi)部類在swing中比較常見。
第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統(tǒng))。
靜態(tài)內(nèi)部類,普通的內(nèi)部類
靜態(tài)內(nèi)部類是不能直接調(diào)用外部的類,可以通過外部類的引用來調(diào)用
非靜態(tài)類inner class 可以自由的引用外部類的屬性和方法,但是它與一個實例綁定在了一起,不可以定義靜態(tài)的屬性、方法。
第四,&和&&的區(qū)別。
&和&&都是java中的邏輯運算符
&兩邊的表達式的結(jié)果都是true的,整個的運算結(jié)果才是true,只要有任意一個是false,其結(jié)果就是false的
&&是短路與,既第一個表達式是false 就不用判斷第二個表達式,結(jié)果就是false
第五,HashMap和Hashtable的區(qū)別。
它們實現(xiàn)了將key 映射到 value的對象,鍵和值都是對象,不能有重復的鍵,可以有重復的值
Hashtable是基于陳舊的Dictionary類的,HashMap是Map接口的一個實現(xiàn) HashMap可以定義null key 和null 的value,而HashTable不可以
HashMap是線程不安全的,而HashTable線程安全,所以HashMap的效率比HashTable的要高些
第六,Collection 和 Collections的區(qū)別。
Collection是所有集合的父接口。
List 和set是Collection的子接口
Collections是操作有關集合的工具類。
第七,什么時候用assert.斷言 Debug模式下才有效
第八,GC是什么? 為什么要有GC?
GC是垃圾收集器。程序員不用擔心內(nèi)存管理,因為垃圾收集器會自動進行管理。
第九,String s = new String(“xyz”);創(chuàng)建了幾個String Object?
2個,一個是引用對象s 還有字符串對象xyz
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
-11 第十一,short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
S1 =s1+1 會出錯,因為1默認為int型。相加會出錯。
S1+=1;雖然是一個意思,但是在jvm里面是不同的方法做的,是運算符重載,所以是不一樣的。
第十二,sleep()和 wait()有什么區(qū)別?
Sleep()是線程的休眠,方法里邊要有毫秒值。意思是過了多少毫秒后會執(zhí)行一次。不釋放系統(tǒng)資源
Wait()是線程的等待,必須喚醒notify才能夠執(zhí)行,不占用系統(tǒng)的資源
第十三,Java有沒有goto?
沒有,不過它是java語言中的保留字
第十四,數(shù)組有沒有l(wèi)ength()這個方法? String有沒有l(wèi)ength()這個方法?
數(shù)組中沒有l(wèi)ength()方法,有l(wèi)ength屬性。
String有l(wèi)ength()方法,字符串的長度。
第十五,Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?
Overload是重載 重載的方法名字必須相同,參數(shù)表不同,可以改變返回類型
Override 是重寫 重寫是子類繼承父類的虛方法重新定義參數(shù)表要相同,返回類型也要和父類相同。
Overloaded可以改變返回類型
第十六,Set里的元素是不能重復的,那么用什么方法來區(qū)分重復與否呢? 是用==還是equals()? 它們有何區(qū)別?
set里的元素是不能重復的,用iterator()方法來區(qū)分重復與否。
equals 方法(是String類從它的超類Object中繼承的)被用來檢測兩個對象是否相等,即兩個對象的內(nèi)容是否相等。
==用于比較引用和比較基本數(shù)據(jù)類型時具有不同的功能: 比較基本數(shù)據(jù)類型,如果兩個值相同,則結(jié)果為true
而在比較引用時,如果引用指向內(nèi)存中的同一對象,結(jié)果為true
第十八,error和exception有什么區(qū)別?
Error 是編輯時出現(xiàn)的錯誤,不能通過編譯,也就是不能生成.class的文件
Exception是異常,異常是可以避免和捕獲的,程序能夠通過編譯。第十九,List,Set,Map是否繼承自Collection接口?
List set
是繼承Collection 接口的。Map不是 第二十,abstract class和interface有什么區(qū)別?
abstract class是抽象類,可以定義普通方法,也可以定義只有方法名,沒有實現(xiàn)的方法。抽象類是被繼承的 interface是接口,所有的方法都是抽象方法。實現(xiàn)接口就是重寫接口里的所有方法。
第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
Abstract和method是不可以static的,因為抽象類是要被繼承的。
native是映射本地方法,不存在被子類繼承,所以也不能與abstract混用
抽象類沒有具體的實現(xiàn),覺得定義成synchronized是沒有必要的,修飾具體的方法
才有意義
第二十二,接口是否可繼承接口? 抽象類是否可實現(xiàn)(implements)接口? 抽象類是否可繼承實體類(concrete class)?
接口可以繼承接口,extends
抽象類可以實現(xiàn)接口。
抽象類是可以繼承實體類的,但實體類中要有明確的構造函數(shù)。第二十三,啟動一個線程是用run()還是start()?
啟動線程要是start()方法。
第二十四,構造器Constructor是否可被override?
構造器不能被重寫的,可以重載。第二十五,是否可以繼承String類?
不能,String是final的。
第二十六,當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?
如果其他的方法不是同步的,是可以進去的。
第二十七,try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后?
finally里的代碼會執(zhí)行,在return之前執(zhí)行
第二十八,編程題: 用最有效率的方法算出2乘以8等於幾?
2<<3 第十七,給我一個你最常見到的runtime exception.NullPointerException 空指針
ArrayIndexOutOfBoundException
數(shù)組下標越界
ClassCastException 造型異常 第二十九,兩個對象值相同(x.equals(y)== true),但卻可有不同的hash code,這句話對不對?
這是對的,equals方法是比較兩個值。而不是內(nèi)存地址。
第三十,當一個對象被當作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
第三十二,編程題: 寫一個Singleton出來。
Public class Singleton{ Private static Singleton s = new Singleton();Private Singleton(){ } Public static Singleton getInstance(){ Return s;}
}