1. 程式人生 > >橫看成嶺側成峰,遠近高低各不同——從面試官的角度談面試

橫看成嶺側成峰,遠近高低各不同——從面試官的角度談面試

  最近有一本很紅的面試書叫《》,作者是美國微軟總部資深軟體工程師何海濤,他在書中以面試官的角度分享了程式設計師面試的方方面面,並且還在書中停供了80餘道面試題,大部分是與資料結構和演算法有關。本文不會重點分析這些面試題目,而是歸納總結書中所提到的一些面試相關的程式設計技能和軟技能。

一、面試流程

1)面試的3種形式

  第一種是電話面試,應聘者在投出簡歷一到二週之內,不僅要保證手機電池能連續通話一小時,還要避免長時間待在嘈雜的地方。電話面試沒有了肢體語言、面部表情,應聘者表達自己想法的難度要比現場面試大很多,因此,應聘者儘可能用形象化的語言把細節說清楚。例如在電話面試中,如果想說一棵二叉樹,就需要把二叉樹中有哪些節點,每個節點的左子節點是什麼、右子節點是什麼都要說得很清楚,只有這樣面試官才能準確地理解應聘者的思路。當不確定面試官的問題的時候,應聘者一定要大膽地向面試官多提問,直到弄清楚面試官的意圖為止,切忌不懂裝懂、答非所問。

  第二種是共享桌面遠端面試,利用一些共享桌面的軟體,應聘者把自己電腦共享給遠端的面試官。這樣兩個人雖然沒有坐在一起,但是面試管卻能通過共享桌面觀看應聘者程式設計和除錯的過程。這種形式的面試,面試關心的是應聘者的程式設計習慣和除錯能力,通常面試官會認可應聘者下面幾種程式設計習慣:

1、思考清楚再開始編碼。

2、良好的程式碼命名和縮排對齊習慣。

3、能夠進行單元測試。

  當應聘者執行程式碼發現結果不對之後的表現,是面試官關注的重點,因為應聘者此時的反應、採取的措施都能體現出他的除錯功底。如果應聘者能夠熟練地設定斷點、單步跟蹤、檢視記憶體、分析呼叫棧,就能很快發現問題的根源並最終解決問題,那麼面試官將會覺得他的開發經驗豐富,在寫面試報告的時候是不會吝嗇讚美之詞的。

  第三種是現場面試,在去公司參加現場面試之前,應聘者應該做好以下幾點準備:

1、規劃好線路並估算出行時間。

2、準備好得體的衣服。

3、注意面試邀請函裡的面試流程。

4、準備幾個問題。

  現場面試是整個面試流程中的重頭戲。由於是坐在面試官的對面,應聘者的一舉一動都看在面試官眼裡。面試官通過應聘者的語言和行動考察他的溝通能力、學習能力、程式設計能力等綜合實力。

2)面試的3個環節

  首先是行為面試,面試開始的5~10分鐘通常是行為面試的時間。面試官在這段時間會注意應聘者的性格特點,深入瞭解簡歷中列舉的專案經歷。這是一個暖場的過程,應聘者可以利用這幾分鐘調整自己的情緒,進入面試狀態。不少面試官會讓應聘者做一個簡短的自我介紹,而自我介紹不用花很多時間,用30秒到1分鐘的時間介紹自己的主要學習、工作經歷即可。如果面試官對某一段經歷或者參與的某一個專案感興趣,那麼他會有針對性的提幾個問題詳細瞭解。

1、應聘者的專案經驗建議用STAR模型描述,Situation:簡短的專案背景;Task:自己完成的任務;Action:為完成任務自己做了哪些工作,是怎麼做的;Result:自己的貢獻。除此之外,面試官針對專案經驗最常問的問題包括以下幾個型別。

a)你在該專案中碰到的最大問題是什麼,你是怎麼解決的?

b)從這個專案中你學到了什麼?

c)什麼時候會和其他團隊成員有什麼樣的衝突,你們是怎麼解決衝突的?

2、應聘者掌握的技能,描述技能掌握程度時也要注意“瞭解”、“熟悉”和“精通”的區別。

a)瞭解是指對某項技能只是上過課或看過書,但沒有做過實際的專案。不建議在簡歷中列出只是膚淺地瞭解一點的技能。

b)熟悉是指在實際專案中使用某項技能已經有很長的時間,通過查閱相關的文件可以獨立解決大部分問題。簡歷中技能的掌握大部分應該是熟悉。

c)精通是指對一項技術使用的得心應手,在專案開發過程中,有信心也有能力解決各種問題。除非自己能輕鬆回答這個領域裡的絕大多數問題,否則不要在簡歷中使用精通。

3、回答“為什麼跳槽”。面試官會通過這個問題來了解應聘者的性格,在回答時不要抱怨,也不要流露出負面情緒。應聘者儘量避免以下4個原因:

a)老闆太苛刻。

b)同事太難相處。

c)加班太頻繁。

d)工資太低。

  其次是技術面試,一輪一小時的面試,通常計算面試會佔據40~50分鐘,對面試的結果起決定性作用。總體來說,面試官都會關注應聘者的5種素質:

1、紮實的基礎知識,包括程式語言、資料結構和演算法。

2、能寫出正確的、完整的、魯棒(健壯)的高質量的程式碼,面試官會格外關注邊界條件、特殊輸入等看似細枝末節但至關重要的地方。

3、分析問題時思路清晰,面試官不喜歡應聘者草率地開始寫程式碼,這樣的程式碼容易邏輯混亂、錯誤百出。應聘者可以用幾個簡單的方法幫助自己形成清晰的思路。

a)舉幾個簡單的例子讓自己理解問題,舉例能使抽象問題具體化。

b)用圖形表示抽象的資料結構,圖形能使抽象的問題具體化、形象化。

c)把複雜的問題分解成若干個簡單的子問題,然後逐個擊破。

4、能優化時間效率和空間效率,需要熟知各種資料結構的優缺點,並且熟練掌握常用的演算法。

5、學習、溝通等各方面的能力。

a)面試官會觀察應聘者在介紹專案經驗或演算法思路時是否觀點明確、邏輯清晰,並以此判斷其溝通能力的強弱。有意向加入外企的應聘者注意提高自己英語交流的能力。

b)面試官也會從應聘者說話的神態和語氣來判斷他是否有團隊合作的意識。

c)面試官通過詢問應聘者最近在看什麼書、從中學到了哪些技術來了解應聘者的學習願望和學習能力。

d)面試官丟擲一個新概念,觀察應聘者能否在短時間內理解新概念,期待他們通過思考、提問、再思考的過程,理解並最終解決相關問題。

e)建議應聘者在面試過程中遇到不明白的地方多提問,這樣面試官會覺得你態度積極、求知慾強烈,會給面試結果加分。

f)知識遷移能力是一種特殊的學習能力,通俗的說法是舉一反三,如果能夠把已經掌握的知識遷移到其它領域,那麼學習新技術或者解決新問題會變得容易。

g)不少面試官從日常生活中提煉出問題,考查應聘者的抽象建模能力和發散思維能力。

  最後是應聘者提問,在結束面試前的5~10分鐘,面試官會給應聘者機會問幾個問題,應聘者的問題質量對面試的結果也有一定的影響。首先,不要問和自己的職位沒有關係的問題,例如公司未來五年的發展戰略是什麼;其次,不要問薪水;再次,不要打聽面試結果;最後,推薦問與應聘的職位或專案相關的問題。要問好這類問題可以從兩方面去了解:一是面試前做足功課,到網上搜索一些相關的資訊,做到對公司成立時間、主要業務、職位要求等都瞭然於胸;二是面試過程中留心面試官說過的話,他的話中可能會包含其它渠道無法得到的資訊,例如專案進展情況等。

二、高質量的程式碼

1)程式碼的規範性

  如果應聘者程式碼寫得不夠規範,影響面試官閱讀程式碼的興致,那麼面試官就會默默地減去幾分。書寫、佈局和命名都決定著程式碼的規範性。

  首先,規範的程式碼書寫清晰,在白板或白紙上寫程式碼,要減慢寫字的速度,儘量把每個字母寫清楚,不要擔心時間不夠。其次,規範的程式碼佈局清晰,離開了工具手寫程式碼,格外要注意佈局問題。最後,規範的程式碼命名合理,用完整的英文單詞組合命名變數和函式。

2)程式碼的完整性

  面試官會非常關注應聘者考慮問題是否周全。通過檢查程式碼是否完整來考察應聘者的思維是否全面。

1、從功能測試、邊界測試和負面測試3個方面確保程式碼的完整性。

a)功能測試保證寫出的程式碼能夠完成面試官要求的基本功能。

b)邊界測試用於檢查迴圈的邊界條件是否正確,遞迴終止的邊界值是否正確等。

c)負面測試需要考慮各種可能的錯誤輸入,對其做出合理的錯誤處理。

2、通常有3種方式把錯誤資訊傳遞給函式的呼叫者:

a)用返回值告知呼叫者是否出錯。

b)當錯誤發生時設定一個全域性變數。

c)當函式執行出錯的時候,就丟擲一個異常,根據不同出錯原因定義不同的異常型別。

3)程式碼的魯棒性

  魯棒性也稱為健壯性,是指程式能夠判斷輸入是否合乎規範要求,並對不符合要求的輸入予以合理的處理。容錯性是魯棒性的一個重要提現。提高程式碼魯棒性的有效途徑是進行防禦性程式設計。防禦性程式設計是一種程式設計習慣,是指預見在什麼地方可能會出現問題,併為這些可能出現的問題制定處理方式。在面試時,最簡單也是最實用的防禦性程式設計就是在函式入口新增程式碼以驗證使用者輸入是否符合要求。

相關推薦

看成遠近高低不同——面試角度面試

  最近有一本很紅的面試書叫《》,作者是美國微軟總部資深軟體工程師何海濤,他在書中以面試官的角度分享了程式設計師面試的方方面面,並且還在書中停供了80餘道面試題,大部分是與資料結構和演算法有關。本文不會重點分析這些面試題目,而是歸納總結書中所提到的一些面試相關的程式設計技能和軟技能。 一、面試流程 1

面試角度觀察到的程式設計師技能瓶頸同時給出突破瓶頸的建議

    我在做技術面試官的時候,面試物件大多數是初級開發和高階開發,偶爾也會面試架構師。我發現,IT人的工資固然和相關技術的使用年限有關,但如果候選人的技能無法跨越到更高層次的話,他們的收入也就會停留在當前級別,哪怕工資年限再多,也無法提升工資水平。     比如,我

怎麼把版視訊剪豎版?兩種方法快速搞定!畫面滿屏沒有黑邊

現在很多手機社交媒體上,都比較流行豎版視訊。那麼橫版視訊如何變成豎版?今天教大家兩種方法快速搞定!橫版改成豎屏,並且做到畫面滿屏,無黑邊。順便還會分享現在抖音、朋友圈、影視圈最流行的豎版視訊排版方式的製作技巧。 方法1:利用愛剪輯將橫版視訊剪成豎版,效果酷炫讓你立馬拿到超多贊 第一步:開

maven打包jar並排除指定文件

pat addclass fig ani logs archive exc arc mave maven打包成jar,配置如下 <plugin> <groupId>org.apache.maven.plugins

智能手機低價vivo為何執念高端?

vivo2015-2016年是智能手機的激進之年,無數智能手機品牌為爭奪出貨量排名,不惜以犧牲利潤和用戶體驗為代價,通過祭出百元機大旗的方式血洗市場。在這股潮流中,價格成了唯一的驅動因素,一些原本主打情懷和工匠精神的智能手機品牌選擇了保價格棄品質的策略,而一些缺乏核心競爭實力的廠商則選擇了以中斷代替低端的產品

如何將掃描的pdf圖片轉換文字方法竟然如此簡單?

圖片 辦公文檔 編輯器 提問:word、ppt、txt、pdf等常見辦公文檔格式那個最難編輯。回答肯定是pdf啦,因為pdf文件不能直接打開進行編輯,所以編輯pdf文件比較麻煩,下面就一起來看看實現pdf文件的編輯的方法。有的朋友會問,編輯pdf文件需不需要進行文字識別呢?小編的回答這不是絕對的。

這樣將DWG轉換PDFDWG轉換PDF能這樣轉

  DWG是最基礎的CAD圖紙文件格式,在我們編輯CAD圖紙的時候,最常使用的圖紙文件就是DWG文件,當我們對DWG文件編輯完成之後,大多數情況下都會選擇將DWG文件轉換成PDF格式,這是因為PDF文件相比於DWG文件查看更加的方便而且安全,那麽我們應該怎麽進行操作,才可以將DWG文件轉換成PDF格式?DWG

夢幻誅滅外掛——《夢幻誅仙手遊》的阻擊外掛之旅

超過 ext 客戶端 left ron 相加 功能 出現 成本 隨著智能手機的全面普及和市場泛娛樂化,移動遊戲行業發展迅猛,無論是市場收入還是用戶規模,手遊在遊戲市場上已經占據了半壁江山。如此火熱的市場吸引了大量外掛、輔助工作室等非法盈利團隊,嚴重影響了遊戲的收益、平衡,縮

PDF如何轉CADPDF轉CAD怎麽批量

對於如何解決PDF怎麽轉成CAD的問題?我相信不少小夥伴都非常關系,因為PDF文件和CAD文件是兩種不同格式的文件,但是我們所接觸的一些PDF文件當中,有時候會有一些CAD文件圖紙,如果想要對這些圖紙進行編輯,就需要將PDF文件轉換成CAD文件,那麽怎麽將PDF轉換成CAD?什麽軟件可以將PDF轉換成CAD?

最強自定義PHP集環境系統缺失dll和vc也能正常運行

缺少 免費 alt 系統 演示 php環境 com 解決 解決方案 PHPWAMP支持iis、apache、nginx等web服務器,並全部支持php多版本同時運行,無限自定義mysql、php PHPWAMP支持32和64,支持自定義自動匹配系統所需dll和vc,純綠化無

Python3 將txt數據轉換列表進行排序

python pla n) color ted adl turn image [] 首先是數據: 將上邊的四個數據分別寫在新建的txt文件中 1、將txt數據轉為列表 with open(‘james.txt‘) as jaf: data = jaf.re

sublime集MinGW打造C/C++開發環境

sub printf cts brush 而且 log target 新建 配置 MinGW是是將GCC編譯器和GNU Binutils移植到Win32平臺下的產物,包括一系列頭文件(Win32API)、庫和可執行文件。MinGW是從Cygwin(1.3.3版)基礎上發展而

虐童焦點家長“手機看監控”是大勢所趨

360“如果你為人父母,請采取行動,做點什麽!”24日,有紅衣大炮之名的360集團創始人兼CEO周鴻祎開炮了,而靶子則是最近連番出現的幼教機構虐童事件,而他這一次不僅僅是開炮,還提供了自己的解決方案——“可視化幼兒園試點”。23日某幼兒機構虐童事件頻頻被頂上熱搜,件引發眾多網友聲討。加上此前不久,一家親子園爆

2017.11.30 Reat前後端數據交互之Button提交數據處理(ajax方法單獨封裝API不用Form)

logs 處理 mage mongoose 技術 module strong 輸入框 reat 1.按鈕定義: 2.引入外部js文件(封裝了ajax方法的文件):註意目錄結構 3.調用ajax文件中的具體方法: 4.關於ajax文件中方法的編寫語法: 寫

pdf如何轉換excel怎麽在線將pdf轉換excel

安裝完成 有一個 .com 運行 .cn 方法 exce 右下角 http pdf格式文件是一種非常特殊的文件,一般處理這種文件都會借助到專業的工具,下面就教大家怎麽將pdf文件轉換成excel文件! 請點擊輸入圖片描述方法一:PDF轉換器 步驟一:首先我們需要在電

USACO Broken Necklace 題解(環展開枚舉)

相同 == name 第一個 span bre 我們 return style 題目大意:有一個項鏈,由紅、藍、白三種顏色的珠子組成,然後現在選擇項鏈中的某一處斷開,然後沿斷開處的兩個珠子分別查找,直至找到一個顏色不同的珠子,並統計個數(其中顏色以第一個非白色的為準,白色的

Spring集SwaggerJava自動生成Api文檔

jar包 depend pan restful can nic -a src 構建 博主很懶... Swagger官網:http://swagger.io GitHub地址:https://github.com/swagger-api 官方註解文檔:http://docs.

(轉)第十一篇:springboot集swagger2構建優雅的Restful API

html 風格 lan round amt select() hash 指定 model   聲明:本部分內容均轉自於方誌明博友的博客,因為本人很喜歡他的博客,所以一直在學習,轉載僅是記錄和分享,若也有喜歡的人的話,可以去他的博客首頁看:http://blog.csdn.n

xadmin集DjangoUeditor以及編輯器的視頻路徑配置

site inf view eat get 分享 modelform base 自己 稍微講一下DjangoUeditor的配置,因為之前去找配置的時候東拼西湊的,所以自己寫一下自己一步步配置的過程。首先我是再github上去下載下來,因為是當作第三方插件集成到xadmin