想去Google做AI?先看完這套面試指南(附面試題)
作者 | 阿司匹林
出品 | 人工智慧頭條(公眾號ID:AI_Thinker)
憑藉強大的技術實力和良好的工作氛圍,Google 對求職者一直有著強大吸引力。
雖然 Google 在幾年前就已經退出了中國大陸市場,但是在北京、上海等國內城市依然保留著辦公地點,而且一直在對外發布招聘需求。特別是去年底,Google 宣佈在北京成立 AI 中心,更是為中國的 AI 人才提供了又一個好去處。
為此,我們整理一份 Google 面試指南,並蒐集了 20 道 Google AI 的面試問題,希望對感興趣的讀者能有所助益。
當然,如果你想申請國外的 Google 崗位,這份資料也同樣適用。
▌Google 面試方式
首先,Google 為求職者提供兩種面試方式,一種是電話面試或者通過 Google Hangout 進行面試,一種是現場面試,面試方式視情況而定。
電話面試
在電話面試或者 Google Hangout 面試中,面試官將會是你潛在的同事或者經理。
如果你面試的是軟體工程崗位,那麼面試時間將持續 30~60 分鐘。在回答程式設計問題時,你需要一邊在 Google Doc 裡面寫程式碼,一邊告訴面試官你的思考過程。我們建議你使用擴音耳機或者揚聲器,以便騰出手來打字。
電話面試的內容包含資料結構和演算法,你需要做好準備,用你最擅長的語言編寫 20~30 行程式碼。
面試官會提一個開放式的問題,你可以讓面試官將問題解釋清楚。
你需要用演算法來解釋它。
用程式碼來實現演算法(提示:不要擔心不夠完美,因為時間有限。先將你想到的寫下來,然後再完善,確保考慮到了 corner case 和 edge case)。
優化程式碼,用案例來測試程式碼,然後找出所有的 bug。
如果你申請的是其他職位,那麼電話面試時間大約為 30~45 分鐘。
面採
面試官通常有 4 位,包括潛在的同事以及一些跨職能的員工,每位面試官擁有 30~45 分鐘的時間。作為求職者,你有機會表現你在以下四個不同領域的優勢:
一般認知能力:我們會問一些開放式的問題來了解你是如何處理和解決問題的。這些問題沒有固定的正確答案,我們更看重解釋思考過程的能力以及使用資料來指導決策的能力。
領導力:說明你是如何使用自己的溝通和決策技巧來調動他人的。比如,你是如何在某個組織中晉升到領導職位的?或者在不是正式領導的情況下,你是如何幫助團隊取得成功的?
與職位相關的知識:我們感興趣的是,你如何將你的個人優勢與經驗相結合,從而發揮影響力的。我們關注的不僅僅是你現在能做些什麼,而是你未來在不同崗位上的發展潛力。
“谷歌範兒”(Googleyness):你在單獨工作或者團隊協作時的工作方式?你是如何幫助他人的?你是如何駕馭不確定性情況的?又如何走出舒適區,讓自己成長的?
對於軟體工程師候選人,我們希望瞭解你的程式設計技能和技術領域專業知識,包括程式設計工具、程式語言、以及資料結構和演算法基本知識。在面試過程中免不了會有一些討論,因為我們喜歡互相推動,學習不同的方法。因此,請你做好要深入討論你提出的解決方案的準備。打破自己的邊界,找到最優答案。
Google 的技術面採歷來用的是白板,但為了節省時間,同時提供更加真實的程式設計環境,我們已經開始在一些站點提供 Chromebook,用於程式設計面試。這些電腦上安裝了一個面試程式,你可以選擇自己偏好的語言。
在整個面試過程中,你可以隨時讓面試官作出解釋,確保自己完全理解面試官的問題。此外,你也可以“採訪”我們,問一些與工作、團隊、文化等相關的問題,幫助你決定這份工作是否適合自己。
▌Google 軟體工程和技術職位面試
如果你選擇的是軟體工程相關的崗位,在面試前你最好先掌握以下幾個方面的知識:
程式設計實踐:你可以在 CodeLab、Quora、Stack Overflow 等網站上找到一些程式設計示例。Cracking the Coding Interview 這本書也是一個不錯的資源。在某些站點,你可以選擇在 Chromebook 或者白板上程式設計(提前詢問招聘人員,這樣你可以先行練習)。一定要測試程式碼,確保程式碼易於閱讀,而且沒有 bug。不用過分關注細微的句法錯誤,比如在給定方法(start, end or start, length)時應該使用哪種 substring,選擇一個,告訴你的面試官即可。
程式設計:你應該熟練掌握至少一門程式語言,最好是 C++、Java、Python、Go 或者 C。你需要知道 API,物件導向的設計和程式設計,如何測試程式碼,以及 corner case 和 edge case。注意,我們關注的是你對概念的理解而不是記憶。
演算法:同時用自下而上的演算法和自上而下的演算法來處理問題。你需要了解演算法的複雜性以及如何改進演算法。Google 裡常用的包括排序演算法(加上搜尋和二分法檢索)、分治演算法、動態程式設計/記憶、貪心演算法、遞迴演算法、連結到特定資料結構的演算法。瞭解大 O 符號(Big O notation,比如執行時),並做好討論 Dijkstra 和 A* 等複雜演算法的準備。我們建議你在寫程式碼之前討論或概述你所想到的演算法。
排序:熟悉常用的排序函式以及瞭解它們對哪些輸入資料有效。從執行時(runtime)和記憶體佔用的角度思考效率問題。例如,在特殊情況下,插入排序(insertion-sort)或基數排序(radix-sort )比一般的快速排序/合併排序/堆排序(QuickSort/MergeSort/HeapSort)答案好得多。
資料結構:你應該研究儘可能多的資料結構。最常用的資料結構有陣列、連結串列、堆疊、佇列、雜湊集、雜湊對映、雜湊表、字典、樹和二叉樹、堆和圖( arrays, linked lists, stacks, queues, hash-sets, hash-maps, hash-tables, dictionary, trees and binary trees, heaps and graphs)。你需要徹底瞭解資料結構,以及不同演算法對不同資料結構的偏好。
數學:有些面試官會問一些基本的離散數學問題,因為我們經常碰到各種計算問題、概率問題、以及其他的 Discrete Math 101 問題。面試前,你可以花時間複習下(或者自學)基本概率論和組合數學的基本知識。你需要熟悉 n-choose-k 等同型別的問題。
圖演算法:考慮一個問題是否可以應用圖演算法,如距離,搜尋,連線,迴圈檢測等(distance, search, connectivity, cycle-detection)。熟悉三種基本方法——物件和指標,矩陣和鄰接表——的利弊。瞭解基本的圖遍歷演算法、廣度優先搜尋和深度優先搜尋,以及它們的計算複雜性、優缺點、實現方法。
遞迴:許多編碼問題都涉及遞迴思考,而且可能還要對遞迴解決方案進行編碼。針對那些能夠用迭代解決的問題,你需要找到更簡練、更優雅的遞迴方法。
▌Google AI 職位面試
如果你應聘的是 AI 相關的職位,那麼你最好先對 Google 的 AI 有一個全面的瞭解。
首先,Google AI 文章數量最多的三個領域為:
機器智慧:
https://research.google.com/pubs/MachineIntelligence.html
機器感知:
https://research.google.com/pubs/MachinePerception.html
自然語言處理:
https://research.google.com/pubs/NaturalLanguageProcessing.html
其次,下面的內容需要你重點閱讀:
TensorFlow:一個大規模機器學習系統
https://arxiv.org/pdf/1605.08695v2.pdf
Google 使用的 AI 工具
https://ai.google/tools/
非官方的 Google 資料科學部落格
http://www.unofficialgoogledatascience.com/
在對 Google AI 有了比較全面的瞭解後,你就可以看一下這份由眾多求職者分享的 Google AI 相關的面試問題了。
1/x 的導數是什麼?
繪製 log(x+10) 函式的曲線。
如何設計一個針對客戶滿意度的調查?
投擲一枚硬幣 10 次,8 次正面和 2 次反面。如何分析擲硬幣的公平性?什麼是 p-value?
你有 10 枚硬幣,每枚硬幣擲 10 次(共 100 次),並觀察結果,你會修改演算法來測試硬擲硬幣是否公平嗎?
解釋一個非正態分佈以及如何應用它?
為什麼要使用特徵選擇?如果兩個預測因子高度相關,那麼對邏輯迴歸中的係數有什麼影響? 係數的置信區間是多少?
K-Means 演算法和高斯混合模型:K-Means 演算法和 EM 演算法之間有什麼區別?
高斯混合模型適用於什麼情況?(正態分佈)
如果標籤在聚類專案中是已知的,那麼如何評估模型的效能?
對一個 Google 應用程式做了更改之後,如何測試某個指標是提高了還是降低了?
描述資料分析的過程。
為什麼不使用邏輯迴歸演算法?為什麼選擇 GBM 演算法?
推導 GMM 方程?
如何衡量使用者對視訊的喜好程度?
模擬一個二元正態分佈?
推導一個分佈的方差?
每年有多少人申請 Google 賬戶?
如何構建中位數的估計量?
如果迴歸模型中的兩個係數估計值都具有統計顯著性,那麼你是否認為兩者的測試依然重要?
最後,歡迎大家在評論區分享自己的答案以及面試經驗。
參考資料:https://careers.google.com
AI科技大本營現招聘AI記者和資深編譯,有意者請將簡歷投至:gulei@csdn.net,期待你的加入!
AI科技大本營讀者群(計算機視覺、機器學習、深度學習、NLP、Python、AI硬體、AI+金融、AI+PM方向)正在招募中,和你志同道合的小夥伴也在這裡!關注AI科技大本營微信公眾號,後臺回覆:讀者群,新增營長請務必備註姓名,研究方向。
AI科技大本營公眾號ID:rgznai100
☟☟☟點選 | 閱讀原文 | 檢視更多精彩內容
相關文章
- 想去Google做AI?面試題在手,全程無憂!GoAI面試題
- 面試前不陪女朋友也要看完這套spring原始碼面試題(附答案)Spring原始碼面試題
- 想要面試BATJ,先做完這160道Java面試題~BATJava面試題
- 搞定這套 Python 爬蟲面試題,面試會 so easyPython爬蟲面試題
- 騰訊這套SpringMvc面試題你懂多少(面試必備)SpringMVC面試題
- Google 面試題 | 種花Go面試題
- 想要去BATJ面試的話,先做完這160道Java面試題...BATJava面試題
- 推薦一份 Google 面試指南Go面試
- Google 面試題 | 分餅乾Go面試題
- Google經典面試題解析Go面試題
- 看完這篇,Promise面試就搞定了...Promise面試
- Android開發工程師面試指南(面試題集附答案、簡歷模板)Android工程師面試題
- 看完這篇 HashSet,跟面試官扯皮沒問題了面試
- 20道python面試題,看完不用愁!Python面試題
- 看完這篇HTTP,跟面試官扯皮就沒問題了HTTP面試
- 聽我的,看完這30道MySQL基礎題再去面試MySql面試
- Google人工智慧面試·真·題(附參考答案+攻略)Go人工智慧面試
- 面試答題四件套面試
- 面試題:Redis的應用場景核心設計,看完面試不在慌!面試題Redis
- 最新阿里Java面試題,這些面試題你會嗎?阿里Java面試題
- 【面試小題】你不是很懂this嗎,做道題試試?面試
- 昨天去面試,這5個Python面試題都被考到了,Python面試題No6Python面試題
- 面試題:面試經面試題
- IT面試題:附帶答案的14道Spring MVC面試題面試題SpringMVC
- HTML最新面試題(筆試面試題)HTML面試題筆試
- HTTP面試指南HTTP面試
- Java面試指南Java面試
- java 面試指南Java面試
- AI面試題(持續更新)AI面試題
- Java面試中,遇到這類面試題最吃虧!Java面試題
- 出一套 iOS 高階面試題iOS面試題
- 前端面試指南之JS面試題總結前端JS面試題
- 面試三十三題!說實話,中高階面試題看完解析後也不怎麼難!面試題
- 熟悉這幾道 Redis 高頻面試題,面試不用愁Redis面試題
- AI筆試面試題庫-Python題目解析1AI筆試面試題Python
- AI筆試面試題庫-Python題目解析3AI筆試面試題Python
- AI筆試面試題庫-Python題目解析4AI筆試面試題Python
- Oracle面試題附帶答案Oracle面試題