java程序员面试技术_java程序员面试应该具备的一些基本技能
這里列舉一些Java程序員面試應(yīng)該要具備的一些基本技能,僅當(dāng)參考。
1.基本語(yǔ)法
包括static、final、transient等關(guān)鍵字的作用,foreach循環(huán)的原理等等。越簡(jiǎn)單的問(wèn)題越能看出一個(gè)人的水平,別人對(duì)你技術(shù)的考量絕大多數(shù)都是以深度優(yōu)先、廣度次之為標(biāo)準(zhǔn)的,切記。
2.集合
非常重要,也是必問(wèn)的內(nèi)容。基本上就是List、Map、Set,問(wèn)的是各種實(shí)現(xiàn)類的底層實(shí)現(xiàn)原理,實(shí)現(xiàn)類的優(yōu)缺點(diǎn)。集合要掌握的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet的實(shí)現(xiàn)原理,能流利作答,當(dāng)然能掌握CopyOnWrite容器和Queue是再好不過(guò)的了。
3.設(shè)計(jì)模式
面試中關(guān)于設(shè)計(jì)模式的問(wèn)答主要是三個(gè)方向:你的項(xiàng)目中用到了哪些設(shè)計(jì)模式,如何使用;知道常用設(shè)計(jì)模式的優(yōu)缺點(diǎn);能畫出常用設(shè)計(jì)模式的UML圖。
4.多線程
這也是必問(wèn)的一塊了。問(wèn)得深入一些比如說(shuō)Thread和Runnable的區(qū)別和聯(lián)系、多次start一個(gè)線程會(huì)怎么樣、線程有哪些狀態(tài)。當(dāng)然這只是最基本的,出乎意料地,幾次面試幾乎都被同時(shí)問(wèn)到了一個(gè)問(wèn)題,問(wèn)法不盡相同,總結(jié)起來(lái)是這么一個(gè)意思:
假如有Thread1、Thread2、Thread3、Thread4四條線程分別統(tǒng)計(jì)C、D、E、F四個(gè)盤的大小,所有線程都統(tǒng)計(jì)完畢交給Thread5線程去做匯總,應(yīng)當(dāng)如何實(shí)現(xiàn)?你對(duì)這個(gè)問(wèn)題是否有答案呢?不難,java.util.concurrent下就有現(xiàn)成的類可以使用。
另外,線程池也是比較常問(wèn)的一塊,常用的線程池有幾種?這幾種線程池之間有什么區(qū)別和聯(lián)系?線程池的實(shí)現(xiàn)原理是怎么樣的?實(shí)際一些的,會(huì)給你一些具體的場(chǎng)景,讓你回答這種場(chǎng)景該使用什么樣的線程池比較合適。
最后,雖然這次面試問(wèn)得不多,但是多線程同步、鎖這塊也是重點(diǎn)。synchronized和ReentrantLock的區(qū)別、synchronized鎖普通方法和鎖靜態(tài)方法、死鎖的原理及排查方法等等...
5.框架
一般來(lái)說(shuō)會(huì)問(wèn)你一下你們項(xiàng)目中使用的框架,然后給你一些場(chǎng)景問(wèn)你用框架怎么做,比如我想要在spring初始化bean的時(shí)候做一些事情該怎么做、想要在bean銷毀的時(shí)候做一些事情該怎么做、MyBatis中$和#的區(qū)別等等,這些都比較實(shí)際了,平時(shí)積累得好、有多學(xué)習(xí)框架的使用細(xì)節(jié)自然都不成問(wèn)題。
6.數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)十有八九也都會(huì)問(wèn)到。一些基本的像union和union all的區(qū)別、left join、幾種索引及其區(qū)別就不談了,比較重要的就是數(shù)據(jù)庫(kù)性能的優(yōu)化,如果對(duì)于數(shù)據(jù)庫(kù)的性能優(yōu)化一竅不通,那么有時(shí)間,還是建議你在面試前花一兩天專門把SQL基礎(chǔ)和SQL優(yōu)化的內(nèi)容準(zhǔn)備一下。
7.數(shù)據(jù)結(jié)構(gòu)和算法分析
數(shù)據(jù)結(jié)構(gòu)和算法分析,對(duì)于一名程序員來(lái)說(shuō),會(huì)比不會(huì)好而且在工作中絕對(duì)能派上用場(chǎng)。數(shù)組、鏈表是基礎(chǔ),棧和隊(duì)列深入一些但也不難,樹挺重要的,比較重要的樹AVL樹、紅黑樹,可以不了解它們的具體實(shí)現(xiàn),但是要知道什么是二叉查找樹、什么是平衡樹,AVL樹和紅黑樹的區(qū)別。
8.Java虛擬機(jī)
談?wù)凧ava虛擬機(jī)中比較重要的內(nèi)容:Java虛擬機(jī)的內(nèi)存布局、GC算法及幾種垃圾收集器、類加載機(jī)制,也就是雙親委派模型、Java內(nèi)存模型、happens-before規(guī)則、volatile關(guān)鍵字使用規(guī)則。也許面試無(wú)用,但在走向大牛的路上,不可不會(huì)。
9.Web方面的一些問(wèn)題
現(xiàn)在的Java主要面向Web端,因此Web的一些問(wèn)題也是必問(wèn)的。我碰到過(guò)問(wèn)得最多的兩個(gè)問(wèn)題是:談?wù)劮植际絊ession的幾種實(shí)現(xiàn)方式、講一下Session和Cookie的區(qū)別和聯(lián)系以及Session的實(shí)現(xiàn)原理。
這兩個(gè)問(wèn)題之外,web.xml里面的內(nèi)容是重點(diǎn),Filter、Servlet、Listener,不說(shuō)對(duì)它們的實(shí)現(xiàn)原理一清二楚吧,至少能對(duì)它們的使用知根知底。另外,一些細(xì)節(jié)的方面比如get/post的區(qū)別、forward/重定向的區(qū)別、HTTPS的實(shí)現(xiàn)原理也都可能會(huì)被考察到。
"錯(cuò)過(guò)了太陽(yáng)的時(shí)候,請(qǐng)你不要哭泣,因?yàn)槿绻憧蘖?#xff0c;就會(huì)錯(cuò)失接下來(lái)的月亮和漫天星辰。"
總結(jié)
以上是生活随笔為你收集整理的java程序员面试技术_java程序员面试应该具备的一些基本技能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JAVAWEB入门之IDEA与tomca
- 下一篇: 计算机考试网络应用题一定要做到ie浏览器