何謂精通
先來(lái)看幾個(gè)面試的片段,從中也許能看出些端倪,:)
------------------------------------------------------------------------------------------------------------
片段一
背景:面試者之前做過(guò)一些網(wǎng)絡(luò)通訊的程序。
問(wèn):對(duì)Java網(wǎng)絡(luò)編程方面的package有了解嗎?
答:因?yàn)榫帉戇^(guò)一些這樣的程序,應(yīng)該還是比較熟的。
問(wèn):那能說(shuō)說(shuō)Socket和ServerSocket中的timeout參數(shù)的具體作用嗎?
答:... (忘記當(dāng)時(shí)面試者答的具體是什么了,不過(guò)基本還是正確的)
問(wèn):能說(shuō)說(shuō)Socket中的setTcpNoDelay是拿來(lái)干什么的嗎?
答:... (沒(méi)答出來(lái))
問(wèn):不知道有沒(méi)有了解過(guò)例如在linux操作系統(tǒng)上是怎么實(shí)現(xiàn)網(wǎng)絡(luò)通訊的呢,在操作系統(tǒng)中是個(gè)怎么樣的過(guò)程呢?
答:...
由于面試者對(duì)上面的問(wèn)題并沒(méi)有回答到位,因此就沒(méi)有再在網(wǎng)絡(luò)編程這塊繼續(xù)問(wèn)下去了,本來(lái)后續(xù)還打算問(wèn)問(wèn)tcp/ip協(xié)議、線程池、連接池、并發(fā)等等方面的一些問(wèn)題。
片段二
背景:面試者之前有Load Balance方面的經(jīng)驗(yàn)。
問(wèn):對(duì)Load balance接觸過(guò)吧?
答:是的,在幾個(gè)項(xiàng)目中都使用過(guò),個(gè)人覺得還是比較精通的。
問(wèn):能說(shuō)說(shuō)在load balance通常有的幾種請(qǐng)求方式嗎?
答:... (沒(méi)明白)
問(wèn):例如最常見的load balance請(qǐng)求的場(chǎng)景是所有的請(qǐng)求經(jīng)過(guò)load balance,然后響應(yīng)也通過(guò)load balance返回,你覺得還有沒(méi)有其他的方式呢?
答:還有其他的方式嗎?
問(wèn):跳過(guò)上面的問(wèn)題,load balance方面你們一般使用什么方式來(lái)保證均衡性呢?
答:輪循方式。
問(wèn):有沒(méi)有接觸過(guò)其他的一些保證均衡的方式呢?
答:沒(méi)有。
片段三
背景:面試者覺得自己對(duì)于java collection比較精通。
問(wèn):能說(shuō)下java是怎么實(shí)現(xiàn)HashSet的嗎?
答:基于HashMap實(shí)現(xiàn),構(gòu)建一個(gè)key為傳入值,value也為傳入值的HashMap。
問(wèn):繼續(xù)聊下HashMap,java是怎么實(shí)現(xiàn)HashMap的呢?
答:對(duì)key進(jìn)行hash,然后以數(shù)組的方式實(shí)現(xiàn)。
問(wèn):能說(shuō)下在HashMap中當(dāng)放的數(shù)據(jù)量越來(lái)越大的時(shí)候,java會(huì)做些什么動(dòng)作嗎?
答:當(dāng)放入的數(shù)據(jù)量達(dá)到容量時(shí),會(huì)默認(rèn)增大一倍。
問(wèn):你覺得如果需要在HashMap中存放大量的數(shù)據(jù)的時(shí)候,會(huì)有些什么問(wèn)題呢,例如要往一個(gè)HashMap中放100w的數(shù)據(jù)?
答:... (具體答的什么我不太記得了,不過(guò)最起碼答出了沖突率會(huì)增高,效率會(huì)下降這點(diǎn))
問(wèn):你覺得有什么辦法能提升效率嗎?
答:....(思考ing)....自己實(shí)現(xiàn)hashCode,盡量降低沖突率。
問(wèn):還有什么別的辦法嗎,或者自己來(lái)實(shí)現(xiàn)一個(gè)支撐100w的map結(jié)構(gòu)怎么做比較好呢,主要是要優(yōu)化寫?
答:...(thinking...)....自己做hash,然后存放在LinkedList里。
問(wèn):如果現(xiàn)在要放1T的數(shù)據(jù)怎么辦?肯定是不能放在單機(jī)上的了,怎么樣去分布式做呢?
答:...同樣做hash,然后例如0--7的放在哪些機(jī)器上,8---F開頭的放在另外的機(jī)器上。
問(wèn):那么如果加機(jī)器了是不是要修改配置呢,另外加機(jī)器是否有遷移數(shù)據(jù)的問(wèn)題呢?
答:...嗯,暫時(shí)是的。
這個(gè)面試過(guò)程其實(shí)我們當(dāng)時(shí)是相當(dāng)滿意的,雖然這個(gè)面試者并沒(méi)有完全答出來(lái)了,但根據(jù)他以往的經(jīng)驗(yàn)來(lái)看,能答到這個(gè)程度真的非常不錯(cuò)了,而且我們最看重他的是碰到這些技術(shù)性的問(wèn)題能夠很有興趣的進(jìn)行思考,形象的說(shuō),簡(jiǎn)直就是雙眼放光,:)
好,最后一個(gè)片段。
片段四
背景:面試者在項(xiàng)目中用過(guò)了java 5中的并發(fā)包。
問(wèn):覺得像ConcurrentHashMap這樣的類帶來(lái)了些什么好處呢?
答:將之前需要加鎖自己做同步的動(dòng)作做了更好的原子性的封裝。
問(wèn):能講講CAS在這些并發(fā)數(shù)據(jù)結(jié)構(gòu)中起到了些什么作用嗎?
答:CAS?
問(wèn):(忽略上面的問(wèn)題) 能說(shuō)說(shuō)Executors.newCachedThreadPool和直接new ThreadPoolExecutor的差別嗎?
答:...不太清楚。
------------------------------------------------------------------------------------------------------------
好,關(guān)于面試的一些片段就回放到這了,從上面這幾個(gè)面試片段中,估計(jì)也能看出一些端倪了,個(gè)人覺得精通真的很難,什么叫精通呢,我覺得應(yīng)該不僅僅是會(huì)使用,熟練的使用,而且能夠?qū)ζ涞讓拥膶?shí)現(xiàn)機(jī)制、原理有較深的了解,例如java網(wǎng)絡(luò)編程,應(yīng)該了解到j(luò)ava網(wǎng)絡(luò)編程package的參數(shù)細(xì)節(jié)的含義,進(jìn)而應(yīng)該了解操作系統(tǒng)是怎么去實(shí)現(xiàn)的,再進(jìn)一步來(lái)講,應(yīng)該能夠?qū)f(xié)議也有一定的了解,例如tcp/ip、http等等,所以說(shuō)要做到精通真的很難,至于是否能夠解決大型場(chǎng)景中帶來(lái)的問(wèn)題,這個(gè)則受限于每個(gè)人的經(jīng)歷,因此不認(rèn)為這點(diǎn)是決定性的因素。
其實(shí)我以前也很反對(duì)面試的時(shí)候問(wèn)細(xì)節(jié)的,因?yàn)檎J(rèn)為很多細(xì)節(jié)問(wèn)題其實(shí)都是可以google等找到的,但現(xiàn)在觀點(diǎn)在改變,我覺得如果真的精通的話,是會(huì)知道細(xì)節(jié)的,而不是靠臨時(shí)的查找去學(xué)會(huì),因此漸漸的也在面試過(guò)程中問(wèn)一些非常細(xì)節(jié)的問(wèn)題了,而且其實(shí)很多大型場(chǎng)景從架構(gòu)層面來(lái)講也是差不多的,并不會(huì)有太多的不同,加上這些東西現(xiàn)在在網(wǎng)上講的也越來(lái)越多了(發(fā)現(xiàn)近來(lái)網(wǎng)上開始充斥著分布式、高可用性、高伸縮性這些詞,開源的這類東西也迅速的在冒出,都不知道到底是好現(xiàn)象呢還是不那么好的現(xiàn)象,^_^),估計(jì)很多同學(xué)背都能背出來(lái)了,雖然也許不是很理解為什么架構(gòu)是那樣的。
記得很久以前和raimundox聊天,raimundox說(shuō)到在國(guó)外的工程師相當(dāng)專業(yè),對(duì)于這些需要使用的技術(shù)所涉及的相關(guān)東西都會(huì)懂的比較多,例如要使用java的多線程,那么他們通常會(huì)知道操作系統(tǒng)是怎么來(lái)實(shí)現(xiàn)這塊的,而這也是他們大學(xué)的教學(xué)方法,完全是針對(duì)性的,就是教需要用到的東西涉及的知識(shí)體系,至于其他的很多東西則不去教學(xué)了,因此相對(duì)來(lái)講國(guó)外的軟件質(zhì)量整體是更好的,而做研究的人就更不同了,他們眼中的研究都是創(chuàng)新性質(zhì)的,這讓他們很明顯的區(qū)分了工程和研究,這也許就是造成有很大差距的一點(diǎn)吧。
posted on 2008-06-12 21:41 BlueDavy 閱讀(8709) 評(píng)論(52) 編輯 收藏 所屬分類: 業(yè)界隨想