2020年秋招各大公司面試彙總

在IT中穿梭旅行發表於2019-07-23

騰訊一面  試下   4月6日  掛

1 自我介紹

2 介紹一下你在專案中的承擔的任務

3 你對哪種語言熟悉

4 執行緒池使用過吧,說說執行緒池中有哪些關鍵字 具體使用方法。

5  說說hashMap 使用的是哪種資料結構,

6說說hashMap 和 ConcurrentHashMap 的區別

7為啥hashMap是執行緒不安全的? 

8鎖機制怎麼使用的?

9如何檢視linux 記憶體佔用情況

10 如何在4億個數字中去重

11 快速排序的原理及實現

12 遞迴演算法如何查詢

位元組提前批一面   

1. 自我介紹
2,介紹一下專案
3,MapReduce中容易發生資料傾斜,是怎麼產生的,如何處理?
4,Hive資料傾斜怎麼產生的? 怎麼處理?
5,Spark 資料傾斜怎麼產生,如何處理?
6.  大表和小表如何進行查詢?
7.說說HashMap?
8.hashMap使用什麼樣的資料結構?如何擴容?
9.hashMap執行緒安全嗎?和它對應的hashTable呢? CurrentHashMap呢?
10.HashTable 和CurrentHashMap 的區別?
12.用過哪些設計模式? 講講動態代理模式 和單例模式
13 寫一下單例模式,在多執行緒情況下呢?
14 設計一個棧,包含出棧,入棧,是否為空等
15 求兩個大數相加,每個數100位長度。

位元組提前批二面

1.自我介紹
2.介紹一下Spring及Springboot.
3.Spring IOC如何解決迴圈依賴的問題?
4.有沒有產生過依賴A依賴B,B依賴C?
5介紹一下Spring AOP
6Spring AOP用的哪些設計模式?
7 JDK代理和CGlib代理有啥區別?
8,假如沒有介面,又含有final,如何使用動態代理。
9沒有mybatis,如何寫dao層?
10.說一下沒有mybatis時,通過JDBC具體如何實現這個過程的?
11.瞭解java執行緒池嗎?
12.執行緒池在提交任務和執行任務時是怎麼做的?
13建立執行緒池,當裡面的執行緒數量達到最大時,會出現什麼問題?
14 說一下ThreadLock?
15 說一下mysql的事務的隔離級別
16 講一下mysql的儲存引擎
17 mysql的索引有哪些?
18 寫兩個程式碼? 
1 實現一個連結串列反轉,設定一個步長,每隔幾次,連結串列進行反轉
2 設計一個hashMap,實現一個put方法。

 

阿里一面 實習 4月24日  面試時長2小時  掛

阿里的第一次面試:
1.自我介紹
2.研究的課題以及培養方向
3.介紹一下你參與的專案
4.專案中有哪一部分是有技術難點的,以及技術架構是怎麼樣的?
5.50個人的併發量也很低,為什麼會出現系統頁面資料顯示過慢?
6. 那你們是怎麼解決那個頁面顯示速度過慢?
第二個系統介紹 
7.如何將多個部門的資料進行融合?
8.往系統中匯入資料的時候會遇到什麼問題?
9.系統前端採用什麼做的?
10.匯入時,進度條是通過什麼技術實現的?
11.返回前端是怎麼返回的?
12.前端機制,websocket有沒有了解
13.第三個系統介紹
14.系統產生日誌檔案,一天產生多少條?
15.怎麼用mapreduce處理日誌檔案的?
16.從業務上說一下怎麼對日誌檔案進行分割槽的,怎麼儲存的?
17.用mapreduce處理日誌檔案的任務,輸入是什麼,輸出是什麼?
18. 處理日誌時,輸入是一個文字,要對他進行拆分,拆分的緯度是什麼緯度?
19.用hive怎麼對日誌檔案進行多維度分析的?

關於網路相關的問題

20.四層模型是哪四層,7層模型是哪7層?
21.鏈路層要解決什麼問題? 
22.資料鏈路層的網路地址用什麼表示?
23.三次握手和四次揮手?
24.四次揮手,斷開連線的時候,經常會出現time_wait的狀態,這個狀態是怎麼產生的?  
25.TCP是在IP的上層還是下層?  上層
26.TCP和UDP有什麼區別,以及用途
27.UDP典型的應用?
28.HTTP屬於哪一層協議 ?
29.HTTP底層是基於哪一層協議的?
30.HTTP和 HTTPS的區別?
31.說說對HTTP的協議有什麼瞭解?
32.HTTPS的安全體現在哪個方面?
33.說說HTTPS協議關於CA證照這方面的瞭解
34.HTTPS傳輸時涉及到一些加密演算法,有哪些瞭解,以及演算法的應用場景 比如RSA 
35.對稱加密演算法和非對稱加密演算法的概念
36.HTTP協議的method有幾種
37.get和post的區別
38.web程式設計瞭解多少?
39.在前端提交請求時,cookie中經常有個jsessionid的cookie值,這個cookie值是用來幹嘛的?
40.伺服器一般儲存了一個session,瀏覽器為什麼知道我多次請求在一個session裡面,為什麼能找到我之前的session
41.session機制

資料結構相關的知識:

42. 說說樹的遍歷有深度遍歷(DFS)和廣度遍歷,一般怎麼實現 
深度遍歷就是先序遍歷 先序遍歷採用遞迴,
非遞迴需要用到棧,利用棧的先進後出特性
廣度遍歷就是層次遍歷,應該使用非遞迴,需要用到佇列,先將根入隊,佇列不空時pop,然後入左子樹,再入右子樹
43.排序演算法都有哪些,以及他的時間複雜度
44.說說平衡二叉樹的特點

問一些java語言的問題

45. 說一下==和equals的區別?
46. 為什麼要重寫equals和hashcode()方法
47.靜態變數和靜態方法,和例項變數和例項方法有什麼區別?
子類不能重寫靜態方法
48.為什麼要用靜態方法和靜態類
49說下關於map以及他的實現類有哪些?
50.說一下hashmap,hashtable,currenthashmap的區別
51.經常在遍歷一個map時,在刪除時,經常會遇到併發錯誤
52.設計模式 瞭解哪些,比如單例模式,工廠模式,動態代理模式
53.說說對垃圾回收機制的瞭解
54.垃圾回收機制的演算法有哪些,初生代用哪些演算法,老生代用哪些演算法
55.如何判斷出哪些垃圾該清理,哪些不該清理?

資料庫方面的知識
56.說說內連線和外連線的區別
57.資料庫設計時會碰到一對多,多對多時,應該怎麼設計
58. 就以使用者表和角色表為例,假如使用者表裡面放著角色表的id作為 角色表的外來鍵,那一個使用者對應多個角色時,

這樣設計會有哪些問題
機器學習方面的問題
59.監督學習和非監督學習有什麼區別?
60.springboot應該要接收前端ajax請求時,應該使用什麼註解
61.springboot中configuration的註解有什麼用?
分散式叢集有哪些瞭解
62.nginx有哪些瞭解?
63.如果一個session在一臺伺服器上儲存,下一次session請求時,nginx反向代理把我的session請求轉發到另一臺伺服器上,這種情況該怎麼處理?
64.微服務架構和一些容器的技術有什麼瞭解?
65.docker有什麼瞭解?
 

京東實習1面   通過

1,自我介紹
2  int 佔幾個位元組? 其他幾個數值型的分別佔幾個?
3.集合,經常用的組數和連結串列的有哪些? 說說ArrayList 和LinkedList
4. 說說HashMap
5. 說說conCurrentHashmap?
6 執行緒用過嗎? 在哪用的?
7.五條執行緒是怎麼設計的?
8.怎麼啟動一個執行緒?
9.瞭解反射嗎? 說說反射?
10.用過Spring嗎?
11.為什麼在配置檔案中配置了,就可以用?
12.用過redis嗎 redis都有哪些資料結構?
13.說說Hadoop?
14 說說HDFS的讀操作和寫操作
15 說說MapReduce
16 Hive的後設資料,都有哪些?
17 用過kafka嗎?
18 寫一個單例模式
19 final 關鍵字
20 介紹一下volatile 關鍵字

2 京東實習二面 (主要問專案) 通過

1.自我介紹
2.介紹一下第一個大資料專案,用了哪些技術,畫一下架構圖
3.flume採集子系統日誌,這些日誌資料都包含哪些?
4.叢集是怎麼部署的?
5.分析使用什麼進行分析的?
6.系統分析的優點和缺點都有哪些?如何改進一下?
7.實時的瞭解多少?

 

祖龍娛樂     7月24日下午5點面試   時長 73分鐘  (包括答案) 通過

在電腦前苦等半小時,終於面試官上線了,一看,一下兩個人,我去,心理壓力好大,趕緊放鬆放鬆心情

先簡單的來個自我介紹:

1  自我介紹

2  你自己搭過大資料叢集嗎? 那你說說搭建hadoop叢集的3個xml檔案

  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml   心想這簡單,趕緊將3個xml說出來,並簡單說了下里面都包括啥

3 正常的hadoop叢集工作都會啟動哪些程式?

當時回答是:namenode,datanode ,secondarynode ,

4.他們的作用分別是什麼?

  • nameNode   主節點 負責維護整個Hdfs檔案系統的目錄樹,以及每個檔案所對應的block塊資訊(後設資料)
  • DataNode  從節點  負責儲存具體的檔案資料,並且每個block可以在多個datanode上儲存多個副本
  • secondary  nameNode  相當於一個備用的naneNode, 當nameNode當機之後,可以將secondary nameNode
  • 的資料備份到nameNode上面 ,但不能備份完整資料,它有兩大功能,1 映象備份,2 日誌與映象定期合併

5 你能詳細介紹一下secondaryNode 的具體作用嗎?

當然可以,這個問題我可是仔細研究過,哈哈  

  • secondary  nameNode會經常向namenode傳送請求,是否滿足check。
  • 當條件滿足時,secondary  nameNode將進行checkPoint  。
  • 這時nameNode 滾動當前正在寫的edits,將剛剛滾動掉的和之前edits檔案進行合併。
  •  secondary  nameNode下載edis檔案,然後將edits檔案和自身儲存的fsimage檔案在記憶體中進行合併,
  • 然後寫入磁碟並上傳新的fsimage到nameNode,這時nameNode將舊的fsimage用新的替換掉。

 6  看來你掌握的還不錯啊,HDFS的塊預設是儲存幾份?一個塊多大?

     預設儲存是3份,一個塊是128M。

7 之前的64M 是從哪個版本變換的?

hadoop 1.0  預設是64M, hadoop 2.0 由64M 改為128M

8 那假設現在是128M,那我在工作中想把它調為256M,那我需要調整什麼,才能改變塊的大小?

主要是磁碟的儲存決定 塊的大小,塊組成的檔案的大小取決於磁碟的傳輸速率,調整磁碟,可以改變塊的大小。

9 Hdfs的讀寫過程你瞭解嗎? 簡單講講?

那我就說說寫過程吧,

  • 1、客戶端跟nameNode 通訊,請求上傳檔案,nameNode檢查檔案,父目錄是否存在,並向客戶端返回是否可以上傳檔案
  • 2、客戶端請求第一個block塊該上傳到哪個datanode伺服器上,nameNode查詢從節點之後,返回對應的danaNode 伺服器
  • A,B,C等。
  • 3、客戶端請求nameNode伺服器,採取就近原則,選擇A伺服器上傳資料(本質上是個RPC呼叫,建立PipeLine),A收到
  • 請求後,A調B,B調C,將每個pipline建立連線,然後逐級返回給客戶端
  • 4 客戶端開始往A上傳第一個block,以Package為單位,A收到一個Package,就會傳給B,B傳給C,A每傳一個package就會
  • 放入一個應答佇列,等待應答。
  • 5、當第一個block傳輸完成後,客戶端再次請求namenode上傳第二個block。

10 挺好,那你說一下MapReduce的工作原理?

  • 1、客戶端啟動一個job,然後向jobTracker請求一個jobID
  • 2、 然後將執行所需要的資原始檔上傳到HDFS上,包括Mapreduce程式打包的jar包,配置檔案,以及計算的輸入劃分資訊等
  • 3、 這些檔案全部儲存在JobTracker專門建立的jobID資料夾中(jar檔案會有10個副本,輸入劃分資訊對應著jobTracker應
  • 該啟動多少個Map任務)
  • 4、JobTracker將這些資原始檔放入作業佇列中,排程器根據排程演算法對作業檔案進行排程,根據輸入劃分資訊劃分Map任務
  • 並將map任務分配給TaskTracker執行。
  • 5、taskTracker每隔一段時間傳送給jobTracker一個心跳,告訴它自己的執行情況,這個心跳中包含map任務完成的進度等。
  • 6.當最後一個任務完成後,jobTracker會將該任務設為成功,返回給客戶端。客戶端得到結果,得知任務完成便顯示
  • 訊息給使用者。

11 你在具體講一下map中的一些步驟,例如partition,sort,combiner,shuffle等等。

好的,sort 主要是排序,combiner是合併,partition是分片等,

首先Mapper根據檔案進行分割槽,sort將Mapper產生的結果按照key進行排序,combiner將key相同的記錄進行

合併,partition是吧資料均衡的分配個Reducer. shuffle是Mapper將結果傳給Reduce,在這期間容易發生資料傾斜等。

12 那這個資料傾斜一般是在Mapper端發生的還是Reduce中發生的?

Mapper將資料處理完傳給Reduce,當Reduce進行處理時,因為一部分key的資料量過大,導致其他分割槽已經執行完成

而資料量過大的key執行時間過長,所以資料傾斜是發生在Reduce端的。

13,對,那發生資料傾斜是因為這個key分佈不均勻,那你會怎麼優化呢?

因為研究生期間研究的課題就是關於Spark的並行大資料清洗,所以對MapReduce和Spark發生資料傾斜的過程和解決方法

比較熟悉,

可以在Mapper期間將大資料量相同的key進行分散,通過新增N以內的隨機數字首,對資料較多的Key進行子擴充套件,

先進行區域性操作,再去除隨機數之後進行聚合操作,避免在進行Shuffle操作時出現資料傾斜問題。

14 那Mapper端進行combiner之後,除了速度會提升,那從Mapper端到Reduece端的資料量會怎麼變?

資料量會減少,因為combiner之後,會將相同的key進行一次聚合,資料量會在這時候減少一部分

15 map 輸出的資料如何超出他的那個小檔案記憶體之後,那他是落地到磁碟還是落地到HDFS中?

落地到磁碟中,因為map,reduce操作,就是一次次的I/O請求

16  Map到Reduce預設的分割槽機制是什麼?

這個是根據那個hash進行計算   對map中的key做hash,對reduce個數取模

17 hadoop的調優主要針對配置檔案的調優你知道哪幾種?

  • 思考了一下,
  • 1、因為Mapreduce運算時是在磁碟中進行的,所以 通過修改磁碟I/O,也就是設定和的預讀緩衝區大小
  • 來提高hadoop裡面大檔案順序讀的效能。以此來提高I/O效能。
  • 2、通過修改三個配置檔案的引數如 core-site.xml,mapred-site.xml,hdfs-site.xml等
  • 例如 修改core 檔案裡面的buffer.size,來修改讀寫緩衝區的大小,還有hdfs檔案裡面的block.size修改塊的大小等
  • 都可以進行調優

18 好的,給你出個題,現在有1G的資料檔案,裡面有四個欄位,分別是id,name,age,class,然後要按照class來分組,

id來排序,口述一下mapreduce的過程是怎麼實現的?這裡面會有幾個map?

思考了一下,

  • 1、首先1G檔案,那預設一個塊是128M,所以可以分為8個塊,對應的就是8個Mapper
  • 2、然後定義一個物件,將四個屬性封裝到物件中,實現序列化和反序列化
  • 3、定義一個類繼承partitioner類,呼叫物件中的class屬性設定分組,
  • 4  在map端對檔案進行讀取,然後通過Split來進行分割,呼叫物件的id作為key,然後進行區域性sort排序,在combiner區域性聚合
  • 後通過reduce來進行整體聚合。

說完之後感覺對著吧,果然,聽見面試官說嗯嗯,好。覺得差不多對啦

19 嗯嗯,好,說說yarn吧,它有什麼優勢,能解決什麼問題?

yarn叢集主要分為主節點ResourceManage,從節點 NodeManage  ResourceManage負責資源的分配,將叢集的資源分配給

各個應用使用,資源分配的基本單元是Container,NodeManage則是一個計算節點的管理者,負責啟動應用的

所需的Conbiner,並對內部資源進行監控等。  

yarn一般和mapreduce進行結合,主要是對mapreduce中的資源計算進行維護等。

答完之後,心想別問yarn吧,這塊看得不是很深,哈哈,果然,面試官問了一個問題後就跳過了

20 說說Spark吧,Spark為啥比Mapreduce執行塊,原因都有哪些?

1 spark是基於記憶體計算,mapreduce是基於磁碟運算,所以速度快

2 spark擁有高效的排程演算法,是基於DAG,形成一系列的有向無環圖

3 spark 是通過RDD運算元來運算的,它擁有兩種操作,一種轉換操作,一種動作操作,可以將先運算的結果儲存在

記憶體中,隨後在計算出來 

4 spark 還擁有容錯機制Linage

21 什麼是RDD? 

RDD就是彈性分散式資料集,可以理解為一種資料結構,擁有多種不同的RDD運算元

22 你都知道哪些RDD運算元?

比如轉換操作,有map().fliter() flatMap(),distinct()等  動作操作  有 collect ,reduce 等

23. 你知道reduceBykey 和groupBykey有啥區別嗎?

reduceByKey會在結果傳送至reducer之前會對每個mapper在本地進行merge,

有點類似於在MapReduce中的combiner。這樣做的好處在於,在map端進行一次reduce之後,資料量會大幅度減小,

從而減小傳輸,保證reduce端能夠更快的進行結果計算。

groupByKey會對每一個RDD中的value值進行聚合形成一個序列(Iterator),此操作發生在reduce端,

所以勢必會將所有的資料通過網路進行傳輸,造成不必要的浪費。同時如果資料量十分大,

可能還會造成OutOfMemoryError。

24.現在有一個業務,當SparkStreaming在消費kafka裡面的資料,然後消費了一段時間之後,程式掛了,當

下一次程式啟動時如何保證SparkStraming能繼續消費kafka之前的位置?

聽到這個問題時,我就偷笑啦,幸虧上次海康威視問過我,我就好好看了一下

可以依靠checkPoint機制來保證,每次SparkStreaming消費kafka資料後,將消費的kafka offsets更新到checkpoint,當

程式掛機或升級時,就可以用過讀取checkpoint 的記錄來接著上次的位置進行讀取,實現資料的零丟失。

25,除了這種方式還有什麼方式?

還可以在sparkStreaming中另外啟動一個預寫日誌,這將同步儲存所有收到的kafka資料導hdfs中,以便發生故障時,

恢復到上次的位置和之前的資料。

26,你說說Spark的廣播變數?

聽到這個問題後,一臉懵逼,不會拉。。 我都猜想 面試官肯定在想,小樣,我還難不倒你拉。。。。

然後我就讓面試官給我講了一下。。

Spark中因為運算元中的真正邏輯是傳送到Executor中去執行的,所以當Executor中需要引用外部變數時,

需要使用廣播變數。廣播變數只能在Driver端定義,不能在Executor端定義,在Driver端可以修改廣播

變數的值,在Executor端無法修改廣播變數的值

27 那你知道累加器嗎?

之前看過一點,累機器相當於統籌大變數,常用於計數,統計。累加器常常被作為rdd的map filter操作的副產品等。

28.你說說spark中 job,stage,task,分別代表什麼?

Job簡單講就是提交給spark的任務。 Stage是每一個job處理過程要分為的幾個階段。

Task是每一個job處理過程要分幾為幾次任務。Task是任務執行的最小單位。最終是要以task為單位執行在executor中。

29.嗯嗯 好,說說Spark的工作機制?

我去,咋問的都是大問題啊,幸虧之前複習過。。

使用者在客戶端提交job作業後,會由driver執行main方法並建立SparkContext上下文。執行RDD運算元,形成DAG圖,

然後將DAG圖交給DAGScheduler來處理。DAGScheduler按照RDD之間的依賴關係劃分stage,輸入task Scheduler,

task Scheduler會將stage劃分為task set分發到各個節點的executer中執行,executor以多執行緒的方式執行,每個執行緒

負責一個任務,任務結束後,根據不同型別的任務返回不同的結果。

30  你瞭解zookeeper嗎?

zookeeper 是一個分散式協調服務,zookeeper叢集包括 leader 和 follow

31 說說zookeeper的選舉過程,比如現在有五臺機器,ABCDE依次啟動起來,那麼哪臺是leader?

記得不太清楚了。。就大概說了一下

1.首先更新logicalclock並提議自己為leader並廣播出去

2.進入本輪投票的迴圈

3.從recvqueue佇列中獲取一個投票資訊,如果為空則檢查是否要重發自己的投票或者重連,否則

判斷投票資訊中的選舉狀態: 就回答到這,後來下來百度了一下。。。

32 hive瞭解嗎?

Hive是基於Hadoop的一個資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表,並提供類SQL查詢功能

33.說說內部表和外部表的區別?

內部表的資料是由Hive自身管理的,外部表的資料是由HDFS管理的;

刪除內部表會刪除後設資料和儲存的資料;刪除外部表只刪除後設資料不刪除儲存的資料

34,你知道UDF嗎?

UDF就是Hive提供的內建函式無法滿足業務處理需要時,可以考慮使用使用者自定義函式。

35 一張大表,一張小表,你寫join in時,哪個表放左邊,哪個表放右邊?

小表放前,大表放後,左查詢,根據小表為主進行查詢。

36  問一下kafka的問題吧,kafka是怎麼進行資料備份的?

哇,面試官 你是要把大資料裡面的每個元件分別問一下,。。。。深呼一口氣,思考了一下 然後巴拉巴拉

備份機制是Kafka0.8版本之後出的,一個備份數量為n的叢集允許n-1個節點失敗。在所有備份節點中,

有一個節點作為lead節點,這個節點儲存了其它備份節點列表,並維持各個備份間的狀體同步。

37.消費者是從leader中拿資料,還是從follow中拿資料?

。。。不太會,備份機制這塊沒咋深入瞭解過。

kafka是由follower週期性或者嘗試去pull(拉)過來(其實這個過程與consumer消費過程非常相似),

寫是都往leader上寫,但是讀並不是任意flower上讀都行,讀也只在leader上讀,flower只是資料的一個備份,

保證leader被掛掉後頂上來,並不往外提供服務。

38.那換個問題吧。說說kafka的ISR機制?

  • kafka 為了保證資料的一致性使用了isr 機制,
  • 1. leader會維護一個與其基本保持同步的Replica列表,該列表稱為ISR(in-sync Replica),每個Partition都會有一個ISR,
  • 而且是由leader動態維護 
  • 2. 如果一個flower比一個leader落後太多,或者超過一定時間未發起資料複製請求,則leader將其重ISR中移除 
  • 3. 當ISR中所有Replica都向Leader傳送ACK時,leader才commit

39.kafka如何保證資料的不重複和不丟失?

答案上面已經回到了,面試官又問一遍。。可能是看我kafka這塊瞭解不是很深入。想再虐虐我。。。

40.kafka裡面存的資料格式都是什麼樣的?

topic主題,然後主題進行分割槽  topic 分為partition , partition裡面包含Message。

41.kafka中存的一個是資料檔案,一個是索引檔案,說說這個?

。。。。。不太會。。。哇,kafka被虐慘啦

42.kafka 是如何清理過期資料的?

kafka的日誌實際上是以日誌的方式預設儲存在/kafka-logs資料夾中的,預設7天清理機制,

日誌的真正清理時間。當刪除的條件滿足以後,日誌將被“刪除”,但是這裡的刪除其實只是將

該日誌進行了“delete”標註,檔案只是無法被索引到了而已。但是檔案本身,仍然是存在的,只有當過了log.segment.delete.delay.ms 這個時間以後,檔案才會被真正的從檔案系統中刪除。

43.一條message中包含哪些資訊?

  • 包含 header,body。
  • 一個Kafka的Message由一個固定長度的header和一個變長的訊息體body組成。
  • header部分由一個位元組的magic(檔案格式)和四個位元組的CRC32(用於判斷body訊息體是否正常)構成。
  • 當magic的值為1的時候,會在magic和crc32之間多一個位元組的資料:attributes(儲存一些相關屬性,比如是否壓縮、
  • 壓縮格式等等);
  • 如果magic的值為0,那麼不存在attributes屬性body是由N個位元組構成的一個訊息體,包含了具體的key/value訊息 

44.嗯,行,你知道mysql的最左原則嗎?

終於把kafka過去啦。。心累

最左原則:顧名思義,就是最左優先,比如現在有一張表,裡面建了三個欄位ABC,對A進行主鍵,BC建立索引,就相當於

建立了多個索引,A索引,(A,B)組合索引,(A,B,C)組合索引,那查詢時,會根據查詢最頻繁的 放到最左邊。

嗯 好,我的問題問完了,讓我同事問問你。

已經問了40分鐘純問題啦,,再換個面試官,好的,可以

45,剛才我的同事問的都是大資料相關的,那我們問點java相關的。

終於問java啦,下面的java問題每個都回答出來了,就不寫答案啦

46.說說抽象類和介面?

47,集合瞭解吧,說說集合有幾大類,分別介紹一下?

48,hashMap頂層實現瞭解過嗎?具體講講

49,說說hashMap在1.8之後優化的環節

50. HashMap 和 hashTable的區別?

51.另一個執行緒安全的是啥?

52.說說ConcurrentHashMap的底層實現

53.java實現多執行緒的方式有幾種?

54.講講 synchronized,Lock,ReetrantLock之間的區別

55.java的執行緒大概有幾種狀態?

56.sleep 和 wait方法的區別?

57.說說volatile關鍵字

58.說說JVM記憶體區域分為幾大塊,分別講一下

59.說說sql的事務隔離級別

60.說說mysql的儲存引擎

61 給你出個sql 題

student(sid,sname,sex,class)

course(cid,cname,teacher)

grade(cid,sid,score) 

1,sex 改為age,非空,預設值為0

2 統計035號課程分數大於036號課程分數的學生ID

3 統計所有003班學生各門功課的課程名稱和平均分

 

以上是所有的面試題,在寫sql的時候,卡了好久,因為好久沒寫過三表聯查,子查詢的sql,差不多忘了,

後來下線時,一度以為自己掛了,但是過了一個多小時之後,看了一下狀態,面試一輪通過,可能是面試官

看我前面的問題答得還可以讓我過吧。只是這問題量著實有點多。希望儘快約下輪面試。

 

多益網路  面經  時長58分鐘  掛

1 自我介紹 

2 重大專案管理平臺介紹 

3 你主要負責的是哪一塊內容?

4 專案最難的地方在哪?

5  開發週期多長?

6  說一下排行榜公佈的那個具體實現過程

7 團隊合作中遇到什麼問題?

8  對網際網路加班有什麼看法?

9  演算法  

將一個組數迴圈右移,根據K來

10  斐波那契數列,不使用遞迴的方式實現

11 那你說一下java物件的生命週期

12  說一下java的垃圾回收機制,和演算法等

13  什麼是遞迴?

14 使用遞迴 有什麼優點和缺點?

15  說一下圖的表示方法

16  圖有什麼分類,圖論的分配法?

17 都有哪些排序演算法? 

18 哪些是不穩定的排序演算法?

19 說說快速排序的原理?

20 最近看過什麼書?

21 說一下三次握手

22 為什麼要看 圖解HTTP

23  問一些心態上面的問題?  如果你對你的上司不滿意,你應該怎麼做?

24  為什麼物件導向中,多用組合,少用繼承?

25 為什麼選擇廣州?

26 你在做IQ題的時候,有沒有沒做完?

怎麼感覺問完之後,問的好不專業。。。。什麼都問了,技術面把hr面的問題都問啦

 

海康威視   一面  7月17日  通過

1 自我介紹

2  你認為最好的專案介紹

3 匯入匯出介紹,排行榜介紹

4  遇到難的問的,怎麼解決的?

1 從eclipse轉到idea  2 打包問題,3  資料庫查詢(索引)  4  

5  sparkStreaming 消費kafka中的資料存在消費不到,消費丟失的問題。

6  Spark 介紹一下 分為哪些元件?

7  Spark Sql  和Hive 的區別?

8 SQL 的儲存引擎

9 sql 的事務隔離級別

10 JVM 區域劃分

11 垃圾回收機制 ,演算法

12 hashMap 底層實現等

順豐科技SP專場 一面

1.自我介紹
2.實習期間主要用的技術棧有哪些。(答java、spring、springMVC、mysql、gitLab、layui、easyui)
3.Spring主要的特點(提AOP和IOC),有啥好處?
4.說一下IOC
5.AOP的實現機制
6.動態代理 jdk方式與cglib方式
7.Spring中的事務具體怎麼做的? 事務的傳播性。
8.Mysql的事務隔離級別
9.讀未提交與讀已提交的區別
10.mysql事務如何保證永續性(提到undolog和redolog)
11.寫這些日誌檔案有什麼好處,為什麼要先寫日誌檔案而不是先做操作(面試官見我思考搶先答事務會追加到檔案後邊再做操作效率高巴拉巴拉)
12.mybatis怎麼解決sql注入問題(提到#{}和${})
13.mybatis的一二級快取(二級快取有些忘了)
14.springMVC處理流程
15.springMVC的好處在哪裡(答程式碼解耦,面試官答:便於多人協作開發)
16.聊java基礎,集合類有哪些類?
17.說一下hashMap底層實現原理(陣列加連結串列)
18.hashmap的擴容機制
19.說一下什麼叫雜湊衝突
20.多執行緒執行緒池Executor框架了解麼,為什麼要引入執行緒池
21.執行緒池保持執行緒存活時間的具體引數關鍵詞(答keepaliveTime)
22.任務佇列滿了以後再來一個任務如何處理(執行拒絕策略)
23.JUC包裡的東西,有哪些常用鎖(答Synchronized,reentrantlock,CAS等等,面試官答原子類等等)
24.原子類底層瞭解麼,比如AtomicInteger
25.轉作業系統,問作業系統有幾大模組,
26.RPC程式通訊方式有哪些方式(答pipeLine,訊號量)
27.聊網路,網路分層結構,大概每層的主要工作是什麼
28.網路層的主要功能(答路由),運輸層TCP的主要核心(答可靠傳輸)
29.資料鏈路層最核心引數
30.聊常用演算法,說一下hashmap的紅黑樹
31.紅黑樹上的紅節點主要是幹什麼的
32 紅結點和黑結點區別,為啥是紅的,黑的
33 紅黑樹為啥部分平衡。
34 紅黑樹怎麼旋轉?

室友位元組跳動四面


之前投過遊戲場的,好像筆試沒過(????)後來顯示已結束就聯絡群裡HR小姐姐幫我撈出來,

沒想到被測開崗撈走了,我是做java後端的,HR告訴我測開也是偏後端的,所以我就試試,經過了幾天的

面試,在這過程中整個人非常焦慮。。。廢話不多說,先上面經。

一面 53分鐘(專案+基礎+演算法

一面約的是晚上19.30,整個人很緊張很緊張,結果面的是一個年輕的面試官,人很好。

1.簡短的自我介紹。

2.介紹我的專案,balabala講了大概20分鐘,中間穿插著細節提問,有業務方面的,有技術方面的。

3.說一下悲觀鎖與樂觀鎖。

4.說一下http和https的區別。

5.TCP和UDP的應用場景。

6.http請求頭包含哪些欄位。

7.斐波那鍥數列了解麼?(瞭解)。

8.動態規劃相比遞迴來說有什麼優點。

9.演算法題,判斷映象二叉樹。(用遞迴寫得)

10.分析一下演算法的時間複雜度,空間複雜度。

11.redis瞭解麼,如何進行redis頁面快取。

12.專案中日誌是如何實現的。

13.專案中前端向後端傳資料是怎麼傳的。

14.hadoop的資料包是基於什麼協議的。

15.專案中登入功能如何實現的,使用了哪些技術。

16.cookie和session的區別。

17.反問。

二面 50分鐘左右(專案+網路+資料庫+演算法)

一面面試完以後看起來面試官很滿意??(哈哈,小哥哥人真的不錯),直接給我安排了二面,讓我等等,

兩分鐘後二面面試官上線,

是一個年齡30出頭的面試官,看起來有點嚴肅,立馬緊張起來(0.0)

1.簡短的自我介紹。

2.簡單的問了下實習期間做的一個大資料平臺專案。

3.網路五層。

4.應用層常見協議。

5.http協議返回狀態碼(1xx-5xx)(之前複習了2-5的,面試官說1呢?我說沒有1吧哈哈哈,後來想起了,尷尬)

6.Https有哪些改進。

7.資料庫優化方面(比如資料庫慢查詢),我回答了一大堆,起始面試官想問建立索引表的方式

8.索引的左對齊原則/最左原則(這個是真沒複習到),卡了很長時間,感覺面試官有點不耐煩了...

9.演算法,大概就是傳遞東西,只能向左右手邊傳遞,小朋友0向右傳遞,傳遞n次後最後回到小朋友手裡,問傳遞路徑,

一個動態規劃問題,感覺好難,做了大概一半,

面試官問我思路,我也沒怎麼回答上來,後來面試官直接開始給我講解開來哈哈哈(後來下來查,蒙對了一部分。。。)

10.反問。

三面  57分鐘(演算法+JVM底層) 面試官氣場很強,我變得很緊張很緊張。。。

一二面面試連續,二面到9.20結束,面試官說等下我給你叫三面,可能是太晚了都下班了,我在那傻等了一個小時

沒有任何反應,啊哈哈,第二天給HR打電話幫我約的第三天的

下午兩點三面。

1.手撕單例演算法

2.單例模式中物件什麼時候初始化

3.JVM構造

4.基本資料型別(比如int i)在記憶體中是怎麼存的

5.類物件什麼時候載入的

6.static方法和非static方法的區別

7.static的原理(沒答出來)

8.手撕:一個整數型陣列,判斷是否存在一個數,這個數前邊的數比小,後邊的比它大,返回這個數的下標

(使用標記陣列做)

9.ArrayList的屬性length存在與記憶體的什麼地方(哭死,這都什麼問題嘛....)

10.對這個演算法如何優化,使它的空間複雜度變為O(1)(使用自定義變數對這個陣列一次遍歷儲存,

大概說了下思路)

11.設計題:寫日誌類滿足多執行緒向檔案中寫日誌,設計一下需要實現哪些方法,說一下大概思路。

(多執行緒剛開始說放線上程佇列裡,面試官說那不是執行緒阻塞了麼,後來想到

使用時間片,設定一個變數例如賦值5ms,時間片使用結束後掛起,讓下一個執行緒寫,輪循寫。

面試官說OK,我也不知道他滿不滿意ing....)

12.問實習公司以及實習情況。

13.希望工作的base選擇

14.從哪瞭解的測開崗位。

15.反問,技術棧,有幾次面試。

三面結束我以為會另約時間,給HR打電話說在房間等著,還有一次面,我....

四面 35分鐘(專案+java基礎) 感覺面試官問問題間隔時間有點長,感覺在拖時間?(小聲BB)

1.自我介紹。

2.又把一面的專案講了一遍,balabala

3.將專案細節問了一些,比如排行榜的評分演算法。

4.對於專案的多使用者高併發高訪問量的解決辦法。

5.橫向擴充套件系統(面試官問的Nginx負載均衡,說了半天才說到點上。。)

6.使用過哪些java框架。

7.實習專案:大資料平臺又介紹了一下。

8.叢集維護遇見了哪些問題,怎麼解決的。

9.如何使用HQL對Hive中資料進行處理。

10.從輸入url到頁面渲染中間過程,如果網路距離太長,怎麼解決(我說使用路由器轉發,面試官說算了,不瞭解也無所謂???一臉懵逼....)。

11.java的GC演算法。

12.聊了一下碩士期間的課題,我是推薦系統方面的,面試官跟我聊了一下電影推薦系統的系統設計,包括架構,

推薦演算法等等。

13.java零拷貝(一臉懵逼,不會),面試官看我卡了一會,說沒關係,這個不會無所謂...(第二次無所謂....)

14.linux操作:怎麼看應用的cpu使用率(回答top命令)面試官:OK


順豐科技 1面  技術面  時長30分鐘 7月30號



1 自我介紹 (介紹完之後,面試官哈哈哈哈哈大笑,你這很熟練啊?)
2 專案介紹
3 說一下垃圾回收和演算法(講完之後,來一句,你這背的很熟啊?,我說我理解啦?,然後他來一句為啥要理解,啊??)
4 說說Spring
5 Springboot和Spring的區別(自己加的,是怎麼簡化的,底層如何實現的)
6 redis資料結構,持久化方式
7  mybatis 如何獲取自增ID
8  mybatis  一二級快取
9  設計模式工廠模式講講
10 我講完了,你有啥要問的嗎? 問了幾點
1 面試流程是啥樣的,一面多久能收到通知,
2 和麵試官閒聊,哄得他眉開眼笑,哈哈哈


順豐科技2面  HR面 30分鐘  8月9號


1  自我介紹
2  職業規劃
3  報學校專業是怎麼考慮的?
4  工作城市
5  你是獨生子女嗎?
6  那你有女朋友嗎?
7  那你們出來面試都瞭解過哪些企業?
8  有沒有offer?
9  說說你的優缺點?
10 到後期你們每個人手上有好幾個offer,哪些因素決定你們選擇這家公司?
11 你更傾向哪種公司?有什麼特別的點?
12 你大學有沒有特別難忘的經歷或者專案分享一下的?


順豐科技 3面  技術面 一小時 8月12號
 

1 自我介紹
2 大資料專案介紹
3 說說你對Kafka的理解
4 kafka的消費者組跟分割槽之間有什麼關係?
5 kafka有5個消費者,4個分割槽,是如何消費?
6 kafka的分割槽有哪些方式,分割槽演算法?
7 資料清洗的流程
8 資料清洗之後是落到哪裡,資料量大嗎?
9 redis資料如何和mysql的資料保持一致
10 重大專案管理平臺講講?
12 匯出功能如何根據自定義功能匯出?
13 還有其他什麼方式可以實現匯出功能?
14 資料庫設計遇到什麼問題?

問點java方面的知識
15 集合中 arrayList 和linkedlist有什麼區別?
16 hashMap 說一下
17 hashMap 為什麼設定初始化為16
18 hashCode 怎麼對應桶的位置?
19 concurrentHashMap有什麼特點?
20 執行緒同步有哪些方法?
21 執行緒同步使用哪些鎖?
22 有一個場景,現在一張表有幾十萬的資料,然後10個執行緒,
對它併發計算,然後計算完了之後通知,該怎麼設計?(每個執行緒處理每個
執行緒的事情,然後做個通知)
23 說說分散式鎖?
24 SpringAop 用過嗎?

25 JVM記憶體管理核心演算法

順豐算是面完了,接下來就等通知啦


浙江大華 一面  20分鐘 8月 12號
 

1 自我介紹
2  SparkStreaming 如何保證消費kafka的資料不丟失等?
3  說說集合你瞭解哪些?
4 hashMap講講?
5 自己實現了一個物件,然後過載在hashcode方法,這個時候還要不要過載其他方法?
(需要重寫hashcode 方法和equals方法)
6 在多執行緒環境中,然後保證使用的物件時執行緒安全的?(通過加鎖)
7 虛擬機器的堆記憶體分為哪幾個區?
8 堆裡面主要幹什麼?
9 堆裡面能不能細分到哪些區?
10 不同的區使用的演算法都是一樣的嗎?
11 springboot 和Spring的區別在哪?
12 Springboot是如何簡化哪些配置,具體是怎麼實現的?
(和SpringbootApplication 註解相結合,在main中通過呼叫run方法來載入 監控任務執行時間,建立應用上下文,程式執行引數等相關配置)
 

浙江大華二面  8月19號  時長37分鐘(本來約的17號,面試官時間給忘了,第二天還專門打過來電話道歉,感覺面試官真的很好?)
 

1 自我介紹
2 自己都搭建過大資料叢集嗎?
3 如何搭建的叢集,舉幾個例子介紹一下?跑過哪些專案?
4  說說Spark的工作機制
5  說說Spark的合併操作
6  專案介紹,舉一個例子專案難點,如何解決。
7  分割資料使用什麼進行分割?
8 輸入的型別和輸出的型別分別是什麼?
9  輸出的結果儲存到哪裡?
10 那Hbase的表結構是什麼樣的?
11 表中的key是什麼,value是什麼?
12 你哪些原始日誌是哪哪塊採集過來的?
13  另一個專案介紹一下,解決什麼難題?
14  資料庫優化做了哪些操作?
15  專案中使用了redis,如何操作的,為什麼要使用redis?
16 怎麼解決雙寫一致性?
17 使用的使用者量是多大?
18 假如使用者量大的情況下,那會出現哪些效能瓶頸?
19  redis的併發是多大?
20  專案中如何使用多執行緒?舉個例子
21  那累加的執行緒如何和其他執行緒做互動的?
22  執行緒安全的容器有哪些?
23 java虛擬機器裡面的垃圾回收機制有哪些?
24 專案中有沒有用哪些工具看過程式中有哪些執行緒,JVM記憶體的情況。
25 場景題


HR面  16分鐘  8月22號


1自我介紹
2 工作的意向城市
3 剛才在面試哪家公司?
4 現在進度最快的公司是哪家?
5 拿到哪幾家offer,是否談過薪資等
6 實習了多久,介紹一下印象最深刻的專案
7 你瞭解網際網路這邊的薪資一般是多少?(說的25萬左右)
8 你的興趣愛好有哪些?
9 我們這邊西安也有分公司,看你對地點這塊有什麼要求沒?
10 因為你面的是提前批,所有offer會在九月出發出。

整個大華面試下來感覺沒有太大壓力,非常愉快,二面面試官專案這塊問的還算可以,自己也答出來了,問我想去哪個崗位,
說他們大資料這塊有四個方向。和HR小姐姐也聊得挺開心,希望一切都順利,可以收到意向書吧。求一波offer



阿里 一面  8月12號  23分鐘

1 自我介紹
2 說說垃圾回收和相應演算法
3 那併發量很高時,使用哪種演算法?(複製演算法)
4 介紹一下專案
5 那你在這個專案中最大的成就感是什麼?
6 那你開發專案主要的優勢在哪?(怎麼感覺不像是面試,在聊天,哈哈哈)
7 在網頁上輸入一個URL,說說它所經歷的過程(DNS定址,TCP連線,Http請求,http響應,頁面渲染,TCP關閉連線)
8 很多伺服器,那請求落到哪臺伺服器上,是通過什麼策略?(通過nginx的ip_hash策略)
9 平常有沒有了解一些新知識(docker,springcloud)
10 hashMap實現原理
11 個人規劃
12 那你現在的技術薄弱點在哪裡,怎麼去突破?
到我提問
1讓面試官講了一下新零售事業部主要做哪一塊,
2面試流程


阿里 二面 8月 20號 時長55分鐘 涼透????

1 自我介紹
2 競賽介紹
3 數學建模競賽介紹
4 論文介紹

20分鐘過後,

接下來的35分鐘 我感覺自己經歷了一次痛切心扉的打擊,??
面試官不問問題,他說讓我自己說自己擅長的,然後他深入去探討,看
我解決問題的能力,我說好。。。。。。。?


我說我集合這塊還行,
他問,那你知道hash的實現機理是啥?他能帶來哪些好處?通過我的回答,他接著問,B+樹索引的核心在於什麼?
我們知道樹有很多種,為什麼要選擇b+樹,而不選擇其他?資料庫索引有很多種,哪一種索引對應的是b+樹實現的?

圖的演算法你清楚嗎?最短路徑問題,最少成本問題?(說完之後,面試官說,為啥你們現在學習的時候,不在一些深度上做一些努力,
看得都比較膚淺,這對你們以後的發展有很大限制??)

接著問我java哪些比較熟悉,我說集合,多執行緒,JVM等都可以聊聊,他說 那你說說你在裡面用的哪些技術比較有挑戰性的問題,我們聊聊,
聊概念沒啥意思。。。。?整的我不會說啦我準備說專案中用到哪些技術,他打斷了,說未必是專案中的,就說你體會到的。。。。
我說執行緒吧,就聊多執行緒併發,然後他聽完我說的,然後說那你在專案中有用到JVM嗎?
專案中開發你的垃圾回收演算法用的哪一種?(我說複製演算法,
他聽了之後說 what??? 啥? 我說複製演算法,他接著說 啥?複製演算法?
我咋沒聽過,我說copying,他說還是不懂,。。。。。我就講了內容等)說完之後,
他說算了我覺得你這塊沒理解,我們換個話題。。。。。。

那我們聊聊資料庫事務吧,你知道分散式事務嗎?什麼是兩段式,三段式,你用過嗎?
你們應該都做過研究吧?這都是最基本的問題,你應該都會把。它的實現原理是什麼?

好吧,我一句話還沒說,面試官替我說完啦。。。我說完,面試官說那我們換個話題,
你對這些不瞭解。。。。。
java的設計模式你知道哪幾種? 你講一下什麼是修飾者模式?應用到哪些場景?或者
策略模式,這兩種都講一下。我說完之後,又說了一句,那我們換個話題,你對這不瞭解。。。
我下去還專門聽了一遍錄音,我回答的哪裡有錯了。。。。

那我們再換個話題,那就問個本質,為啥String這個型別是不可變的物件,原理是什麼?

那BIO 和非阻塞式IO有什麼區別,它具體是怎麼實現的?

上面的問題回答完之後,就50分鐘了,面試官說時間差不多啦,你有啥想問的。我當時聽完 內心真的很崩潰,
不是我不會,而是他全程那個語氣真的是很牛逼很牛逼那種,不屑的語氣,我回答一個,他說我覺得你這個不太會,我們換一個
換題等等。連說了好多遍,你全程也沒問幾個問題吧,面完我就知道我涼透了,當時也沒抱著進三面的想法
就換了個語氣,說那個我們也面完了,一般面試完都不會問面試官對我的評價,因為我覺得那很不禮貌,他說沒事沒事,然後他就說,
說實在的,你們研究生啊,就應該多做做啥啥啥,巴拉巴拉5分鐘,我全程在聽它對我的“批評”,我臉上笑嘻嘻,嗯嗯,我知道,態度賊誠懇,
把他誇了一遍,說真的太感謝面試官您啦,對我真的是用心良苦啊,我會好好虛心接受您的教誨,然後就掛了


阿里 一面 8月 22號 時長  63 分鐘
 

20號面完二面之後,當時覺得涼透啦,也沒抱什麼希望,但誰知道22晚上8點又打過來電話,
說做個面試,問我方便不,我說可以,面了有20分鐘左右,我問這是一面還是啥,面試官說

對,之前那個掛了,然後我們這邊撈過來的,我的天??? 不會是那個面試官發了個慈悲吧

...........................................................................更新................................................................

1 自我介紹
2 論文介紹
3 Spark流式計算過程
4 Spark如何進行分桶
5 SparkStreaming 和MapReduce比較,提升的效能在哪?
6 SparkStreaming 的實時體現在哪?
7 簡單介紹一下單例模式
8 簡單介紹一下工廠模式
9 說一下代理模式和策略模式
10  JVM記憶體模型簡單介紹一下
11 哪些是執行緒私有,哪些是執行緒共有
12 哪個不會發生記憶體溢位?
13 方法區產生記憶體溢位怎麼判斷?
14 類載入存在記憶體中的哪一塊?(類的後設資料在方法區,class物件在堆區。)
15 垃圾回收的一些演算法
16 年輕代,老年代分別用什麼演算法?
18 建立一個執行緒有幾種方式?
19 怎麼啟動一個執行緒?
20 JDK裡面 執行緒池的定義
21多執行緒裡面,有什麼機制可以保證執行緒安全?
22 voletile如何保證執行緒安全?
23 那使用voletile 有什麼缺點?
24 synchronized用到靜態方法和非靜態方法有什麼區別?(修飾靜態方法,
作用於當前類物件加鎖,修飾非靜態方法,作用於當前物件例項加鎖)
25 threadlocal瞭解嗎? 講講這個
26 threadLocal 一般是怎麼區分的?不同的執行緒之間是怎麼隔離的?



蘑菇街一面 java開發工程師  44分鐘 涼經

1 自我介紹
2 說說JVM原理、內部分配
3 new物件的過程
4 new一個物件時是如何知道給它分配多大的空間?(JDK64位,建立一個物件佔24位元組,32位 佔12位元組)
5 專案介紹
6 說說HDFS (跳躍很快啊)
7 HDFS寫操作
8 寫操作中如何判斷客戶端向哪一臺datanode中上傳第一個block塊。(通過就近原則)
9 那客戶端是怎麼通過距離來判斷哪臺datanode 離他近或者離他遠(看客戶端到達datanode
之間的網路跳轉的次數來判斷,如果在同一個路由器下面,那距離都一樣,直連,只需要跳轉一次)
10 第二次上傳block塊根據什麼原則?(就遠原則,保證安全性,防止全部上傳到一個機架上,如果機器壞了,資料就會丟失等。)
11 場景題 過濾出評論中的敏感詞
(想法1:通過正規表示式)
(想法2:布隆過濾器)
(想法3:通過和b+樹類似的字典樹(DFA演算法)來實現,字典樹的每個節點儲存每個字元,
那他所形成的路徑就代表一條一條的字串,進行查詢時,如果匹配到敏感詞的字串,那就過濾出去)。
12 Spring IOC、AOP底層實現
13 Spring ioc中的單例模式和原型模式適用場景,什麼時候用單例模式,什麼時候用原型模式。
14  我看你對大資料比較瞭解,那你說說Spark(spark的內部構造,實現原理,解決了什麼問題,運用場景等)
15 MapReduce 設計時為什麼要設計成 map,reduce的操作,它解決了什麼問題。
16 說說kafka的原理

17 服務端從kafka中去拉資料,服務端的空間永遠是有限的,拉完怎麼判斷所有人都拉完了?

上述的問題基本都答出來了,但是不知道為啥掛了,可能要求很高。???
 

滴滴一面  後端面試 8月23日 56分鐘  涼涼
 

因為專案中
1 自我介紹
大資料:
2  spark任務的執行流程
3  Spark任務排程有幾種方式?(任務是怎麼分配給executor)(排程演算法)
4  Spark任務分配方式有幾種方式?
5  yarn的資源排程?
6  寬窄依賴具體講講
7  寬依賴是不是要進行shuffle
8  shuffle操作有幾種方式
9  Spark任務產生小檔案太多,該怎麼處理?(合併小檔案的方式有幾種)
(例如sql,函式,distrubutedBy)
10  hive如何實現UDF的詳細過程(客戶端繼承UDF類,然後打包 )
11 hive sql解析看過嗎?
12 Spark sql解析有哪幾個步驟? 具體如何操作的(spark核心的sql解析)
(把sql如何拆成多個job)

java技能
1 執行緒的狀態有幾種?
2 等待有哪幾種方式?
3 常用的執行緒池有幾種?
4 定時的執行緒池有幾種?
5 Spingboot部署的時候用的哪個容器,內部用的哪個執行緒池?
6  多執行緒過程中用過哪些鎖?
7 鎖主要分為幾大類?
8 synchronized底層是怎麼實現的? 和其它鎖有什麼區別?
9 Lock鎖講講 ReenTrandLock講講? 怎麼優化這個重入鎖?(通過編譯器方式優化)
10 比如巢狀鎖巢狀了好幾層,編譯器如何優化這些程式碼?
11 鎖優化有哪些方式?(鎖消除,增大粗度等)
12 鎖消除通過什麼引數可以控制?
13 資料庫事務有幾種?(資料庫隔離級別)
14 事務的傳播機制?(7種)
15  事務巢狀開啟一個事務,用那種傳播機制?(required)
16  繼承上一個事務(使用support)
17 搭一個通訊框架(使用tcp) 用socket程式設計搭,客戶端、服務端等。
18  NIO瞭解過嗎? 怎麼做的優化? 分為幾個階段?每個階段是做什麼的?
19  RPC瞭解嗎?常用的RPC框架有哪些?(基於二進位制協議的)如(dubbo)
20 任務排程有用過嗎?(使用springBoot如何快速建立一個定時任務(用一些元件))

21 底層如何實現排程的?

 

滴滴面試,簡歷上寫了大資料知識點,剛好面的那個部門是搞金融風控的,還是對Spark原始碼進行開源的,撞槍口啦,

後期大資料複習的比較少,掛了也無怨了,狀態變為待筆試,還好秋招還有一次機會。



騰訊一面  8月24日   65分鐘 


1 自我介紹
2 簡單介紹一下專案中引用Springboot是解決了什麼問題,有什麼優點?
3 mybatis和hibernate框架有什麼區別?
4 使用muybatis有沒有用到om物件?

問了一下我主攻的語言是啥,我說java語言

5 java語言中 重寫和過載有什麼區別?
6 我看你用到kafka,kafka主要解決什麼問題呢?
7 kafka如何實現訊息是有序的?
8 kafka如何實現多執行緒的消費?
9 hashmap和hashtable 有什麼區別?
10 簡單介紹一下java的生命週期有哪些階段嗎?
11 對資料庫瞭解嗎?  一個場景,現在資料庫執行過長,如何對它進行優化?
12 簡單談一下資料庫中的悲觀鎖和樂觀鎖怎麼理解的?
13 說一下資料庫有哪些索引型別,有什麼優缺點?(主鍵索引)
14 談談資料庫的事務(ACID特性)

開始問作業系統啦
15 作業系統的劃分有哪些?
16 什麼是死鎖?死鎖產生有哪些條件?(互斥條件,請求與保持條件,迴圈等待條件,不可剝奪條件)
17 程式間通訊有哪些方式?(管道,訊號量,訊號,訊息佇列,共享記憶體,套接字等方式)
18 tcp協議有哪些計時器?它分別是做什麼的?
19 作業系統之間有使用者態和核心態,他們之間有什麼區別?
20 為什麼需要核心態?什麼時候進入核心態?
21 有用過記憶體快取嗎? 如redis 
22  redis是通過什麼方式進行持久化的?(RDB和AOP)

網路知識
23  tcp協議的三次握手 
24 hppts的協議瞭解嗎?

資料結構
25 介紹一下有哪些常見的演算法,並且哪些是穩定的,哪些不穩定,以及時間複雜度
26 對雲端計算有了解嗎?
27 比如雲端計算有哪些服務和應用場景
28 AWS  瞭解嗎?
演算法題
26  拆分子陣列  leetcode 410
給定一個由非負整數和整數m組成的陣列,可以將陣列拆分為m個非空連續子陣列。

編寫演算法以最小化這些m個子陣列中的最大總和。

 

總體來說 問的問題都屬於簡單的問題,都算答出來了,程式碼題也寫出來了,希望能進二面

 

growingIO   8月30號  一面   時長1小時40分鐘

1  自我介紹
2  三個專案分別介紹一下
3  說一下你們的許可權設計
4  說一下每個專案的技術棧
5 前端採用什麼設計的?(沒有采用前後端分離的思想,用的html+css+jquery+ajax)
6 sql優化,剛開始是怎麼做的,後期又是怎麼去優化的?

7 說一下mysql的索引型別(主鍵索引,唯一索引,普通索引,全文索引)
8 hash索引的使用場景是啥?(只能用於"="的過濾,不能用於範圍查詢,不能避免全表掃描,不能利用部分索引鍵查詢)
9   如果使用like查詢,會不會走索引?(一部分會走,一部分不會走,只有不以%開頭的時候,才會使用到索引,例如'前%' 走索引,'%前%' 不走索引,'%前' 不走索引)
10 有沒有使用 explain欄位去分析sql語句,它有哪些欄位(使用explain分析時,重點關注幾個欄位:
type:這是一個非常重要的引數,連線型別,常見的有:all (全表掃描), index(全索引檔案) , range(只檢索給定範圍的行) , ref (非唯一索引掃描,即返回所有匹配某個單獨值的行), eq_ref (唯一性索引掃描,對於每個索引鍵,表中有一條記錄與之匹配), const(表示通過索引一次就可以找到) , system(表只有一條記錄) , null 八個級別。
key: 顯示查詢語句實際使用的索引。若為null,則表示沒有使用索引
rows :根據表統計資訊及索引選用情況,大致估算出找到所需的記錄所需要讀取的行數,值越大越不好)
11 Springboot 返回json字串的話 使用哪個註解?(RestController)
12 mybatis 如何使用的?(通過xml 和註解式兩種方式 對於小系統而言,使用註解式快速,簡單,缺點是SQL有變化時都需要重新編譯程式碼)
13 mybatis 如何防止sql注入
14 mybatis 快取用過嗎? 一二級快取
15 mybatis 如何實現批量插入(在xml中使用foreach迴圈插入,<foreach collection="list" item="item" index="index" separator=",">),
批量刪除( <foreach collection="names" item="item" index="index" open="(" close=")" separator=",">#{item} </foreach>),
批量更新(foreach實現迴圈插入)等的語句 
16  說說hashMap 
17 為什麼初始值16,以及為什麼擴容是2倍
18 hashMap原始碼 擴容是怎麼實現的(resize,rehash)
19 hashMap 是執行緒安全的嗎?(不是,因為HashMap在put的時候,插入的元素超過了容量
(由負載因子決定)的範圍就會觸發擴容操作,就是rehash,這個會重新將原陣列的內容重新hash到新的擴容陣列中,
在多執行緒的環境下,存在同時其他的元素也在進行put操作,如果hash值相同,可能出現同時在同一陣列下用連結串列表示,造成閉環,
導致在get時會出現死迴圈,所以HashMap是執行緒不安全的
20 執行緒池有哪些核心引數(corepoolsize,maximumPoolSize,keepAliveTime,unit,workQueue)
21 建立一個定時任務的執行緒池用哪個(newScheduledThreadPool)
22 建立執行緒池的好處?
23 類的生命週期知道嗎?(載入-驗證-準備-解析-初始化-執行-解除安裝)
24 單例模式說說? 
25 單例模式的缺點和特點(缺點:沒有介面,可擴充套件性不強)
26 JVM記憶體分配
27 JVM垃圾回收一般什麼時候出發minor GC
28 redis有哪幾種淘汰策略?(6種淘汰策略 
volatile-lru:從設定了過期時間的資料集中,選擇最近最久未使用的資料釋放。
volatile-random:隨機選擇一個資料進行釋放
volatile-ttl:選擇馬上就要過期的資料進行釋放操作
allkeys-lru:從資料集中(包括設定過期時間以及未設定過期時間的資料集中),選擇最近最久未使用的資料釋放
allkeys-random:隨機選擇一個資料進行入釋放
noeviction:不刪除任意資料(但redis還會根據引用計數器進行釋放),這時如果記憶體不夠時,會直接返回錯誤。)
29 redis實現生產者消費者模型(使用list資料結構 lpush 放資料,rpop拉資料)
30 redis實現生產一次,消費多次
31 redis 有幾種資料結構(五種,string,hash,list,set,sorted set)
32 set 和sorted set 有什麼區別?
33 分散式鎖有沒有使用過?(使用setnx()方法,expair()方法)
34 如果redis中有1億個key,其中有10萬個key是已知的固定字首的key開頭的,如何
將他們全部找出來?(使用scan命令 scan cursor  match  pattern count count  例如: scan  0  match  k1* count  100 )
35 為什麼不用keys命令?(會使記憶體卡頓,伺服器消耗過大)
36 快取雪崩,快取穿透,快取擊穿都是怎麼造成的,有什麼解決辦法?
37 過載和重寫有什麼區別?
38 jdbc的使用流程?(1 註冊資料庫驅動 2 建立資料庫連線 3 建立一個Statement物件,4 執行sql語句,5 處理結果集,6 關閉資料庫連線)
39 現在有T1、T2、T3三個執行緒,你怎樣保證T2在T1執行完後執行,T3在T2執行完後執行?使用join操作
(        Thread t1 = new Thread(new ThreadTest("T1")); 
        Thread t2 = new Thread(new ThreadTest("T2")); 
        Thread t3 = new Thread(new ThreadTest("T3"));

        t1.start();
        t1.join();
        t2.start();
        t2.join();
        t3.start();
        t3.join();
)
40 什麼是java中的原子操作?(所謂原子操作是指不會被執行緒排程機制打斷的操作;這種操作一旦開始,就一直執行到結束,中間不會有任何 context switch)
41 什麼是悲觀鎖和樂觀鎖?
43 資料庫中如何實現樂觀鎖?(通過版本號version 和行鎖)
44  資料庫中如何實現悲觀鎖?(通過加排它鎖實現 例如 select * from A where id=1 for update)
45  java中實現悲觀鎖?(通過synchronized,reentranlock 實現)
46  java中實現樂觀鎖?(通過CAS演算法實現)
47 說說二分查詢?以及裡面注意的關鍵點
48  說說快速排序,如何實現,如何去做?
49  等比數列如何求遞推公式?
 

9月3號  

博主是屬於2020屆應屆碩士畢業生

從九月份開始再也沒有尋找工作,因為前期的面試使我已經拿到了7個offer,分別為

1 海康威視大資料開發崗

2 順豐科技大資料開發崗

3 快手資料研發崗

4 大華 大資料開發崗

5 哈羅 java開發崗

6 金山雲 大資料開發崗

7 用友 Java 開發崗

最後選取了海康威視研究院 大資料開發崗。  如果有想了解大資料的技術,有興趣的可以聯絡私信博主,要一下聯絡方式。

相關文章