谷歌那些刁難工程師的難題解答

2012-8-1 23:49:24 | tags | views

 谷歌面試未來的工程師的題目一向是很難的。但下面這些不同于以往你看到的那些,因為它們還需要你具備一定的計算和邏輯基礎。

1.一排房子涂色的問題解答

問題:我們會有一排房子,你可以理解為“N”間,其中N是整數。每個房子可以涂成紅色、綠色或藍色。每幢房子和相鄰間的房子必須是不一樣的,因為每種顏色的成本不同,所以還要考慮到盡可能降低成本。

答案:這個問題可以建模變成一個“動態編程”問題的解決方法,這會有效地解決大范圍的搜索和優化問題。

這里有代碼可以供大家參考:C[i][c] = H[c] + min(C[i-1][x]) x belongs to {Red, Blue, Green} x belongs to c.

2.在一個句子中實現每個單詞的反向字符

 

 

問題:Convert “——— “my career stack” ———” to “”——— “ym reerac kcats” ———”.

答案:不僅僅是翻轉每個字符,還需要采取一個更聰明的方式。

你可以通過翻轉每個字符的方式解決這個問題,但有一個更聰明的叫遞歸的辦法來解決它。這才是谷歌想要的結果:找到解決問題最聰明的工程師,而不僅僅是獲得一個正確的解決方案。

3.找到購買和出售股票的最好時間

 

 

問題:如果你只能購買和出售相同的股票份額,找到一個買入和賣出的最佳時間。

答案:記住你在買股票之前,可以把它賣掉。這一點限制實際上完全改變了問題的結果。所以,現在你要跟蹤最低值指數。下面是整體解決方案:

為了有效地解決這個問題,你需要跟蹤最低值的指數。你需要尋遍并發現最低值指數達到一個新的最小值。然后,比較最低值與當前元素的差異。在買進和賣出時的差異確定是最大的差異。

4.N個硬幣一排怎么選最大

 

 

問題:一排硬幣由兩名球員輪流各取一枚,直到拿完為止,誰拿到的金額大誰就贏了。

答案:你一定要先拿!如果你考慮奇數或者偶數的硬幣,那么你至少不會輸。這其實是另一種“動態編程”的問題。

5.懸空指針是什么?

 

 

問題:很簡單對嗎?

答案:那是毀滅性的錯誤。懸空的指針是一個不再分配到存儲的指針。但有一個問題,這個程序在創建之后不會崩潰,而回執行很長一段時間。每個工程師都了解這些問題,因為它們最終會殺死一些最大、最復雜的服務。

6.從不公平的硬幣上找到一個公平的結果

 

 

問題:我們有一個不公平的硬幣,因為其正反兩面結果的概率不同,如何才能得到公平的結果。

答案:拋兩次硬幣。有四種可能發生,如果有兩個正面或者反面的結果,你應該放棄。然后留下一個正面、一個反面的結果,這才是你想要的結果。

7.在字典中找到一個單詞是由兩個單詞組成的

 

 

問題:在字典里找到一個單詞是由兩個單詞組成的,比如“newspaper”是由“news”和“paper”組成的。

答案:將單詞分成兩個部分。比如你將“newspaper”分成“newsp”和“aper”兩個部分。然后你查字典看看有沒有這兩個單詞,如果沒有,那么重新對這個單詞進行分隔,直到找到答案。

8.一個停車位有三分之一時間是空閑的

 

 

問題:一個停車位有時候你會發現連續9天都是停了車的,但第10天卻沒有停車,你怎么能判斷?

答案:這是一個棘手的概率問題,所以就需要答案合乎邏輯。在概率問題上,如果一個事件已經發生,它不會對未來起到任何影響,即使已經停了9天,也不能證明第10天就一定是空閑的,所以你需要計算題目中那個三分之二的概率實際中到底有多大幾率。

    相關文章:

發表評論:

◎歡迎參與討論,請在這里發表您的看法、交流您的觀點。

手机捕鱼怎么下载
手机购彩 2019免费送彩金平台 免费单机二人麻将 老重庆时时采彩开奖 北京比赛pk10直播开奖 龙虎公式打法 2018最快开奖历史记录 单机版多人诈金花 一肖中特平 平特 内蒙古时时玩法介绍 动物狂欢怎么赢钱 大发快三有计划软件吗 三分pk10全天计划官方 pk10最牛稳赚2码计划 复式投注双色球 内蒙古时时精准预测