Google筆試題整理(一),Google筆試題整理
IT名企面試:Google筆試題 .
Google是不少IT人都想去的企業,筆試和面試是必經之路,現在校園招聘的季節,突擊和整理IT名企經典筆試題是拿到offer的捷徑!為此在網路上整理了些非常經典的筆試題目和答案,仔細閱讀必有協助!!
1.Google筆試題:判斷一個自然數是否是某個數的平方。當然不能使用開方運算。
假設待判斷的數字是 N。
方法1:
遍曆從1到N的數字,求取平方並和N進行比較。
如果平方小於N,則繼續遍曆;如果等於N,則成功退出;如果大於N,則失敗退出。
複雜度為O(n^0.5)。
方法2:
使用二分尋找法,對1到N之間的數字進行判斷。
複雜度為O(log n)。
方法3:
由於
(n+1)^2
=n^2 + 2n + 1,
= ...
= 1 + (2*1 + 1) + (2*2 + 1) + ... + (2*n + 1)
注意到這些項構成了等差數列(每項之間相差2)。
所以我們可以比較 N-1, N - 1 - 3, N - 1 - 3 - 5 ... 和0的關係。
如果大於0,則繼續減;如果等於0,則成功退出;如果小於 0,則失敗退出。
複雜度為O(n^0.5)。不過方法3中利用加減法替換掉了方法1中的乘法,所以速度會更快些。
Google筆試題:如何隨機選取1000個關鍵字
給定一個資料流,其中包含無窮盡的搜尋索引鍵(比如,人們在Google搜尋時不斷輸入的關鍵字)。如何才能從這個無窮盡的流中隨機的選取1000個關鍵字?
定義長度為1000的數組。
對於資料流中的前1000個關鍵字,顯然都要放到數組中。
對於資料流中的的第n(n>1000)個關鍵字,我們知道這個關鍵字被隨機選中的機率為 1000/n。所以我們以 1000/n 的機率用這個關鍵字去替換數組中的隨機一個。這樣就可以保證所有關鍵字都以 1000/n的機率被選中。
對於後面的關鍵字都進行這樣的處理,這樣我們就可以保證數組中總是儲存著1000個隨機關鍵字。
2.Google筆試題:將下列運算式按照複雜度排序
將下列運算式按照複雜度排序
2^n
n^Googol (其中 Googol = 10^100)
n!
n^n
按照複雜度從低到高為
n^Googol
2^n
n!
n^n
3. Google筆試題:在半徑為1的圓中隨機選取一點
假設圓心所在位置為座標元點(0, 0)。
方法1.
在x軸[-1, 1],y軸[-1, 1]的正方形內隨機選取一點。然後判斷此點是否在圓內(通過計算此點到圓心的距離)。如果在圓內,則此點即為所求;如果不在,則重新選取直到找到為止。
正方形的面積為4,圓的面積為pi,所以正方形內的隨機點在圓內的機率是 pi / 4。
方法2.
從[0, 2*pi)中隨機選一個角度,對應於圓中的一條半徑,然後在此半徑上選一個點。但半徑上的點不能均勻選取,選取的機率應該和距圓心的長度成正比,這樣才能保證隨機點在圓內是均勻分布的。
4.Google筆試題:給定一個未知長度的整數流,如何隨機選取一個數
有個叫蓄水池抽樣,就是隨機選取一個數的方法!
方法1.
將整個整數流儲存到一個數組中,然後再隨機選取。
如果整數流很長,無法儲存下來,則此方法不能使用。
方法2.
如果整數流在第一個數後結束,則我們必定會選第一個數作為隨機數。
如果整數流在第二個數後結束,我們選第二個數的機率為1/2。我們以1/2的機率用第2個數替換前面選的隨機數,得到滿足條件的新隨機數。
....
如果整數流在第n個數後結束,我們選第n個數的機率為1/n。我們以1/n的機率用第n個數替換前面選的隨機數,得到滿足條件的新隨機數。
....
利用這種方法,我們只需儲存一個隨機數,和迄今整數流的長度即可。所以可以處理任意長的整數流。
5.Google筆試題:設計一個資料結構,其中包含兩個函數,1.插入一個數字,2.獲得中數。並估計時間複雜度。
1. 使用數組儲存。
插入數字時,在O(1)時間內將該數字插入到數組最後。
擷取中數時,在O(n)時間內找到中數。(選數組的第一個數和其它數比較,並根據比較結果的大小分成兩組,那麼我們可以確定中數在哪組中。然後對那一組按照同樣的方法進一步細分,直到找到中數。)
2. 使用排序數組儲存。
插入數字時,在O(logn)時間內找到要插入的位置,在O(n)時間裡移動元素並將新數字插入到合適的位置。
獲得中數時,在O(1)複雜度內找到中數。
3. 使用大根堆和小根堆儲存。
使用大根堆儲存較小的一半數字,使用小根堆儲存較大的一半數字。
插入數字時,在O(logn)時間內將該數字插入到對應的堆當中,並適當移動根節點以保持兩個堆數字相等(或相差1)。
擷取中數時,在O(1)時間內找到中數。
給定一個固定長度的數組,將遞增整數序列寫入這個數組。當寫到數組尾部時,返回數組開始重新寫,並覆蓋先前寫過的數。
請在這個特殊數組中找出給定的整數。
假設數組為a[0, 1, ..., N-1]。
我們可以採用類似二分尋找的策略。
首先比較a[0]和a[N/2],如果a[0] < a[N/2],則說明a[0,1,...,N/2]為遞增子序列,否則另一部分是遞增子序列。
然後判斷要找的整數是否在遞增子序列範圍內。如果在,則使用普通的二分尋找方法繼續尋找;如果不在,則重複上面的尋找過程,直到找到或者失敗為止。
給定兩個已排序序列,找出共同的元素。
不妨假設序列是從小到大排序的。定義兩個指標分別指向序列的開始。
如果指向的兩個元素相等,則找到一個相同的元素;如果不等,則將指向較小元素的指標向前移動。
重複執行上面的步驟,直到有一個指標指向序列尾端。
google面試題
幾星期前,一個朋友接受了Google公司的面試,他透露了面試中的一些問題。順便,我把從其他幾個曾經面試過的人那裡聽來的內容也整理在一起。最大的互連網公司Google的一份面試題集,看看你是否能夠回答出來。其中很多問題都是開放式的,正確的解答有許多種,所以在這裡就不提供答案了。
一輛學校班車裡面能裝多少個高爾夫球?
你被縮小到只有硬幣厚度那麼點高(不是壓扁,是按比例縮小),然後被扔到一個空的玻璃攪拌器中,攪拌刀片一分鐘後就開始轉動。你怎麼辦?
要是讓你清洗整個西雅圖的所有窗子,你會收取多少費用?
怎麼才能識別出電腦的記憶體堆棧是向上溢出還是向下溢出?
你要向你8歲的侄子解釋什麼是資料庫,請用三句話完成。
時鐘的指標一天內會重合幾次?
你需要從A地去B地,但你不知道能不能到,這時該怎麼辦?
好比你有一個衣櫥,裡面塞滿了各種襯衫,你會怎麼整理這些襯衫,好讓你以後找襯衫的時候容易些?
有個小鎮有100對夫婦,每個丈夫都在欺騙他的妻子。妻子們都無法識破自己丈夫的謊言,但是她們卻能知道其他任何一個男人是否在撒謊。鎮上的法律規定不準通姦,妻子一旦證明丈夫不忠就應該立刻殺死他,鎮上所有婦女都必須嚴格遵守這項法律。有一天,鎮上的女王宣布,至少有一個丈夫是不忠的。這是怎麼發生的呢?
在一個重男輕女的國家裡,每個家庭都想生男孩,如果他們生的孩子是女孩,就再生一個,直到生下的是男孩為止。這樣的國家,男女比例會是多少?
如果在高速公路上30分鐘內到一輛車開過的幾率是0.95,那麼在10分鐘內看到一輛車開過的幾率是多少 (假設為常機率條件下)
如果你看到鐘的時間是3:15,那一刻時針和分針的夾角是多少?(肯定不是0度!)
4個人晚上要穿過一座索橋回到他們的營地。可惜他們手上只有一支只能再堅持17分鐘的手電筒。通過索橋必須要拿著手電,而且索橋每次只能撐得起兩個人的份量。這四個人過索橋的速度都不一樣,第一個走過索橋需要1分鐘,第二個2分鐘,第三個5分鐘,最慢的那個要10分鐘。他們怎樣才能在17分鐘內全部走過索橋?
你和朋友參加聚會,包括你們兩人在內一共有10個人在場。你朋友想跟你打賭,說這裡每有一個人生日和你相同,你就給他1元,每有一個人生日和你不同,他給你2元。你會接受嗎?
全世界有多少個鋼琴調音師?
你有8個一樣大小的球,其中7個的重量是一樣的,另一個比較重。怎樣能夠用天平僅稱兩次將那個重一些的球找出來。
有5個海盜,按照等級從5到1排列。最大的海盜有權提議他們如何分享100枚金幣。但其他人要對此表決,如果多數反對,那他就會被殺死。他應該提出怎樣的方案,既讓自己拿到儘可能多的金幣又不會被殺死?(提示:有一個海盜能拿到98%的金幣)
你覺得自己有把握去Google工作了嗎?
一道Google筆試題目,助
你也想考GOOGLE?哥在天涯面試時題比你的難多了,像你這種,題又說不清,叫我怎麼幫你呀?你的郵箱呢?