如何用一個月的時間準備google的技術面試
最近google在我大陸又火了一把,谷歌不能用了,哎呀,尼瑪。還讓不讓程式設計師活了。在這個節骨眼上,我也來湊個熱鬧,對於廣大需要谷歌的程式猿們,送上兩個字:呵呵
昨天在csdn上看到一位兄臺的文章《給所有面試官》,吐槽了下極品面試經歷。對於這位兄臺所遇到的極品面試官,本人同樣送上兩個字:呵呵
我曾經也參加過一些大大小小的公司筆試、面試,牛掰如阿里百度騰訊,犀利如Google,Mircosoft,盛大研究院,無一例外,均將我秒殺。讓我一度懷疑自己是否是程式設計師的料,幼小的心靈從那時起,留下了巨大的陰影。當然,N次大公司的面試失敗以後,歸結成兩條經驗教訓:缺乏筆試面試的技巧,非科班出身(實質是計算機知識不成體系)。
關於面試筆試,就六個字:技巧+實力+運氣。本文只涉及四個字:技巧+實力。當然,本文的技巧,不同於一般意義的“技巧”。
面試筆試是需要技巧的
面試是需要技巧的,這一點沒有人否認。筆試、面試時有相當比例的題目的是跟程式設計師相關,但又沒那麼緊密相關的東西。比如考察邏輯思維能力、抽象思維能力的題目,大公司尤其注重這一點,感覺有點測試智商的味道。好吧,我承認,我的智商有時候不夠用。不可否認有極個別的聰明人存在,這些天才,思維活躍,面對一些極品難題,他們都能佛擋殺佛。但事實上大部分人的邏輯思維能力,都是通過平時有意識的鍛煉出來的,而不是與生俱來的。想看看自己的智商有多少漏洞,請點這裡:門薩-智商黑洞
我想說的是:只要你不笨,只要你有意識去鍛鍊自己這方面的能力,這個東西其實跟你的知識體系的建立是一樣的,得靠積累。如果你沒事只知道刷微博,刷朋友圈,你的“智商”也永遠是停留在那個水平。
曾遇到一個面試官問了這麼個題目,至今印象深刻,分享給大家,看看自己的腦袋還夠用不。
題目:
給你兩個一模一樣的玻璃球,已知這種玻璃球,從一棟總共有一百層樓的高樓的某一層樓X扔下來,剛好破碎(即在X層以下不會摔碎,在X層以上均會摔碎)。讓你用最少的次數找出這個臨界樓層。(注意:你只有兩個玻璃球,所以只有兩次蛋碎的機會。並假設,每扔一次球,如果球沒碎,它的堅硬程度不發生改變)。
最差答案:
一種最差的解法如下:從第一百層樓開始扔玻璃球,如果沒有摔碎,則跑到第99層樓扔,以此類推,最壞的情況是,在第一層樓扔的時候球才摔碎。因此最大需要扔100次才能找出臨界樓層。(這種解法,我們只用了一個玻璃球,另外一個玻璃球還沒用上啊!)
面試筆試是需要實力的
程式設計師面試筆試,考察的技術相關的東西主要有:程式語言、演算法、設計模式、作業系統、專案經驗等等。基本功紮實了,面試筆試就有底氣了,如果再多點實際工程經驗,那麼面試對你來說,就是五個字:那都不是事。
===========華麗麗的分割線============
廢話說了這麼多,進入本文主題,如何用一個月的時間去準備google的技術面試??
這個問題已經被問過無數多遍,也被無數人回答過。我結合自身的經驗教訓,來梳理總結一下。
一
1.1過一遍常用的資料結構:連結串列、二叉樹、堆樹(Tree+Heap)、(紅黑樹、AVL)(可選)。佇列、堆、棧、hash表。
1.2 研究一下上述資料結構在你熟悉的程式語言中是如何實現的。例如,如果你熟悉Java,可以學習下HashMap、LinkedHashMap、TreeSet、HashSet等等這些常用資料結構的實現。
1.3自己動手編碼實現這些資料結構,而不是僅僅寫出虛擬碼就完事了。
二
2.1過一遍你課堂上學過的經典演算法:各種排序演算法、圖的遍歷演算法、最短路徑演算法等等。
2.2 知道怎麼求一個演算法的時間複雜度。
2.3 寫程式碼時,有意識的關注程式的空間複雜度,這點在實際工作中很有用。因為記憶體很多時候會不夠用。
三
3.1 用你熟悉的程式語言實現第一、第二兩部分。在編碼實現的過程中,試著不借助任何參考資料來完成。
3.2 在完成3.1所說的編碼後,試著從時間、空間兩個維度去優化你所寫的程式。
四
練習面試問題。選擇一本面試相關的書,例如《Cracking the coding interview》,親手練習一下書中的題目,在紙上書寫或在IDE中編寫都行。(PS:很多面試官都喜歡讓你在紙上寫程式,所以,有意識的練習練習吧,不要太依賴IDE了)。在解答相關面試題時,注意不斷改進、優化你的解法。例如,將時間複雜度從n*n優化到nlogn。
五
練習在白板上分析、解決問題,並能夠將你解決問題的思路清晰的表達出來。(這一點要求比較高,尤其對一些“羞射”的程式設計師們)。在解決某一個給定問題時,對於你給出的解決方案,你得有充分的理由。你為什麼選用這種資料結構,這種演算法來解決這個問題。
上述五大點是真的很重要,我自己曾經在這上面就犯了眼高手低的錯誤,只親手實現了其中的一部分。在只有一個月時間的情況下,時間安排如下:
1)最多用1.5周的時間完成第一點和第二點。
2 )至少花一週的時間徹底搞懂你尚未明白的問題。
3 )然後剩下的時間,在白板上編碼實現吧。
轉載請註明出處,本文連結:http://cricode.com/1942.html
相關文章
- 我是如何準備技術面試的面試
- 如何準備校招技術面試面試
- Cate:我是如何準備Google面試的Go面試
- 我如何用三個月備戰春招 | 掘金技術徵文。
- 技術準備
- 分享一個自己準備 PHP 面試的資料PHP面試
- 程式設計師必備:技術面試準備手冊程式設計師面試
- 面試準備(一)面試
- 如何準備Java的高階技術面試,java基礎面試筆試題Java面試筆試
- 程式設計師準備面試時常犯的10個錯誤程式設計師面試
- Java研發方向如何準備BAT技術面試答案JavaBAT面試
- vue 面試時需要準備的知識點Vue面試
- 作為一技術人員,面試前都需要做哪些準備?面試
- 我是如何準備阿里的社招面試,給準備java社招的朋友的一個建議!阿里面試Java
- 面試題分享,準備一個月拿下騰訊、華為等9個大廠offer(附答案)面試題
- 谷歌技術面試要點(Google面試)(14年5月20日交大專場)谷歌面試Go
- js預設一個月時間差的時間段效果詳解JS
- 如何準備阿里技術面試?終面官現身說法!阿里面試
- 計算時間,指定時間的多少個月後
- Java工程師如何在1個月內做好面試準備?Java工程師面試
- 一場成功的技術面試的幾個關鍵點面試
- 面試準備面試
- 阿里面試官的分享Java面試中需要準備哪些多執行緒併發的技術要點阿里面試Java執行緒
- Google前工程經理王忻:如何準備軟體工程師的面試Go軟體工程工程師面試
- JavaScript事件機制——記一次認真準備的技術分享JavaScript事件
- 技術面試(一)面試
- 如何在不到六個月的時間內成為一個開發者
- Codidate - 一個先進的線上技術面試平臺面試
- Google+的一些技術細節Go
- 面試準備(1)面試
- 如何準備面試?面試
- java面試準備Java面試
- 個人python面試準備的一些題型Python面試
- 程式設計師準備面試時常犯11個錯誤,切記!程式設計師面試
- 如何與面試官愉快的交流:第一章:面試前的準備面試
- 如何準備技術晉級答辯
- 資料遷移工作技術準備
- 百萬級訪問量網站的技術準備工作網站