雙非一本非科班,之前在百度和字節實習過,這次其實沒抱着什么特別大的希望投遞,沒想到字節可以再給我一次機會,還是挺開心的。
幾場面試下來,面試得自信,聲音自信,給面試官一種你啥都會穩如狗的感覺(實際內心慌得不行...),然后表達流暢,吐字清晰,不卑不亢,說話要有邏輯性,不能吞吞吐吐半天說不明白,得總結自己的面經,形成自己的知識體系,別人的面經寫的再好也是別人的,自己刷面經總結自己不會的點整理出來才是最有用的
下面是面試經歷全部寫的是技術面試,hr面就沒寫了
1. 抖音
整個面試過程,主要圍繞算法和實習經歷考察,基礎知識的話不是很難。每一面的面試官都很nice,特別是三面的面試官,感覺在討論的時候沒有帶着面試的壓力,就是朋友之間的對話。
抖音一面(60分鍾)
-
自我介紹
-
說下TreeMap和LinkedHashMap
-
TreeMap怎么按照自己想要的順序排序
-
ConcurrentHashMap怎么取的size值
-
怎么防止惡意請求刷接口
-
那ES怎么切詞的呢,有寫過切詞插件嗎
-
你在項目中用Redis的場景
-
說下Redis有哪些數據類型
-
Redis怎么分片的
-
Redis的刪除策略
抖音二面(60分鍾)
-
你希望你處於一個什么樣的工作環境
-
怎么根據0-5隨機函數得到0-8隨機函數
-
緩存和DB之間怎么保證數據一致性
-
延時消息隊列怎么設計Redis的zset
-
zset做延時隊列會有什么問題死循環輪詢耗時
-
說下索引二八原理、提升讀性能犧牲寫性能的數據結構一個索引對應一顆B+樹哈希、有序數組、二叉樹查詢的優缺點那為什么不用跳表呢?
-
火車票區間查詢怎么設計數據結構比如上海去武漢,途經南京、合肥現在要快速查詢出兩點之間票的庫存
-
手撕代碼,leetcode54螺旋矩陣
抖音三面(60分鍾)
-
手撕代碼,模擬微信群隨機紅包,輸入金額、人數,返回金額數組;注意最小單位分;
-
聊項目,項目中的難點、模塊然后還問了一些依賴模塊的底層實現
-
項目的數據量以及QPS能達到多少
-
說下RPC,與HTTP的區別
-
你來字節最想得到什么我說希望技術能突飛猛進,面試官說你別說的太虛,實實在在的說...
-
你有什么想問我的嗎
2. Paypal
Paypal 一面(60分鍾)
-
聊項目,說項目中的模塊、技術難點
-
聊下ES內部的一些機制
-
ForkPoolJoin相對於線程池的優點,及底層實現
-
詳細說下CMS和G1收集器
-
CMS怎么處理垃圾碎片的
-
GC Root有哪些
-
String的intern方法有什么用
-
說下公平鎖、非公平鎖,為什么非公平鎖性能更高
-
CAS的三個問題及解決方案
Paypal 二面(60分鍾)
-
說下項目中的難點
-
說下多線程中有哪些鎖
-
volatile關鍵字原理
-
說下ES的底層實現
-
大數據Spark、Hadoop、MapReduce有了解嗎
-
100萬的數組怎么求最小的100個數字和最大的100個數字
-
手撕代碼,leetcode378有序矩陣中第K小的元素
Paypal 三面(60分鍾)
-
leetcode121買賣股票的最佳時機
-
JVM調優
-
詳細說說偏向鎖、輕量級鎖、重量級鎖問
-
新生代配合CMS收集器用的什么收集器
-
JVM里面會有幾個棧
-
為什么synchronized演變成重量級鎖后性能會下降
-
kafka有沒有用過
-
Redis怎么保證高可用主從機制,哨兵機制
Paypal 四面(60分鍾)
-
問我機器學習和大數據這塊熟不熟悉答不會面試官說那我問你些java相關的問題
-
Spring Boot內部怎么實現像tomcat那樣直接把war包扔到某個目錄然后運行起來整個項目
-
Spring Boot很大的jar包里面比如說有個lib目錄,那這個lib如果讓你去加載,怎么加載
-
你怎么深入的去學習JVM的
-
你怎么去看的虛擬機的內存
-
Jconsole和VisualVM會拿到內存占用的一個趨勢,那你覺得什么樣的趨勢才是合理的
-
Full GC和OOM時,我怎么知道是哪一段代碼引起的內存溢出和泄漏
-
G1收集器有沒有Full GC線上服務GC日志有沒有看過,G1 GC會有什么關鍵詞
3. 騰訊
騰訊 一面(75分鍾)
-
自我介紹
-
哈希和紅黑樹的特點和應用場景
-
說下time wait,出現在哪一端,什么原因會導致time wait過多,怎么解決
-
TCP和UDP的區別
-
用過什么微服務的框架
-
項目中怎么實現負載均衡的NginxF5
-
為什么一年不到就出來看機會
-
為什么不用MySQL的分庫分表,直接用ES
-
ES索引里面都存儲了哪些字段
-
調度平台模塊是怎么調度的,什么時間調度,讓你設計怎么實現
騰訊 二面(60分鍾)
-
ES的倒排索引
-
了解分布式事務嗎
-
MySQL的事務隔離級別
-
MySQL的主從備份機制
-
數據庫的表結構設計有哪些經驗
-
數據庫的分庫分表
-
關鍵幀提取的原理
-
限流怎么實現的
-
DB和緩存怎么保證數據的一致性
騰訊 三面(40分鍾)
-
怎么保證緩存和DB之間的數據一致性
-
緩存穿透、緩存擊穿、緩存雪崩區別及解決方案
-
怎么預估熱點key,怎么解決熱點key問題
-
緩存的淘汰策略
-
CPP會嗎
騰訊 四面(170分鍾)
-
哈希存在的問題
-
Redis有序集合底層實現
-
為什么用跳表不用紅黑樹
-
MySQL索引為什么用B+樹不用紅黑樹
-
zset有什么應用場景
-
為什么用ES不用MySQL
-
項目的數據規模
-
為什么ES和MySQL都是基於磁盤,ES的查詢性能要高
-
面試官讓我共享屏幕講項目,邊講邊問
面試結束復盤查漏補缺
面試本質是一個自我優勢展示的過程,不要把面試變成面試官問一句自己回答一句,主動拋出一些可能的點等面試官來問,比如我基本都被問到了DB和緩存之間怎么保證數據的一致性,其實都是我自己刻意往上引的,比如面試官說,你用過Redis嗎,你可以說,用過,一般用來作為緩存配合MySQL提高性能,需要注意它們之間數據的一致性問題(不要太刻意,自己把握分寸),面試官大概率會接着問你是怎么保證的
以下我最新總結的大廠Java必考題范圍和答案,內容點包含有java集合,jvm,並發編程,spring,mybatis,springMVC,微服務,Dubbo,netty,網絡,zookeeper,kafka,rabbitMQ,readis緩存,數據庫,設計模式 等一線大廠互聯網大廠常問到的面試真題,感興趣的朋友,可以點擊這里,暗號4399!
面試題及答案總結
刷面試題
知識點最全的java面試寶典(共227頁)
實戰筆記
獲取方式:點擊這里,暗號4399!
不要眼高手低,不少小伙伴看面經覺得自己啥都會,但是自己會與面試過程中能清晰有層次的說出來是兩回事,並且自己會到什么程度,有個說法很好,判斷你是不是真的掌握一個知識的一個點在於你能不能通過通俗易懂的語言教會一個完全沒有相關知識背景的人,如果這可以做到,那對知識的掌握一定是融會貫通的,面試過程中一定可以信手拈來。比如volatile關鍵字的原理,能不能說出點面試官眼前一亮的東西,和別的同學蜻蜓點水不一樣的感覺,這還是不容易的