一位友人做足這些準備,終於拿到了FaceBook的offer

微信搜索【程序員小躍】,和優秀的你,一起奔跑

Slogan:當你的才華還無法撐起你的野心時,那應該靜下心來好好學習

今天開篇,躍哥想問下大家,你學習編程的時候,最初的夢想是什麼?化作更簡單的描述就是,你學習編程,最想去的公司是什麼?

我先來說說我的,我剛進入實驗室的時候,學長學姐拿到了大唐電信的offer,那時候感覺很厲害。

有一句話,大家不知道還聽沒聽過——“巨大金中華,烽火普天下”。說的就是本世紀初,以巨龍、大唐、金鵬、中興、華爲、烽火、普天爲代表的民族通信設備商企業,共同開創了中國通信行業的繁榮時代。

所以嵌入式專業的我們,能進入大唐也是一個不錯的選擇。我因爲選了Android開發,智能手機剛起步,覺得能去一家外企或者阿里這樣的大公司就很不錯了,甚至是找到一份能在杭州這個互聯網的搖籃中也不錯,好在最後圓夢,滿足了內心小小的虛榮心。

現在的同學們,選擇的公司就多了,阿里、騰訊、百度,小米,頭條,拼多多,京東,美團,滴滴,華爲等等互聯網企業。這是我們國內程序員高水平的聚集地。

而在遙遠的硅谷,優秀的企業也是數不勝數,那些都是世界級的Top公司,能去那邊那更是一件更爽的事情。谷歌、FaceBook、蘋果、甲骨文、特斯拉、英特爾、思科、雅虎等等。看看富豪排行榜你就更加明白,或者躍哥推薦吳軍老師的《浪潮之巔》帶你走入硅谷,走入這些互聯網企業的發展,肯定能給你一番鼓勵。

今天我們就來聊聊一位澳大利亞的朋友,是如何得到FaceBook 的 offer。

我剛在Facebook找到一份開發工作。我是這樣的爲我的面試做準備

作者:Andyy Hope

我剛剛在硅谷科技公司完成了七個現場面試,最終接受了 Facebook 的軟件工程工作邀請。

這是我爲這些面試做準備的方法,以及我在此過程中學到的知識。

我多年的硅谷之旅

當我在澳大利亞的大學學習計算機科學時,我總是憧憬着只是能作爲作爲一名硅谷軟件工程師。

躍哥感慨:這個目標,躍哥在讀大學的時候也有類似的,比如在杭州找到一份計算機開發的工作,還好最後也算是圓夢了,在杭州菊廠待了3年,感受了中國硅谷的氛圍,尤其是濱江一條街:阿里、網易、華三、華爲、海康、大華等等

我喜歡成爲所有科技行業創新核心的想法,以及它的缺點。這個目標使我充滿動力,使我更加專注。

我離開了我在墨爾本一家令人驚歎的公司擔任iOS首席工程師的職位,然後回到我的家鄉珀斯讀書。我在那裏準備我在硅谷的面試過程。我知道這會非常困難和艱鉅。

如果你在一個軟件工程師的房間裏提到技術面試過程,很多人會公開反對常見的面試做法。很多爭論來自於這樣的推理:在白板上求解算法實際上並不代表或轉化爲軟件工程師的日常任務。

躍哥感慨:我一開始作爲面試官的時候,也很喜歡讓候選者手擼代碼,擺脫編譯器的困擾,主要是考察思想過程,以及基礎算法

爲了本文的目的,我將不進行討論。相反,我將探索這些從候選人的角度來看,不同類型的面試方法,我還將重點介紹我從這個過程中學到了什麼。

面試是一種技巧

在準備過程中,我始終知道面試會充滿挑戰。但是我老實說,直到我深陷於自己的第一個困境中之前,我不知道這會有多困難。

在面試之前,我使用了付費和免費服務,通過電話進行模擬編碼和白板面試,主要是一些有行業經驗的人來進行。那些練習面試對我應對壓力至關重要。但後來我意識到,它們只相當於真實面試的一部分。

躍哥感慨:現在國內也有很多優秀的面試分享,比如公衆號裏,或者牛客網等等,準備面試的同學不能錯過呀

我建議不要在你夢想的工作中面試,也不要在有阻礙下進行一些模擬或真實的面試。這種緊張情緒會讓人難以置信地難以抑制,而且只能通過練習來消除。

與生活中的許多其他事情一樣,練習會增強你的自信心。

我遇到的不同類型的面試

如果你在初步的電話屏幕中做好準備並表現得足夠好,那麼您將有機會到現場進行整天的面試。這些面試通常會持續四到六個小時,具體取決於你正在面試的公司。

在我去硅谷的旅途中,我總共安排了七個現場面試。這給了我關於面試現狀的獨特視角。

通常,一個現場將涵蓋三個主要主題:算法,架構設計設計和行爲,這是我學習和準備過的。但是,有一些似乎正在逆轉這種趨勢並將面試擴展到涵蓋更多實用技能。

我將簡要介紹我遇到的每個主題。

算法面試

這是你遇到的最常見的面試類型。面試官會要求您在白板上解決問題,該問題將評估您對數據結構的瞭解,排序算法,遞歸,時間/空間複雜度分析以及模式和邊緣情況識別。在這次採訪中,您通常會想到一個蠻力強制解決方案,然後嘗試改進該解決方案並討論取捨,如果是這樣的話,有很多不同解決方案。

這是我準備的過程,六個星期以來,我每天都在一個廉價的白板上解決算法,分析其時間/空間複雜度爲以及真正試圖瞭解每一行代碼會發生什麼。

就個人而言,我真的很喜歡在白板上寫算法,因爲我不必擔心(大部分時間)編寫可編譯語法,這讓我只專注於關於眼前的問題。其他人可能不喜歡白板,但是我要對他們說堅持練習,可能會改變主意。

躍哥感慨:算法真的是大公司的最愛,尤其是現在的頭條這種公司,靠着算法推薦。還有大數據、人工智能沒有優秀的算法,那推薦起來可就一塌糊塗了

架構設計面試

這是一次有趣的採訪,我非常低估了這一採訪。面試官會要求您設計一個系統(當然是在白板上),例如停車場售票系統,聊天程序,Twitter 反饋以及其他常見系統。

你被評估的是你如何接受一個廣泛的概念,設計一個滿足所有需求和約束的系統。但這取決於候選人提出正確的問題,這些問題定義了需求和約束。這次面試更多的是一次對話,其中夾雜着一些圖表,甚至可能是課程結構。一切都是非常高級的,所以您不會編寫任何實際的實現代碼。

當然,你應該引導對話內容涵蓋系統知識工作。如果你是後端工程師,則不會真正涉足客戶應用程序詳細信息,除非你以前在該領域有過專業知識。我是一名 iOS 工程師,所以我談到了架構模式,功能模塊化,設計模式,而不是如何擴展API接口,而是 worker ,AWS 這種。

行爲面試

面試官會問你關於自己的問題以及你如何處理某些問題情況類型。這次的準備工作沒有其他的困難,但是爲了你自己需要更多反省。

這些問題通常遵循以下方面:

  • 如何處理失敗?
  • 您最大的弱點是什麼?
  • 如何解決衝突?
  • 面對困難如何解決?

我覺得這件事很難搞砸,但我聽說很多人都這麼做。他們試圖把自己的優點僞裝成缺點,對面試官想聽到的事情做出反應,甚至把失敗項目的責任推給別人。

  • “我的弱點是我太專心”
  • “這全是 Jerry 的錯,他在大部分項目中都錯了”

這些面試官都經過培訓和校準,以識別糟糕的人,並對胡說八道有敏銳的注意力。這是把你的候選資格拋到九霄雲外的捷徑。只要真誠,對工作表現出熱情,承認自己的缺點,表現出改進的主動性,你就會做得很好。

躍哥感慨:這個在之前的面試技巧裏也和大家提到過,針對這類面試都需要怎麼做,文末會給大家一些往期鏈接

文化契合

這通常與行爲面試相結合,重點在於發現你是否與公司的價值觀相一致。例如,Facebook 遵循的是一種類似黑客的文化,即大膽創新、不斷嘗試、不怕破壞。而 Airbnb 則希望創造一個讓人們無論走到哪裏都感覺自己屬於自己的世界,因此他們會尋找具有良好接待技巧的人。

許多大型科技公司都非常重視文化並僱用員工根據該人與他們的價值觀的一致性。如果你在以下其中之一進行面試這些公司,重要的是你要查找他們的價值並找到過去的經驗你可以與你的面試官建立聯繫並進行溝通。

躍哥感慨:這其實也是需要養成的一種習慣。你去目標公司面試,多多少少都要對這個目標做一些功課,知道目標公司的業務,特點,才能更好的應對

配對編程

一個有趣的類別,你將參與一個有趣的類別配對,你可以面對有開發環境的計算機,非常類似於你平時使用的計算機環境。您將獲得基本任務以及一系列要求完成每項任務時必須完成的任務,面試官會要求你實施更多功能,直到達到時間限制。你可以自由使用所需的任何資源,例如 Stack Overflow 或在線文檔。

我覺得應聘者在這次面試中的成功很大程度上取決於接觸現實世界的經驗。與白板不同,語法寫法正確代碼是必需的,因此你應該從內而外瞭解你的語言和環境因爲你不想在互聯網上花費太多時間,或者文檔尋找答案。

在我之前的工作中,我會在處理任務時編寫乾淨的代碼,然後在感覺任務完成時進行優化。這樣的工作流程不利於這種面試。我通過過早地優化代碼,把代碼清理到了一個模塊,這使得恢復代碼變得更加困難。我發現,寫一些零碎的代碼,並向面試官提到我會在生產中以不同的方式來做,這比寫得乾淨和優化好很多。

查找和修復 bug

我們作爲工程師所做的很多事情都圍繞發現和修復 bug,這些 bug 是從各種來源向我們報告。在這次面試中,你將獲得一個 bug 清單查找和修復以及識別沿途的其他潛在問題代碼。

我只看到過這種面試的一個實例,我覺得這樣做很難,尤其是他還是初級的時候。每種編碼環境有自己的小怪癖和細微差別,我所做的很多拼湊都是來自以前的IDE(集成開發環境)及這些年來我積累的框架的相關經驗。

測試領域知識

我們看到的大多數常見語言的編程基本相同。如果你知道一種語言的面向對象編程,那麼可能技能大多會轉移到另一個技能上。

但是,此次面試的重點是無法在語言或框架。你將面對有關環境特殊性的API,內存管理,功能,約束,歷史記錄等等。

對於這個特定主題,練習可能具有挑戰性。類似於錯誤查找和麪試打補丁,我覺得很多答案都來自以前的經驗。根據你所申請職位的級別,你提供的答案可能是權重不同。例如,如果某人申請初級職位不知道API爲何以特定方式構建的歷史,可能會給它們一個讓步。但是,如果申請高級職位的候選人不知道,那麼他們可能會遭到更嚴厲的標記。

瞭解操作系統

根據你要面試的角色或團隊,你可能會進行僅專注於操作系統的面試。在這次面試中,你會被問到一些問題這將評估你對計算機底層機制的理解操作系統的認識。

誠然,這次面試使我措手不及。操作系統是我在大學的早期就學過,但是我的知識在我的表現上反饋出來是如此的匱乏。

躍哥感慨:我也是科班出身,但是現在操作系統的知識真的恐怕已經還給老師了。但是,其實當你瞭解一門語言到底層的時候,還是需要了解操作系統,瞭解裏面的機制,對你程序設計,程序思想是一個很好的幫助

你應該如何準備

我之前寫過,面試本身就是一種技巧。即使你已經是一個出色的程序員在你的日常工作或在你的學習中取得了很好的成績,這些技能不會完全轉移1:1當你在一個小的面試室。堅持、重複以及與面試準備和實踐的一致性將是決定你面試結果的關鍵因素。

基本知識

如果有人要問我,我覺得應該重點關注什麼,我建議以下:

  • 首先學習在紙上和白板上手寫代碼,然後將其扔掉集成到 IDE 中以突出顯示語法,這應該成爲您的第二天性。

  • 深入瞭解數據結構及其優勢和劣勢彼此比較。我發現實現數據結構及其從無到有的行爲教給我的不僅僅是我從他們的瞭解抽象的概念。

  • 完全瞭解Big O符號在時間和空間上的複雜性,這將與 算法和排序問題完美搭配。

  • 掌握所有主要的排序算法,因爲時間/空間上的差異複雜性可能會破壞算法的最佳解決方案當你正在嘗試解決。

什麼時候開始

根據你的時間軸,你可能希望儘早開始。很多我面試過的公司在失敗的候選人之前有12個月的冷卻期可以重新申請。另一方面,如果你知道一年之內無法準備就緒,則可以並立即開始該過程,並略微瞭解一下面試過程,所以當你準備就緒時,它幾乎不會那麼恐怖。

躍哥感慨:這個冷卻期其實在國內也是有的,所以還請讀者朋友們需要關注下。有些公司校招期間並不會佔用冷卻期的名額,所以其實校招是一件很划算的事情,不管成功與否,都是一次難能可貴的經歷。)

最後作者其實還推薦了一些準備面試的網站,我這裏就不進行翻譯了,還是根據我們自己的實際情況來,我就推薦下我之前的面試專題吧。

《手把手教你如何面試,你要的我都有(簡歷篇)》

《手把手教你如何面試,你要的我都有(技術篇)

手把手教你如何面試,你要的我都有(工作項目篇)》

《手把手教你如何面試:面試過程》

《程序員不能錯過的20個學習網站》

所以,正如開頭所問的那樣,你有明確的目標嗎?你有明確的計劃了嗎?你有明確的奮鬥榜樣嗎?如果還沒有,那麼請你趕緊建立起來;如果已經有了,請你朝着目標奮勇向前;如果已經在目標裏了,那就進行享受編程的世界吧。

更多精彩內容,請關注躍哥,和大家一起奔跑!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章