Google、MS和BAT教给我的面试真谛
大家好呀,我是「小鹿鹿鹿」,我又來啦~~趁大家還有依稀印象趕緊乘熱打鐵~~這次聊一聊關(guān)于面試的一些小想法,希望和大家交流交流~~
雖然資歷尚淺,但是也面過不少試,有Google、微軟等外企大佬,也有BAT等國(guó)內(nèi)巨頭,工作的這幾年也有幸當(dāng)過幾次面試官,小鹿這里呢就結(jié)合自己的親身經(jīng)歷,聊一聊我對(duì)面試的一些小想法(*^▽^*)
我們面試是在面什么?
technology?
thinking
communication
這是小鹿自己總(意)結(jié)(淫)地面試的主要考核內(nèi)容。首先呢,毋庸置疑,我們面試肯定是要檢驗(yàn)候選人是否有過硬的專業(yè)技術(shù)。算法、項(xiàng)目經(jīng)歷,不同的公司、不同的職位有不同的側(cè)重,但是具體的專業(yè)技術(shù)的考核肯定是逃不開的。
可是除此之外呢?除了顯式的技術(shù)考核以外,還有很多往往被我們忽略的隱形考核。小鹿覺得主要是思維方式和交流能力這兩點(diǎn)。并且這部分反而更需要我們廣大的程序員小哥哥們多多注意。不要讓交流的問題,妨礙面試官發(fā)現(xiàn)你的思維之光,阻礙你展示出自己超強(qiáng)的專業(yè)素養(yǎng)呢(ノ≧?≦)ノ!
面試實(shí)際上是工作的一個(gè)簡(jiǎn)單模擬。
一場(chǎng)面試,面試官其實(shí)只需要得到一個(gè)問題的答案,那就是和你一起工作是否開心。關(guān)于這個(gè)問題,有的外企會(huì)直接作為面試記錄。雖然我們國(guó)內(nèi)的企業(yè)不會(huì)這么直接,但是小鹿覺得這確實(shí)是面試中最直擊靈魂的拷問。
面試的正確姿勢(shì)
面試實(shí)際上是通過提出問題、回答問題,在你來我往中進(jìn)行交流,模擬實(shí)際工作的情形。那么當(dāng)面試官拋出話碴,提出一個(gè)問題之后,我們應(yīng)該怎么更好的完成我們之間的對(duì)話呢?
小鹿以為,不管是具體的算法還是項(xiàng)目問題,面試官向你拋出的問題往往是開放的,沒有灰常灰常清晰的定義、十分確定的唯一解的。針對(duì)這種情況,小鹿覺得切忌!!
不要直接給一個(gè)確切的回答,即使你的回答大概率是面試官心中想要的答案。
首先,我們可以嘗試著去復(fù)述(當(dāng)然不是一字不變的重復(fù)),用自己理解的語言去確認(rèn)是否清楚的理解了面試官的問題。其次,這個(gè)問題可能存在一些沒有定義清楚的模糊地帶,一定要逐個(gè)向面試官去確認(rèn)。當(dāng)問題已經(jīng)比較清晰的情況下,我們可以提出一個(gè)解決方案,這個(gè)方案可以是非常naive但是只要確實(shí)可行就ok啦。
大膽說出自己覺得可行的方案,即使這個(gè)方法看起來很簡(jiǎn)(智)單(障)。
能解決問題的方法就是好方法( ̄▽ ̄)/
當(dāng)然啦,實(shí)際中我們需要精益求精尋求更優(yōu)的解決方案。但是大家不用太有壓力,我們可以和面試官一起,溝通交流,碰撞思維的火花,共同討論出一個(gè)較優(yōu)的方案。最后實(shí)現(xiàn)(寫code),測(cè)試,over~~
所以,小鹿劃重點(diǎn)啦,面試的正確姿(步)勢(shì)(驟)應(yīng)該是這個(gè)樣子滴~~
step 1:?正確的理解問題并復(fù)述?
step 2:?清晰問題
step 3:?提出一個(gè)可行的解決方案(不一定是最優(yōu)的)
step 4:?討論出一個(gè)較優(yōu)方案
step 5:?執(zhí)行實(shí)現(xiàn)
step 6:?測(cè)試
實(shí)戰(zhàn)
讀到這里是不是覺得小鹿就是一個(gè)純理論派(差點(diǎn)意思?????),那么我們就以小鹿最近的一次面試來實(shí)操一下吧!
Q1: 尋找三角數(shù)組的最大值
滿足先單調(diào)遞增再單調(diào)下降的array為三角數(shù)組,如[1,2,3,2,1].
step 1: 復(fù)述 (內(nèi)心OS...這道題怎么這么簡(jiǎn)單,我有沒有正確理解題意呢-O-)
step 2: 數(shù)組為空怎么辦吶(╯﹏╰)b?
step 3: 可行方案「遍歷」,時(shí)間復(fù)雜度為O(n),空間復(fù)雜度為O(1)
step 4: 更優(yōu)方案「二分查找」,時(shí)間復(fù)雜度為O(logn),空間復(fù)雜度為O(1)
step 5: coding
step 6: test
Q2: 判斷一個(gè)數(shù)組是否是三角數(shù)組
step 1: 復(fù)述(小鹿此處就省略啦)
step2: 數(shù)組為空?長(zhǎng)度小于等于2的特殊情況?
????試官明確邊界,只有長(zhǎng)度大于等于3的數(shù)組才可能是三角數(shù)組????
step 3: 可行方案「遍歷」
遍歷數(shù)組,如果數(shù)組只有一個(gè)拐點(diǎn)Xi-1<Xi且Xi > Xi+1,則為三角數(shù)組。時(shí)間復(fù)雜度為O(n),空間復(fù)雜度為O(1)。
step 4:?更優(yōu)方案?
請(qǐng)勇敢的說出沒有更優(yōu)方案,沒有比O(n)更高效的算法啦?(▼へ▼メ)
Q3:當(dāng)數(shù)組非常大,無法直接放入內(nèi)存時(shí),如何判斷其是否是三角數(shù)組?
考核大家思維能力的關(guān)鍵時(shí)刻到啦!
首先我們可以提出一個(gè)大致的解決思路。小鹿有一個(gè)不成熟的小想法,可以用map reduce,把數(shù)組進(jìn)行切分,逐個(gè)處理每一小部分?jǐn)?shù)組,再整合判斷整個(gè)數(shù)組是否是三角數(shù)組。
這個(gè)時(shí)候呢,我們的解決方案并不完整,比如如何分割數(shù)組,map和reduce到底怎么定義還不清晰。但是呢沒有關(guān)系,我們先拋出自己idea,然后根據(jù)面試官的反饋,確定我們的方向是否正確(? ?_?)?
當(dāng)我們得到面試官的肯定后,就需要進(jìn)一步細(xì)化這個(gè)solution啦。
三角數(shù)組有且僅有一個(gè)拐點(diǎn)。直接切分?jǐn)?shù)組(比如n等分),「map」分別數(shù)每個(gè)切分?jǐn)?shù)組的拐點(diǎn)數(shù),「reduce」對(duì)所有拐點(diǎn)數(shù)求和,如果拐點(diǎn)數(shù)為1則為三角數(shù)組。
? ? ? ? ? ? ?
但是??如果切分的位置正好遇到拐點(diǎn)怎么辦呢?
? ? ? ?
不要害羞,說出自己的思考過程,善良的面試官會(huì)給你發(fā)(提)糖(示)。
????我們可以有重疊的切分,這樣就能保證萬無一失啦( ̄▽ ̄)/????
請(qǐng)看圖,把數(shù)組劃分為紅、黃、藍(lán)三個(gè)部分,其中重疊部分變成了橙色和綠色。這樣就能保證即使把數(shù)組切分,也不損失整個(gè)數(shù)組的信息。
? ? ? ??
最后的總結(jié)
當(dāng)我們面試大廠的時(shí)候,保持平常心,把面試當(dāng)成和同學(xué)、同事的交流,是非常重要的。在自身實(shí)力一定的情況下,不同的面試方式可能產(chǎn)生不同的面試結(jié)果。大家不妨也回顧總結(jié)一下自己的面試心得,有好的面試技巧可以在評(píng)論區(qū)留言,和大家一起交流學(xué)習(xí)哦~~~
希望大家面無不勝,逢考必過( ̄︶ ̄)↗
總結(jié)
以上是生活随笔為你收集整理的Google、MS和BAT教给我的面试真谛的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CV和NLP中的无监督预训练(生成式BE
- 下一篇: 百度提出新冠高风险小区预警算法,AAAI