如何在較為惡劣的大環境下,從海量候選人中脫穎而出,獲得心怡的工作機會,升職加薪,開啟職場新篇章呢?
大家需要先搞清楚,面試官是從哪些方面考察候選人的呢?
整體上主要分為:專業能力、解決問題能力、溝通協作能力、成長潛力、文化匹配這五大方面。
於是就可以,在面試之前,積極做系統性的準備;面試中,全力展現這些能力;面試後,復盤總結、查缺補漏、繼續提高自身能力。
下面結合具體案例分析下這五大方面。
一:專業能力
專業能力主要分為深度和廣度這兩塊。
1、技術深度
無論工作經驗多少,學海無涯,知識儲備都是會存在盲區的,但是對於簡歷裡提到的技術點,就需要具備一定的深度了。比如提到了Redis,不僅要能說出來String、Hash、List、Set、ZSet這幾種數據類型。當你又補充說了各個類型的應用場景、每種類型內部的數據結構實現、以及持久化的策略、緩存淘汰的策略、還有與其他存儲組件的選型對比時,面試官就會眼前一亮。
當面試官又問到Redis做分布式鎖的用法,你不僅說出了SetNX還有超時自動釋放鎖的機制,還說出了單機模式下系統可用性的問題,以及集群模式下,Master宕機後和Slave數據不一致造成的安全性問題,又提到了Redlock算法如何來提高可用性和安全性的時候,你的專業能力深度,就可以給面試官留下一個深刻的印象了。
再舉個慄子,有的同學簡歷裡寫了Java基礎紮實,在面試官眼裡,那可能就代表著你至少看過並深入理解了比如String、HashMap、ArrayList、ConcurrentHashMap等常用類的源碼了。
簡單總結下,專業能力深度這一塊,就是不僅要會用,還要懂原理,看源碼,深入到各種細節中去。功夫在平時,要養成習慣,多多積累。
面試過程中,回答問題,要注意體現自己專業能力的深度,需要主動展現你對簡歷提到技術點的深入理解,不要讓面試官擠牙膏一樣的問。
2、技術廣度
技術廣度主要包括技術視野和思維模式這兩方面。
關於技術視野,舉個慄子,比如你項目使用的是微服務分布式架構,面試官大概率會問,你們數據一致性是怎麼保障的?
這時就要先體現你的技術深度了,詳細說出你們系統在數據一致性方面做的具體工作,比如最大努力通知、兜底補償之類的方案。
緊接著,面試官又問,還了解其他的數據一致性解決方案嗎?如果你能說出強一致性的2PC、3PC、Paxos、Raft、Zab;最終一致性的Saga、TCC、Seata(AT和MT模式)以及MQ事務消息等等,這些解決方案的演進過程,各自優缺點和適用場景的話,技術視野這塊,面試官應該會給個高分了。
再舉個慄子,面試官問到了MySQL 的Update操作執行過程,你提到了WAL技術,先寫Redolog,防止機器Crash造成數據丟失,也能提高性能,通過配置還可以減少磁碟IO的次數;緊接著又補充到,Kafka、Rocketmq等消息中間件以及Elasticsearch、HBase、Leveldb、Rocksdb、TiDB、Tair等高性能存儲組件都用到了這種技術,這同樣也可以體現你的技術視野。
面試的崗位級別越高,對廣度的要求也就越高,上文我舉了一個分布式事務解決方案的例子,作為一個資深技術人員,主流的解決方案是應該了解的,可以體現我們的技術視野,因為較高級的崗位需要經常做一些方案設計和選型的,甚至需要做一些架構設計,如果沒有足夠廣的視野,需要長期支撐業務迭代的技術架構,企業不敢讓你搞;扛著整個部門季度KPI的業務大需求,也不敢讓你來做方案設計。
大家可以想想自己項目中有哪些技術點,可以體現自己的技術視野呢?
下面再來介紹下,同樣可以體現技術廣度的,思維模式這塊。美團的同學可能聽過,BeafQPS方法論,具體如下。
BenchMark(對標),做方案搞架構,要了解部門、公司內、業內的通用和先進解決方案,進行對標。
Efficiency(效率),方案設計要高內聚、低耦合,易擴展,易維護;重複的工作自動化等等,要經常思考如何提高效率。
Architecture(架構),要符合簡單、合適、可演進的原則,好的架構,可以提高迭代效率,降低研發成本,提高系統穩定性。
Function(功能),這個是 beafqps 7要素中最基礎的一個,勿忘初心,要實現功能。
Quality(質量),一方面是指可靠性,系統要可測試、質量保障要做好;另一方面是指可用性,要高可用,穩定性要好,需要採取熔斷降級、限流、 耗時重試、兜底補償、立體化監控等措施。
Performance(性能),高並發、低延遲,需要採用無狀態、串行改並行、同步改異步、讀寫分離、分庫分表、慢查詢優化、JVM優化等措施。
Safety(安全),權限要做好控制、鑑權和越權治理,另外還要防範SQL注入、XSS攻擊、CSRF等等。
如果在與面試官的交流中,上面7個要素,你都提到了,絕對是可以說明你的思考已經比較全面了,具備了較好的技術廣度了,如果面試官對你的技術深度,也是有較高評價的話,專業能力這一塊,就過關了。
二、解決問題能力
我認為整體分為:設計能力、編碼能力、問題排查能力,這三方面。
如果說專業能力主要是考察你的知識儲備的話,那麼解決問題能力,則是考察你靈活運用專業知識的能力。
面試官問道,如何設計一個xx功能/服務/系統,這時候,前面提到的BeafQPS方法論就派上用場了。
不僅要實現功能和業務,還要準確的識別出功能/服務/系統的難點,可能是需要高性能,或者需要高可用,或者需要高擴展,也可能是三者都要兼顧等等。
過程中就體現了你的設計能力,既要有敏銳的洞察力,也要有結構化的全方位思考,以及可實操的落地方案。
下面我們來說說編碼能力,有不少工作經驗較長的朋友,出去面試前,都不刷題,認為企業不會讓自己寫代碼,這個僥倖心理不能有呀。
現在越來越多的企業看重候選人的編碼能力,有的團隊,架構師甚至tl,工作中也時常需要寫代碼。
這裡推薦大家面試前要至少把經典題目刷一下,比如二分查找、快速排序、反轉鍊表、層序遍歷二叉樹、給定兩數之和求下標、最近公共子節點、爬樓梯的算法等。
另外比較務實(缺人)的公司會考些工程類的題目,比如懶加載的單例模式、實現生產和消費的demo、多線程交替列印有序數組、負載均衡算法等。
還有的公司會考Sql,需要把join、group by having count、sum、avg等用法複習一下,現在leetcode上也有sql的題了,可以刷兩道找找感覺。
也有的公司會考linux,需要把awk、sed、sort、uniq等關鍵命令熟悉下,典型題目是統計文本中出現次數最多的ip。
再來說下問題排查能力,回答相關問題時,要先定位再修復。
先從監控和異常日誌入手。
如果是業務問題,那麼可能是代碼bug或者網絡抖動造成的業務流程中斷,也可能是某種原因造成的數據不一致,現象就是業務不正確或者業務不完整。
如果是系統問題,比如負載過高、內存不足、磁碟io過高、接口耗時變長、吞吐量降低等問題,需要藉助top、jstack、free、jmap、gcutil等命令,以及apm監控和鏈路追蹤系統,完成定位。
定位之後,要給出短期和中長期的解決方案,比如負載過高,短期可以通過擴容機器來緩解,中長期可以去優化代碼,調整線程池參數,減少線程上下文切換次數,優化慢查詢,防止請求堆積,消耗cpu和內存等。
再比如,發現是數據不一致導致的問題,短期的話,可以完善監控,並通過修復接口手動修數據;中長期的話,如果是主從延遲問題,可以核心鏈路強制讀主庫;如果是分布式事務問題,可以採取最大努力通知、事務消息、tcc、seata等解決方案。
解決問題能力,只靠積累專業知識是不夠的,需要多實踐,多總結。
如果說專業能力和解決問題能力是硬實力的話,那麼下面我們要討論的就是軟實力。
三、溝通與協作能力
無論作為leader還是團隊成員,我們都需要與很多同事一起工作,如果溝通與協作能力有問題的話,可能會降低團隊的整體工作效率和質量、影響團隊的士氣和氛圍。因此,面試官也會觀察候選人這方面的能力。
如何在平時提高溝通與協作能力,並在面試過程中,更好的體現出來呢?
很多內向的朋友可能會覺得這是一種天賦,與性格有關,自己不是那塊料沒法提高呀,我想說,因為大多數人的努力程度是非常低的,所以還遠遠沒有到拼天賦的地步。
建議這些朋友,抓住團建、聚會、吃飯、散步、打電話的時間,多與身邊人交流聊天,久而久之,溝通能力一定會提高。這裡也有個短期的特訓技巧,去app商城搜一下「語音聊天」,試著下載兩三個,每天與上面的陌生人聊30分鐘,堅持一周,溝通能力就會有明顯效果~
下面再說下協作能力,首先要有同理心,人無完人,我們不能用對家人和朋友的期望,來要求每一個同事、每一個面試官。
比如面試官遲到了、或者說話不好聽了、作為候選人,可以適當理解包容、惡劣情況下也要審時度勢,權衡利弊,當然,必要時我們也要堅守自己的底線和原則。
另外要補充的一點就是,很多較為高級的職位,工作職責都會包含日常指導初中級工程師、跨團隊溝通、統籌協調、項目管理、團隊管理等,因此越是工作經驗豐富的朋友,越要注意提高自己的溝通協作能力。
面試過程中,不卑不亢、語速正常、注意抑揚頓挫,不要想機關槍一樣,一個聲調突突突,那樣面試官會聽的很累,抓不住重點。保持微笑,與面試官真誠的交流互動。溝通協作能力這塊就會有個不錯的分數。
四、成長潛力
企業招一個人的成本是很高的,尤其是高端崗位,企業一定不希望候選人入職待個一年半載就走的,這樣不利於團隊的穩定性和梯隊建設,也不利於企業的發展,因為新人入職的前半年,基本都在熟悉業務、系統、流程、團隊等,真正做出重大貢獻的時候,往往是需要一些時間去積累和沉澱的。
因此,企業對候選人的成長性是有期望的,面試官會看,候選人過往的經歷有沒有在較短時間內,完成新業務或系統的熟悉,快速做出業績的事例;也會看候選人,對自己做過的事情,有沒有較為深刻的理解,是否善於發現問題,並提出解決方案以及執行落地。
典型的場景是,我們在描述完自己很拿手的項目之後,面試官問,這個項目有沒有可以優化的地方?如果候選人能夠脫口而出,把當前的問題,短期、中期、長期的規劃,清楚的說出,就可以體現出很好的主動性,這也意味著成長潛力。
最近面試了一個同學,簡歷裡寫的項目,用到了限流的高可用手段,上面還寫了具體用的是令牌桶算法,於是我就問,還了解其他的限流算法嗎?他表示不清楚,由此可以初步判斷,這位同學的主動性和成長潛力可能是一般的,這個例子,給我們的啟示就是,工作中使用的技術,不要僅僅停留在使用層面上,也要去了解原理,深入細節,了解選型的原因,這體現了主動性,也體現了成長潛力。
五、文化匹配
通常這方面都是由主管、總監、vp、hr來考察的,有的面試官很坦誠,「我們這裡加班很多,早10晚10,996,你能接受嗎?」,也有的會通過詢問離職原因了解候選人的三觀,面對這種問題,offer收割機可以如實作答,因為面試也是雙向選擇;對於手上沒有offer的朋友,可以適度修飾作答。
每個企業都有自己的使命、願景和價值觀,候選人面試前可以提前做好功課,如果順利面到後面,適當的表達自己對企業文化的認可,會有很大加分的。
最後要說的是,面試其實沒有攻略,功夫在於日復一日一點一滴的積累和思考,希望這篇文章,能讓大家對技術人的能力模型、思考框架,有個較為系統的認知。
人生路漫漫,幫助我們走向人生巔峰的,一定是我們真實的能力~~
所以一起苦練基本功吧,也請大家關注我的視頻號,會持續給大家提供更專業、更精彩的短視頻和文章,包含專業知識與原理、架構設計、職場感悟、理財知識、人生趣談等內容。
期待與大家一起成長~