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