1、寫做背景
2、秋招的意義
3、不一樣水平的同窗備戰秋招的策略(案例)
4、部分面試題整理
5、準備過程當中的注意事項
6、針對簡歷複習
1、寫做背景
1.分享經驗。從去年五月份到今年五月份,我面試了n家公司,也收了(n/2+10)家的offer,經歷了兩個春招一個秋招,其中有騰訊、今日頭條、京東等offer。經過這篇文章分享一些經驗,讓後面的同窗少走彎路。
2.解決問題。我有本身的學習羣和知識星球,秋招快到了,避免不了被問關於秋招備戰的問題。經過這篇文章把我本身能想到的路線和方法系統化先輸出出來,以便於精細化提問,也爲我本身節省時間。
2、秋招的意義
1.秋招對於大企業是一場人才儲備的戰役,只有相對較大的企業纔有秋招這個概念,它們有資本和資源花費大量精力進行宣傳面試,能夠提早發offer,坐等你畢業來上班。
2.對於學生來講,秋招是一場大型的招聘會,多是這輩子離大廠最近的,機會最多的,也是惟一一次有精力面對這麼多大廠的面試。
3.秋招offer在手,畢業時間我有。秋招拿了offer以後,對於你後面的面試也好,玩也好,都是起到很是關鍵的做用。至少心理負擔不會那麼大,面試起來也會更上手一次,不急不躁,玩起來也嗨,沒有就業壓力,畢業以前的時間隨意安排。
3、不一樣的同窗備戰秋招的策略
想要在秋招拿到offer,記住如下三點,接下去的案例都圍繞這三點:node
1.拿到足夠多的面試機會, 別讓本身的才華無處施展。
2.根據本身的簡歷造成系統性的知識,在面試中佔據主動地位。
3.成不驕,敗不餒。不斷地從面試中總結經驗,補本身的知識盲區。
案例1面試
有小公司Java實習經驗,參與過兩個項目的開發,算法不太行,基礎通常,有大數據基礎,本身作了個大數據項目。算法
目標:秋招想收到大數據offer,最好大廠。數據庫
分析:項目是長板,算法是短板,其餘正常。因此要用最短期把項目補紮實,成爲優點,算法逐漸拉上來,其餘時間撲理論基礎上。編程
學習路線:
1.先把本身手頭上的Java分佈式項目弄明白,對其中的技術棧以及業務進行深刻了解,並本身整理項目中的難點和亮點,最終能漂漂亮亮的寫在簡歷上。先熟悉手頭項目,一方面項目是面試的敲門磚,沒有項目的簡歷會顯得空洞,有項目能夠避免項目經驗不足被刷。另外一方面,項目在面試中也佔着很大比重,面試官比較喜歡從項目場景切入到理論知識。數組
2.天天安排時間刷算法,劍指offer、牛客leetcode148題,容易的先刷,刷一題整理一題到博客,先懂思路後懂代碼,一天至少1題,爭取重複刷幾遍到會手寫。大廠必問算法,並且大都劍指offer或者leetcode原題或變形題,有些只問思路。因此算法必刷,先刷思路,要整理起來,避免刷過即忘。安全
3.補Java集合源碼、JVM、多線程。不看書,直接去網上搜面試題,最後把高頻的整理了下來,直接剛面試題,藉助博客輔助理解。一樣,懂一題整理一題到博客。(整理的面經我學習羣公告有)大數據崗位也要求Java知識,就算到時大數據面不上,面大廠Java仍是妥妥的,會大數據知識能夠加分。微信
4.熟悉大數據項目裏的技術棧和流程,理解並整理常見大數據面試題。網絡
5.對數據庫、操做系統、計算機網絡常見面試題進行熟悉。由於這些在面試中不會佔很大比例,並且問來問去也是那幾題,因此放到最後。數據結構
6.有時間再看相關書籍,系統梳理。由於準備時間有限,而個人目的又是經過秋招面試,因此都是從面試題開始刷起,零散整理,最後有時間再經過看書系統梳理。
7.投遞小廠練手。當準備差很少的時候我就開始投遞簡歷面試小公司,經過這樣去補缺補漏。
案例2
目前正在公司實習,但已經肯定不留在這家公司,打算秋招前夕辭職全身心備戰。
目標:大廠的Java或者大數據offer
路線:
1.針對目前還在公司實習或者即將去公司實習的同窗,若是已經肯定不留在該公司,那麼能夠「面向簡歷實習」。面向簡歷實習,顧名思義,簡歷上須要什麼就學什麼。公司能夠提供的資源就是項目,有文檔給你看,不懂的還有老員工能夠幫你講解。你須要快速地瞭解項目所用的技術棧,以及應用的業務場景,儘量多地去搜集相關資料和看源碼。多聽聽老員工在探討什麼技術難點,以及解決方案是怎麼實施的,不懂的就多問。
2.在實習期間估計也只有精力學習項目了,在職期間去刷算法或者補理論基礎不太現實。當把你實習的項目有目的性地吃透以後,就能夠全身而退,開始刷算法和補基礎。
3.若是要找大數據相關,能夠經過基礎視頻入門,本身作一兩個項目,把簡歷寫好。其他的能夠參考案例1的學習路線。
案例3
懂點Java基礎,有學校課設的管理系統項目,懂基本的數據結構。
目標:秋招能進一個知名的大廠作Java。
規劃路線:
1.先用一些時間補1到2個項目,技術棧要相對好一些,這樣能保證有面試大公司的機會和進小公司的機會。
2.當你能把相對較好的項目寫在簡歷上,而且懂一部分技術棧的原理,那麼先暫停對項目的學習,轉戰Java。先從Javase開始,到JVM,最後併發編程。se和JVM理論較多,先記住能理解的,再就是理解性的背,面試前才機械性記憶。併發編程能夠從常見的多線程實現開始熟悉,本身敲敲常見的多線程實現demo,以及經常使用的幾個線程池,再去比較每一個實現方法的優缺點,參數。再由此切入到線程安全,併發鎖等等。記得整理!
3.因爲數據結構算法基礎不是很紮實,能夠先從常見的7大選擇,8大排序開始熟悉,儘可能能手寫代碼。再就是刷劍指offer,統一先刷實現思路,遇到能理解的代碼實現也能夠記住,否則只記思路也能夠。天天刷,記得整理!
4.回過頭深刻理解項目的技術棧,常見的技術棧面試題,項目的業務場景怎麼樣,技術棧怎麼和業務關聯,能夠找出哪些實現難點,有哪些能夠當亮點。
5.投遞小公司,收到面試通知以後刷數據庫、操做系統等面試題。
案例4
**
非科班零基礎。
目標:秋招儘可能找份開發工做。
先看看Java基礎視頻入門,而後補項目、適當地補點Java基礎,懂一些基本的JVM和多線程,數據結構和算法只看基本的排序和選擇。當達到案例二的水平以後能夠走它的學習路線進行進階。
案例5
大三或研究生,機器學習或者其餘方向,技術棧主要是Python,算法基礎還行,有個Python小項目。因爲機器學習競爭激烈,但本身又沒核心競爭力,走Python後臺或者爬蟲崗位需求少。
目標:秋招找份大廠大數據開發或者後臺開發
學習路線:
1.因爲已經會Python語言了,因此學Java會比較快。能夠快速地過一遍Java基礎。
2.根據想走的方向針對性去準備1至2個項目,而後熟悉。能夠參考案例1的學習路線去準備算法和基礎。
3.把你的Python項目也寫上,作大數據或者Java會Python也是加分的。
總結
秋招 = 項目 + 語言基礎 + 計算機基礎 + 算法 + 軟實力
爭取在項目中有:
微服務:SpringCloud、SpringBoot、Dubbo等
分佈式服務框架:Zookeeper等
消息隊列:Kafka、RabbitMQ、RocketMQ等
內存數據庫:Memcached、Redis等
分佈式搜索引擎:Solr、Lucene、ES等
大數據框架:Hadoop、Hive、Spark等
語言基礎:
Javase、集合源碼、JVM、多線程、IO等
計算機基礎:
數據庫、計算機網絡、操做系統
算法:
基本的排序和選擇算法、劍指offer、牛客148題Leetcode等
4、部分面試題整理
Java:
Java散列表,樹對應的容器類,hashmap如何解決衝突
Java實現生產者和消費者的三種方法
init方法與clinit方法的區別
Java中的引用
Java對象的建立過程
Java中建立子類實例時會建立父類實例?
Java的類加載機制 爲何會出現鎖機制?
抽象類和接口的區別
雙親委派模型:啓動加載器、擴展加載器、應用程序加載器
重載與重寫
Java的類型擦除
簡述Java Object類中的方法有哪些
char能夠存儲漢字嘛?
抽象類和接口的區別
靜態分派與動態分派
HashMap與HashTable的區別
何時使用HashMap?它有什麼特色?
HashMap的基本原理及內部數據結構
HashMap的put和get操做
簡述Java中的深拷貝與淺拷貝,C++中的淺拷貝和深拷貝
解釋一下static塊和static變量的執行順序
equals()的重寫規則
Java中如何建立線程?
JDK1.8新特性
JVM:
JVM內存佈局
JVM垃圾回收機制
JVM垃圾回收算法
哪些對象在老年代?
從年輕代到老年代執行的時間以及發生轉移的場景
爲何存在GC?
簡單可達性分析
Minor GC安全檢查
垃圾回收器
引用記數法和可達性算法
類加載機制過程
雙親委派模型
雙親委派機制
Java集合:
排序算法比較
Hashmap是線程安全的嗎?爲何?
ArrayList與LinkedList區別
HashMap、LinkedHashMap和TreeMap
冒泡排序的優化以及快排過程及優化
紅黑樹
JDK7與JDK8中hashmap的區別
hashmap的初始容量爲何設置爲16?
平衡二叉樹的插入刪除操做
併發編程:
鎖分段技術、ConcurrentHashMap、擴容
Java同步線程有哪些方式?
volatile 和 synchronized的區別
講一下同步異步(進程和IO)
synchronized和volatile的區別?
線程安全
對象的內存佈局
哪些是線程安全的容器?
ConcurrentHashMap介紹
線程啓動start和run
HashMap爲何線程不安全?
簡述Java內存模型的happen before原則
volatile的原理和實現機制 || volatile到底如何保證可見性和禁止指令重排序的?
volatile關鍵字的兩層語義 || 可見性
volatile保證原子性嗎?
volatile能保證有序性嗎?
Zookeeper:
Dubbo簡介及以Zookeeper爲註冊中心
Zookeeper的leader選舉過程
2PC and 3PC
簡述Zookeeper。。。watcher
簡介ZAB
簡述paxos算法
Zookeeper如何保證數據的一致性?
敘述ZAB集羣數據同步的過程
Zookeeper中的ACL
Zookeeper底層實現數據一致性
Zookeeper在yarn框架中如何實現避免腦裂的?
大數據:
Kylin:
簡介Kylin
Kylin的工做原理
Kylin的技術框架
Cube、Cuboid 和 Cube Segment
Kylin 對維度表的的要求
Cube的構建過程
全量構建和增量構建的區別
流式構建原理
Hive:
Hive內部表與外部表的區別
Hive與傳統數據庫的區別
Hiverc文件
Hive分區
Hive分區過多有何壞處以及分區時的注意事項
Hive中複雜數據類型的使用好處與壞處
hive分桶?
Hive元數據庫是用來作什麼的,存儲哪些信息?
爲什麼不使用Derby做爲元數據庫?
Hive什麼狀況下能夠避免進行mapreduce?
Hive鏈接?
Hive MapJoin?
Hive的sort by, order by, distribute by, cluster by區別?
Hadoop計算框架特性
Hive優化經常使用手段
數據傾斜整理(轉)
使用Hive如何進行抽樣查詢?
Storm:
Storm的可靠性如何實現?包括spout和bolt兩部分
怎麼提升Storm的併發度?
Storm如何處理反壓機制?
Storm中的Stream grouping有哪幾種方式?
Storm的組件介紹
Storm怎麼完成對單詞的計數?
簡述Strom的計算結構
Spark:
Spark的運行模式
RDD是如何容錯的?
Spark和MapReduce的區別
說一下Spark的RDD
本身實現一個RDD,須要實現哪些函數或者部分?
MapReduce和Spark的區別
Spark的Stage是怎麼劃分的?如何優化?
寬依賴與窄依賴區別
Spark性能調優
Flink、Storm與Spark Stream的區別(未)
說下spark中的transform和action
RDD、DataFrame和DataSet的區別
Spark執行任務流程(standalone、yarn)
Spark的數據容錯機制
Spark技術棧有哪些組件,每一個組件都有什麼功能,適合什麼應用場景?
Spark master使用zookeeper進行HA的,有哪些元數據保存在Zookeeper?以及要注意的地方
driver的功能是什麼?
spark端口
RDD有哪幾種建立方式
map和flatmap的區別
Spark的基本工做流程
Hadoop:
MR的Shuffle過程
Yarn的工做機制,以及MR Job提交運行過程
MapReduce1的工做機制和過程
HDFS寫入過程
Fsimage 與 EditLog定義及合併過程
HDFS讀過程
HDFS簡介
在向HDFS中寫數據的時候,當寫某一副本時出錯怎麼處理?
namenode的HA實現
簡述聯邦HDFS
HDFS源碼解讀--create()
NameNode高可用中editlog同步的過程
HDFS寫入過程客戶端奔潰怎麼處理?(租約恢復)
kafka:
kafka介紹
Kafka與傳統消息隊列的區別?
kafka的零拷貝
kafka消息持久化和順序讀寫?
網絡:
簡述TCP和UDP的區別
七層協議每一層的任務及做用
簡述http狀態碼
簡述http協議與https協議
簡述SSL協議
解析DNS過程
三次握手,四次揮手的過程??爲何三握??
劍指offer常問:
字符串轉換成整數
鏈表中倒數第K個結點
二維數組中的查找
替換空格
從尾到頭打印鏈表
重建二叉樹
用兩個棧實現隊列
斐波那契數列及變形題
二進制中1的個數
在O(1)時間刪除鏈表結點
調整數組順序使奇數位於偶數前面
反轉鏈表
合併兩個排序的鏈表
樹的子結構
二叉樹的鏡像
順時針打印矩陣
棧的壓入、彈出序列
二叉搜索樹的後序遍歷序列
二叉樹中和爲某一值的路徑
數組中出現次數超過一半的數字
最小的k個數
連續子數組的最大和
第一個只出現一次的字符
兩個鏈表的第一個公共結點
鏈表中環的入口結點
二叉樹的鏡像
跳臺階
變態跳臺階
矩形覆蓋
從上往下打印二叉樹
二叉搜索樹的第K個結點
5、準備過程當中的注意事項
1.心理壓力大。怕面試,面試怕被懟,一直逃避。面試是一個會上癮的東西,剛開始幾場會比較難受,但不用怕,一個優秀的面試官會讓你有一個溫馨的面試體驗,並且面試是一個檢驗本身水平的過程。剛開始能夠選擇小公司,即便面的很差也沒事,面上了也不必定去,放輕鬆。
2.沉迷學習,沒法自拔。秋招已經開始了,本身總想着還沒準備好,想把全部的東西都學完以後再去投。參考過秋招的人都知道,知識是永遠學不完的,永遠沒有準備好的那一刻,當你能把簡歷寫出來的時候就開始投吧。面試不是你很厲害就必定能過的,也有運氣成分在裏面,並且邊面試邊總結會成長很快的。
3.不管學習理論,項目,仍是算法,必定要邊學邊總結。光輸入看似都會了,輸出纔是王道,否則腦子依然人心渙散,東拼西湊。面試以前這些平時總結的內容就是你的殺手鐗。
4.怕理論懂太多,實操太少。經過以上內容,你會發現我一直強調理論性的東西,不管是項目的學習或者是語言。在校生原本就是以理論分高低,你們都知道面試問這些,但爲何總有人回答不上來。實操的話本身在學校敲的跟公司比起來都是小兒科,都得從新學,重要的是先拿到offer。學會把面試和平常學習區分開。
5.必定要注重簡歷上的項目。前面提到,簡歷沒有相關項目去支撐你求職的崗位,即便簡歷寫本身的理論多麼強,基礎多麼紮實都是很蒼白無力的。這點我在面阿里的時候吃過虧,前幾天學習羣的一個小兄弟也吃了這個虧。企業說注重理論基礎是創建在有項目的基礎上,而不是隻有理論基礎。
6.在簡歷的排版和內容上要好好作文章。正常的面試都是從自我介紹開始,而後面試從上到下瀏覽簡歷,因此你要把你的優勢儘可能往前面放,而不是把興趣愛好,我的技能這種比較虛的東西放第一第二模塊,而實習經歷,項目經驗放最後。
7.實習經歷是否影響秋招?理論上是的,有實習經歷尤爲是大廠實習都會在秋招中有優點的,但這種優點不是絕對性優點。實習的目的也是鍛鍊你的動手能力,提升你的工程能力,因此只要能把項目搞定,問題不是很大。可是建議你仍是多面試,項目經歷能夠補,面試經驗補不了,終歸要出去試試水的,因此要多面試。
8.爲何零基礎的人學完基礎就立刻學習項目?我在校園招聘的時候,打印了10個簡歷,投了10家,全都拿了offer,固然都是小公司。面試問什麼呢?面向對象的概念,Java的特色等等這些極其基礎的,剩下的都是圍繞着項目問。有些公司面試都沒有直接說有項目那就好辦了,接着問何時能上班,要現場給offer。案例1的人就是我,簡歷有兩個分佈式項目和一個大數據項目。因此我常常跟那些擔憂找不到工做的同窗說,只要你把項目鼓搗明白,總有公司會要你的,就是大和小的問題。
6、針對簡歷複習
一直強調把簡歷寫好,那麼怎麼針對簡歷去複習?
1.面試前夕,打開簡歷,拿一張白紙,把本身當成面試官,手擼思惟導圖。從自我介紹開始,而後就是項目介紹,其次就是本身負責的部分以及項目難點。
2.技術面試正常兩個部分,一個基礎,另外一個項目技術棧。基礎就是網絡,數據結構,算法這些,這些是不管你簡歷上寫不寫都問的。其次就是你簡歷描述的技術棧。
3.正常面試官會問你在項目中作了什麼,而後以這個爲點切入進去。
舉個例子:我在項目中用了多線程,提升了讀取效率。那麼項目官確定接着,你如何建立多線程的?我回答:線程池。那你知道建立線程有哪些方法嗎?有哪些線程池嗎?怎麼保證線程安全呢?等等。
若是你項目中的問題會把本身問死,也就是挖坑,那我建議你換個。這部分寫的好就是給本身開路,弄很差就本身填坑了。
4.項目技術棧來不及複習怎麼辦?打開谷歌搜索一下對應技術棧常問面試題,或者平時多刷牛客網,你就知道哪些題目是高頻的。
5.揚長避短。對於不熟的框架,儘可能不寫簡歷上,若是寫了而且被面試官問到就直接跟他說這個正在學,用的比較少。正常面試官也有數,你負責的部分用到的技術棧他會問的深一些,這塊本身掂量一下。
7.針對基礎,平時多積累。多整理博客也是爲了臨時突擊,像網絡,數據庫,操做系統,問來問去也是那幾題。多看面經幾十遍,不懂原理也能吟。
8.針對技術框架,除了基本原理以外,也要準備應用場景。這塊對應屆生來講要求不會很高,社招的話要整理每一個原理的應用場景,相對來講會細一點,源碼加分。
9.針對算法。算法是貫徹在平常學習的,我刷算法的策略就是理論先上,其次代碼,最後優化。是把全部的算法先刷一遍理論,第二遍再回頭代碼哦,也都有整理思路的。固然,也要準備經常使用算法,快排,冒泡的手擼代碼。
大部分仍是吹吹思路就能夠了,因此我先前面提到了先刷實現思路。
10.公司面試題優先。去牛客、看準或拉鉤查對應公司的面試題,這個命中機率比較大。
11.公司產品業務準備,最好也看看競品,讓面試官另眼相看。以前面了一家騰訊系的,從它的融資開始講。
12.面試官正常從上到下看簡歷,記得布好局。本身面試本身的時候多想一想怎麼把上面的知識點不經意的串到你熟悉的知識點。
爲何說不經意呢?要是你直接跟面試官說,我這個框架不熟,對***比較熟,有點尷尬的。因此要不經意的。
當面試官問你hashmap原理的時候,好比說你多線程比較熟,你最後一句提一下它是線程不安全的。又或者你數據結構比較厲害,那就說它是紅黑樹。又或者你對Lambda,JDK1.8一些特性比較熟,那就能夠說它是在JDK1.8優化的。
平時仍是得多整理,面試以前複習一手博客,一手面經,一手面試的思惟導圖。
最後說一句:抓住學生紅利期,不管機會仍是精力都有可能在巔峯時期。
若是以上還不能解答你的疑惑,能夠加我微信進行詳談。因爲微信後臺的百度網盤連接時常失效,須要我整理的面經及答案,項目或者更詳細的學習路線能夠加我微信得到。
置頂微信公衆號,後續會繼續推出具體的一系列大廠面經,敬請期待。