国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

程序員面試時什么最重要

工程師人生 ? 來源:工程師吳畏 ? 2018-12-17 14:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

程序員面試一直是社區樂于討論的熱門話題。我自己從06年實習以來,先后經歷了4家軟件公司,全部是外企,其中有世界500強的通信企業,有從事期權期貨交易的歐洲中等規模的金融公司,也有為大型汽車制造商開發Android智能汽車的新興公司。跨入IT行業以來,我在求職過程中經歷過多次面試,最近兩年也有過多次面試別人的經驗。我感覺現在到了對這個問題發表自己看法的時候,這篇文章是我站在面試官角度對于程序員面試問題的一個階段性反思和經驗總結。

目標

相信和不少朋友一樣,有了幾年工作經驗成為Senior后就開始了面試別人的經歷。我在最初這個階段只是按照自己的想象把”找到基礎好的程序員“,”找到算法能力優秀的程序員“,”找到有Android開發經驗的程序員“等作為面試的目標。但是,實際的經歷告訴我,尤其是按“基礎好”,“算法好”這些目標招到的人最終效果并不好。比如,有的面試者基礎知識和算法掌握情況不錯,進程、線程、內存等概念清晰,基本的Hash,二叉樹,快速排序等數據結構和算法也比較熟悉,但是進公司后在實際工作中表現得很糟糕。后來,我才發現原來是我的面試目標出了問題,我原先的面試方法更像是大學的算法或操作系統期末考試,按照這種方法讓許多并不合適的人通過了面試,同時也可能錯過了許多合適的人。

后來,我的反思是,從公司的角度講,面試的根本目的是找到“能夠干好工作”的人,而“高學歷”,“算法好”,“基礎好”,“有經驗”這些都是表象而不是根本,它們并不能直接和“工作好”劃等號。

方法

目標明確了,但接下來的問題是假設面試者是一個黑盒系統,“工作好”不是直接可觀測變量,你所能直接觀測的變量是基礎、算法、經驗、學歷、性格、談吐、年齡等等。所以,實際上,你只能從“基礎好”,“算法好”等可以直接觀測的量去推測“工作好”的概率,這就是一個在“X好“條件下“工作好“的條件概率問題:P(工作好 | X好)。

根據這個模型,面試所應該考察哪些方面就很明顯了,那就是選擇那種最具有區分性的方面來考察。比如,考察面試者的體型特征沒有太大意義,因為P(工作好|高),P(工作好|矮),P(工作好|胖),P(工作好|瘦)的概率都差不多;所以,體型特征不具有區分性,這不是面試所應該關注的內容。

面試官應當結合職位的要求明確哪些因素具有比較好的區分性。比如,如果要招一名技術門檻比較高的3D游戲引擎開發工程師,面試者A具有3D游戲引擎開發的經驗,但是在基礎知識和算法面試方面表現一般;面試者B相反,基礎知識和算法面試表現很好,但沒有游戲開發經驗,而你只能選擇其一。你選誰呢?其實,這就是兩個條件概率問題P(工作好|經驗好,基礎一般,算法一般)和P(工作好|沒經驗,基礎好,算法好)。這個問題就留給面試官來判斷了,就我個人而言,對于技術門檻較高需要技術積累的職位,經驗更加說明問題,因此,我更傾向于面試者A。

下面,我再結合自己的經驗談談對面試中常見方面的看法。

算法

算法是Google和MS等大公司面試所重點考察的內容。我個人很喜歡算法,曾經參加ACM/ICPC拿過北京賽區的13名。但是,就個人經驗來看,我所接觸過的絕大多數開發職位而言,算法都不適合作為考察面試者優劣的主要因素。對于普通的非算法性開發職位,考察面試者的算法就相當于考察他打乒乓球好不好一樣,與目標“工作好”的相關性太低。就我個人的經驗來看,差不多P(工作好|算法好)=50%,也就是算法面試沒有太大的區分性。

甚至,還有一種很不好的情況特別多地出現在算法好的面試者身上,我稱之為“只磨刀,不砍柴”。什么意思呢?有類人只對什么A*算法,異步編程,JVM類加載機制這種純技術問題感興趣,對實現用戶需求毫無興趣。這類人看起來有一定的技術能力,但是對公司來講貢獻十分有限,甚至不如技術一般但認真負責的人。所以,一旦遇到面試者算法好,我就特別留意考察會不會是這種“只磨刀,不砍柴”的人。

另外,雖然我個人不了解Google和MS,但我對于其特別重視考察算法能力的面試策略是持懷疑態度的。即使在這樣的世界級大公司,算法雖然重要,但可以想象在項目實施過程所遇到的各種各樣問題中,算法問題絕大多數時候不會是主要瓶頸,沒有到那種需要每個人都是算法高手的情況。實際上,絕大多數項目真正難點并不是一兩個算法瓶頸,甚至也不是單點的技術瓶頸,而是系統性的組織、協調、設計、開發問題,有大量的看起來不是那么有技術含量的臟活累活,也有許多問題是由于信息不足,并不是技術能力強就能克服這些困難。一個團隊最好優勢互補,有人算法強,有人業務分析能力強,有人擅長后端服務,有人擅長前端界面,有人聰明,有人踏實,這是最好的。如果按照“算法好”的單一標準選材,必定會把許多優秀的人才拒之門外。

補充:在更多地了解了Google和Facebook等一流公司的面試細節之后,我對這個問題的認識有了一定的改變,實際上這些公司在面試過程中并不完全強調技巧性很強的算法,而是更加注重編碼(Coding)能力,只是在進行編碼測試的過程中往往是通過一些簡單算法題來進行的。我對于這種面試方法越來越欣賞,并且也作為了我們公司面試過程中的重點環節,因為編碼能力的測試是十分必要的,它有著知識性問題無法取代的作用,如果一個面試者連“判斷一個字符串是否是另一個字符串的子串”這樣的題目都無法正確并快速地實現,那么基本上可以直接排除了。我這里所強調的是不必考察高難度的算法問題,并非不重視編碼能力測試,請讀者不要誤解。

基礎

基礎面試是指考察諸如指針使用、進程線程概念等基礎知識的面試,十分類似于大學期末考試題。我曾經以為基礎面試十分重要,但是現在不這么看了。在工作中基礎的確是重要的,但是在面試過程中,它必須具有區分性才有意義,也就是說P(工作好|基礎好)的概率要高,那么考察指針使用,進程線程區別這樣的基礎題目才有它的意義。我的實際經驗是,基礎面試并不具有很好的區分性,和算法一樣, 差不多P(工作好|基礎好) = 50%。同時,基礎面試是最容易準備的,中國人有長期的應試教育經驗,要準備幾個把玩指針題目太容易了。

我曾經遇到過這樣的面試者,他的C語言基礎和編譯、鏈接等原理掌握得非常好,給我留下了深刻的印象,我給的面試結論是:知識面不寬,只會C語言,但基礎很扎實,建議錄用。后來的事情證明了那個結論的前半部分是對的,但是”建議錄用“錯了。他在實際工作中表現得一塌糊涂,不理解需求,不理解整體架構;同時,上班時間不是花在項目上,而是花在閱讀諸如《程序員的自我修養》之類的書籍上。最后,這位同事由于長期“不出活”離開了公司。

基礎不是不重要,而是“基礎好”不足以說明面試者能干好工作,因為基礎是屬于局部性知識,而實際工作需要綜合性能力,二者有天壤之別。C語言、操作系統能考高分,但是不會寫程序的人在大學我們還見得少嗎? 軟件開發就像蓋房子,綜合能力是設計和搭骨架,基礎知識是碼磚。張小龍原先Foxmail是Delphi開發的,他它不懂C#,你如果要招聘一個開發.NET Email客戶端的人,你考察他對CLR掌握得好不好有意義嗎? 讓張小龍來開發一個C#版的Foxmail真的會有困難嗎? 你招一個精通C#但沒有Email客戶端開發經驗的人來真的比張小龍靠譜嗎?

我說基礎知識不重要,和古人說的“不積洼步無以至千里”是不是矛盾呢?不矛盾!“洼步”與“千里”是一種可累加關系,但再多的“基礎知識”都累加不成“綜合能力”。學習軟件開發要像持續集成一樣,一開始就是一個完整的系統,雖然規模不大,問題很多,但它麻雀雖小五臟俱全,從小系統到大系統,從簡單系統到復雜系統逐步演化。

所以,基礎好本身不足以說明太多的問題,必須進一步考察綜合能力。對于基礎面試表現不好的面試者,如果時間允許也要進一步考察,有的面試者其實是有能力的,只是沒有進行充分的準備。最理想的狀態當然是基礎和綜合能力俱佳,若不能兼顧,應當綜合能力優先。

經驗

這里所說的經驗不是通過工作了多少年來衡量的,而主要是指面試者的經歷,比如,是否完整地實現過一個軟件,或作為主要開發者完成過一個項目。經驗的重要性在于它能說明一個人的綜合能力。從項目的性質、規模和難度,面試官就可以大致判斷出面試者的綜合能力。如果一個面試者一直在大公司負責一個小模塊的開發維護,那么基本可以判斷他不具備獨立或作為主要開發者承擔一個項目的能力,只適合在另一家大公司做類似的事情。對于門檻較高需要長期技術積累的職位,相關經驗更顯得尤為重要,比如,Linux內核開發,JVM開發,游戲引擎開發,數據庫實現,高級UX等。對于這類職位,沒有經驗的面試者即使綜合素質不錯也是需要長時間的學習和積累才能勝任。所以,基本上如果確定了你的職位屬于此類,那么相關經驗毫無疑問應該成為首選因素,換句話說,P(工作好 | 相關經驗好)的概率是非常高的。

通過項目經驗判斷面試者的優劣比通過基礎和算法測試更加靠譜,所以,面試過程中面試官應該花比較多的時間聽面試者介紹項目經驗,并進行深入地探討交流,了解面試者的知識面、思維能力、表達能力等。同時,可以結合項目提一些基礎知識和算法的問題,比如,如果面試者做過C++相關的項目,那就可以問他如何進行內存管理?是否熟悉智能指針?如果面試者的回答不能令人滿意,那么就基本上可以判斷他的項目做得不是很好。

要注意的是,經驗也是一個多維度的事物。比如,C++股票交易中間件系統,這就涉及(C++,中間件,股票) 3個維度。假如面試者A做過C++股票交易客戶端,面試者B做過C的股票交易中間件。從語言角度看,A最匹配,從項目性質看,B最匹配,你如何選擇?這就是在多個維度中,哪個維度更重要的問題,就這個例子而言,我個人更傾向于B,因為我認為中間件開發經驗是主要矛盾,而從C切換到C++并不是問題。所以,面試官需要判斷哪一種經驗是主要的,而哪一種經驗是次要的。比如,我們招聘Android應用開發,這個職位的Android技術門檻并不高,它的真正難點在于做出好的用戶體驗(UX)。所以,如果一個面試者沒有Android的經驗我們是可以接受的,但是我希望他在UX方面有經驗,至少做過其他平臺的移動應用開發。

性格

現在,我來談我認為最重要的因素:性格。這可能是許多初為面試官的朋友所難以想象的,怎么會是性格最重要呢?說實話,當我意識到這一點時,我自己也很驚訝!說白了,還是 P(工作好|性格好)的概率最高啊。我的實際經驗是,如果一個人的性格好,他能把工作做好的可能性是最高的,性格好遠比基礎好、算法好要靠譜。

一個人如果技術上有缺陷,經驗上有不足,但性格好,在團隊中是很容易由其他人來補位的,他自己也很容易逐漸補起來;相反,如果一個人的性格不好,所有的技術優勢經驗優勢都發揮不出來,甚至還會起到負作用,而且性格缺點很難改變。我一直談到實際工作所需要的是綜合性的能力,這種綜合能力的發揮中性格是至關重要的。項目中不止會遇到技術問題,要涉及溝通、協調,不同的人不同的部門既有合作又有磨擦,如何處理這些事情都需要一個良好的性格。可以說,在開發團隊里讓你與眾不同的不是你從哪個學校畢業,也不是你過去的經驗,而是你的性格。

當然,性格是一個復雜的東西,它包含了很多的方面,并非所有方面都是程序員面試所需要關注的。我的經驗是可以重點考察這些方面:

1) 態度積極還是消極。有的面試者在談吐中就會自然給你一種積極上進的感覺,或者你可以在他的經歷中發現他積極的因素,這些都不是太難看出來的。相反,有的面試者你能明顯感覺到他的消極情緒。積極性在工作中是十分重要的,積極的人能給團隊帶來朝氣,也更易于合作。基本上,如果確定面試者屬于態度積極的,他通過我這一關的可能性就會大大增加;相反,如果確定屬于態度消極的,即使技術能力不錯我也會十分謹慎。

2) IQ。我的經驗是,總體來看,聰明的人在工作中的表現更為優秀。在面試中要考察一個人是否聰明并不一定要像Google和MS那樣找些專門測試IQ的智力題,其實,你只需要看他討論問題是不是很有邏輯性,思考和說話是不是反應敏捷就可以做出大致的判斷。另外,眼睛是人心靈的窗戶,一個人聰明與否,眼睛是會說話的。不過,聰明也不完全是優點,比如,當公司或項目遇到困難時,往往是聰明人先跑掉了,堅守的往往是IQ一般的人。

3) 語言表達能力。語言表達能力也是程序員十分重要的一項素質,它關系到項目中的溝通是否順暢。面試官可以看看面試者能否用簡明的語言介紹清楚曾經做過的項目,能否抓住要點,能否考慮到聽者的相關背景。一般來講,語言表達能力強的人綜合能力都不會太差。

4) 是否具有用戶意識。有人說程序員是做研發的,哪來什么用戶?只有銷售、市場人員才會和用戶打交道。其實,這是完完全全的錯誤認識。你寫一個模塊,甚至一個API,只要有別人用,他就是你的用戶。有的程序員設計一個模塊或是一個軟件總是習慣于從使用者的角度來考慮,盡量地方便使用者,這就是一種良好的用戶意識。具有良好的用戶意識的人更能考慮別人的感受和整體的需要,而不是單純地從自己和局部來思考問題。當面試者談及過去的項目經驗時,面試官可以常常站在用戶的角度對其進行提問,從這個過程中觀察其是否具有良好的用戶意識。

5) 如何應對質疑和壓力。面試官應該對面試者的回答以及以往項目進行合理的質疑,看看他如何應對。曾經有一位面試者談到做游戲登錄服務器的經歷,我就問:“如果登錄服務器掛了,怎么辦呢”?他說原先雖然沒有考慮這個問題,但是可以怎么怎么改進。其實,大家都理解項目中有各種不完美,這里面原因很多,只要面對質疑和壓力能從容應對努力往好的方向思考解決就可以了,不需要掩飾缺陷,更不應該有情緒。我遇到過有的面試者,一旦你對其項目提出質疑,他馬上產生反抗情緒,或不高興,或不承認有問題,這很容易一下子看出來他在工作中容不得質疑和批評,這種人要想合作就很困難。

6) 個性特點。許多面試者喜歡在簡歷上寫“精通C++/Linux“,這些字眼看得人麻木,如果有人寫”喜歡C++/Linux“,我就會有一種眼前一亮的感覺。“精通”是沒有感情色彩的敘述,而“喜歡”包含了面試者的個性,我更愿意看到面試者的個性。我相信對某樣東西真正的熱情遠比你當前對它的掌握程度更為重要。其實,N年的經歷告訴我們,同一個班的同學,同一個項目組的同事,雖然每天所學的知識,所接觸的工作都是相同的,但其實每個人的成績和表現差異是十分明顯的。那么,到底本質的差異是什么呢?其實,就是每個人的個性。是個性使得有的人業余時間去打球,有的人業余時間去看書,有的人喜歡Linux,有的人喜歡Mac。一個人在團隊中扮演的角色也和他的個性有很大的關系。面試官應該引導面試者展現自己的個性,并判斷其是否有益于團隊。

總結

最后總結起來,我的經驗是: 1) 面試官的目標是找到”工作好“的人,一定要圍繞這個目標來進行面試,如果把面試當成了算法或操作系統期末考試這就走入了誤區;2) 面試過程是通過學歷、性格、基礎、經驗、算法等可以測試的因素去綜合判斷面試者“工作好”的概率;3) 在各種因素中,性格 》 經驗 》 基礎 》 算法。性格是最重要的,如果性格不好,所有技術能力都會大打折扣,而且技術缺陷容易彌補,性格缺陷很難改變;經驗體現了一個人的綜合能力,你可以從面試者過去的經歷中判斷他能從事哪種工作,不能從事哪種工作;基礎和算法則主要起到輔助參考的作用,基礎好的程序員一般適應性比較強,學新技術更快,但是切忌單純從基礎來判斷一個人的能力。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 程序員
    +關注

    關注

    4

    文章

    956

    瀏覽量

    30940
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    面試必看!排隊自旋鎖32位變量的域劃分與核心作用

    核心數據結構的域含義模糊不清,導致面試時錯失高分。今天這篇文章,我們就從面試視角拆解 32 位變量的域劃分、各域作用,再結合流程圖理清工作機制,幫你徹底吃透這個考點。
    的頭像 發表于 02-09 16:54 ?808次閱讀
    <b class='flag-5'>面試</b>必看!排隊自旋鎖32位變量的域劃分與核心作用

    堆棧的原理揭秘

    百度百科試圖傳遞的信息翻譯為人話: 2. 為什么需要堆棧?首先,為什么需要堆棧?真的是搞計算機的那幫宅男吃飽了撐的嗎? 【編者注:必須不是!魯迅曾經說過:“不想偷懶的程序員不是好程序員”,就算是吃
    發表于 01-23 07:08

    芯盾時代SDP助力企業應對核心機密泄露危機

    無論你是程序員、文案、財務,無論你想擼代碼、出海報、做報表,各式各樣的AI總能滿足你的需求,讓你的工作更加輕松。
    的頭像 發表于 12-26 11:49 ?665次閱讀

    大理的AI野心藏不住了——風花雪月中千名程序員探討人工智能

    2025 年12月4日至6日第二屆CCF程序員大會暨大理人工智能與應用國際開發者大會在大理圓滿落幕。
    的頭像 發表于 12-24 17:45 ?719次閱讀
    大理的AI野心藏不住了——風花雪月中千名<b class='flag-5'>程序員</b>探討人工智能

    AI面試,正在變成一場沒有人的表演

    優化了數十份簡歷后,拿到了心儀面試;有人靠實時輔助軟件,順利通過了某國企的AI視頻初篩。 當企業用AI快速篩選簡歷、用虛擬人進行第一輪面試時,求職者也開始用AI武裝自己,試圖以技術對抗技術。 一個怪圈已然形成: 企業部署AI以求效率,
    的頭像 發表于 12-23 16:36 ?7933次閱讀
    AI<b class='flag-5'>面試</b>,正在變成一場沒有人的表演

    程序員最常見謊言

    了。 28我已經測試過了,這個功能沒問題,可以上線了。 29別擔心,這個問題很快就能解決。 30代碼快寫完了,已經完成 90% 了 。 希望大家對程序員多一些容忍以及諒解! 各位程序員你們都被我說中了哪些?說說你們的觀點
    發表于 12-10 08:24

    軟通國際亮相2025沙中開源與AI科技峰會

    2025年11月11日,由沙特程序員協會(parmg)主辦的"2025沙中開源與AI科技峰會"在利雅得盛大啟幕。
    的頭像 發表于 11-14 17:45 ?1475次閱讀

    奔赴熱AI,碼力全開!Talkweb House@1024程序員日系列活動圓滿收官

    1024程序員日”系列活動至此劃上了一個圓滿句號。本屆1024程序員節以“AI構建世界,智能引領未來”為主題,廣邀技術大咖、產業領袖、企業代表與全球開發者齊聚星城
    的頭像 發表于 10-27 18:59 ?780次閱讀
    奔赴熱AI,碼力全開!Talkweb House@1024<b class='flag-5'>程序員</b>日系列活動圓滿收官

    開鴻智谷“以賽促學、以賽選才”|1024程序員節暨開源鴻蒙構建大會圓滿落幕!

    10月24日,由開鴻智谷聯合主辦的長沙1024程序員節暨開源鴻蒙構建大會在長沙圓滿落幕。本次活動以“湘聚長沙,共赴熱AI”為主題,通過技術分享與實戰競賽相結合的方式,著力培養“開源鴻蒙+AI”領域
    的頭像 發表于 10-27 17:58 ?705次閱讀
    開鴻智谷“以賽促學、以賽選才”|1024<b class='flag-5'>程序員</b>節暨開源鴻蒙構建大會圓滿落幕!

    程序設計與數據結構

    的地址)出發,采用推導的方式,深入淺出的分析了廣大C程序員學習和開發中遇到的難點。 2. 從方法論的高度對C語言在數據結構和算法方面的應用進行了深入講解和闡述。 3. 講解了絕大多數C程序員開發
    發表于 05-13 16:45

    計算機網絡排錯思路總結

    明人不說暗話,這篇文章我們來聊一個非常有用,同時也是程序員必備的技能,那就是網絡排錯思路大總結。
    的頭像 發表于 04-01 17:32 ?891次閱讀
    計算機網絡排錯思路總結

    進程、線程、協程傻傻分不清?一文帶你徹底扒光它們的\"底褲\"!

    各位程序員朋友(和假裝懂技術的同事):如果你在面試時被問到:\"請用奶茶店類比進程、線程和協程\",而你回答:\"進程是老板,線程是員工,協程是兼職...\"
    發表于 03-26 09:27

    如何在 樹莓派 上編寫和運行 C 語言程序

    ,一本很好的書是BrianKernighan和DennisRitchie所著的《TheCProgrammingLanguage》。這本書對經驗豐富的程序員和想學習C語
    的頭像 發表于 03-25 09:28 ?1156次閱讀
    如何在 樹莓派 上編寫和運行 C 語言<b class='flag-5'>程序</b>?

    零基礎入門:如何在樹莓派上編寫和運行Python程序

    是一種非常有用的編程語言,其語法易于閱讀,允許程序員使用比匯編、C或Java等語言更少的代碼行。Python編程語言最初實際上是作為Linux的腳本語言而開發的。Py
    的頭像 發表于 03-25 09:27 ?2039次閱讀
    零基礎入門:如何在樹莓派上編寫和運行Python<b class='flag-5'>程序</b>?

    Gemini Vision + Raspberry Pi 化身“數字導盲犬”?

    本文討論了一位程序員利用樹莓派、攝像頭、Gemini和Python構建PeregrineEye設備,使其成為“數字導盲犬”為視障者服務的項目經歷,包括項目靈感、功能、構建過程、遇到的挑戰及未來計劃等
    的頭像 發表于 03-25 09:20 ?1924次閱讀
    Gemini Vision + Raspberry Pi 化身“數字導盲犬”?