前言
宅在家裏快兩個月的在家辦公模式基本告一段落。企業復工,大家的工作生活終於可以迴歸正軌,相信不少朋友已經走出家門,迎戰跳槽季了。一些動作快的朋友可能已經拿到一兩個 Offer 了。
那麼,對於Java開發崗來說,到底該如何準備技術面呢?
其實,除了表達能力和麪試技巧外,無非就從這幾個方面進行準備:源碼閱讀、JVM、高併發,分佈式、集羣、中間件,微服務架構等。
下面是最新的字節跳動和美團的Java面試題,希望對大家面試有幫助!
字節跳動一面:
1.看過Spring的源碼嗎,開局暴擊。
2.Class.forName()和ClassLoader.loaderClass()有什麼區別,開局暴擊*2.。
3.ConcurrentHashMap的原理,爲什麼是線程安全的,讓你設計怎麼實現讀寫安全
4.Mysql中有哪些索引,你能想到哪些作爲索引的數據結構,HashMap,B+樹,前綴樹,面試官提示跳錶
5.Spring事務傳播機制的應用
6.線程安全的單例模式,寫完DCL寫靜態內部類的時候寫錯了,汗
7.正向代理和反向代理
8.http是有狀態的嗎,tcp呢,爲什麼http是無狀態的
9.RPC和微服務框架了解嗎
總結:一面面了一個多小時吧,很多常見的面試問題就沒列了,列的是以前沒碰到過問題,感覺面試官很重視思維能力和總結能力,即對於一個設計中的原理很深刻並且能用於其他地方。
字節跳動二面:
1.先聊了聊項目
2.JVM
3.OOM問題和StackOverflow有什麼區別
4.好像問了些網絡方面的知識
5.思考題,64匹馬,8個賽道,最少比多少場可以找出最快的4匹馬?首先說15,後來想到了13,最後在網上搜的答案是11,挺有意思的一道題
代碼題,也不難
總結:二面面試官項目方面聊的多一些,然後就是思考題和算法題,也差不多一個小時吧,當時從6點直接面到8點多,飯都沒吃,突出一個慘
美團一面:
基本問的就是java基礎,多線程,jvm,redis這些,大概一個小時左右吧
美團二面:
1.聊聊sychronized關鍵字,用法,底層實現,偏向鎖,輕量級鎖,自旋鎖
2.聊聊偏向鎖,輕量級鎖的原理和過程
3.除了sychronized,還有啥,聊聊ReentrantLock,底層一個繼承了AQS的實現類
4.聊聊AQS,volatile修飾的state,加鎖過程,公平鎖和非公平鎖的實現
5.TCP和UDP的區別
6.三次握手和四次揮手的過程,爲什麼這樣
7.聊聊ThreadLocal,爲什麼要用threadLocal,ThreadLocalMap中,key和value分別哪個是強引用,哪個是弱引用,我迷之堅持value是強引用。。。
8.線程的狀態以及狀態變化過程
9.CMS和G1的區別
10.聊聊Spring中的動態代理,實現了接口的用JDK動態代理,未實現接口的通過CGlib動態代理,動態代理和靜態代理的區別
11.常用設計模式,策略模式的原理和應用
之後的話就是聊項目,做了哪些,遇到了哪些問題
代碼題:兩個鏈表代表的大數進行相加,我用兩個棧分別保存鏈表,然後出棧的時候用頭插法生成新鏈表,感覺時間複雜度沒有最優,但是也過了
面試官介紹部門和業務的時候很熱情也很詳細,然後說等HR通知~
總的來講,比起字節跳動,美團的面試稍微簡單一丟丟,因爲不會問的太底層,太發散,然後兩家公司的面試官都很贊,很有耐心也很熱情!
最後針對於上面的面試問到的知識點總結出互聯網公司Java程序員面試涉及到的絕大部分面試題及答案做成了文檔(300頁pdf)分享給大家,希望能幫助到您面試前的複習且找到一個好的工作,也節省大家在網上搜索資料的時間來學習。關注公衆號,程序員追風,領取這些Java面試資料!