大數據開發方向分享:春招獲螞蟻金服、拼多多、華爲(終端)、遠景能源、華泰證券等offer

大數據開發方向分享:春招獲螞蟻金服、拼多多、華爲(終端)、遠景能源、華泰證券等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官網》

內容有點多,就放一部分吧。如果需要聯繫我的,請加qun號528040253聯繫qun主。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章