最近喜報有點多,今天分享面經的這位小夥伴從事Java工作已經4年+。
這兩個月陸續參加了多家一線互聯網企業的高級Java面試,包括阿里、字節跳動(今日頭條)、京東、快手、科大訊飛等,幸運拿下了兩個offer,綜合考量了下,最終選取了其中1家公司入職。
涉及隱私,這裡就不透露具體入職哪家公司,以及每道面試題的具體出處啦,只是將我在過去兩個月中所遇到過的面試真題,分類打包一次分享給大家。
面試題目總結
Java 基礎部分
基本這些公司都會問到相關基礎,所以,一般來說基礎的準備是必要並且通用的,所以這部分真的很重要。
- 什麼是Java序列化,如何實現Java序列化?
- Java中的異常有哪幾類?分別怎麼使用?
- 常用的集合類有哪些?
- Java有自己的內存回收機制,但為什麼還存在內存洩露問題呢?
- NIO是什麼?適用於何種場景?
- 說說HashMap的實現原理,如何保證HashMap的線程安全?
計算機網絡
計算機網絡部分的題目還是挺容易的,考察的點不會那麼深入。
通常來說也就是這些問題:
- TCP 有哪些狀態?
- TCP的滑動窗口協議有什麼用?講講原理。
- 詳細描述TCP四次揮手過程?
- 三次握手、四次揮手,為啥不是兩次?
- RPC和http的區別?
- HTTP協議都有哪些方法?
Java虛擬機(JVM)
- JVM內存模型結構?
- 方法區和直接內存什麼時候會oom?
- JVM收集器G1的內存模型和CMS的內存模型有什麼不同?
- JVM調優用過嗎?
- 如何查看Java內存使用情況(jconsole、命令jmap、jstack等等)?
數據庫
- Join(inner、left、right)的區別?
- Union和union all區別?
- ACID,具體是啥意思?
- 事務隔離級別?
- 幻讀和不可重複讀的區別?
- Mysql和Mongodb有啥區別?
- ,Mysql存儲引擎中索引的實現機制;
- 數據庫事務的幾種粒度;
- 如何解決高併發減庫存問題?
- SQL什麼情況下不會使用索引?
- 行鎖、表鎖,樂觀鎖、悲觀鎖,區別分別是什麼?
Spring
- Bean的生命週期?
- 什麼是DI、為什麼DI、DI的類型(構造器注入、方法注入)?
- Spring如何解決循環依賴問題?
- Spring框架中IOC的原理是什麼?
- spring的依賴注入有哪幾種方式
- Spring 如何實現數據庫事務?
- Spring boot和spring的差別,tomcat如何嵌入spring boot的/spring boot中的tomcat是如何啟動的?
多線程
- 線程的幾種狀態,請畫出具體的狀態流轉圖?
- Java wait、sleep的區別?
- volatile如何實現指令重排序?
- 線程池中的阻塞隊列如果滿了怎麼辦(拒絕策略)?
- Synchronized和AQS異同,AQS公平非公平如何實現?
- 多線程裡面對一個整型做加減為啥不能用volatile?
- voliatile和synchonized有什麼區別?synchonized和jdk提供的Lock包又有什麼區別?
Redis
列舉下你所知道的常用的Redis客戶端併發模型?
- 聊下分佈式緩存,一致性hash。
- 如何解決緩存單機熱點問題?
- Memcache與Redis的區別?
- 列舉一個常用的消息中間件,如果消息要保序如何實現?
- Zookeeper有哪些功能?
微服務
- 什麼是微服務?
- 什麼是微服務熔斷?什麼是服務降級?
- 微服務的優點、缺點分別是什麼?
- 你所知道的微服務技術有哪些?列舉1-2個案例?
- SpringCloud和Dubbo 有哪些區別?
算法
- 如何遍歷一棵二叉樹?
- 二叉樹寬度遍歷?
- 用Java寫一個冒泡排序算法?
- 描述一下鏈式存儲結構。
- 數據結構的話,鏈表,樹,圖的基本知識得懂?
- 瞭解樹的先序遍歷,中序遍歷,後序遍歷。圖的廣度優先搜索算法,深度優先搜索算法?
HR 面
- 除了工作中經常應用到的技術,有關注、學習其它主流新技術嗎?
- 離開上一家公司的原因是什麼?
- 你的優、缺點分別是什麼?
- 未來的職業規劃?
面試經驗總結
面試題目範圍
面試主要考察候選人的基礎知識、項目經驗、技術深度,每個候選人被問到的題目及難易程度都略有不同。
一方面,要看面試官對你的第一感覺如何(還真有點像相親),如果你能在面試前幾分鐘,能給面試官留下好印象,那麼你在面試時得到的機會與包容,就會相對多一些。
另一方面,現場面試有60%-80%的題目,可能就出自於你的簡歷,面試官會依據你簡歷上提到的知識、經驗、項目,去深挖你的技能掌握程度。因此,真的是切記:慎用精通,慎用精通,慎用精通。如果你只是接觸、瞭解某個技術的皮毛,就在簡歷中說自己精通,保證你會被虐得很慘,最終反而得不償失。
認真對待每一場面試
如果沒有準備充分就去參加面試,既浪費彼此時間,也是浪費來之不易的機會,要知道得到好公司的面試機會不易,機會都是給有準備人的。
我始終相信:當下所付出的每一分努力與堅持,都會在未來的某一天,得到豐厚的回饋。面試結束覆盤查漏補缺
每次面試都是檢驗自己知識與技術實力的一次機會,面試結束後建議大家及時總結覆盤,查漏補缺,然後有針對性地進行學習,既能提高下一場面試的成功概率,還能增加自己的技術知識棧儲備,可謂是一舉兩得。
以上,是我在面試過程中所遇到的題目,以及積累到的經驗,全部分享給大家。
送最新總結的阿里集團高級Java必考題和答案,供大家參考。
轉發+關注+私信回覆【阿里】,立即領取。
轉發,轉發,轉發,然後關注+私信回覆【阿里】,立即領取!
----------end-----------
閱讀更多 優知學院 的文章