面试官角度弹面试
http://www.iteye.com/topic/715304
這個帖子的背景是今晚看到je上這張貼:http://www.iteye.com/topic/715256,心血來潮寫下的文字,如果能拋磚引玉,能有其他面試官分析一下自己面試時問的問題,那或許是件很有意義的事情。?
??? 在公司當技術面試官幾年間,從應屆生到工作十幾年的應聘者都遇到過。先表達一下我自己對面試的觀點:?
??? 1.筆試、面試去評價一個人肯定是不夠準確的,了解一個人最準確的方式就是“路遙知馬力,日久見人心”。通過一、二個小時內的做題、交流,只是沒有其他辦法下進行的無奈之舉,所以通過了面試不代表有多成功,沒通過也不代表有多失敗。?
??? 2.好的面試官本身交談的時候就不應當把自己一個居高臨下的角色上,應當把自己和應聘者當做兩個做技術的人平等的交流,把自己當作權威往往就會受到觀點的角度、語言表達、工作領域的慣性的制約。?
??? 3.好的考察題目則是大家能經常接觸,不同層次的人能有不同層次的答案,能從問題引申出后面繼續討論的話題。?
??? 舉個例子拋磚引玉,下面這個問題是我以前常問的,從應屆生到工作十幾年的人都問過:?
引用
“地球人都知道,Java有個東西叫垃圾收集器,它讓創建的對象不需要像c/cpp那樣delete、free掉,你能不能談談,GC是在什么時候,對什么東西,做了什么事情?”
我自己分析一下這個問題,首先是“什么時候”,不同層次的回答從低到高排列:?
??? 1.系統空閑的時候。?
??? 分析:這種回答大約占30%,遇到的話一般我就會準備轉向別的話題,譬如算法、譬如SSH看看能否發掘一些他擅長的其他方面。?
??? 2.系統自身決定,不可預測的時間/調用System.gc()的時候。?
??? 分析:這種回答大約占55%,大部分應屆生都能回答到這個答案,起碼不能算錯誤是吧,后續應當細分一下到底是語言表述導致答案太籠統,還是本身就只有這樣一個模糊的認識。?
??? 3.能說出新生代、老年代結構,能提出minor gc/full gc?
??? 分析:到了這個層次,基本上能說對GC運作有概念上的了解,譬如看過《深入JVM虛擬機》之類的。這部分不足10%。?
??? 4.能說明minor gc/full gc的觸發條件、OOM的觸發條件,降低GC的調優的策略。?
??? 分析:列舉一些我期望的回答:eden滿了minor gc,升到老年代的對象大于老年代剩余空間full gc,或者小于時被HandlePromotionFailure參數強制full gc;gc與非gc時間耗時超過了GCTimeRatio的限制引發OOM,調優諸如通過NewRatio控制新生代老年代比例,通過MaxTenuringThreshold控制進入老年前生存次數等……能回答道這個階段就會給我帶來比較高的期望了,當然面試的時候正常人都不會記得每個參數的拼寫,我自己寫這段話的時候也是翻過手冊的?;卮鸬肋@部分的小于2%。?
PS:加起來不到100%,是因為有確實少數直接說不知道,或者直接拒絕回答的= =#?
??? 分析第二個問題:“對什么東西”:?
??? 1.不使用的對象。?
??? 分析:相當于沒有回答,問題就是在問什么對象才是“不使用的對象”。大約占30%。?
??? 2.超出作用域的對象/引用計數為空的對象。?
??? 分析:這2個回答站了60%,相當高的比例,估計學校教java的時候老師就是這樣教的。第一個回答沒有解決我的疑問,gc到底怎么判斷哪些對象在不在作用域的?至于引用計數來判斷對象是否可收集的,我可以會補充一個下面這個例子讓面試者分析一下obj1、obj2是否會被GC掉??
??? class C{?
???????? public Object x;?
??? }?
??? C obj1、obj2 = new C();?
??? obj1.x = obj2;?
??? obj2.x = obj1;?
??? obj1、obj2 = null;?
??? 3.從gc root開始搜索,搜索不到的對象。?
??? 分析:根對象查找、標記已經算是不錯了,小于5%的人可以回答道這步,估計是引用計數的方式太“深入民心”了?;究梢缘玫竭@個問題全部分數。?
??? PS:有面試者在這個問補充強引用、弱引用、軟引用、幻影引用區別等,不是我想問的答案,但可以加分。?
??? 4.從root搜索不到,而且經過第一次標記、清理后,仍然沒有復活的對象。?
??? 分析:我期待的答案。但是的確很少面試者會回答到這一點,所以在我心中回答道第3點我就給全部分數。?
??? 最后由一個問題:“做什么事情”,這個問發揮的空間就太大了,不同年代、不同收集器的動作非常多。?
??? 1.刪除不使用的對象,騰出內存空間。?
??? 分析:同問題2第一點。40%。?
??? 2.補充一些諸如停止其他線程執行、運行finalize等的說明。?
??? 分析:起碼把問題具體化了一些,如果像答案1那樣我很難在回答中找到話題繼續展開,大約占40%的人。?
??? 補充一點題外話,面試時我最怕遇到的回答就是“這個問題我說不上來,但是遇到的時候我上網搜一下能做出來”。做程序開發確實不是去鍛煉茴香豆的“茴”有幾種寫法,不死記硬背我同意,我不會糾語法、單詞,但是多少你說個思路呀,要直接回答一個上網搜,我完全沒辦法從中獲取可以評價應聘者的信息,也很難從回答中繼續發掘話題展開討論。建議大家盡量回答引向自己熟悉的,可討論的領域,展現給面試官最擅長的一面。?
??? 3.能說出諸如新生代做的是復制清理、from survivor、to survivor是干啥用的、老年代做的是標記清理、標記清理后碎片要不要整理、復制清理和標記清理有有什么優劣勢等。?
??? 分析:也是看過《深入JVM虛擬機》的基本都能回答道這個程度,其實到這個程度我已經比較期待了。同樣小于10%。?
??? 4.除了3外,還能講清楚串行、并行(整理/不整理碎片)、CMS等搜集器可作用的年代、特點、優劣勢,并且能說明控制/調整收集器選擇的方式。?
??? 分析:同上面2個問題的第四點。?
??? 最后介紹一下自己的背景,在一間不大不小的上市軟件公司擔任平臺架構師,有3年左右的面試官經驗,工作主要方向是大規模企業級應用,參與過若干個億元級的項目的底層架構工作。
聲明:ITeye文章版權屬于作者,受法律保護。沒有作者書面許可不得轉載。
推薦鏈接
?發表時間:2010-07-18??
ps一下:上面這個問題,倒是遇到過應屆生給我相當超出預期的答案,工作經驗好量化,天分與興趣不好考察,但往往日后的骨干就要從這種有天分的苗子開始培養起。
? 發表時間:2010-07-18?? 最后修改:2010-07-18
這種題目拿來考應屆生,如果來來回回回答的都是深入JVM之類的書本上的,那么也就是靠背出來的,應試能力強而已?
對于應屆生,我更關心1。理解能力,2.服從性,3。偽代碼能力,其他的么,不能算加分,包括學歷?
考5年以內也不合適,一般5年內的同學的工作層次達不到需要研究JVM和底層一些機制的地步,絕大部分的工作能力和長處并不在此,拿這種東西否定一個人,不過是刁難人罷了?
研究JVM和底層的目的是什么,絕不是背幾個段子秀一下,其實就一般的工作范圍而言,主要是為了調優,考架構師這個層次,這個題目還差不多,但是到這個層次,只是一些書本上的標準回答,又不能滿足我了,需要設計一些具體場景,才能看出一個人的能力
?
98%以上的應屆生的回答不會和JVM有關系,大多停留在第2點答案的水平,這些答案都符合我對應屆生的期望呀。?
但是如果應屆生能回答道第3、4點,哪怕是真的看過教程,或者《深入jvm》之類的書跟我復述出來,無論最后是否愿意入職,我都會很樂意和他保持長期聯系。?
我面試還經常問一個開放性的問題:“請跟我介紹一下你最近看的一本技術書籍”,很多應屆生、應聘者在這個問題上都沒有給我留下印象,現在的應屆生能看一本書,還把書看成幾頁紙再用自己的話說出來,說實話已經是一件不太容易的事情。?
對于工作經驗實在是沒有辦法之中去量化能力的一個指標,就在今年上半年,我面過10年經驗要價3.5K(是K不是W,是自己開價)的,真的被嚇到了。另外我自己的工作年限也還不到5年,沒有資格要求別人更多。
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結
- 上一篇: 小米手机录音快捷键在哪(小米手机录音功能
- 下一篇: 拦截器 和过滤器