本文作者 Connor Leech 是在灣區工作的一名 Web 開發人員,他在本文中面向那些正尋求找到一個軟件工程師崗位的求職者,探討了他們在面試環節可以采取的準備工作。雖然各個公司對于評估人才有自己不同的標準,但軟件工程崗位面試大致可分為兩類:特定領域知識面試和計算機科學基礎知識面試。求職者了解公司評估方式之后,也就可以有的放矢,分別采取相應的準備策略。
作為一名軟件工程師,能否通過技術面試對于自己的職業發展至關重要,但是求職者往往很難知道具體怎樣去為面試做準備。因為不同的軟件公司采用不同的方式對工程師進行評估,而在這種壓力很大、同時又很重要的場合,毫無防備的前去面試似乎是最糟糕的一種狀態。
幸運的一點是,這些技術面試通常可以分為兩大類:特定領域知識面試和計算機科學基礎知識面試。對于想走上軟件工程師職業發展道路的求職者來說,了解這些評估人才的不同方法是很重要的一點,從而可以在他們最需要改進的地方采取措施進行進一步的提升。本篇文章介紹了每種面試類型可能出現的問題,以及你可以采取的準備措施。
特定領域知識面試
特定領域知識面試通常涉及到你最熟悉的技術領域的具體知識點。例如,如果你主要使用 Angular 1.x 進行前端開發,并且面試公司又有 Angular 前端,那他們就可能問你關于 Angular 控制器、指令和服務的相關內容。也就是說,你需要做好準備去建立、展示和討論 Angular。
特定領域的面試重點關注的是你已經實際構建起來的東西,因此要想順利通過這些面試,最好是你已經構建過相關技術的項目。你應該為自己的工作而感到自豪,不必感覺不好意思,而應該深入探討具體項目的技術細節。項目最好是近階段完成的,沒人會愿意去聽你去年寫的那些代碼,你自己也會對這種陳舊的項目感覺厭倦,面試效果也欠佳。
特定領域面試的另一個常見策略是看求職者能否構建一些非常棒的產品或者是排除實際存在的一些問題和故障。這通常是讓求職者帶回家去完成的一種測試,求職者一般有 24-48 個小時的時間來完成這些測試。例如,如果你是一名 Laravel 開發人員,并且你面試的公司恰好也使用 Laravel,那他們可能會要求你構建公司產品或者是公司定期創建的產品的微縮版本。對于這種帶回家做的測試,做好投入大量工作的心理準備。準備好啟動模板,不要抗拒去 Google 搜索答案,發送電子郵件尋求幫助和使用外部工具包這些做法。因為能否通過特定領域面試最重要的一個衡量標準是你能否構建出有效的產品。
計算機科學基礎知識面試
計算機科學和基礎編程面試明顯不同于上文所探討的特定領域面試。計算機科學和基礎編程面試是為了評估你解決問題的能力,更多的是關注找到最佳解決方案的能力,而不是簡單的去完成某些特定任務。因此,面試官通常也不會問關于你是誰、你過去的工作經歷或者你構建過的項目方面的問題。對于計算機科學基礎面試這一類型來說,面試官的工作就是評估你的原始編程能力,通常他們是通過數據結構和算法相關的問題來進行評估。
計算機科學基礎面試的問題有章法可循。因為學習數據結構和算法需要大量的準備工作和長時間的學習,你需要了解你所選擇的編程語言、數據結構和算法來解決問題。計算機科學基礎知識面試通常可以用六種不同類型的算法來解決:
深度優先搜索算法/廣度優先搜索算法
貪心算法
滑動窗口算法
分治算法
遞歸算法
動態規劃算法
你需要研究每一種算法,可以在 Pramp 上與其他軟件工程師一起練習面試和面試問題。應對面試是一門獨立于軟件工程師之外的技能,你可以通過練習和重復來提升自己在面試時的表現。
計算機科學基礎知識面試通常遵循的那些問題結構對于求職者來說只有通過幾個小時的練習和準備才能發現。即便這些知識中的一部分并不適用于日常的編程任務,但只要你堅持這樣做,你就能抓住更多的面試機會,就能收到更多公司發來的 offer。如果你的目標是獲得更多的工作機會,那你一定要看一下《Cracking The Coding Interview》這本書,并且查看這一免費的面試資源來進行相應的準備工作。
哪種方法適合你?
作為一名正在尋找工作的軟件工程師來說,在構建產品、學習新工具和練習面試之間存在著一定程度的相互沖突。選擇關注哪一點其實取決于你所尋找的工作類型,如果你想進入 Google、Twitch、亞馬遜、Uber 或 Square 等大型知名科技公司工作,那你基礎知識一定要過關。在這樣的情況下,你是否構建過最好、最復雜的產品其實并不重要,如果你無法通過計算機科學基礎知識面試,那這些大型科技公司是絕對不會雇用你的。
相比較而言,小型初創企業通常是在與時間賽跑,他們會爭取快速的構建出產品、推出產品并且推向市場。因此,這些公司通常會實行特定領域面試方式,因為他們希望了解捏可以構建什么樣的產品,你最拿手的技術又是什么。
如何了解公司面試類型
在進行公司面試時,與你對接的招聘人員或者公司聯系人就是你最好的朋友。你可以直接向他們詢問關于公司的招聘流程以及他們用于評估候選人的標準等方面的問題。對于求職者來說,了解公司在招崗位的信息是非常重要的一點,因此他們需要主動提出這方面的問題并且仔細研究招聘職位描述信息。軟件工程崗位招聘通常有好幾個環節,可能包括電話面試、共享桌面遠程面試和現場面試環節。
如果面試環節包括共享桌面遠程面試這一環節,那最有可能考察的是求職者的計算機科學基礎知識。他們會提供給求職者一個需要解決的問題,面試官會在這個過程中觀察求職者的操作,求職者也可以解釋自己的想法。
帶回家做的項目通常考察的是特定領域的具體知識,這在一些機構和初創企業的招聘中比較常見,求職者需要在 24-48 小時內有所成就,之后再對你的代碼進行展示。
普通的電話面試通常了解的是求職者的態度,進行相應的溝通并了解一些背景信息、招聘人員很難通過這已通電話獲得有關你能力方面的信息。
現場面試可以涵蓋任何問題,但通常是整個面試過程的最后一個環節。所以到這一環節,你應該是對你面前的這個機遇以及求職公司所用的評估方式有了一個清晰的認識。
想了解各個公司使用的是哪種類型的面試,你可以通過瀏覽 Glassdoor、Angel.co 上的評論或者是通過 Linkedin 聯系公司當前員工的方式來獲知。
小結
求職者可以通過與求職公司的招聘人員和聯系人員交談,來了解大致的面試過程。如果你不熟悉數據結構和算法,可以通過 Pramp 進行練習。做好心理準備,你可能需要細數你過去的工作經歷和你已經構建而成的軟件。要想在軟件工程領域找到一份新工作,構建過令人驚嘆的產品與了解計算機課科學基礎知識這兩方面同等重要。
“你越是不自信,就越是需要認真地采取行動。” – Tara Ploughman
記住這一點,并不只是公司在面試你,同時你也在面試這個公司。面試過程中你需要去處理的問題和工作往往與你被聘用之后,在這個崗位上需要去完成的工作類似。所以,你需要思考這樣幾個問題:他們為你安排的挑戰是你所喜歡的工作類型嗎?這個公司的人好嗎?他們尊重你的時間和能力嗎?如果這些問題的答案都是否定的,那你可以考慮尋找別的工作機會了。了解自己的長處和短處,并且享受這個找工作的過程。面試是一個很好的認識人的方式,也可是一種學習到新技術并且了解自己需求的途徑。
失敗和被拒本來就是生活的一部分,所以在任何時候,都要保持積極的心態,努力爭取那些你所能控制的部分,對于超出自己控制的部分不要去過多的理會。
-
軟件工程師
+關注
關注
8文章
217瀏覽量
21123
發布評論請先 登錄
相關推薦
評論