java面試題 java面試題2018最佳答案 java面試注意事項(xiàng)
JAVA是什么?
JAVA是一種程序環(huán)境,也是一種編程語言,很多程序員學(xué)習(xí)的都是C或者C++,但是特殊行業(yè)以及很多機(jī)械行業(yè),包括筆者的服務(wù)器租用托管,IPMI都用的是JAVA環(huán)境,你想使用他們的東西,必須本地電腦安裝JAVA才可以運(yùn)行,那么JAVA這個(gè)行業(yè)前景怎么樣?
當(dāng)然JAVA沒有前幾年那么紅火,因?yàn)樵?010年之前,很多人使用的塞班手機(jī)還有普通手機(jī),運(yùn)行的軟件環(huán)境都是JAVA,現(xiàn)在很多手機(jī)都用安卓手機(jī)以及蘋果手機(jī),沒有了之前的JAVA,但是這個(gè)行業(yè)目前在很多行業(yè)都涉及,學(xué)習(xí)的人沒有普通軟件行業(yè)那么多人學(xué)習(xí),當(dāng)然就業(yè)崗位以及福利津貼都是不錯(cuò)的。很適合去面試。
那么筆者下面來談?wù)刯ava面試需要注意的事項(xiàng)。
1:首先是儀態(tài)儀表要好,還有要禮貌,第一印象大家都知道,這個(gè)非常重要,這個(gè)成功了,最少成功了一半,如果你這個(gè)人平時(shí)不善于收拾,那么去面試肯定要精心收拾下,哪怕你入職后邋遢點(diǎn),但是面試必須打扮的好好的。
2:面試不要擺架子,不能因?yàn)槟阒氨容^厲害,而不謙虛,在面試的時(shí)候最大的忌諱就是裝B,如果你很厲害,也裝裝作很謙虛的樣子和面試官乃至,測(cè)試你技術(shù)的主管聊天,畢竟這些人都是和你一起工作,他們不會(huì)喜歡一個(gè)平時(shí)很喜歡耀武揚(yáng)威的人一起工作。
3:在對(duì)待問題的時(shí)候,要誠懇,特別在設(shè)計(jì)行業(yè),前段時(shí)間才發(fā)生了,程序員和開發(fā)經(jīng)理打架,是因?yàn)槌绦騿T和開發(fā)經(jīng)理的想法不一致。畢竟你開發(fā)的程序是給普通老百姓使用,而不是自己使用,所以面試的時(shí)候最好給2分結(jié)論,一份自己的看法,一份普通人看法。
下面我們?cè)趤矸窒?018java面試題。
(1)對(duì)于字符串變量以及基本數(shù)據(jù)類型的包裝類型來說:“==”比較兩變量的引用是否相等,即變量在內(nèi)存的首地址是否相等?!癳quals”比較實(shí)體(內(nèi)存空間)的內(nèi)容是否相等,因?yàn)镾tring類中重新定義了equals方法,并且是用來比較其值得而不是內(nèi)存地址。注意:如果 StringBuffer s1=new StringBuffer(“a”); StringBuffer s2=new StringBuffer(“a”); s1.equals(s2);為false,因?yàn)镾tringBuffer類中沒有重新定義的equals方法,因此equals方法來自于Object類,而Object類的equals方法是用來比較地址的,所以為false。
(2)對(duì)于非字符串變量來說:“==”和“equals”的作用是相同的,都是用來比較對(duì)象在堆內(nèi)存中的首地址,即用來比較兩個(gè)引用變量是否指向同一個(gè)實(shí)體(內(nèi)存空間)。注意:(
1)如果是基本數(shù)據(jù)類型比較只能用“==”不能用“equals”。
(2)對(duì)于基本數(shù)據(jù)類型的包裝類型“==”比較的是實(shí)體的引用,“equals”比較的是實(shí)體的內(nèi)容。
3)是否可以繼承String類? String類是final類故不可以繼承。
4)構(gòu)造器Constructor是否可被override? 構(gòu)造器Constructor不能被繼承,因此不能被override(重寫),但可以被overload(重載)。
5)HashMap和Hashtable的區(qū)別。
1.HashMap是Hashtable的輕量級(jí)實(shí)現(xiàn),效率更高。
2.Hashtable是線程安全的,HashMap是非線程安全的,即前者中的方法有用synchronized修飾,后者沒有。
3.HashMap允許空(null)鍵值(key),而Hashtable不允許。
4.Hashtable繼承自Dictionary類,而HashMap是Java1.2引進(jìn)的Map interface的一個(gè)實(shí)現(xiàn)。
5.HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因?yàn)閏ontains方法容易讓人引起誤解。
6)GC是什么? 為什么要有GC? GC是垃圾收集的意思(Garbage 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)存的目的,避免內(nèi)存溢出造成的一系列問題。Java語言沒有提供釋放已分配內(nèi)存的顯示操作方法。
7)同步和異步有何異同,在什么情況下分別使用他們?舉例說明。
(1)同步(synchronized)和異步(asynchronized)是對(duì)于多線程(multi-threading)而言的 同步可防止并發(fā) 主要出于數(shù)據(jù)安全的考慮。對(duì)于線程中的共享數(shù)據(jù),必須進(jìn)行同步存取。
(2)異步允許并發(fā)。當(dāng)應(yīng)用程序
在對(duì)象上調(diào)用了一個(gè)需要花費(fèi)很長時(shí)間來執(zhí)行的方法,并且不希望讓程序等待方法的返回時(shí),就應(yīng)該使用異步編程。
8)String s = new String ("xyz"); 創(chuàng)建了幾個(gè)String Object ? 兩個(gè),堆區(qū)中一個(gè),常量池中一個(gè)。 String a="xyz"; 首先會(huì)到常量池中去查找,如果存在就不再分配,如果不存在就分配,常量池中的數(shù)據(jù) 是在編譯期賦值的,也就是生成class文件時(shí)就把它放到常量池里了。
9)簡述synchronized和java.util.concurrent.locks.Lock的異同 ? 主要相同點(diǎn):Lock能完成synchronized所實(shí)現(xiàn)的所有功能 主要不同點(diǎn):Lock有比synchronized更精確的線程語義和更好的性能。synchronized會(huì)自動(dòng)釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally從句中釋放。
10)多線程有幾種實(shí)現(xiàn)方法,都是什么? 同步有幾種實(shí)現(xiàn)方法,都是什么? 多線程有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable接口。 實(shí)現(xiàn)同步也有兩種,分別為使用同步方法和使用同步塊。同步方法就是在方法返回類型后面加上synchronized,如:public void synchronized add{},同步塊就是直接寫:synchronized(需要同步的對(duì)象){}
11)switch是否能作用在byte上? 是否能作用在long上? 是否能作用在String上? switch(expr1)中,expr1是一個(gè)整數(shù)表達(dá)式。因此傳遞給 switch 和 case 語句的參數(shù)應(yīng)該是 int、 short、 char 或者 byte。long, String 都不能作用于swtich。
1. String類為什么是final的。
2. HashMap的源碼,實(shí)現(xiàn)原理,底層結(jié)構(gòu)。
3. 說說你知道的幾個(gè)Java集合類:list、set、queue、map實(shí)現(xiàn)類咯。。。
4. 描述一下ArrayList和LinkedList各自實(shí)現(xiàn)和區(qū)別
5. Java中的隊(duì)列都有哪些,有什么區(qū)別。
6. 反射中,Class.forName和classloader的區(qū)別
7. Java7、Java8的新特性(baidu問的,好BT)
8. Java數(shù)組和鏈表兩種結(jié)構(gòu)的操作效率,在哪些情況下(從開頭開始,從結(jié)尾開始,從中間開始),哪些操作(插入,查找,刪除)的效率高
9. Java內(nèi)存泄露的問題調(diào)查定位:jmap,jstack的使用等等
10. string、stringbuilder、stringbuffer區(qū)別
11. hashtable和hashmap的區(qū)別
13 .異常的結(jié)構(gòu),運(yùn)行時(shí)異常和非運(yùn)行時(shí)異常,各舉個(gè)例子
14. String a= “abc” String b = “abc” String c = new String(“abc”) String d = “ab” + “c” .他們之間用 == 比較的結(jié)果
15. String 類的常用方法
16. Java 的引用類型有哪幾種
17. 抽象類和接口的區(qū)別
18. java的基礎(chǔ)類型和字節(jié)大小。
19. Hashtable,HashMap,ConcurrentHashMap 底層實(shí)現(xiàn)原理與線程安全問題(建議熟悉 jdk 源碼,才能從容應(yīng)答)
20. 如果不讓你用Java Jdk提供的工具,你自己實(shí)現(xiàn)一個(gè)Map,你怎么做。說了好久,說了HashMap源代碼,如果我做,就會(huì)借鑒HashMap的原理,說了一通HashMap實(shí)現(xiàn)
21. Hash沖突怎么辦?哪些解決散列沖突的方法?
22. HashMap沖突很厲害,最差性能,你會(huì)怎么解決?從O(n)提升到log(n)咯,用二叉排序樹的思路說了一通
23. rehash
0 Comments.