程序員面試要準備哪些方面的內容?

為啥好多面試都是一個勁的問某個API叫什麼名字,某個參數是幹啥用的這種?我還以為就上來問個兩三題,好幾家第一輪都幾乎全是這種問題,毫無疑問,比如昨天剛用過的可能能答出來,其他就答不出來了。

把所有API都背下來顯然不現實吧。這有什麼準備的訣竅么?


我近5年在T社也面過不少校招社招(包括遊戲和非遊戲的程序員職位),也提供過筆試題,應該可以回答一下。

我不問API問題。

我會先問一些可以即時推導的簡單問題,通常是和數學應用有關。問題其實都不太難,主要是想看思考分析過程,以及能否發現一些需要特別處理的 corner cases。我發覺在校學生通常都不錯,反而工作多年的會比較差一點。

另外,會給定一些需求讓候選人嘗試做一個軟體設計(如候選人認識的話會要求以UML表示),再問該設計的優缺點,能否改善缺點,trade off是什麼等。如果能合適地套用設計模式,方便溝通,可能會加印象分。

編程語言方面,很多時候筆試已經考過。所以我主要會和候選人討論一些概念,以及編譯器/程序庫/運行時一般會怎樣實現那些功能(或想像可以怎麼實現)。如果候選人聲稱精通某些語言,就會嘗試問得深入一些。

如果是有領域經驗的,我更希望談多些相關話題。相對於我問一些我了解而候選人不太了解的問題,我更希望候選人能告訴我一些我不知道的事情。如果能簡單清楚地描述一些較深入的技術、創新點,那就最好不過。

面試是為了雙方了解是否適合對方,候選人最好也準備一兩條希望知道、但不能簡單在搜尋引擎中得到答案的問題,好的面試官應該會給與發問機會並儘力回答。


前陣子,我司的職業顧問們以程序員為例,整理了一份「準備面試七步走」攻略,在之前舉辦的知乎live 如何更好地準備下一次跳槽? 里分享過,這裡重新整理下分享給大家,乾貨滿滿,拿走不謝。

第1步:你要知道你是誰

參加面試前,要給自己的角色和職位做一個定位。其中你最應該關注的是你自己的崗位職責還有技能是什麼,你在這個領域沉澱了什麼。只有詳細地分析清楚了這些,之後才能在面試中更加自信地表現你自己。

第2步:你要知道你想要什麼

你的目標崗位是什麼?基於你之前的工作經歷和行業趨勢,給自己制定一個至少3年的規劃,其中包括業務、技術上的提升計劃。還有綜合能力的提升規劃,比如協調能力、溝通能力、執行能力等。

這個規劃不是執行很久都一成不變,而是根據實際情況不斷微調,以適應最近情況,讓自己的職業規劃可以銜接下去。

比如在程序員中有一個比較常見的話題:應該走技術路線還是管理路線?尤其是一些工作了6、7年的程序員會面臨這個煩惱。

該如何權衡?首先,你需要了解技術和管理職位的區別,其次,要結合自己的性格和特長做選擇。

比如你是一個極客型工程師,狂愛技術,就應該堅持技術路線、往架構師方向發展。

如果你更擅長團隊方向、技術規劃、和人打交道,擅長處理業務問題、協調推動、業務落地和創新,願意做工程師的幕後資源支持等工作,也可以轉型技術管理。

我們見過很多技術leader在面試的時候,遇到處於迷茫期的大齡程序員,比面試官年齡都大。這些人有一些共同特徵:可能工作了7、8年,還是每天重複給業務部門寫代碼,工作內容的重複性比較高,沒有什麼技術含量的工作。問到這些人的職業規劃時,他們也沒有太多想法。

其實30歲到40歲是一個人職業發展的黃金階段,一定要在業務範圍內的擴張,技術廣度和深度提升上有自己的計劃,才有助於在職業發展上有持續的發展路徑,而不至於停滯不前。

第3步:回顧和總結你有什麼

這裡面包括你的基本功,你擅長的開發技能,之前的技能等都要做梳理。

首先,一定要用自己使用比較多的開發語言作為核心開發語言。一般核心開發語言不超過兩個,必須精通才行,深入到原理層。

其次,把自己所在的公司,參與過的核心項目都梳理清楚。把跟自己求職崗位相關的公司經歷和項目重點做一次回顧,尤其是業務細節非常重要。

下面是我們總結的梳理項目的參考步驟:

1.項目背景

2.項目怎麼設計的

3.技術選型和對比

4.實現的細節

5.項目最終的效果

第4步:了解企業想要什麼樣的人

可以通過研究崗位職責、職位描述、瀏覽公司網站、app產品等方式判斷產品的用戶量,可能用到的技術,從而做相應的準備。

第5步:了解對方公司和崗位怎麼樣

全面深入地了解對方的公司,包括公司業務發展歷程、產品願景、迭代周期、團隊風格、技術氛圍、公司目前遇到的問題和挑戰等。

如果準備充足,面試官是可以感受到的,這也會給面試官留下很好的印象。

畢竟跳槽是雙向選擇,你需要對去面試的公司有充分的了解,在面試中可以提出一些比較有深度的問題,把所有疑惑都在面試中解決掉 。

面試官向你提的問題很多是基於公司目前實際情況提的問題。毫無準備會處於比較淺的層次,了解的話面試溝通的質量會更高,回答問題更有針對性。

那麼如何獲取信息呢?你可以上網查,比如知乎、谷歌,也可以問身邊了解那家公司的朋友,如果你是我們平台的用戶,也可以通過諮詢我司的職業顧問去了解,他們比較熟悉行業內很多公司的內部情況。

第6步:你要知道你求職的崗位面試流程是什麼

一般公司都有3-4輪面試。

一面技術面試,考察技術基本功。

二面業務面試或者項目面試,通過不同項目考核你的技術廣度和實踐能力。這種提問會根據你的簡歷做結構化面試,比如請你梳理你之前做過的項目,這個要遵循STAR法則:Situation ,Task, Action, Result。從項目背景、任務、採取了什麼行動、最終結果如何去回顧,梳理自己的業務亮點。分析一下現在回想起來,當時是不是可以有更好的解決方案。

三面是綜合面,會考察技術以外的其他能力,比如軟性技能:執行、溝通、協調等。

最後一面是HR面,會比較關注你的離職原因、求職動機、薪資期望,這些要提前想清楚,避免回答的時候邏輯混亂。

第7步:你要準備幾個問題去問面試官

面試到最後,面試官通常會問:你有什麼問題想問我們的嗎?

這時候不提問題是不可取的,會給人一種不夠積極的印象。其實,面試官讓你提問是有目的的:一方面,他可能想知道哪些問題是你最關心和重視的 ;另一方面,給你一個機會提問,可以突顯你的專業和態度。問得好的話,有加分的可能。

如果完全不問面試官問題,對方可能會認為你不是那麼想進這家公司,或者對這份工作的積極性並不高。

同時最後的提問也要講究技巧。

有的人問的問題格局太小,比如:幾點上班幾點下班?有沒有加班費?有沒有微波爐熱便當等。這些不是重要問題,應該在問完與工作相關的問題後再問。

就算要問也要講究方法。比如:我比較遵循時間,喜歡按時上下班,請問貴公司在上下班時間上有沒有什麼要求?

再就是,提什麼問題比較正確?

一定要提和工作相關的問題。比如更細節的工作內容有哪些?勝任這個職位需要具備哪些條件?主管的管理風格如何?公司未來的發展規劃?

這些問題都比較切題,會給面試官留下很好的印象,他會認為你是很想進入這家公司,才會問這麼多細節。

關於具體可以問哪些問題,下面總結了幾個還不錯的問題供大家參考:

  • 這個職位在公司的具體職責是什麼,目前最緊要的任務是什麼?
  • 公司對我面試的這個崗位的定位是什麼,最希望這個人達成的工作指標有哪些?
  • 如果我有幸加入,公司您希望我三個月完成哪些工作?
  • 公司希望通過這個職位實現的長期目標是什麼?
  • 公司的價值觀和願景是什麼?
  • 公司未來一年的發展計劃和團隊規劃?
  • 公司是一群什麼樣的小夥伴,這個崗位所在的的團隊是什麼氛圍?
  • 通過剛才和我溝通,您對我的評價是什麼,您覺得我的優勢和劣勢是什麼?

最後再補充一點,有的面試官在考察完硬性技能後,還會考察你的軟性技能,比如學習能力、團隊協作與溝通能力、自我驅動能力等。

如何展現你的軟技能呢?

我們有一些tips供你參考:

如何考察學習能力?大部分情況下,面試官會追溯你所描述過往經驗的細節來判斷。比如有一個項目你花了半年來完成,別人卻用了一年,這說明你的學習能力比較強;再比如你做了一個開源項目,在github上很多人點贊;或者以你的資歷來說,你掌握的技能高出行業平均水平。

如何考察目標導向?面試官可能會問你做這個項目的目標是什麼。他會問你目標後再追溯你做這件事情的過程,如果你做的過程並不是圍繞著目標展開的,或者後來做的事情偏離了目標,說明你不是一個目標導向的人。

如何考察團隊協作能力?有兩個問題專門用來考察團隊協作能力,比如:

你有沒有做過團隊其他成員的決定? 當時是怎樣的情況?你是如何和其他成員溝通的?最終結果如何?

每個人都會和難搞的人工作過?為什麼這個人難搞?你是如何處理與他之間的關係的?後面通過哪些方法影響這個人?

以上是面試官在考察這些能力時通常會用的方法,大家可以根據這些問題在面試前提前做好相應的準備,不至於在面試時語無倫次。

以上,是「準備面試七步走」的全部乾貨,堅持看到這裡的朋友們,你們真的不點個贊嗎?


程序員不得不知道的技術面試資料大全

網站推薦

  • http://GeeksforGeeks.org 非常著名的漏題網站之一。上面會時不時的有各種公司的面試真題漏出。有一些題也會有解法分析。

  • http://CareerCup.com CC150作者搞的網站,也是著名的漏題網站之一。大家會在上面討論各個公司的面試題。

  • http://Glassdoor.com 一個給公司打分的網站,類似yelp的公司版。會有一些人在上面討論面試題,適合你在面某個公司的時候專門去看一下。

  • http://themianjing.com 面經網。應該是個人經營的一個積累面經的網站。面經來源主要是一畝三分地,mitbbs之類的地方。

  • 一畝三分地。

  • http://mitbbs.com jobhunting版。北美華人找工作必上。

在線OJ及部分題解

  • LintCode - 專門提供面試題在線評測的OJ,篩選比較方便,還可以在source處選擇cc150或者其他來源的題,有階梯訓練系統,不用擔心不知道從哪兒開始刷題。目前會根據系統locale選擇中文或者英文,評判時也比leetcode快,總之是比較贊啦。

  • LeetCode Online Judge - 找工作方面非常出名的一個OJ,相應的題解非常多

  • soulmachine/leetcode - 含C++和Java兩個版本的題解

  • Woodstock Blog - IT,演算法及面試。有知識點及類型題總結,特別贊

  • Acm之家,專業的ACM學習網站 - 各類題解

  • 九章演算法LeetCode / LintCode 題解。上面的題解是專業老師提供的,代碼質量很不錯。

  • 水中的魚。http://fisherlei.blogspot.com/ 。有很多LeetCode的題解。

論壇博客

  • 刷題 | 一畝三分地論壇 - 時不時就會有驚喜放出。

  • VisuAlgo - visualising data structures and algorithms through animation - 相當碉堡的數據結構和演算法可視化。

  • Data Structure Visualization - 同上,非常好的動畫演示!!涵蓋了常用的各種數據結構/排序/演算法。

  • POJ的部分題解 - Category: POJ | Beeder"s Blog

  • 演算法練習 | billryan - 本文協同作者yuanbin的刷題總結和筆記,求大神們輕拍,求大神們輕拍

書籍推薦

  • Algorithm Design (豆瓣)

  • The Algorithm Design Manual, 作者還放出了自己上課的視頻和slides - Skiena"s Audio Lectures,The Algorithm Design Manual (豆瓣)

  • 大部頭有 Introduction to Algorithm 和 TAOCP

  • Cracking The Coding Interview. 著名的CC150,Google, Mircosoft, LinkedIn 前HR離職之後寫的書,從很全面的角度剖析了面試的各個環節和題目。之所以叫CC150就是有150道面試題,除了演算法數據結構等題以外,還包含OO Design, Database, System Design, Brain Teaser等類型的題目。準備北美面試的同學一定要看。

  • 劍指Offer。英文版叫Coding Interviews. 作者是何海濤(Harry He)。Amazon上可以買到。有大概50多題,題目的分析比較全面,會從面試官的角度給出很多的建議和show各種坑。

  • 進軍矽谷 -- 程序員面試揭秘。有差不多150題。


這只是我覺得比較好的來篩選人的方式,一家之言。 可能會讓很多人覺得不舒服,輕拍。
我很高興我的這個答案能引起一些討論。其實我覺的 @Milo Yip 講的已經非常好了。而且表達的比我好。

把評論中的東西補充下:
演算法準備的多在我看來只能說明他有一定的技術熱情,而且是真的技術熱情還是只是為了準備面試而衝刺還很難說。這方面並不應當成為錄取與否的決定性因素。 而且演算法方面的優勢並不能掩蓋層次一中的任何缺陷。 演算法再好,不肯與別人溝通,不肯commit,在我看來一樣是渣渣。演算法是加分項,但是好的工作方式和思考能力是必備項。
面試中我也會考一些演算法,或者簡單的數學上的問題,不過我並不是很在意結果,我更在意的是他思考的過程和方法。
換言之,一個人的可能的成長空間遠遠要重要於他當前的能力。 有些人可能現在不是優秀的程序員,但是稍加培養,多多努力,總有一天會成為一個獨當一面的牛人,一個推動整個項目甚至某些方面整個文明前進的領頭羊,最少最少也會是一個good team player,一個大家遇到問題覺得可以信賴的人。 不管你承認與否,有些人,工作再久,演算法再牛,永遠也成為不了一個可以讓整個項目,團隊覺得可靠,可依賴的人。何況演算法這種,知道就是知道,不知道就是不知道的東西,很難短時間內(一個面試周期內)去衡量這個應試者是真的牛人還是只是準備充分。
況且,保證整個項目團隊的進取心,積極向上的態度,在我看來,比缺少一個這樣的可能的所謂的牛人重要得多的多。

%% ------------------------------- 分割線 ----------------------------------
面了N多人的表示,演算法什麼的我不在乎,我把面試的要求分成下面這幾個層次。
第一層次,必須要有,每一條都是一票否決

  1. 能夠盡最大的努力會完成他的承諾 (混日子的不要,有好的工作態度)
  2. 有好的溝通能力
  3. 能夠融入團隊
  4. 看待事物要積極
  5. 不能太笨

第二層次,最好要有

  1. 有很好的編程技巧和風格
  2. 有主動創新的想法並能推動實現,包括不限於代碼上的,工具上的,項目上的等等等等。
  3. 有技術上的熱情
  4. 某一方面的物長

還有一些,放這兒不太好,就不寫了。

至於 演算法API之類的,我覺得無所謂。不會可以google啊!!!幹嗎非要考一些知道就知道不知道就不知道的東西?相比而言,我更喜歡有想法能實踐的人,遠遠遠遠大於會演算法高傲不幹活的人。

至於準備,我更傾向於審視一下自己的過去,想想哪兒是亮點可以拿出來講,哪兒是缺點,可以避開。自己什麼樣子就什麼樣子吧。不用刻意的準備。


在美帝工作,面試了兩年,包括on campus(等價於電面)和on site(到公司面)。

每個公司對求職者的要求是不一樣的,所以不可能把每個公司的面試都準備好。恰恰相反,你應該準備你認為更有用的東西,因為如果公司考察的是你覺得有用,有興趣,有難度的事情,說明你和公司的步調是相似的,你在這個公司可能會比較舒適。

如果你覺得面試考的稀奇古怪完全沒有意義,你就可以想像,等你進了公司,和你一起工作的夥伴們,就是被這麼篩選進來的,你願意相信他們么?

言歸正傳。

首先是一個基本的自我介紹,這裡應該有至少一長一短兩個版本。短的版本可以在一分鐘以內,包括你的名字,skill set和你求職的目標。長的就要加上一些你個性化的東西,比如你為什麼喜歡做這個,你之前的工作實習經歷,做過什麼特殊的事情之類之類的。這是比較模式化的東西,可以幫助面試官更快地閱讀你的簡歷(是的大部分考官在面試你之前根本不看你的簡歷)。

然後就是對自己之前做過的所有東西的絕對熟悉。你敢寫在簡歷上的就要做好被問到底的準備。所以無論那個項目是不是你做的,你都要把它回憶起來,然後搞明白弄透徹。因為很多考官也不知道問點啥,就會讓你介紹一下之前做過什麼。這時候你不光要能回答問題,還要能從頭簡單地說明整個項目你做了什麼,讓考官聽懂。你的考官可能在你這個項目的領域並不太熟悉,所以要深入淺出。同時要做好你的考官是你這個方向的高手的準備,不要兩句半就被問懵了,至少你做出來的東西要會。

再之後就是刷題,也就是大量演算法的記憶。這個並不能讓你編程水平提高多少,但是可以讓你的面試能力提升很多。這是一個把「能力」考察轉化為「知識」考察的過程。就像高考語文的作文題變成了背誦古詩詞,就更容易拿分了。無論考官是否知道你之前準備過,在現場從容正確地答出考官的問題都是非常加分的事情。

最後也是容易被忽略的,儀容。這是準備性價比非常高的事情。把襯衫熨熨,頭髮剪剪,洗洗臉,剃了鬍子。這些小細節和你工作能力完全沒有關係,但是一個乾乾淨淨的人就是比邋遢的人讓人印象好。

說實話,一個優秀的面試官應該讓他的面試者不能也不必要準備任何東西。如果一個面試者通過短期突擊,可以迅速改變自己在面試官心中的形象,而我們又都知道,一個人的真實水平不會通過短期的突擊提升,那面試官就相當於被蒙蔽了。誠然,「準備」這個態度本身是好的,但是看到面試者真正的實力才是面試官們應該追求的事情。

每次on site之前,總會有人問我需要準備什麼,我都回答:「什麼都不用準備,準備了也沒用。人來了就行。」


是時候拿出來準備了半年的:

太閣程序員面試寶典》(演算法設計、系統設計、數據科學、職業發展、實戰項目)
原文鏈接:BitTiger

部分視頻國內可能需要翻牆訪問

  1. 太閣介紹

    1. 矽谷之路是什麼

    2. 太閣是什麼

  2. 如何學習

    1. 生長學習法簡化版/完整版

    2. 系統設計的基本方法SNAKE原則

    3. 學不懂怎麼辦

    4. 太閣x項目小組新兵訓練營

    5. 如何做好三分鐘視頻

  3. 職業發展

    1. 等級評價

      1. 如何評估你的程序員等級

    2. 找工作

      1. 實戰改簡歷

    3. 轉專業

      1. 文科高考狀元分享如何大跨度轉CS

    4. 溝通

      1. 如何與印度人溝通(一)/(二)

    5. 開源社區

      1. 如何加入開源社區並一起成長

  4. 演算法設計

    1. Leetcode (1)/(8)/(15)/(101)/(202)/(236)/(298)

  5. 系統設計

    1. 基本方法

      1. SNAKE原則

    2. 用戶系統

      1. 如何設計用戶系統(一)/(二)/(三)

    3. TinyURL

      1. 如何設計TinyURL

    4. Typeahead

      1. 如何設計Typeahead

    5. Crawler

      1. 如何設計Crawler(頁面分析)/(多線程並發)/(分散式)

    6. RateLimiter

      1. 如何設計RateLimiter

    7. Twitter

      1. 如何設計Twitter(一)/(二)

    8. WhatsAPP

      1. 如何設計WhatsAPP(一)/(二)

    9. 面向對象(OOD)

      1. 面向對象設計之21點撲克/(停車場)/(成就系統)

  1. 數據科學(數據分析+機器學習)

    1. 入門

      1. 如何入門機器學習

      2. 數據科學家在公司做什麼

      3. 機器學習的分類

      4. 該不該轉型機器學習

    2. 應用

      1. 廣告搜索

        1. 搜索廣告內部原理精華版

        2. 搜索廣告內部原理完整版

      2. 深度學習

        1. 大規模深度學習的應用

        2. 深度學習與無人車/機器人

        3. Google在機器學習的探索

      3. 推薦系統

        1. 如何做好推薦系統

        2. AppStore之推薦系統(一)/(二)

      4. Airbnb大數據預測

        1. Airbnb機器學習實戰

        2. Airbnb大數據預測(一)/(二)/(三)/(四)/(五)/(六)

      5. 圖像問答

        1. 實戰深度學習之圖像問答

      6. 用戶分析

        1. 實戰R語言用戶分析

  2. 編程語言

    1. 函數式編程

      1. 函數式編程

      2. 深入淺出Haskell

    2. Python

      1. Python語言及社區

    3. R

      1. R語言用戶分析

    4. Java

      1. AppStore之Java前端(一)/(二)/(三)

  3. 前端技術

    1. JavaScript

      1. React

        1. ToDoList之React

      2. Meteor

        1. AppStore之Meteor前端

  4. 後端技術

    1. 伺服器

      1. Web伺服器

      2. Node.js

      3. Loadbalancer(一)/(二)

    2. 平台

      1. Docker

        1. Docker精華版

        2. Docker完整版

        3. Docker實戰之Online Judge Platform

      2. Microservices

        1. Microservices精華版

    3. 存儲資料庫

      1. NoSQL精華版

      2. 深入淺出Bigtable

      3. MongoDB精華版

      4. Cassandra內部原理

      5. Redis內部原理

    4. 文件系統

      1. 深入淺出Google File System

      2. 深入淺出Alluxio (Tachyon)

    5. 版本控制

      1. Git內部原理

    6. 計算框架

      1. MapReduce

        1. 深入淺出MapReduce

      2. Hadoop

        1. Hadoop內部原理

      3. Spark

        1. 深入淺出Spark(一)/(二)/(三)/(四)/(五)/(六)/(七)/(八)

        2. 實戰Spark性能優化

      4. Heron

        1. 從Storm到Heron的Twitter實時大數據之路

      5. Kafka

        1. Kafka和日誌系統

        2. Kafka Connect內部原理

    7. 公司技術架構

      1. Twitter

        1. Twitter架構進化之路

        2. 從Storm到Heron的Twitter實時大數據之路

        3. Twitter搜索引擎升職記

      2. Google

        1. 深入淺出Google File System

        2. 深入淺出Bigtable

        3. 深入淺出MapReduce

        4. Google在機器學習的探索

        5. Google地里位置庫內部原理

      3. Uber

        1. Uber架構的從0到1

        2. Uber實時架構的從1到萬

        3. Uber內部原理RingPop

      4. Tencent

        1. 微信後台演進之路

  5. 創業

    1. 創業公司的一百天精華版

    2. 創業公司的閃電式擴張精華版

    3. 創業公司的閃電式擴張現場版(一)/(二)

    4. 矽谷歷史

  6. 產品經理

    1. 矽谷產品解析

      1. Quip/Quartz/Juno/GrubMarket/DuoLingo/EverString/Coffee Meets Bagel/Magic Leap/Doordash/Oculus/YouTube VR/Houzz/Betterment/Down To Lunch/Stripe/Sound Hound/Smarking/運動相機/360相機/Facebook相機

    2. 產品經理之路(一)/(二)/(三)/(四)

  7. 項目實戰

    1. 教程

      1. AppStore之爬蟲、推薦系統、前端

        1. AppStore架構介紹

        2. AppStore之爬蟲(一)/(二)/(三)

        3. AppStore之推薦系統(一)/(二)

        4. AppStore之Meteor前端

        5. AppStore之Java前端(一)/(二)/(三)

      2. Airbnb大數據預測

        1. Airbnb大數據預測(一)/(二)/(三)/(四)/(五)/(六)

      3. Python

        1. 實戰Loadbalancer(一)/(二)

      4. Android

        1. MiniFlickr之Android(一)/(二)

      5. React

        1. ToDoList之React

      6. iOS

        1. Find-My-Friend之iOS

      7. 增強現實(AR)

        1. 增強現實(AR)之3D賀卡

      8. Docker

        1. Docker實戰之Online Judge Platform

    2. 微項目

      1. Machine Learning

        1. VIP Service Prediction

        2. Movie Rating with Spark

        3. Parking Prediction

        4. App Recommender

        5. Language Processing

      2. Front-end

        1. AppStore with (Java)/(MeteorJS)

        2. Mini-Flickr with (iOS)/(Android)

        3. Collaboration App with Android

        4. TodoList with AngularJS

      3. Back-end

        1. Mini-Uber

        2. Mini-Cassandra

        3. Web Crawler

        4. Search Engine

        5. Ads Search System

      4. Internet of Things

        1. Open-ended Project with Particle.io

      5. Python

        1. Hangman


面百度一面問過malloc和free函數的原型,然而這都不是重點,他問了這個之後,會讓你寫一個malloc和free的封裝函數,達到一定的要求;
一般面試好像沒有單純的問過API這些,語言層面好像問的都比較少。 一般就面試官你一些基礎知識(演算法、資料庫等崗位必備知識)、然後扯扯項目聊聊天就搞定了;
問的問題感覺也會反映一個公司對於人才的需求,比如bat這些可能會考慮基礎好、有想法、有潛力的小夥子,而一些創業公司可能需要即戰力,更關注一些細節方面的東西了~


幹嘛要準備,你要相信強人擇原理,即你身上發生的事件的結果是所有可能性中最好的了


不邀自來哦~

最近斯達克學院StuQ的講師也在討論這個話題,可以參考矽谷Airbnb 技術官朱贇從面試官的角度,給大家提供一些可行的方法,希望能給大家提供一些幫助。

現有IT 領域的面試體系

說到現如今 IT 領域的面試體系的弊端,估計任何一個碼工,作為一個面試者或者面試官,都有吐不完的槽點。最主要的,就是在於所經歷的面試形式是不是能夠招到真正的技術人才。

首先,大都面試題過於側重於對演算法的考察。這樣,剛從學校畢業的人佔便宜,演算法強的人佔便宜,勤快願刷題的人佔便宜。而那些真正有豐富工作經驗的工程師,往往因為長期的不去接觸一些最普通的演算法,在面試中往往被一招致命。

第二,基本每個公司都面臨著漏題問題,而且越火的公司面試題被私傳的可能性也就越大。這樣那些花功夫去找到題目有備而來被錄取的,其實是取巧的。換位思考,對憑本事被錄取的或者沒錄取的,就是不公平。漏題這個問題基本沒有什麼可以完美解決的方案,各個公司有各個公司的對策,或者乾脆聽而任之。舉個例子,Square 的做法,就是三百多號工程師,每個人自己設計一個面試題,要求考察點要全面,可以分層次的考察面試者在該問題上的水平。然後自己用不同語言做出答案,題目和答案會被全公司工程師審查,並且需要拿這道題和兩三個同事來預演一遍面試以確保難度適中,不會太偏。當然,這些題還是會漏,工程師自己考慮是不是想換一個題目。不過人家 CTO 就說了,如果誰面試準備把我們的三百多道題哪怕是全背會了,那這樣的人我們也就招了。

第三,對於一些極火的公司,哪怕你有真材實學,但是可能相關經驗不夠,簡歷在 HR 那一關就會被幹掉,因為每天她們要看的簡歷太多了,不可能每個人都給機會。比如有些公司,據不完全統計,大概每五百份申請可能只有五個人有機會走到到公司面試這一步,最後只有一個人被錄取。那麼哪些簡歷在這五百份中會被淘汰,這個過程中肯定會有一些主觀因素和操作誤差的。不過如果真的有心,把簡歷或者申請做到吸引眼球,可能還是有辦法的。記得去年年初,Airbnb 開始大紅大紫的時候,一個叫 Nina 的妹子,她就把自己渴求進 Airbnb 的熱情做成了一個網站(http://www.nina4airbnb.com/)。 在這個網站上,她說:「我想在Airbnb 工作,我知道成千上萬的很有才能的人也和我一樣。因此,為了展示我如果被錄取會給這個公司帶來的價值,我對全球的旅遊市場做了一個全面的分析,可能對 Airbnb 下一步的戰略目標可能有所幫助。」 然後,真的有做出很多很有見地的分析報告,和戰略建議。這件事也是推特上傳的很火,最終引起 Airbnb 老大 Brian 的注意。最後結果怎樣,我也不得而知。當然,我沒有去細考第一個想出這個招的人是誰,但是記得後來見過很多類似的網站像 「Airbnb 為什麼應該聘請我作為他們的前端工程師」,「Google 為什麼應該讓我加入他們的 Google+ 開發」 等等。

如果說技術面試是 IT 界選人的最關鍵要素之一,那麼行為面試,包括對個性,性格,天分等的考察也是有些公司相當看重的。這就是所謂的「 culture fit 」提前了解一些公司的文化、調性也是很重要的

面試中那些沒人告訴你的事

有的人面試完,覺得很順利,結果收到消息說被拒了。其實這種情況很常見:面試官準備了三道題,一環套一環,第一部分答對了才能進入第二部分,第二部分答對了才能進入第三部分。

然後兩人進房間,第一道題說出來,就覺得思路有點歪,討論引導,開始寫代碼,代碼寫的過程中再很 nice 的給你指出幾個錯誤,發現速度和思路根本不可能完成第二步。乾脆,給你一個好的面試經歷,面帶微笑看著你把第一部分還算比較完整地解答出來。說「不錯不錯」。

你開開心心覺得自己牛發大了,其實你不過作出第一部分就用完了所有的時間(注意:所有的時間)。你覺得冤:我都答出來了怎麼沒offer?你說這是為什麼?

所以,千萬不要玻璃心!

在自己的能力範圍內做最大的努力,讓每一次的面試經歷都成為自己寶貴的經驗。

金三銀四的時候,不論是供給方還是需求方,大家對這個話題都比較感興趣,我們的微信公眾號 [ StuQ ] 也有系列相關文章,也移步關注,希望能帶來幫助。


寫一道我遇到的筆試題:s=2*8,請對s進行優化。

這道題有兩個答案我覺得應該都是正確的:
從取存上來說,s=16應該是最優解。
但從運算上來說,s=2&<&<3才是正確的。
所以這時候你就要看你去面的這家公司主要的業務方面是怎樣,一般了解了這家公司的業務需求,你也應該大概了解了面試官需要知道你那一方面的能力。我去面的這家公司招的是安卓開發工程師,但其主要的業務是做一些硬體晶元的。當然,如果這道題面試官真的是考你取值和賦值,要麼是面試官犯二,而你又傻的情況下才會寫s=16!
所以在面試之前一定要對這家公司進行個大概的了解,對他們的產品和需求有個認識,在面試的時候盡量展示你熟悉而他們又感興趣的知識面。


說的可能有點兒沉重:如果你每天上課、寫作業、寫論文、上自習、考試,做的事和周圍同學都差不多,沒什麼區別。然後畢業了還能找到一份滿意的工作,而不是一份還可以的工作,那才奇了怪了呢

如果你計劃在大學畢業後,找一份一般的工作就可以,那這篇內容不適合你,因為可能會比較辛苦(客觀的講,平心靜氣的講,這裡沒有任何說人不努力怎樣怎樣的負面意思,我非常尊重不同的選擇,尤其是人生的選擇)

我實習的時候,選定的職位是互聯網公司java web研發實習生,那就從我的自身經歷說起,聊一下實習那點兒事兒,以及企業是怎麼考慮實習生招聘的,如果各位同學能夠通過這篇內容看到不同的視角的一些東西,然後能做出一些正向的調整,那就太好了,如果有好的想法或者疑問,也歡迎進一步交流

主要談這幾個問題:

1、實習目的及對應準備

2、實習時間(你和企業可能有緣無分!)

3、簡歷和面試

4、實習的「姿勢」(應有的意識)

5、實習見聞(我面試或帶過的實習生case)

6、我自己踩過的坑(血淚史,有血有淚有shi)

一篇估計寫不下,會拆成幾篇來寫

1、實習目的及對應準備

目的有幾種:

①一直在學校待著不知道外面啥樣,出來見見世面練練手

②做兼職補貼生活費

③有比較明確的目標職位,但是目前不勝任,先找地兒積累經驗

④目標職位明確,並且有意拿到校招offer

⑤在一個(技術)方向做了一段時間,想換個其他方向

針對目的①

進一步的描述是,不清楚自己的興趣所在,想通過不斷嘗試的方式,對社會有個初步認識。這種情況容易遇到的問題是:不容易聚焦,在準備面試的時候成本比較大

建議(考驗的是大學生的調研、分析能力):

-先列出所有感興趣的公司、職位

-通過網路了解上述公司,重點是職位的特點,技能及通用素質要求

-找師兄師姐了解,是否有從事過類似崗位的工作及實習經歷,如果有就太好了

-針對職位的要求,結合自己的優勢、劣勢,做有針對性的準備

不要只看公司官網介紹和招聘網站的職位描述,一定要找到對應的圈子,去看其他人的經驗,一定要結合自己的興趣,認真的反求問己:是否想要這個實習機會,這個職位哪裡適合我?另外最好找自己專業相關的,因為專業培養的是某個方向的思考方式,不同的專業要考慮的事情差別還是比較大的,隔行如隔山說的是有道理的。

針對目的②

個人觀點:不建議把賺錢作為實習的目的

如果你缺學費,大學期間,應該有貸款

如果你缺生活費,省著點兒吃,應該能撐過去,不要大手大腳了,不要奢望給女盆友買東西了,等以後賺了錢再說吧,大學生窮點兒挺好的,比較純粹。

如果你不是十分缺錢,還以賺錢為目的,就是屬於沒有一個明確的生涯規劃,說白了就是在浪費時間。我工作了這麼多年,回憶大學時光,最大的感慨就是,浪費了好多時間,沒有好好思考以後的路應該怎麼走,定了目標之後如何分幾個關鍵步驟達成目標,這種對於自己的思考做的很少。

舉個例子,不要做家教了,輔導一些高中英語,對你的專業技能有什麼提升呢?然而你做了幾個月的家教的時間,足夠用來深入了解一個以後可能會影響你職場頭三年發展快慢的必備知識,而對應的薪水可能高出平均水平的50%,哪個更合適呢?大學才幾年,而工作又要幾年呢

用經濟學的基本原理來套用就是:人做一件事,看是否合適,不是看這件事的絕對成本有多大,而是看機會成本。俗話說就是你撿起了蘋果,卻導致丟掉了西瓜,還是導致丟掉了芝麻的意思,你需要在各種選擇之間做權衡,選一個相對收益最大的,這樣才明智

針對③④⑤

都屬於比較明確的了,好好準備簡歷和筆試面試,第④種還涉及到一個實習時間的問題

小結:找實習是為了能更好的踏上工作崗位,所以本文非常注重幾種目的的歸納,背後的一個認知是,大學時光、乃至工作,都需要提早規劃,目標明確,要有自己的想法,不可以隨大溜。在準備簡歷、面試的過程中,都需要注意哪些問題,後面逐步更新

想看更多內容,歡迎關注微信公眾號:職場巨嬰。裡面定期發布職場乾貨總結,崗位招聘啟事


問API是看你抗壓能力啊,鬼才會記得住所有API,記不住怎麼辦?碰見沒見過的問題怎麼解決?這才是關注的重點


面試過的企業也挺多,有些企業會問api的也是平時編程會經常用到的api,一些面試官可能只是單純的想檢查下你在某方面編程代碼的熟練度,來檢驗你是否在項目經歷中有說謊吧。


看看php面試神器視頻教程

http://www.sucaihuo.com/video/130.html


嗯,收到師妹的邀請,汗ing……

首先,特別不喜歡面試的時候考智力型演算法題一類的東西,不過大部分互聯網都會弄,這個我就不說了,我說下不靠智力題的情況下一般需要準備什麼吧:

1. 基礎知識:演算法、數據結構、計算機體系結構、操作系統、編譯原理等基礎知識,比如進程地址空間、函數調用時棧的處理等。此外,練習下紙上寫代碼處理問題,比如IP地址檢查、atoi、strcpy、二叉樹非遞歸遍歷之類的

2. 項目:在實驗室或以前的動作做了什麼:處理什麼問題?怎麼處理的? 為什麼這麼處理? 要是發了論文,也準備下。

3. 技術外問題:你最自豪的事情?你的優缺點?巴拉巴拉

嗯,對於從沒面試過的人,順便提下,準備下自我介紹,可以介紹自己的基本專業背景之類的。

補充下,上述內容僅針對剛畢業或者工作時間較短的普通人,額,技術特別牛的也排除在外。暫時只想到這些,以後想到其他的,再補充吧。


只能說明你投的工作就是這個level的。


可能是你的面試官的就是多記了些API的程序員而已

記得有一次面試,面試官問過我C++傳參的個數限制,最多能傳多少個參數?


程序員需要有快速的學習能力,面試API的原因一個是API是相對完整的一個模塊,可以考察的點有很多,還有現在變成的趨勢就是結合API編程,除了做底層的猿,API就是解決辦法,而不是自己去創造輪子。費時費力還不一定全面,讀懂API,會用,才是編程的技術。而絕非死記硬背幾個演算法數據結構語法之類的。


把自己知道的說出來,不知道就自信的說不熟悉就好了,找工作也是雙向選擇。
如果真因為不熟悉api而被pass掉了,你應該慶幸,那必定不是什麼好公司。


看公司了,有些公司在你筆試完以後(筆試中已然問到了許多常用api的問題以及演算法的思想)還是會繼續糾結你的基礎功底,其他的公司如果看你筆試基礎很好,面試大多會涉及編程思想和你的溝通表達能力以及項目經驗,總的來說充分準備總是好的~


推薦閱讀:

作為面試官,你對「我不懂,但我會努力學」的應屆生怎麼看 ?
身高150的妹子,有什麼崗位可以做呢?
求職時如何與 HR 談判以爭取到更高的待遇?
BAT是不是對golang沒興趣?

TAG:面試 | 程序員 | 程序員面試 |