BAT面試精華:面試準備(心態+簡歷)+面試題目+面試經驗!完整彙總!

今天分享的BAT面試完整內容主要包含:
面試前的心態準備(3點建議)
技術硬實力包含的範圍(50題目)
個人簡歷突出和優化(3點優化步驟)
個人軟實力的提升(6點提升維度)
BAT面試經驗總結(1點總結)
1. 面試前的心態準備
心態可以影響你面試的準備,筆試的狀態,實力的發揮,可以影響一個面試過程的方方面面。心態崩了,就只剩運氣了,offer估計也就走遠了。
那怎麼調整自己的心態呢?
首先是要正視自己的能力,不輕視,不高估。
不高估就是要清楚自己的能力範圍,不是說期望過高不好,但過高的期望會讓你的心理變得脆弱,稍有不順心態就有崩掉的趨勢。因為面試畢竟有太大的偶然性,就算你達到了一定的水平,相應水平的崗位也不是百發百中的,更不要說身邊有那麼多大神和收割機,天天拿offer拒offer,對心理都是不小的衝擊。
不要總給自己消極的暗示,心態差了積極調整。
大多數的人,總暗示自己說什麼時間不多了,怎麼每天過這麼快效率怎麼這麼低。到筆試了,跟自己說這個演算法太難了,肯定做不出來;臨到面試了,跟自己說千萬別問我linux核心,別問我分散式,問我肯定完;面試過之後,沒有結果,就天天想肯定又掛了,唉我怎麼這麼菜。
如果這一系列的表現形成習慣,那心態這個係數最多0.5,能發揮出來的東西也都打了一半的折扣。凡事都不要太悲觀,一個offer沒拿到,正常情況是這個失敗的經歷產生的經驗和總結是會讓下一次的成功率提高的,千萬別因為這些消極的暗示,反而讓該有的提高都沒有了。
心態差的時候反而要停下你重複而沒有效率的工作,去調整一下。
對於身邊的同學,多交流,不比較。
有一些一起準備的好夥伴是件非常好的事情,不僅可以互相督促,而且可以在交流和分享的過程中取長補短。
對自己的水平有個很清楚的認識,並選擇自己合適的公司,好好準備自己的筆試、面試,不怕失敗,但保證每次面試都有收穫和提高,那滿意的offer早晚會來。
2.技術硬實力
實力我主要分為硬實力和軟實力。硬實力,也就是技術上的真實積累(當然產品崗的就是對於產品相關知識的積累)。
什麼是硬實力?我舉幾個例子,可以比對自己的技術優勢,這些知識不管是校招還是社招,建議都提前把演算法、資料庫、程式語言等掌握牢固:
基礎知識:
演算法和資料結構
陣列、連結串列、二叉樹、佇列、棧的各種操作(效能,場景)
二分查詢和各種變種的二分查詢
各類排序演算法以及複雜度分析(快排、歸併、堆)
各類演算法題(手寫)
理解並可以分析時間和空間複雜度。
動態規劃(筆試回回有。。)、貪心。
紅黑樹、AVL樹、Hash樹、Tire樹、B樹、B+樹。
圖演算法(比較少,也就兩個最短路徑演算法理解吧)
計算機網路
OSI7層模型(TCP4層)等
資料庫
資料庫(最多的還是mysql,Nosql有redis)
索引(包括分類及優化方式,失效條件,底層結構)
sql語法(join,union,子查詢,having,group by)
資料庫的鎖(行鎖,表鎖,頁級鎖,意向鎖,讀鎖,寫鎖,悲觀鎖,樂觀鎖,以及加鎖的select sql方式)
隔離級別,依次解決的問題(髒讀、不可重複讀、幻讀)
事務的ACID
B樹、B+樹
優化(explain,慢查詢,show profile)
資料庫的正規化。
分庫分表,主從複製,讀寫分離。
Nosql相關(redis和memcached區別之類的,如果你熟悉redis,redis還有一堆要問的)
作業系統:
程序通訊IPC(幾種方式),與執行緒區別
OS的幾種策略(頁面置換,程序排程等,每個裡面有幾種演算法)
互斥與死鎖相關的
linux常用命令(問的時候都會給具體某一個場景)
Linux核心相關(select、poll、epoll)
程式語言:
程式語言(這裡只說Java):
Java基礎(面向物件、四個特性、過載重寫、static和final等等很多東西)
集合(HashMap、ConcurrentHashMap、各種List,最好結合原始碼看)
併發和多執行緒(執行緒池、SYNC和Lock鎖機制、執行緒通訊、volatile、ThreadLocal、CyclicBarrier、Atom包、CountDownLatch、AQS、CAS原理等等)
JVM(記憶體模型、GC垃圾回收,包括分代,GC演算法,收集器、類載入和雙親委派、JVM調優,記憶體洩漏和記憶體溢位)
反射和代理、異常、Java8相關、序列化
設計模式(常用的,jdk中有的)
Web相關(servlet、cookie/session、Spring<AOP、IOC、MVC、事務、動態代理>、Mybatis、Tomcat、Hibernate等)
看jdk原始碼。
這些都是技術硬實力的體現,當然,如果你是面試BAT架構師,這裡還會涉及到:
分散式技術架構的知識體系:
CAP原理和BASE理論。
Nosql與KV儲存(redis,hbase,mongodb,memcached等)
服務化理論(包括服務發現、治理等,zookeeper、etcd、springcloud微服務、)
負載均衡(原理、cdn、一致性hash)
RPC框架(包括整體的一些框架理論,通訊的netty,序列化協議thrift,protobuff等)
訊息佇列(原理、kafka,activeMQ,rocketMQ)
分散式儲存系統(GFS、HDFS、fastDFS)、儲存模型(skipList、LSM等)
分散式事務、分散式鎖等
個人軟實力
軟實力主要就是指平時在語言溝通、邏輯思維、面試的積極性和主動性、簡歷的優化技巧等方便。
通過軟實力來突出自己的優勢,與硬實力的結合,才是你自己真正的實力體現。
溝通和邏輯思維能力:
對一個問題的表達方式,邏輯思維(像有些人的發言就讓人聽上去很有層次感,很舒服),溝通的層次感,善於短時間突出重點。
面試的積極性和主動性:
尤其是BAT,特別喜歡主動性和積極性的人才,主動性的人更加擅長於克服當前的困難,並把事情做好,在遇到挫折後,更容易調整好心態,且積極去推進專案。這一點,在面試的溝通過程中,有經驗的BAT面試官可以通過與你的交流細節,可以捕獲到部分你的性格優勢和劣勢。總之,主動性和樂觀性的人,更有利於今後的發展,這一點不僅僅適用於面試,更適用於今後的工作發展。
簡歷的準備:
簡歷重點是突出自我介紹、擅長技能、專案經驗。自我介紹要做到一句話就能表述清楚自己的優勢,比如:學習能力(短時間熟練掌握技能)、個人履歷(BAT背景優勢)、積極努力(個人推動什麼專案等)。
擅長技能:專業技能的描述詞無非就那麼幾種:精通、熟練、熟悉、瞭解。精通感覺一般還是不要寫,除非你在某個技術點上真的有足夠的把握,真正能做到精通一門語言、一個分散式框架這才是精通。熟悉、熟練居多、精通是典型的金字塔頂部。總之,簡歷不要過於突出精通項數,而是突出精通的領域。
專案經驗:突出自己的王牌專案,最有技術含量、挑戰和幫助最大一個專案講就足夠了,面試的過程中面試官也會重點讓你描述這個擅長的專案,提前模擬這個專案的講解順序和重點,而不是臨場講解。
做一個靠譜且有責任心的人:
很多公司在內部的面試細則上面都會註明這一點,如果價值觀或是人品問題會直接否決。沒有一個面試官不想找一個技術出眾又有責任心的人,請相信我,責任心非常重要,更有利於今後的晉升。
最後,在你通過了硬實力和軟實力的考核後,剩下的就是緣分了,你的面試氣場與BAT面試官的匹配度,每一個面試官都希望找到與自己類似的求職人才,這也許就是聞味吧。
BAT面試總結:
offer = 心態 * (硬實力 + 軟實力) + 緣分運氣,每一個人都是經歷不斷面試失敗再總結,再優化面試經驗,再提升技術深度,從而找到一份自己心儀的工作,以上就是我的分享,希望對你的BAT面試之旅有所幫助!