大數據開發方向分享:春招獲螞蟻金服、拼多多、華爲(終端)、遠景能源、華泰證券等offe
一、背景
2020屆985碩士,投的基本是上海崗位,非科班轉行大數據開發方向和Java後端開發。
參加了2020屆春招實習招聘,主要投的是大數據開發崗位。
offer獲得情況:螞蟻金服、拼多多、華爲(終端)、遠景能源、華泰證券(Java)等。
二、學習方向
主要學習了Java基礎和大數據開發框架。
Java部分:基礎、併發、JVM、數據庫(sql)
計算機基礎:計算機網絡、操作系統、Linux
Hadoop部分:MR、YARN、HDFS(部分源碼)
分佈式理論:Zookeeper、Raft
流計算部分:Spark、Flink、Storm/Jstorm
非關係存儲:Redis、Hbase、Tair、Tbase
消息隊列:Kafka
沒有去深入學習Spring框架那一套,只是會使用,有些公司沒有大數據開發崗位,所以投的後端開發,但是對面試影響不大,就說自己只學了大數據的框架。
三、面試記錄
1、騰訊提前批(後臺)
筆試情況:有筆試,最好做,要不然後面會視頻敲代碼
一面:電話面
上來先問清楚情況,能不能實習。想做這我們部門(方向)這方面嗎?
1、jvm垃圾回收、內存管理、類加載機制;
2、linux指令:觀察端口netstat、內存top、磁盤df、進程打開多少文件夾怎麼看(我說了ps…不對,應該lsof )
3、數據庫瞭解多少,索引說一下,存儲引擎比較,熱備份、冷備份。
4、進程間通信種類,最快的是哪種?
5、如何判斷進程進程死循環?我說用心跳機制吧(應該用ps aux | more看cpu佔比或者 用top動態查看)。
6、TCP建立三次握手。
7、select、epoll、poll區別。
二面:電話面
我竟然拒絕了面試官,因爲我當前不想去深圳,但是也要面試下增加經驗啊,以後還是有機會就面試吧。拒絕以後,就沒人撈我了。還是太年輕。
2、螞蟻金服提前批 (大數據平臺相關)
沒筆試
3月18一面
1、項目、天池比賽:心跳機制、數據丟失問題、進程通信,項目分工。
2、紅黑樹和跳錶,數據庫索引。
3、volatile作用,變量不斷加一,是否能夠併發加正確,非原子性。
4、hashmap線程安全實現。
5、spark RDD原理;
6、源碼:hdfs寫文件如何保證正確性;說下零拷貝模式。
7、kafka數據丟失問題。
8、spark數據傾斜怎麼處理。
9、說下java裏面的OOM
10、用程序實現棧溢出,我說的遞歸。
11、tcp如何解決丟包問題。
12、你覺得現在互聯網未來技術點在哪裏?
3月22二面
這一面有點緊張了,有不會的可以撤別的啊。雖然這個不瞭解,但是看過相關的。
本質上不看簡歷的,所以應該多說一些其他項目。
上來問實習,數據庫同步回答的不好,還不如不寫。
1、GC優化,程序中應該如何優化?
2、JVM Server模式與client模式啓動的差別?
3、arraylist和linkedlist區別
4、concurrenthashmap中1.7和1.8的區別。
5、hashmap擴容方面做了哪些優化?我只答出了紅黑樹。
6、Synchronized是重入的嗎?和lock區別,以及synchronized對於普通方法和靜態方法加鎖。
7、String和stringbuffer、stringbuilder;
8、數據庫同步方案有哪些?考慮可能出現的事務問題。可以說說同步sql語句啊。這應該是開放性問題。
9、GC算法
10、數據庫的隔離性問題,acid,髒讀,不可重複讀、緩讀。
11、數據庫select查詢優化問題。
12、linux中數據怎麼存儲,關於數據塊怎麼優化存儲。隨機讀和順序讀。
13、動態規劃算法,你寫過嗎?我說寫過leetcode上的問題
14、看過一些先進的論文嗎?我竟然回答沒有。。
15、看過開源項目嗎?hdfs的源碼,但是竟然不問,扯到linux上了。。
16、linux內存管理,以及其中的算法。
17、進程、線程、協程區別。用過協程嗎?
18、虛擬內存和物理內存之間如何聯繫的?什麼時候進行交換。
3月27 HR面
1、簡歷問下,學校問下
2、職業規劃
3、地點選擇
4、項目點、自豪點
5、聊聊人生
3、字節跳動(大數據實習生)
白金內推免筆試,浪費了(筆試挺難的)
一面視頻面
1、介紹下mapreduce
2、敲代碼:用mr實現top10
3、敲代碼:寫單例模式,加鎖,比較兩種區別
4、敲代碼:實現一個blockqueue
5、敲代碼:實現36進制加法,中間不準轉成10進制。
代碼敲得不好,當場感覺涼涼。
4、遠景智能(大數據開發)
筆試簡單,基本都過
都是電話面
4月2
一面:簡歷面
1、線程和進程區別,進程爲什麼開銷大?有哪些開銷
2、JVM內存管理和垃圾回收。哪些操作會導致OOM?循環引用怎麼解決?
3、分佈式協議PAXOS/zab/raft都說下原理和區別;
4、zookeeper原理大概講下。以及你用到的實際案例,比如HA
5、如何實現HA的選舉,比如namenode的選舉
6、數據庫mysql和hbase的區別,以及仔細說下hbase的使用。
7、數據庫的隔離級別,如何預防髒讀?
8、說下hashmap/hashtable/concurrenthashmap,說底層了;
9、簡述下http,狀態碼
10、tcp和ip區別。說下ip的包頭和tcp的包頭。
11、等下一面通知吧。。。
二面:4月9
1、自己說下上次面試,回答不好的問題:hashmap、循環引用解決(擴展到鏈表是否有環)
2、數據庫如何給一個範圍加鎖,有幾種方法去解決幻讀?
3、volatile作用和底層如何實現
4、synchronized和Reentranlock區別以及底層實現原理
5、CAS理論以及典型運用
6、其他開放性問題。。。
三面HR:4月17
1、能不能來?
2、實習日期
5、拼多多(大數據開發)
有筆試,兩到算法,兩道sql
一面視頻面 4月8日
簡歷面,從頭到尾
1、先問筆試題還記得嗎?不記得了,只記得有什麼題型,做出多少。
2、天池項目
3、自己搭建的大數據項目,問了一些如何搭建以及搭建了哪些組件細節
4、說下second namenode 作用,扯到namenode 的ha,還有zk
5、zookeeper如何實現HA,以hdfs舉例子
6、java特性,如何實現多繼承?多態含義
7、topk問題
8、實現一個最大堆
二面4月15 視頻50分鐘(小姐姐)
1、手寫一段代碼實現以下功能:輸入一組數字,長度爲N,按照數字由小到大,輸出前K個數字。
2、問實習項目,回答的一般,寫在簡歷上的點必須要回答清楚
3、自己寫的大數據項目,扯到一些問題
4、zookeeper如何實現namenode高可用?爲了什麼要主備切換,直接重啓不行嗎?數據量太大啊,重啓時間太長,扯到第一關係構建,安全模式等(說了有20分鐘)
5、JVM虛擬機啓動有哪些線程?
6、重載和重寫的區別
7、進程和線程的區別
8、String是基本數據類型嗎?能被繼承嗎?final關鍵字
9、mysql索引說下,b+樹
10、mvc瞭解嗎?不懂,只瞭解大數據框架
11、請問你們項目組做什麼的?她說大數據,我們數據量很大,有大數據平臺,然後你懂得很多理論和源碼,所以很適合你,給你提供鍛鍊的環境(言外之意,你穩了?)
總結:面試整體難度還可以,重項目,有基礎。算法必須有,劍指offer級別的。實習項目不夠充分,寫了就要會。
HR:4月25
1、隨便聊聊
2、核心點:能不能去實習?
HR:4月26
Offer call
下面投的日常實習生,面試記錄
6、華泰實習面試
電話面(23分鐘)
實習面試,問的不深。
按照簡歷問,華泰裏面簡歷系統,一定寫明方向。
1、 自我介紹
2、 天池比賽項目:數據預處理(SQL、mysql數據庫優化、ACID)、特徵提取方法、簡述下隨機森林。(本來從SQL引申到mapreduce、HBase,但是他不問)
3、 Linux平臺:查看文件指令(tail/sed)、進程啓動方式(命令行直接運行可執行文件)
4、 簡歷裏面沒寫明,不知道我做什麼方向,我想搞大數據,我說了大數據相關的點(hadoop/spark),但是他一點都不問,說明他可能不瞭解吧。
5、 問我實習情況:能實習多久。
7、頭條日常實習(大數據開發)
視頻面試
第一面:看着簡歷問的(該多說多說,不該多說不說)
1、 JVM垃圾回收
2、 分佈式協議有哪些,Raft協議
3、 Linux中epoll和select區別
4、 TCP可靠性保證怎麼實現
5、 進程間通信的方式。
6、 數據傾斜處理。在spark中處理。
7、 算法:鏈表反轉
8、 算法:正方形矩陣內實現最小路徑。
第二面:
算法:具體寫啥忘記了,應該是兩道鏈表題,當時算法刷的不多,寫的不好。
四、學習筆記–面試點總結
內容有點多,就放一部分吧。星號表示重點程度。如果需要該筆記全部內容(有償提供),請加qun號528040253聯繫qun主。
Java部分
一、Java基礎 12
推薦書籍:《Java編程思想》、學習視頻(畢向東Java入門視頻) 12
1、Comparable和Comparator區別 12
2、Java中方法的參數傳遞機制(都是傳遞副本)★ 13
3、Java的深拷貝和淺拷貝的區別 14
。。。
。。。。
13、生產者和消費者模式(與併發編程一起學習) 20
14、java反射 22
15、final關鍵 ★ 22
二、JVM 23
推薦書籍:《深入理解java虛擬機》 23
1、介紹JVM的內存區域(運行時數據區)。 ★★ 23
2、如何判斷對象已經死亡? ★★ 24
3、簡述強、軟、弱、虛引用。 ★ 24
4、簡述垃圾收集算法以及各自特點。 ★★ 25
5、常見的垃圾收集器有哪些。 ★★ 26
6、吞吐量優先和響應優先的垃圾收集器如何選擇? 27
7、內存分配與回收策略。(對象何時進行老年代?) ★ 27
。。。。
13、jvm啓動模式之client與server(螞蟻金服) 30
14、如何優化Java GC(螞蟻金服) ★ 30
。。。
三、Java併發 32
推薦書籍:《Java高併發程序設計》(強烈推薦結合這本書學習) 32
1、線程的狀態有哪些? 32
2、併發級別有哪些? 32
3、happen-before原則是什麼? ★ 32
4、創建線程的幾種方式。 33
5、線程基本操作 33
6、volatile和synchronized有什麼區別? ★★ 33
。。。。
9、線程之間的協作 36
10、ConcurrentHashMap實現原理 ★★ 37
11、多線程鎖的優化 ★ 37
四、數據庫
推薦書籍:《mysql必知必會》、《MySQL技術內幕:InnoDB 存儲引擎》 42
1、數據庫ACID特性 ★★ 42
2、四大隔離級別,以及不可重複讀和幻影讀的出現原因 ★★。 42
3、封鎖的粒度、鎖的類型。 43
4、 B+ Tree 原理,與其它查找樹的比較。 ★★ 45
.....計算機基礎、數據庫等部分
大數據部分
目錄 2
★閱讀指南 8
1、本書面向人羣 8
2、本書主要內容 8
3、如何使用本書? 8
4、最終達到什麼學習效果? 8
5、如何應對面試? 8
★筆者面試全記錄 9
1、騰訊提前批——後臺開發——選做筆試(最好做) 9
2、螞蟻金服提取批——大數據開發相關——無筆試 9
3、字節跳動——大數據實習生——白金內推免筆試(筆試挺難的) 10
4、遠景智能——大數據開發——筆試都是牛客原題 11
5、拼多多——大數據開發——有筆試,兩到算法,兩道sql 11
6、華爲——大數據開發——有筆試——現場面 12
7、華泰證券——項目實習生——Java開發 12
8、字節跳動——大數據開發——日常實習 13
面試心得 13
一、MapReduce過程以及細節 ★ 14
推薦書籍:《Hadoop權威指南》 14
1、整個流程的圖 14
2、文件切片 15
3、環形緩衝區的底層實現 17
。。。
6、全排序 ★ 19
7、輔助排序(二次排序) 20
8、join(和hive sql底層基本一致) 21
9、分佈式緩存 21
二、YARN 22
推薦書籍:《Hadoop技術內幕:Yarn》 22
1、簡述mapreduce1工作機制 ★ 22
2、簡述YARN(mapreduce2)工作機制 ★ 23
3、簡述YARN中application master向resource manager 申請資源的過程。 24
4、比較mapreduce1和YARN(mapreduce2) ★ 25
。。。。
9、YARN中的各部分運行故障如何處理?(作業運行失敗可能的原因) 29
10、YARN中常見問題以及解決方案。 30
11、Yarn中Resource Manager的高可用實現(主備切換的底層實現) 31
12、Yarn中Resource Manager的高可用當中“腦裂”問題的解決。 ★ 31
三、Zookeeper 32
推薦書籍:《從paxos到zookeeper分佈式一致性協議》 32
1、簡述事務的四大特徵以及隔離性問題(單機數據庫下的ACID) ★。 32
2、簡述下分佈式系統和CAP、BASE理論。 ★ 32
3、分佈式系統下的一致性協議(2PC/3PC/Paxos)。 ★ 33
4、簡述Zookeeper中的分佈式協議ZAB協議。 ★★ 33
5、Zookeeper的系統模型(核心watcher監聽機制)。 ★★ 34
。。。。
9、Zookeeper服務器啓動流程分析。 37
10、構建Zookeeper高可用的集羣。 37
11、Zookeeper的典型應用場景總結。 ★★ 37
12、raft協議 ★ 39
四、HDFS 40
推薦書籍:《Hadoop 2.X HDFS源碼剖析》 40
HDFS通信框架 40
1、簡述HDFS的各節點之間的通信問題。 40
2、HDFS中RPC的通信接口及其主要功能(RPC上層接口)。 41
。。。。
5、HDFS中客戶端與namenode的RPC通信實例(將RPC上層接口和底層實現結合分析)。 43
namenode 44
2、HDFS的namenode文件系統目錄樹管理(第一關係管理)。 ★★ 44
3、HDFS的namenode對數據塊和數據節點的管理。(第二關係管理)。 ★★ 47
4、HDFS中數據塊副本狀態的管理。(BlockManager的成員變量) 48
5、namenode中數據塊的增加的管理。(寫文件,申請數據塊構建內存) 49
6、namenode中數據塊副本的刪除的管理。 49
。。。。
12、namenode對datanode的心跳處理。(DatanodeManager) 52
13、namenode中的租約管理。(重點租約恢復) ★ 53
14、namenode中的集中式緩存管理。(集中緩存在對應副本的datanode上 ) 54
15、namenode中的安全模式。 ★★ 54
16、namenode中的高可用(HA)的實現。 ★★ 55
.....後面還有流計算部分,Hbase數據庫數倉等。
五、學習書籍推薦
推薦書籍
●Java書籍
Java基礎:《Java核心技術卷I》、《Java編程思想》
Java提高:《深入理解java虛擬機》、《Java高併發程序設計》、 《大話設計模式》、JDK部分源碼
關係型數據庫:《 MySQL必知必會》、《MySQL技術內幕:InnoDB 存儲引擎》
緩存: 《Redis設計與實現》
計算機基礎:《現代操作系統》、《圖解TCP/IP》、《鳥哥Linux私房菜:基礎篇》
架構:《大型網站技術架構》
●大數據開發書籍
Hadoop:《Hadoop權威指南》、《Hadoop技術內幕:Yarn》、《Hadoop 2.X HDFS源碼剖析》
分佈式協議:《從paxos到zookeeper分佈式一致性協議》
流計算:《Spark大數據處理技術》、《Storm分佈式實時計算模式》、《Flink官網/》
非關係型數據庫:《HBase權威指南》
消息隊列:《Kafka權威指南》、《Kafka官網》