從面試的角度講,一個(gè)能找到比自己強(qiáng)的人才的方法才是最有前途的方法。否則,只能招到比自己水平低的人,那公司的未來就只能局限于領(lǐng)導(dǎo)的能力水平了……
如果是做業(yè)務(wù)為主的,那側(cè)重點(diǎn)在于如何建立業(yè)務(wù)模型,如何應(yīng)對(duì)業(yè)務(wù)變更的可能,如何處理版本分裂和制定遷移升級(jí)計(jì)劃。
如果是做相對(duì)低層的技術(shù)優(yōu)化的,那側(cè)重點(diǎn)在于對(duì)性能、被Java封裝的底層技術(shù)的細(xì)節(jié)、OS、Network等基礎(chǔ)知識(shí)的掌握程度。掌握得越細(xì)致,越好。
操作系統(tǒng)層面:進(jìn)程與線程,進(jìn)程如何創(chuàng)建,線程如何創(chuàng)建。內(nèi)存與換頁的概念,進(jìn)程通信,鎖等等。
網(wǎng)絡(luò)通信層面:7/5層模型,ip分片重組,ip路由,tcp握手,udp的重組,網(wǎng)絡(luò)風(fēng)暴的原因等等。
編程語言層面:面向?qū)ο?,重載與重寫,多態(tài)。對(duì)象創(chuàng)建模式,繼承和組合, 語言的特點(diǎn)等等。
數(shù)據(jù)結(jié)構(gòu)與算法:數(shù)組鏈表,Map應(yīng)用場(chǎng)景。基本的排序算法,算法分析等等。
數(shù)據(jù)庫層面:索引,SQL,事務(wù)隔離級(jí)別等等。
數(shù)據(jù)方面:二進(jìn)制運(yùn)算,各類型占用的字節(jié)數(shù),各類型數(shù)字的最大值,最小值等等。
1、先說結(jié)論:基礎(chǔ)不扎實(shí)的面試官問不出這種以小見大的問題。
2、可以列舉幾個(gè):
(1)與非門在電子電路級(jí)別是如何實(shí)現(xiàn)的?通過邏輯電路如何制造一個(gè)最簡單的計(jì)算器?譬如三體中描述的秦始皇如何用人肉方陣做一個(gè)計(jì)算機(jī)來預(yù)測(cè)天體運(yùn)行規(guī)律?
考察點(diǎn):《計(jì)算機(jī)組成原理》,是本科大一課程。
(2)System.out.println函數(shù)到底是如何在屏幕上顯示出字符來的?涉及字符集,系統(tǒng)類,靜態(tài)變量,ascii碼,IO,buffer,OS,顯卡驅(qū)動(dòng)。
考察點(diǎn):《計(jì)算機(jī)組成原理》,《操作系統(tǒng)》,JDK,字符集,亂碼問題。
(3)為什么java采用單根繼承?好處和壞處是什么?如何補(bǔ)救其缺點(diǎn)?流行的框架和最佳設(shè)計(jì)實(shí)踐是怎么做的?如果用C語言模擬一個(gè)單根類繼承的編程模式可以怎么實(shí)現(xiàn)?
考察點(diǎn):OOP,設(shè)計(jì)模式
(4)集合類的類圖和選型決策?可以挖出無數(shù)數(shù)據(jù)結(jié)構(gòu)的問題。
考察點(diǎn):《數(shù)據(jù)結(jié)構(gòu)》
(5)類加載和運(yùn)行的原理、順序,以及各變量在內(nèi)存的分布?有哪些擴(kuò)展和hack的點(diǎn)?
考察點(diǎn):JVM
(6)volatile關(guān)鍵字的用途和jvm編譯優(yōu)化?可以引出并發(fā)問題
考察點(diǎn):并發(fā),hotspot
(7)異常是如何拋出的?如何做一個(gè)不會(huì)崩潰的java程序?
考察點(diǎn):異常,守護(hù)線程