面試Google工程師必問的15道面試題

2015年01月22日 10:54 來源:36氪 作者:boxi 我要評論(0)

標簽:Google(57452)工程師(68469)

  1.請寫出一個整數乘法的算法

  

  挑戰:

  這是一個相當開放性的問題,設計初衷是看看工程師是否會定義參數編程語言是什么?是匯編語言嗎?

  是:那么你得白手起家開發出一套基本運算來。

  否則的話:那就簡單了,只需將數字套進去即可,因為大部分語言均支持數學運算。

  2.合并兩個排序鏈表

  

  挑戰:

  這類問題是 Google 面試問題的一個共同趨勢:找出解決問題的有效辦法。合并兩條鏈表是一般會在鏈表之間發生“沖突”(因為它們各自有特定的次序,而你的合并會把次序搞亂)你必須找出一種算法快速消除那些沖突。

  3.給出一組區間(以秒計),讓你找出重疊的部分

  

  挑戰: Google 一般也會要你解決一堆數學問題。這些設計的意圖是讓工程師對問題進行有效的思考,而不是僅僅知道如何對每個問題進行編碼。此處的問題會要你實現一個聰明的數學技巧。

  4.如果你有n個節點的列表,對于一個有向無環圖來說,最多可以有幾條邊?

  

  挑戰:

  這是著名的數學問題旅行商(traveling salesman problem)問題的一個派生。這是一個不要求你找出聰明的數學算法而是要你拓展思路的數學問題。你必須在節點間畫線,條件只有一個:無論你從哪里開始,永遠不要回到原點

  5.在Java里面,finally、final和finalize的區別是什么?

  

  挑戰:

  看看你知不知道這些術語。比方說,Finalize 處理的是“垃圾回收”,而 Finally 則是指向一個特定的錯誤。

  6.從一大塊文本中去掉重復的行

  

  挑戰:

  一個基本問題,看你是不是能估算出問題是否可以在有限的時間內解決。這樣的問題通常可以采取暴力攻擊手段,但卻有可能永遠都無法解決。

  7.給你一串字符,要你找出包含有給定字符集的最小窗口

  

  挑戰:

  此類問題有許多解決方式,這完全取決于你選擇的算法是什么。Google 要找的是能選出更快算法的工程師。

12下一頁全文

本文導航