筆者在面過 猿輔導,去哪兒,曠視, 陌陌,頭條, 阿里, 快手, 美團, 騰訊以後,除了收穫一大堆面試問題,還思考到如何成爲面試官眼中的」愛技術,愛思考,靠譜,有潛力候選人的」一些」套路」.java
1.八皇后問題
2.求二叉樹的最長距離(任意兩個節點的路徑 中最長的)
3.lru 算法的實現
4.設計一個數據結構 知足 put 和 getMedium(中位數)兩個方法.
(時間複雜度分析, getMedium 在常數,n,log n 時間複雜度返回如何實現)
5.rabbitmq 腦裂問題,rabbitmq 延遲隊列實現, rabbitmq高可用策略
(由於項目中用到了 rabbitmq 和他們技術選型出現了重疊,問了這個問題)python
思考:mysql
思考:git
1.分佈式鎖的實現方案比較,爲何選擇 zookeeper, zookeeper 一致性協議原理
2.一致性 Hash 原理,實現,項目中是如何使用一致性 Hash 的,引入了多少虛擬節點?
3.java synchronized和 AQS的原理,區別github
思考:面試
阿里面試官 雖然不面算法,可是面試考察點全方位打擊,從淺入深,揪住不放,直到你不會爲止.
是收穫最多的面試,也是感覺到本身差距的面試.redis
1.如何在物理機和容器中獲取 cpu 核數,如何設置線程數, 如何主動觸發 GC
2.一致性 Hash, Hash 的做用, 爲何叫一致性 Hash,一致性體如今哪裏.
HashMap中還可使用什麼方式處理 Hash 衝突
3.線程池參數,優化,原理
4.實現一個功能:
cat /usr/local/*.log|grep tencent
1. 併發 IO
2. 30 s 內必須返回結果算法
思考:spring
騰訊一面面試官考察點很是深刻,要求你具備概括能力.例如分佈式中常見的負載策略,
分佈式中數據同步備份的常見方案.線程同步的幾種方式等等.
並且在你回答以後能繼續深刻逼問.
不像其餘面試官拋出來問題,他就聽你吹. 你能吹多少,他就認爲你會多少.sql
3.1 強行總結結論
必定要有條理性的和麪試官溝通. 避免東一笤帚,西一掃帚.最好提早想好一些結論,重複幾遍.這樣面試官可能直接用你的」結論」來 寫面試通過,結論,評價等. 說完一件事,最好有條理性的結論,讓面試官印象深入. 即便強行 1,2,3的劃重點結論也比戛然而止強.
3.2 優雅的中斷當前問題,只在檢查點退出討論,響應面試官的中斷
當面試官出現了疑問,拋出了問題,中斷你的回答,必定不要一味的回答,當即響應,把握本身的節奏,先面試官徵求意見,可否把剩下的說完.繼續快速的說完,記得總結結論 求同存異,避免爭論。
面試官沒有你熟悉你的項目,你的經歷. 說,聽,討論. 三個階段都會存在溝通訊息的損失. 給面試官講清楚, 讓他理解,認同你可能很難. 可是若是出現爭論,會下降對你的好感,下降溝通效率.因此你有責任及時的終止爭論.可使用一下技巧:
簡歷必定要認真寫.面試官拋出的問題中,除了常見的高頻面試題,就是簡歷中你寫的東西.要保證簡歷中寫的東西,
透徹理解! 不管寫的是瞭解,仍是精通都要精通. 不然別寫
我認爲不用寫的
1.不熟悉的,僅僅是知曉的.
2.在學校整的東西,沒啥知名度就不要寫了
3.github 要有,可是我沒有被問過github 中的項目
項目經歷通常是 面試必問的,重點問的. 因此第一步要優先發掘本身項目中的亮點, 把本身作的工做清晰的寫出來.
自我介紹階段重點介紹應該也是本身的項目經歷,這時最好本身提早準備一份演講稿把本身的項目亮點說出來.
多練幾遍.避免不過腦子,黃河決堤式回答,想到哪裏說哪裏.
java 鎖,線程同步,Juc 包.線程池
內存模型,gc 調優
mysql 索引,鎖,事務隔離級別.
常見分佈式高可用架構 redis, mysql, zk, mq等. 數據同步,數據分片,數據備份等
阿里通常不會問太多算法題.
可是至少一半以上公司都會手撕算法. 把leetcode 各個類型的題都刷十道以上基本沒太大問題. hard題通常不會問.
若是本身面試表現很是好,可是由於算法題被刷掉是否是會很遺憾呢?
算法題能擴展一我的的思路,仍是有用的.也鍛鍊一我的編碼能力. 我的建議白板算法用 python 很是簡潔.更聚焦解題思路
若是本身面試表現特別好,職位匹配度很是高. 算法題是能夠防水的,會挑簡單題問. 目的就是 留下你,怕你答不上來,避免尷尬
可是本身面試比較差, 算法題答得特別好,會不會扭轉面試結果呢? 基本不會, 手撕算法只是輔助.項目經歷和基礎面試題是核心.
若是沒有面試到 hr,或者 終面面試官沒有明確 hr 會聯繫,我基本都會問. 或者問一下本身的不足. 通常都會告訴本身.
另外, 手撕算法OK,也會被刷掉. 我在陌陌就是 手撕算法很是完美,結果仍是掛了.
不算 hr ,基本都是三輪. 但若是二輪面試官開始扯虛的,和你介紹項目,問你職業規劃 也許二面就是終面. 不清楚就問一下面試官.
不行
當面試官逼問項目細節時, 若是平時沒有對細節特別熟悉,作事馬馬虎虎,技術深度不夠,例如 技術選型爲何這麼作,其餘方案?優劣勢是什麼?
若是沒有調研,面試時,很快會露出馬腳.
若是對項目的總體架構不熟悉,只熟悉本身的模塊,也會可能被面試官問到關聯的模塊,項目若是本身不熟悉,立刻就會支支吾吾.若是你回答,這塊不是我負責的,我不太熟悉,就會讓面試官對你產生 沒有大局觀,主動意識不夠的狐疑.評價時會被評」只能完成本身模塊內的工做,對系統的全局沒有了解,主動意識不強.自我驅動意識差」
工做時,可能僅僅聚焦業務,對於項目中應用的技術關注不足. 面試時候就會被面試官揪住.若是當時不思考清晰,而且面試前沒有意識到這塊技術風險, 就會給面試帶來很大風險.美團面試官曾問我,介紹一個你主要負責的 參與方最多,週期最長,最複雜的一個項目如何推動的? 若是平時工做不積極,不主動思考,面試被攤上這麼一個問題.基本上啞口無言. (我就目瞪口呆了)
這是必需要作的事情.可是僅僅作到這些還遠遠不夠
例如:
阿里面試官問:gc 爲何必定要 stop the world? 通常博客沒有給出明確清晰直觀的緣由.
一致性 Hash 如何實現? 手撕一下.爲何叫一致性 hash,一致性體如今哪裏? 通常博客沒有.
lru 算法手撕一下. 博客有,看一遍就能手撕了?
redis 和 zk 分佈式鎖實現如何選型? 各自缺點,優點?項目使用時如何避免缺點帶來的負面影響?
如何基於 AQS實現獲取鎖的公平性非公平性?
面試官甚至給你埋坑,故意說一個錯誤的,看你可否反駁.
我以前被帶坑過, 線程池問題
面試官問:是先到 max size 仍是先添加到阻塞隊列?
我說 阻塞隊列滿了纔會繼續建立線程到max size
面試官: 是這樣嗎? 那麼若是是無界隊列豈不是永遠沒法到達 max size
我心想: 是啊,有道理,我可能記錯了.而後被面試官帶偏了.
因此結論是,光看懂記下來,不夠,要深入理解.時刻帶着問題去學習.問題驅動式學習.
最後你會發現,
過了許久,你印象最深入的仍是本身當初提出來的疑問及其解決思路和答案.