首先說一下面試體驗:面試官人真的很不錯,很有耐心。
時間:面試是線上的,耗時80分鐘左右。
注意:針對於面試小白,最好提前熟悉一下面試連結(一般是牛客網),牛客網(最好提前熟悉一下,編程界面只有一個main函數,此外需要手動導包,推薦提前寫好:import java.util.*),還有就是ListNode類和TreeNode類要會自己定義,跟LeetCode刷題不太一樣。
面試的大概內容:
1.計算機網絡(大概半個小時左右)(回憶版,具體順序可能有顛倒)
1.TCP三次握手,四次揮手具體過程描述一下?
(接著問了:三次握手為什麼三次,兩次可以嗎?四次揮手為什麼四次,三次可以嗎?……)
2.TCP和UDP的區別?什麼時候用TCP什麼時候用UDP?
3.TCP擁塞控制,(慢啟動,快重傳……)
4.TCP報文頭的具體內容?
5.HTTP和HTTPS的區別?
6.cookie和session的區別?
7.其他問題記不清了,有一兩個沒答出來。
2.Java基礎知識:(面試官問的很基礎,自己對其問的內容進行了瘋狂的擴展(為了拖延時間&表現……))
1.常用的容器有哪些?(List,Set,Map)
除了說底層的實現,也說了數據和鍊表的區別,以及應用場景。接著說了他們對應的線程安全的容器,Vector,HashTable,ConcurentHashMap,CopyOnWriteList……以及對應的底層實現。
2.HashMap的底層實現?(1.7&1.8)
3.重點講了一下ConcurentHashMap的底層實現
3.作業系統:1.線程與進程的區別?(瘋狂輸出)
2.內存管理?(我說我沒看,只了解了鎖,多線程等)
4.多線程&並發1.實現多線程的方式?
5.shell(了解過shell,但是不熟,簡歷上沒寫)
1.問題是,一個Nginx伺服器日誌,對應的欄位有……,寫一個shell腳本,統計一下PV/UV
6.大數據技術:1.Hadoop和Spark的shuffle的區別?(瘋狂輸出)
2.Spark任務提交與執行過程?(了解過底層源碼,大概講了一下)
3.Hive和UDF和UDAF等(不太了解,只了解過Spark SQL的UDF)
7.項目介紹了一下,沒怎麼問。
8.算法題:(三道題,主要原因是個人原因,個人語速太快,還剩下很多時間(面試官那邊好像至少要問一個小時))
1.leetcode原題(兩數之和等於target,輸出兩數的位置信息,HashMap做的)(Easy題)
leetcode第一題)(easy)
給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。
你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素不能使用兩遍。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
https://leetcode-cn.com/problems/two-sum/
由於是原題,面試官還沒說完,就開始搶答(沙雕行為!!!)跟面試官交流了一下,問了下能不能先說思路,怕緊張寫不出來,答曰:可以。先說了一下思路,說完之後,答曰:ok,寫一下吧。之後寫了出來(一分鐘左右)
面試的時候不要裝逼和語速太快(個人生活習慣(不是緊張))
2.leetcode原題,找出一個無序數組中第k個元素?(Easy題)
在未排序的數組中找到第 k 個最大的元素。請注意,你需要找的是數組排序後的第 k 個最大的元素,而不是第 k 個不同的元素。
示例 1:
輸入: [3,2,1,5,6,4] 和 k = 2 輸出: 5
示例 2:
輸入: [3,2,3,1,2,4,5,5,6] 和 k = 4輸出: 4
https://leetcode-cn.com/problems/kth-largest-element-in-an-array/
第一題答完之後,答曰:再來一道 ,心裡……
回答了三種思路,O(n^2)和O(nlogn)
1.排序都ok,或者藉助sort工具類
2.大頂堆(PriorityQueue),順便說了一下,說這個問題其實還可以這麼問,10G的數據量找前10大等……(沙雕行為) 尷尬的局面……寫出來了,一直出問題,哈哈哈哈
3.跟面試官學到了利用快排的原理去求解的,複雜度為O(n)的解答思路(CSDN上有這個題的三種解答思路)
非常推薦把三種解答思路都能記住。針對於另外一個常問的問題,10G數據找到前10大的問題,最大堆也是其中一種思路。有興趣的小夥伴可以自行拓展。
https://blog.csdn.net/orangefly0214/article/details/86527462?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control
3.leetcode原題,一維DP(小青蛙跳臺階)
一隻青蛙一次可以跳上1級臺階,也可以跳上2級臺階。求該青蛙跳上一個 n 級的臺階總共有多少種跳法。答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。
示例 1:輸入:n = 2輸出:2
示例 2:輸入:n = 7輸出:21
https://leetcode-cn.com/problems/kth-largest-element-in-an-array/1.說了思路,講了優化辦法
2.寫了程序
最後:問了我幾個問題
問:你能實習幾個月,大概什麼時候能過來?
答:我本月15就能過去,實習我只能保證至少去三個月,如果我覺得我能學到東西,我就願意繼續待下去(沙雕行為,切記不要說類似的話)
面試官:好的,我們約一下二面。(當天下午六點多給我電話約了面試,面試官推薦線下)
二面(線下)下午三點,面試官人很不錯,部門leader
先自我介紹,簡單交流一下,開始問答
1.多線程和並發1.多線程的實現方式?
2.線程池的創建方式?拒絕策略?參數?(瘋狂輸出,還說看了阿里巴巴開發手冊……)
3.CAS實現原理?(說完之後,自己補充了ABA問題和解決方案)
2.鎖1.Volatile和Synchronized的區別與聯繫(瘋狂輸出,又引出了lock以及RentrantLoack,以及對應的讀寫鎖)
3.JVM1.Java內存模型?
2.垃圾回收方式?區別?
3.OOM?(沒問太多)
4.記不太清了,都是基本問題
4.大數據技術1.Spark Steaming的基本的相關問題
2.一面的一道shell題,回答:問過了,不會
3.PV/UV的區別的意義?
4.flink了解多少?(把了解的能說的都說了)
5.項目介紹描述項目很久很久,沒怎麼問問題
6.算法題1.三數之和為0 (leetcode中等)
給你一個包含 n 個整數的數組 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
示例:給定數組 nums = [-1, 0, 1, 2, -1, -4],滿足要求的三元組集合為:
[
[-1, 0, 1],
[-1, -1, 2]
]
https://leetcode-cn.com/problems/3sum/說了一下思路,沒讓寫(面試官拿的有紙和筆,秋招感覺肯定是手撕)
2.背包問題(湊錢)
https://www.cnblogs.com/jbelial/articles/2116074.htmlhttps://space.bilibili.com/7836741?spm_id_from=333.788.b_765f7570696e666f.1看完之後,說了一下,面試官不好意思,這是個背包問題,我背包問題不會,可以換一個嗎?
3.前序和中序的二叉樹數組,重建二叉樹?(中等)
根據一棵樹的前序遍歷與中序遍歷構造二叉樹。
注意:你可以假設樹中沒有重複的元素。
例如,給出前序遍歷 preorder = [3,9,20,15,7]中序遍歷 inorder = [9,3,15,20,7]返回如下的二叉樹: 3
/ \
9 20
/ \
15 7
https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/說了下思路,沒讓寫
7.問題:面試官:你對咱們部門了解嗎?
我:不了解,我是在boss直聘上隨便投的
面試官:那我介紹一下我們的具體業務吧……
暢聊了一會大數據的未來,以及我對大數據未來的應用場景的想法……
面試官:稍等,我去把三面面試官叫過來。
三面(線下):時長(一個多小時,感覺像是心理面,但是面試官又懂技術)
面試官:大概問題就是涉及一些場景,都是心理問題的相關場景題吧?
我:我說我看過心理學的書,我也比較了解。喜歡看心理學相關的影視劇
對答好久
面試官:你了解了那麼多技術,那你有沒有什麼事能讓你堅持很久嗎?或者輕易放棄的事嗎?
我:堅持的事很多,我曾經一個學期早餐只吃同樣一種包子,同樣的豆漿(本科,無趣的人,哈哈哈)
我學大數據技術,準確來說堅持了一年(我先把後端學完了,之後轉了大數據)
面試官:你有什麼個人愛好嗎?
我:看劇算嗎?(我並不看劇,但我想不到啥說的),答曰:不算。那就是打羽毛球了,在學校我一般周五上午10-11點都會去體育館打羽毛球。
……
面試官:關於我語速快?為啥?周圍的人能接受嗎?
我:我知道我語速很快,我不是因為緊張才快的,我一般聊到我擅長或者專注的事,我會語速很快。我語速很快您能聽懂吧?面試官:能,我覺得你說的很清楚。
面試官:個人學習如何安排的?有沒有未來的計劃?個人發力方向?有沒有個人規劃的習慣?
我:有,巴拉巴拉……
面試官:你還有問題嗎?
我:(能留下來吃個晚飯嗎?哈哈,沒說……),我這次面試通過了嗎?答曰:等通知。如果你通過了的話,兩周之後會給你回復,如果兩周之內沒回復就是沒過。
我的處女面就這樣結束了,整體感覺就是不怎麼緊張,心態聽平和的,面試官人都很不錯,尤其一面和二面。
接下來,HR打了電話,問了一下,具體能入職的時間,順便問了一下能不能給高點,答曰:不行,我們這個是統一安排的。問了下有沒有房補之類的(入職之後才能申請)。後續給HR打電話再也打不通了,發郵件也不回復。體驗不太好。
字節(核心部門)-大數據開發(實時計算方向)
面試整體情況說明:三輪技術面+一輪HR面,時長都不超過一個小時,全是線上
一面:1.項目1.自我介紹?(說了很多,很緊張,也很困,三輪均是下午四點多)
2.問了一下,狀態計算和checkpoint,以及項目延時情況?
3.Append輸出模式有什麼特點?
4.Flink了解多少?(簡單的說了一下)
5.其他的問的記不清了,基本答出來了,效果不太好,很緊張
2.基礎知識1.線程池如何創建,參數?拒絕策略?(有何差異)
2.HashMap(1.7&1.8),重點講一下put的過程?
3.volatile 和 CAS
4.sychornized與lock的區別?
3.算法題1.leetcode原題,二叉樹層次遍歷(BFS)面試官還沒說完,我就開始回答了
給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷)
例如:給定二叉樹 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其自底向上的層次遍歷為:
[
[15,7],
[9,20],
[3]
]
https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/一面結束,對答:
我:還有二面嗎?
面試官:有,你稍等,馬上二面面試官就來了
二面:1.項目1.自我介紹?
2.項目介紹?
3.PV/UV的區別和聯繫?
2.大數據技術1.kafka如何acks和offset
2.kafka如何保證精準一次語義處理?(ISR(不了解))答:不會
3.如何保證多個模塊調用的時候確保順序沒問題?(回答不太好,隨便答的)
4.所有的設置信息都是靜態的,如果對其進行調節的話,如何做?(zookeeper消息註冊中心)
5.flink與spark的區別?
3.算法題1.SQL:班級表,統計每個班所有每個科目都及格的學生信息?
很久沒刷sql了,還是自己太菜哈。沒寫出來對的
2.leetcode原題,有重複數據的二分查找,最小位置
很緊張,但是寫出來了
二面對答:
我:不好意思面試官,我SQL很久沒寫過了,很緊張,表現不太好,這次過了嗎
面試官:哈哈。別太緊張,過了過了,接下來等三面吧
三面:部門leader超級好,說話很溫柔
1.自我介紹
大數據技術:1.hadoop提交任務執行過程?
2.hadoop的map數量越多越好嗎?為啥?度如何把握(回答不太好)
3.hbase了解嗎?有什麼特點?
4.UV的含義?有什麼價值?
5.flink了解多少?(TaskManger問了可多,slot,以及線程進程等)
算法題:1.圖論的題,大概意思是,給定一系列的數組,舉例(1,2),1訂閱2,找出被最多訂閱的人?
答:不會。
2.找到比「2349」大一點的重排列數據,即2394,leetcode原題
用回溯寫的,寫完之後說了下思路
對答:1.能實習多久?什麼時候能來?
2.對未來的技術發展有什麼想法?
3.自己的個人安排等
說了很多很多,最後說我這通過了,接下來還有一面,問:是技術面還是非技術面?答:非技術面
HR面常規問答,什麼時候能實習,能實習多久……結束了,接下來還有快手的面試,不太想面了,面試真的很累,主要是心態,身體上會很難受的。
總結:這一路挺辛苦的,感謝這一路上,我堅持了一年的時間!當你看到這篇文章的時候希望你也能堅持你正在做的事,不要輕易言棄,你可以的,加油。
聲明:本文完全原創,未經本人同意禁止轉載!
元旦最後一天,譁眾取寵,隨筆回憶敝人拙見。若有不當之處,還望閣下海涵。