IT研發老兵跳槽記之(七):開誠佈公與反客為主

之前主要是講跳槽各方面的準備工作,本節主要講面試中的真槍實彈的部分,即技術問答。

計算機技術水平是很難造假的,如果你在簡歷上中造假,在真實面試時只要面試官別太水,基本可以很快發掘,並落得撒謊不誠信的評價,直接就是一輪遊了。因此開誠佈公尤為重要。第一,要做到簡歷的真實性,我們研發人員的簡歷的技術層面的東西,要保留簡歷絕大部分的真實性,但可以適度包裝,比如:只用過hive處理倉庫數據,寫成對分佈式處理技術及數據倉庫性能優化較熟悉。這個只要到時 b候說 明幾個你在hive中解決的幾個典型問題的案例就說明是真實可信的。第二,要做到面試時候答問題的真實性,不要含糊不清,應知之為知之,不知為不知。如果通過歷史知識可以推斷答案,也要先說明實際情況為前提,讓對方知道有心理預期,在此之上說明結果,哪怕很差畢竟是沒做過是可以原諒的,如果答的很漂亮,說明應聘者舉一反三的能力還是有的。

如上所述,開誠佈公是要解決面試官的心理上的信任感,因為現在簡歷寫的天花亂墜,實際一兩個問就打回原型的案例還是相當多見的。兩個陌生人見面聊天,取得對方的信任是第一重要的印像加分項。然,一輪技術面試所需時間一般應該在0.5-2小時之間,而本身面試是一場信息不對稱的對話,如果在如此長的時間內,任由面試官以他所擅長的部分來對你提問,我們是必然吃虧的。而面試時間又是相對有限的,如果在此過程中能通過面試官的幾個問題,引導出自己所擅長的技術模塊,那便將面試成為你的主場,反客為主成功。這樣的反客為主,往往是你情我願樂此不疲的,面試者的目的是能找到應聘者的亮點和問題,也是一個互相交流教學相長的過程,你弱他則強,你強他則弱。相比於找到應聘者一堆的問題,面試官更樂於見到能讓自己通過面試學習到新技術新知識,或者比較對等的溝通交流。所以換位思考下就會發現,反客為主不會讓面試官不爽,反而會讓對方對你讚許有加。

其實兩者在我看來是依存關係,反客為主以開誠佈公為基礎 。開誠佈公相對簡單一些,主要包括以下兩點:

一、簡歷真實可信

重點將技術現狀,通過精通、熟練掌握、熟悉、瞭解等字眼表述非常清楚。其次項目經驗要把自己能解釋清楚的部分簡是扼要表述出來。這兩者將會是面試中最大的兩塊。第一點是看你會哪些技術儲備和技能。第二點是看你用你的技術解決了或是應用在了哪些實戰項目中,產生了什麼效果。

二、交流實事求是

做過與沒做過、用過與沒用過、是精通還是熟悉、是做過項目還是隻是看過文檔資料等都儘量描述準確,面試官可能根據你的一個隨時的回答,讓他想起或故意抽查出個問題來考查你回答驗其真實性。哪怕有1個明顯的撒謊點,極有可能你就進入不了下輪面試了,面試官往往對誠信層次的東西尤為較真。

接下來我們重點講解反客為主,它是我們致勝的關鍵。

2.1、面試流程與角色劃分(對面試官做初步判斷,做到某些問題的預判和心中有數)

第一種,技術面試為3輪,第一輪為基礎技術面,第二輪為項目經驗與專業技術面,第三輪為開放型挑戰型技術面。

第二種,技術面試也為3輪, 並不嚴格區分哪一輪是基礎技術或高級技術,主要以面試官身份來區分,第一輪為一線中級工程師,第二輪為高級工程師,第三輪為技術總監或技術負責人。

第三種,技術面試也為3輪,第一輪為電話技術驗證交流,第二輪為基礎技術面試,第三輪為高級技術面試。

通過各自提的問題,往往是比較容易區分公司的面試種類劃分的,以我的面試經歷為例:

美團之某餐飲事業部一項目組、騰訊視頻、優酷偏第一種。

樂視、國美在線、汽車之家偏第二種。

阿里媽媽這邊屬於第三種。

2.2、技術問題域劃分及常見問題(將問題分門別類,便於梳理和專項學習)

我一般將技術問題劃分為java基礎技術、javaweb及mvc框架相關、通用中間件、具體項目技術交流、工作崗位/專業技術相關5部分組成。因各個問題在網上可以輕鬆找到答案,我只說題目不做解答。

1、java基礎技術(考查對程序語言設計基礎的掌握程度)

(1)jvm內存模塊劃分、gc垃圾回收機制及對應的重點參數設置 (考查對jvm熟悉及調優的能力)

(2)Object對象的常用方法有哪些以及對應的意義所在(考查對java 最基礎API的熟悉程度)

(3)Hashmap的實現、優缺點 (考查對某一常用集合類的掌握程度)

(4)構建一個Person類,構造方法包括name和age,再新增10個隨機的age值對應的Person對象,要求對這個10person對象集按age做倒序排列並輸出。(對集合、排序、編碼基礎的掌握考查)

(5)將如(4)所說的Person對象序列化並寫入文件person.dat中。(考查對流、文件操作的掌握程度)

(6)socket編程實現簡單的QQ群聊功能及NIO的實現原理及核心API (考查對socket操作、流、nio的掌握程度)

(7)單例模式實現及synchronized和Lock的異同步和優缺點 (考查對最經典設計模試代碼的實現及對鎖的掌握程度)

(8)用wait/notify方式寫一個經典的多線程生產者-消費者問題的解決 (考查對多線程問題的基礎掌握)

(9)對GUI模塊的考查幾乎沒有了,主要是awt,swing,swt的簡單問答。(GUI很少考查,幾乎可以忽略)


2、javaweb及mvc框架相關(考查對web開發的掌握程度)

(1)servlet與jsp的聯繫與區別。

(2)servlet編程實現後端流式輸出下載文件。

(3)cookie及session區別和應用場景

(4)jsp的內置對象劃分及具體作用

(5)jsp四種數據範圍及適應場景

(6)jstl、el、struts標籤、framemark檔籤的熟悉程度

(7)描述從用戶請求開始到請求返回,在mvc框架中的處理邏輯。

(8)ssh2、ssi、springside、springmvc、springmvc等框架之一的考查,及多者之間的差異和優缺點

(9)對過濾器、IOC、AOP的三方面的理解和使用代碼


3、通用中間件(考查對常用開發工具的掌握程度)

(1)svn/git常用命令及常見問題解決方法

(2)ant/maven/sbt/ivy等包管理、包發佈工具之一的熟悉與考查

(3)常用關係型數據庫的熟悉程度,如mysql,oracle,sqlserver等常用操作和優缺點

(4)sql語句的熟悉程度,比如分頁、複雜邏輯的寫法、存儲過程、函數、觸發器的寫法

(5)eclipse/myeclipse/scala eclipse/intellij idea等的熟悉程度,常用快捷操作、插件安裝、集成開發

(6)linux shell等腳本的考查,如ls,awk,sed,cut,管道流,權限管理的掌握程度

(7)nosql數據庫之一的熟悉掌握,包括mongodb,berkelyDB等,要對其常見問題、及實現原理搞清楚。

(8)搜索解決方案之一的搭建與運用,包括lucene、elasticsearch、solr等對常見問題、及實現原理搞清楚。

(9)緩存解決方案之一的搭建與運用,如redis,memcache,ssdb等對常見問題、及實現原理搞清楚。

(10)消息隊列解決方案之一的搭建與運用,如kafka,zeroMQ、rabbitmq等常見問題、及實現原理搞清楚。

(11)hadoop/spark之上,至少一種能用之解決問題的方法。如java編程、scala編程或是其它語言的streaming方式的編程。

4、具體項目技術交流(考查對所做項目的深度)

(1)爬蟲類項目,至少對爬蟲的模塊設計、架構設計、常見問題如亂碼、模擬登陸、 反爬、代理等問題熟練有深度的解決方案。

(2)web類項目,至少對某個業務模塊熟練精通,如電商類的高併發設計、OA類的工作流及用戶權限設計實現、支付類的安全性設計實現等。

(3)數據倉庫類項目,至少對倉庫的模型架構設計、層次劃分、倉庫構建方法及性能調優方面的成熟解決方案。

(4)數據挖掘類項目,至少對所應用算法掌握、算法實現的開源工具包及優缺點及主要參數及影響掌握、分佈式處理編程及優化掌握。

(5)其它類項目,主要找到該類項目的重難點能充分流暢說明即可,如果僅限在增刪改查或是邊沿性的東西就不要寫了,會使面試官bishi我們。

5、 工作崗位/專業技術相關(在專業技能上考查深度、廣度、應用熟練程度)

各崗位專業技術不太一致,以我作為數據挖掘工程師崗位為例來說明。

(1) 數據結構考查,數組、鏈表、二叉樹、B樹、B+樹等熟悉掌握。常見問題為單鏈表的反轉、B樹與B+樹的異同步

(2) 排序方法的實現原理及時間與空間複雜度計算,如插入排序之直接插入排序、希爾排序,選擇排序之簡單選擇排序、堆排序,交換排序冒泡排序、快速排序,歸併排序。把這幾個排序方法搞清楚就有把握過排序環節了。

(3) 分類/聚類算法原理講解及開源工具使用,像分類之貝葉期、決策樹、支持向量機,聚類之kmeans、lda。再對如weka、liblinear/libsvm、sklearn、mahout、mlib之一或二熟練應用掌握,過面試關是比較熟容易的。

(4) 案例剖析及效果評估,將之前的偏文字功夫,通過實際應用和效果來驗證之前是否真實掌握,這個是重點環節,也是面試官最看重的地方,畢竟小平同志說的好,黑貓白貓逮著老鼠就是老貓。對於面試官來講,能通過一切方法迅速解決好問題才是王道,而不是紙上談兵,只說不練的假把式。


三、順水推舟,反客為主

如上邊第二點所述,所面的技術模塊及模塊內的點就是那些,這所有的技術模塊又不可能都非常熟悉,所以每當問到某個模塊的問題點時,而你又比較熟悉善長時候,就要順水推舟,把問題給鋪並,讓面試官從中可以找到很多可以瞭解、向你提問挖掘的點。舉個例子:

比如:我善長爬蟲,但面試官沒有做過爬蟲或者做過部分爬蟲,一旦開了這頭,你就要順水下坡,先說你做的這個爬蟲很牛叉,然說牛叉在哪些地方,如亂碼處理、OCR識別、分佈式採集、HA實現、海量數據判重等,做了什麼樣的項目應用,產生了多少錢的收益等。

再比如:我做了用戶畫像,但面試官也做過,一旦開了這頭,你又要向爬蟲一樣,將做的基礎數據組成、層次劃分、模塊劃分、重點問題解決及難點突破、效果評估及線上應用流暢展示出來,讓對方對你所做過的東西的深度、應用都比較信任和認可。


不知不覺已深夜,也是我正式離職完成的當夜,心中無比平靜太坦然,一切都結束和釋然了,要整理下過去後迎接下一份挑戰。希望本篇對各位同學有所收穫。

2016.10.28日晚於北京家中


分享到:


相關文章: