在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Google公司的面試題和詳細的分解過程

悟空智能科技 ? 來源:未知 ? 作者:易水寒 ? 2018-10-28 10:33 ? 次閱讀

作為一名Google的工程師和面試官,今天是我第二次發文分享科技公司面試建議了。這里先聲明:本文僅代表我個人的觀察、意見和建議。請勿當作來自Google或Alphabet的官方建議或聲明。

下面這個問題,是我面試生涯中第一個問題;也是第一個被泄漏出來,以及第一個被禁掉的問題。我喜歡這個問題,因為它有以下優點:

問題很容易表述清楚,也容易理解。

這個問題有多個解。每個解都需要不同程度的算法和數據結構知識。而且,還需要一點點遠見。

每個解都可以簡單幾行代碼實現,非常適合有時間限制的面試。

如果你是學生,或者求職者,我希望你通過本文能夠了解到,面試問題一般會是怎么樣的。如果你也是面試官,我很樂意分享自己在面試中的風格和想法,如何更好地傳達信息、征求意見。

注意,我將使用Python寫代碼;我喜歡Python因為它易學,簡潔,而且有海量的標準庫。我遇到的很多面試者也很喜歡,盡管我們推行“不限定語言”的政策,我面試90%的人都用Python。而且,我用的Python 3因為,拜托,這都2018年了。

問題把你的手機撥號頁想象成一個棋盤。棋子走只能走“L”形狀,橫著兩步,豎著一步;或者豎著兩步,橫著一步。

現在,假設你撥號只能像棋子一樣走“L”形狀。每走完一個“L”形撥一次號,起始位置也算撥號一次。問題:從某點開始,在N步內,你可以撥到多少不同的數字?討論

每次面試,我基本都會分成兩個部分:首先我們找出算法方案,然后讓面試者在代碼中實現。我說“我們找出算法方案”,因為這個過程我不是沉默的獨裁者。在這樣高壓下,設計并實現一種算法,45分鐘時間并不算充足。

我通常會讓面試者主導討論,讓他們去產生想法,我嘛,就在旁邊,時不時地泄漏一點點“天機”。面試者們能力越強,我需要泄漏的“天機”就越少;但是目前為止,我還沒遇到一點都不需要我提示的面試者。有一點我想強調一下,重要的很:作為面試官,我的職責可不是坐那看著大家失敗搞砸。我想要給大家正面的反饋,給大家機會去展現大家最擅長的點。給他們提示,就像是在說:吶,這一步路我給你鋪上,但這只是為了讓你展示給我,你在后面的路上能走的更遠。

當聽完面試官的問題,你應該做什么?切記不要立刻就去寫代碼,而是在黑板上試著一步一步去分解問題。分解問題能夠幫助你尋找到規律,特例等等,逐漸在大腦中形成解決方案。比如,你現在從數字6開始走,能走2步,會有如下組合: 6–1–8 6–1–6 6–7–2 6–7–6 6–0–4 6–0–6一共有6種組合。你可以試著用鉛筆在紙上畫,相信我,有時候動手去解決問題會發生意想不到的事,比你盯著在腦袋里想更神奇。怎么樣?你腦海里有方案了嗎?第0階:到達下一步

使用這個問題面試,最讓我驚訝的是,太多人都卡在了計算從某個特定點跳出時,一共有多少種可能,即鄰Neighbors。我的建議是:當你不確定時,先寫個占位符,然后請求面試官能否晚點實現這一部分。這個問題的復雜性并不在Neighbors的計算;我在意的是你如何計算出總數。所有花費在計算Neighbors上的時間其實都是浪費。我會接受“讓我們假設有一個函數能給出我Neighbors”。當然,我也可能會讓你后面有時間再去實現這一步,你只需要這樣寫,然后繼續。

而且,如果一個問題的復雜性不在這里,你也可以問我能不能先略過,一般我都是允許的。我倒是不介意面試者不知道問題的復雜性在哪里,尤其剛開始他們還沒有全面了解問題的時候。至于Neighbors函數,因為數字永遠不變,你可以直接寫一個Map然后返回符合的值。

第1階:遞歸

聰明的你可能注意到了,這個問題可以通過枚舉出所有符合條件的數字,然后計算。這里可以使用遞歸產生這些值:

這個方法可以,而且是在面試中最普遍的方法。但是請注意,我們產生了這么多數字卻并沒有使用他們,我們計算完他們的個數后,就再也不去碰了。所以我建議大家遇到這種情況,盡量去想一下看有沒有更好的方案。第2階:數不數數

怎么在不產生這些數字的情況下計算出個數?可以做到,但需要一點點機智。注意從特定點跳出N次能夠撥到的數字個數,等于從它所有臨近的點跳出N-1次能夠撥到的數字個數的總和。我們可以表達為這樣的遞歸關系:

如果你這樣想,就會很直觀了,跳一次時:6有3個neighbors(1,7和0),當跳0次時每個數字本身算一次,因此每次你只能撥到3個數字。

怎么會產生這樣機智的想法?其實,如果你學了遞歸,并且在黑板上好好研究,這一點就會變得顯而易見。這樣你就能繼續去解決這個問題,實際上就這一點就有多種實現方法,下面這個便是面試中最常見的:

就是這樣,結合這個函數計算出neighbors 就可以了。這時候,你就可以捏捏肩膀休息下了,因為到這里,你已經刷掉很多人了。接下來這個問題我經常問:這個方案的算法理論速度如何?在這個實現中,每次調用count_sequences()都會遞歸地調用count_sequences()至少2次,因為每個數字至少有2個neighbors。這樣會導致runtime成指數增長。對于跳1次到20次這樣的次數還可以,但是到更大的數字,我們就要碰壁。500次可能就需要整個宇宙的熱量來完成運算。第3階:記憶

那么,我們能做的更好么?使用上面的方法,并不能。我喜歡這個問題,也是因為他能一層一層帶出大家的智慧,找到更高效的方法。為了找到更好的方法,讓我們看下這個函數是怎么調用的,以count_sequences(6, 4)為例。注意這里用C作為函數名簡化。

你可能注意到了,C(6, 2)運行了3次,每次都是同樣的運算并返回同樣的值。這里最關鍵的點在于這些重復的運算,每次你使用過他們的值之后,就沒有必要再次計算。怎么解決這個問題?記憶。我們那些相同的函數調用和結果,而不是讓他們重復。這樣,在后面我們就可以直接給出之前的結果。實現方法如下:

第4階:動態設計

如果你再看看前面的遞歸關系,就會發現遞歸記憶的方案也有一點局限性:

注意跳N次的結果僅僅取決于跳N-1次后調用的結果。同時,緩存中包含著每個次數的所有結果。我之所以說這是個小局限,因為確實不會造成真的問題,當跳的次數增長時,緩存也只是線性增長。但是,畢竟,這還是不夠高效。怎么辦?讓我們再來看一看方案和代碼。注意,代碼中是從最大的次數開始,然后直接遞歸到最小的次數:

如果你把整個的函數調用圖想象成某種虛擬的樹,你就會發現我們在執行深度優先策略。這并沒有什么問題,但是它沒有利用到淺依賴這個屬性。如何實現廣度優先策略?這里就是一種實現方法:

這個版本比前面遞歸版好在哪里?其實并沒有好很多,但是這個不是遞歸的,因此即使處理超大數據也很難崩潰。其次,它使用的是常量內存;最后,它仍舊是線性增長,即便處理200000次跳也只用不到20秒。

評估

到這里,基本就算完了。設計并實現一個線性時的、產量內存的方案,在面試中是非常好的結果。在我的面試中,如果有面試者寫出動態編程設計,我通常會給他一個極高的評價:excellent!

當評估算法和數據結構的時候,我經常會說:面試者對問題認識清晰,并且考慮到各方面的可能,當指出不足時他也能迅速改進并提高;最終,實現了一個不錯的解決方案。當評估代碼的時候,我最理想的說法是:面試者迅速并精確地把想法轉化為了代碼;代碼結構嚴謹,容易閱讀。所有特殊情況都有概括,并且認真檢查測試了代碼,確保了沒有Bug。總結

我知道,這個面試問題看上去似乎有點嚇人,尤其整個解釋下來非常繁瑣。但本文的目的和面試中完全不一樣。最后,一點面試相關的技巧,以及一些好的習慣,分享給大家:

一定要手動來,從最小的問題開始解決。

當你的程序在做無用的運算時,一定要注意去優化。減少不必要的運算能夠讓你的解決方案更加簡潔,說不定能因此發現更高效的方案。

了解你的遞歸函數。在實際生產中,遞歸常常很容易出問題,但它仍舊是非常強大的算法設計和策略。遞歸方案也總是有優化和提高的余地。

要常常去尋找記憶的機會。如果你的函數是目的性的,并且會多次調用相同的值,那么就試著去存儲起來。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Google
    +關注

    關注

    5

    文章

    1767

    瀏覽量

    57647
  • 代碼
    +關注

    關注

    30

    文章

    4807

    瀏覽量

    68787
  • python
    +關注

    關注

    56

    文章

    4801

    瀏覽量

    84849

原文標題:Google面試官抖出自己的面試題,有詳細的分解過程

文章出處:【微信號:WUKOOAI,微信公眾號:悟空智能科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Google公司的的面試題,你想試試嗎?

    Google公司的的面試題,你想試試嗎? 求高人解答:Google 的瘋狂面試題,你能答出幾道? 下面G
    發表于 07-22 12:13

    C/C++程序員應聘常見面試題深入解析

    很可能只能拿到10分中的2分。讀者可從本文看到strcpy函數從2分到10分解答的例子,看看自己屬于什么樣的層次。此外,還有一些面試題考查面試者敏捷的思維能力。   分析這些面試題,本
    發表于 03-26 10:16

    java基礎練習、面試題

    java基礎練習、面試題整理了java私塾教材的課后作業,基礎部分,面試中也常常遇到的基礎問題,趕緊下載了。下載: [hide][/hide]
    發表于 07-16 14:02

    java經典面試題深度解析

    免費視頻教程:java經典面試題深度解析對于很多初學者來說,學好java在后期面試的階段都沒什么經驗,為了讓大家更好的了解面試相關知識,今天在這里給大家分享了一個java經典面試題深度
    發表于 06-20 15:16

    c語言面試題,c++面試題下載

    c語言面試題,c++面試題1. static有什么用途?(請至少說明兩種) 1) 限制變量的作用域 2) 設置變量的存儲域 2. 引用與指針有什么區別?  1) 引用必須被初
    發表于 10-22 11:19 ?5次下載

    c語言面試題

    c語言面試題集(單片機)C language problem(20151125084232)
    發表于 12-18 14:05 ?9次下載

    c語言面試題

    c語言面試題
    發表于 11-05 16:48 ?0次下載

    C語言經典面試題

    面試題
    發表于 12-20 22:41 ?0次下載

    C語言經典面試題

    C語言 經典面試題
    發表于 01-05 11:27 ?0次下載

    經典硬件面試題精選及解答

    經典硬件面試題精選及解答
    發表于 11-29 18:02 ?0次下載

    Android的多個經典面試題詳細講解

    本文檔的主要內容詳細介紹的是Android的多個經典面試題詳細講解。
    發表于 08-26 17:30 ?1次下載
    Android的多個經典<b class='flag-5'>面試題</b><b class='flag-5'>詳細</b>講解

    單片機C語言面試題詳細資料合集

    本文檔的主要內容詳細介紹的是單片機C語言面試題詳細資料合集。
    發表于 07-24 17:37 ?22次下載
    單片機C語言<b class='flag-5'>面試題</b>的<b class='flag-5'>詳細</b>資料合集

    Java的經典面試題和答案詳細說明

    發現網上很多Java面試題都沒有答案,所以花了很長時間搜集整理出來了這套Java面試題大全,希望對大家有幫助哈~ 博主已將以下這些面試題整理成了一個Java面試手冊,題型非常全面附帶答
    發表于 09-07 08:00 ?0次下載
    Java的經典<b class='flag-5'>面試題</b>和答案<b class='flag-5'>詳細</b>說明

    常見的MySQL高頻面試題

    在各類技術崗位面試中,似乎 MySQL 相關問題經常被問到。無論你面試開發崗位或運維崗位,總會問幾道數據庫問題。經常有小伙伴私信我,詢問如何應對 MySQL 面試題。其實很多面試題都是
    的頭像 發表于 02-08 16:05 ?2420次閱讀

    關于數組常見的面試題

    數組是最基本的數據結構,關于數組的面試題也屢見不鮮,本文羅列了一些常見的面試題,僅供參考。目前有以下18道題目。
    的頭像 發表于 08-17 09:25 ?1670次閱讀
    主站蜘蛛池模板: 手机看片日韩在线| 成年美女黄网站色大免费视频 | 99插插| 视频网站黄色| 91天天操| 日本高清视频不卡| 亚洲一级毛片免观看| 午夜日韩视频| 日本免费xxxx色视频| 女人张开腿让男人桶免费最新 | 亚洲天堂网在线观看| 四虎永久精品免费观看| 人人射人人| 狠狠尻| 午夜在线播放| 加勒比在线免费视频| 免费啪啪网| yy肉戏多纯黄的小说| 香蕉视频色版在线观看| 人人草人人爽| 国产免费黄视频| 天天爽夜夜爽免费看| 国产精品一区牛牛影视| 亚洲 午夜在线一区| 亚洲一级免费毛片| 欧美一级视频在线观看| 国产青草| 天堂网www中文天堂在线| 在线观看的黄网| 97色噜噜| 欧美一区二区在线观看视频| 国产在线视频资源| 天天操精品视频| 好爽好紧好大的免费视频国产| julia一区二区三区中文字幕| 日本久本草精品| www我要色综合com| 久久精品国产亚洲片| 亚洲欧美视频一区二区三区| 性欧美大胆高清视频| 久久伊人精品青青草原高清|