谷歌面試題一枚

2021-09-01 11:16:12 字數 1219 閱讀 5814

機械開發**久了,看了看一些面試題,可以活躍大腦,最近網上看了一題面試題。

google面試題:找幾百億資料的中值

有幾百億的整數,分布的儲存到幾百台通過網路連線的計算機上,你能否開發出乙個演算法和系統,找出這幾百億資料的中值?就是在一組排序好的資料中居於中間的數。顯然,一台機器是裝不下所有的資料,也盡量少用網路頻寬。

我的演算法訓練挺少的,只能自己談些自己的心得。

1.獲得題目,要仔細研讀,迅速轉化為數學模型。

混亂 -->有序 , 區域性-->整體。

大問題化解為小問題來求解。

這時,我們的思路 大概就是出來了:如果每一台機器上的資料都是無序的,我們需要排序,排好序了從這些區域性中

綜合到整體, 然後獲得乙個正確答案。

2. 舉例歸納。確立問題的邊界。

1    4    5    6   15   44    55

3     7  11   12  13  18   35   

總的順序為 1  3  4   5   6  7  11  12  13   15  18  35  44 55.

總共 14個數,中值為 11 12 。

直白的想法,這是歸併排序嗎,頻寬不允許。

當然,如果題目變成了,求任意個位置的數值,那麼歸併排序就是乙個完全的解空間。

現在題目很特殊,就是乙個中值,我們要充分利用這個內涵。

3. 發掘約束,削減解空間。

觀察樣本,利用直覺,第一排中間是6,第二是12,小於6的全部拋棄, 大於12的全部拋棄。

中值在 6   15   44    55,  3     7  11   12中尋找,可以嗎?

答案好像是可以的,假設中值在問號位置,

*  ? *    6   15   44    55

3     7  11   12  13  18   35  

那麼 ? < 6 <12, 那麼 ? 排在整個序列中,那麼它後面還有 4+4> (14/2)了,所以它的位置肯定不為中間,那麼同樣道理,中值也不肯出現在 下一排的 比較大的那部分,

反證法證完畢。

我們可以通過傳送乙個值,一下排除一半的資料,同樣道理,我們繼續總剩下的序列中,通過這個方式,

遞迴地排除好多資料,最後夾逼到中值,有點類似求極限,呵呵。

當然,這裡有些小細節沒有給出,如果幾排中值相等如何處理等等,如果遞迴,我想這些聰明的讀者已經想到,先到這裡吧, 作為乙個民工,我他媽的還要繼續給老闆創造價值,先把那80%不需要頭腦的活幹完再說。

谷歌面試題

這個所謂的面試沒有物理存在,只是邏輯上等同於。題目要求如下 整數序列q中的每個元素都至少能被整數a和b中的乙個整除,現給定a和b,請計算出q中的前n項元素。例如,當a 3,b 5,n 6時,q序列的前6項元素為3,5,6,9,10,12。1 設計函式void generate int a int b...

谷歌面試題

某獵頭收集了140多個google的面試題,都張到他的blog中了,主要是下面這些職位的,因為被牆,且無任何敏感資訊,所以,我原文搬過來了。這篇blog例舉了google用來面試下面這幾個職位的面試題。很多不是很容易回答,不過都比較經典與 是google,microsoft,amazon之類的公司的...

谷歌的面試題

幾星期前,乙個朋友接受了google公司的面試,他透露了面試中的一些問題。順便,我把從其他幾個曾經面試過的人那裡聽來的內容也整理在一起。最大的網際網路公司google的乙份面試題集,看看你是否能夠回答出來。其中很多問題都是開放式的,正確的解答有許多種,所以在這裡就不提供答案了。一輛學校班車裡面能裝多...