Interview Preparation 101


來細聊面試的準備工作吧:)
補一下我去年留的坑 XD , 而且上一篇 Google 主要是帶面試流程,所以沒有特別講到準備工作;
我會帶幾個我覺得重要的點分享一下~

Interview Preparation 101 - Tips and Tricks

面試準備 101 - 小叮嚀及小技巧

Personal Profile

Resume

網路上關於履歷的教學還滿多的,比如說像是這篇: How can a software engineer write a killer resume? - Quora, 網路上也有許多不錯的範本,參考一下好範本應該是不會有什麼問題,不過我這邊還是提一些要點:

  • 盡量維持 1 頁,但 2 頁其實是沒問題的
    • 每份履歷平均掃過的時間只有 6 秒, 2 頁的話你的經歷必須是相關且吸引人的, Recruiter 才會多花點時間認真看完。
    • 1 頁要求應該是看公司而不是硬性的規定,像 Google Recruiter 就有明說 2 頁是 OK 的。
    • 只列跟職位相關的經歷:例如我曾經管理、建置過數千數萬使用者的網站(前後台都有),但由於我尋找的職位不是 Web Developer ,所以我的履歷不會特別強調這件事;我以前跟別人說我是在保留實力,但確切的原因其實是這個 XD :我希望閱讀我履歷的人把焦點放在重要的地方。
  • 重點事蹟擺前面
    • 不管是誰看履歷,都是由上而下、由左而右,重點事蹟擺前面才能讓讀者更有興趣看下去。
    • 用簡潔有力的文字寫清楚你做了什麼,不要花寶貴的篇幅介紹與你較無關的資訊。
  • 列上該有的資訊
    • 比如說 Google 會需要至少這些資訊:聯絡方式、學校名稱、在校成績、畢業年份、個人經驗、相關學校課程、做過的專案。
    • Google 的話參考: Applying to Google: Technical Resume Tips with Google
    • 沒有列上該有的資訊,可能會讓你直接錯失掉面試的機會,這樣會超可惜的。
  • 格式簡單清楚即可
    • 避免花俏的履歷,比如說特殊的字體及排版。
    • 有些 Application Tracking System (ATS, 申請件處理系統) 會使用 Object Character Recognition (OCR, 光學字元識別),特殊的字體及排版對這樣的系統往往是一種負擔。
  • 拼字及文法錯誤
    • 履歷是你多年的能力展現,僅僅一頁或兩頁的篇幅一定要好好審查各種小錯誤。
    • 我到現在還是會對我的履歷到處刪刪改改的 XD 。

GitHub

三個小點帶一下:)

  • 盡早學習使用 Git 及經營自己的 GitHub
    • Git 是一套很實用的版本控制系統,簡單來說 Git 允許你對你的專案東改改西改改也不怕改壞,或是改到不知道自己在寫什麼(?)之類的窘境 0.0。
    • Git 有很高的學習曲線,但我覺得 Git 跟 Vim 很像,上手了就超好用的!(大心 <3)
    • Git 除了在開發上很方便, Git 還救了我好幾次作業呢(!)。
  • 會不會有人看
    • 看 “人”。
    • 以我面試過 Facebook 及 Google 的經驗來說,一半一半;有些面試官會看,有些不會。
    • 我看網路上有高中生說他因為 GitHub 上的開源貢獻被 Google Recruiter 找來面試 0.0!。
  • 用程式碼說話
    • 其實我積極用 GitHub 才一年半左右,但是看過我 GitHub 的面試官,通常都會挑出他們覺得有意思的專案問我相關的問題(沒有特定的興趣)。
    • 以我來說,因為這些專案都是自己寫的,所以回答這些問題還滿輕鬆的。
    • 準備面試時也要想想如何清楚明瞭地跟別人介紹這些你做過的專案。

LinkedIn

LinkedIn 的用途大概有這些:

  • Recruiter 會主動在 LinkedIn 上找能力適合的人選來面試。
  • 你也可以主動寫訊息給 Recruiter 說希望能面試,這樣拿到面試的機會似乎會比較大。
  • 可以跨部門、跨層級認識公司的同事,我去年暑假在 Synopsys 就這樣認識了好多人 OuO(“妳怎麼連 ### 都認識!?” ”:D“)。

LinkedIn 上也會有人 PO 一些文章或是新聞討論各種議題,不過以我的專長領域來說(CS),我是覺得上面大部分文章的素質都不是很高 …。
關於 LinkedIn 的使用上,可以 Google 一下像這樣的關鍵字 LinkedIn How to ,就會看到一些不錯的文章可以參考:) 比如說像是這篇: How To Use LinkedIn: 5 Smart Steps To Career Success - Forbes ,或是這篇(也是 Forbes):LinkedIn 101: How To Craft A Stellar Profile - Forbes

Quora

這邊特別介紹 Quora ,因為我在這邊學到了不僅僅只是面試相關的資訊,或是公司的制度文化而已,我在 Quora 各種專業知識也補充了不少,而且在這邊其實什麼都學得到唷!

Quora 是一個近幾年竄起的問答平台,創辦人 Adam D’Angelo 是前 Facebook 元老員工,或許是這樣的緣故,這平台經營得還滿有聲有色的,上面常常會有超優質的答案:);而且 Quora 也不乏各領域的名人唷! 比如說 Vint Cerf — 網路之父、 Thomas Cormen — 演算法聖經 Introduction to Algorithms 共同作者。

  • 註冊時可以選擇有興趣的主題(建議註冊時就先把有興趣的都選起來,後面好像就沒有這樣方便的界面了)
    Interestion Selection - Quora
  • 註冊完就可以看到為你專屬打造的 Question/Answer Feed 了:D
    Question/Answer Feed - Quora

Quora 超棒的!
Try it and you’ll see why! :)

Technical Interview Questions

My Preparations

  • 我的準備方式跟多數人不太一樣,多數人應該都是刷 LeetCode 題目。
  • 我比了 11 年的程式競賽,這幾年閱覽、練習過幾千道程式題目,因此對演算法、資料結構和經典題目都算滿熟悉的;其實我除了看一些範例題目外,沒有多做什麼額外的準備。
  • 對於現在有點程度的競賽選手來說(有點程度指大約能在全國賽拿到佳作的等級),大部分的面試程式題目其實都不會很難。

My Suggestions

  • 不過畢竟競賽選手是少數,就算是 Google 的面試問題,也都有完全控制在大學課程內(包括演算法、資料結構、離散數學、作業系統、計算機架構)。
  • 如果是即將修課的同學或是想複習演算法與資料結構的朋友,我會推薦我彙整的 Awesome Competitive Programming ,這裡有超豐富的演算法學習資源可以與課程搭配服用!這裡面彙整了這幾年來我從網路上蒐集的各種資源,而且每一項我都有很認真篩選過。
  • 有興趣玩玩程式競賽的同學也可以從 Awesome Competitive Programming 提供的資源開始試試看唷!
  • Google 也有整理了一份看起來很棒的 Technical Development Guide :)

Additional Notes

  • Arch-Notes — 我的計算機架構筆記
    我去年面試了一間做 Compiler 跟 Software Library 的美國公司,為了臨時安排的面試,我緊急用了一整天的時間讀計算機架構。

Credits

  • 特別感謝去年認識的大神 Googler 讓我有面試 Google 的機會,還滿開心最後成功了:)! 成功在大學階段就拿到了北美 Google 的實習 offer。
  • 感謝國立交通大學資訊工程系 吳凱強教授 、以及我 Facebook 美麗的 Recruiter 姐姐,讓我在 1 年半前就開始了這一系列的準備。
  • 這邊帶著感恩的心情,分享我走過的足跡,未來的學弟妹們如果也在嘗試這條路、剛好看到這篇文章,歡迎隨時聯絡我,我會很樂意提供協助的:)!