互聯網大廠面試334題:JVM+數據庫+緩存+Spring+Linux+Netty等

互聯網大廠面試334題:JVM+數據庫+緩存+Spring+Linux+Netty等

前言

2019年即將結束,一邊是大批同學湧入職場,另一邊是大群職場人打算跳槽,在這個重要的節點,Java程序員如何才能把握時機,搞定面試官,拿到一份心儀的工作呢?

除了掌握紮實的專業技能之外,在面試之前還需要刷足夠的真題,才能在萬千面試者中殺出重圍,成功拿下offer。

這份面試題合集來自於百度、騰訊、字節跳動和美團4個互聯網大廠,裡面涉及到的技術知識點包括:JAVA基礎、多線程、設計模式、JVM、數據結構與算法、數據庫、Spring、Netty、緩存、分佈式等知識點,甚至對一些技術框架和技術深度都有探究。

因為篇幅原因,只展示了部分專題和部分答案,需要完整版的可以直接私信【面試】即可免費獲取!

互聯網大廠面試334題:JVM+數據庫+緩存+Spring+Linux+Netty等

JAVA 基礎

  1. 八種基本數據類型的大小,以及他們的封裝類
  2. 引用數據類型
  3. Switch 能否用 string 做參數
  4. equals與==的區別
  5. 自動裝箱,常量池
  6. Object有哪些公用方法
  7. Java的四種引用,強弱軟虛,用到的場景
  8. Hashcode的作用
  9. HashMap的hashcode的作用
  10. 為什麼重載hashCode方法
  11. ArrayList、LinkedList、Vector的區別
  12. String、StringBuffer與StringBuilder的區別
  13. Map、Set、List、Queue、Stack的特點與用法。
  14. JDK7與JDK8中HashMap的實現
  15. HashMap和ConcurrentHashMap的區別,HashMap的底層源碼
  16. ConcurrentHashMap能完全替代HashTable嗎?
  17. 為什麼HashMap是線程不安全的
  18. 多併發情況下HashMap是否還會產生死循環
  19. TreeMap、HashMap、LindedHashMap的區別
  20. Collection包結構,與Collections的區別
  21. try?catch?finally,try裡有return,finally還執行麼
  22. Excption與Error包結構,OOM你遇到過哪些情況,SOF你遇到過哪些情況
  23. Java(OOP)面向對象的三個特徵與含義
  24. Override和Overload的含義去區別
  25. Interface與abstract類的區別
  26. Static?class?與non?static?class的區別
  27. foreach與正常for循環效率對比
  28. Java?IO與NIO
  29. java反射的作用與原理
  30. 泛型常用特點
  31. 解析XML的幾種方式的原理與特點:DOM、SAX
  32. Java1.7與1.8,1.9,10 新特性
  33. 設計模式:單例、工廠、適配器、責任鏈、觀察者等等
  34. JNI的使用
  35. AOP是什麼
  36. OOP是什麼
  37. AOP與OOP的區別

Java基礎面試題答案:

互聯網大廠面試334題:JVM+數據庫+緩存+Spring+Linux+Netty等

多線程面試題

  1. 什麼是線程?
  2. 什麼是線程?
  3. 什麼是自旋鎖?
  4. 什麼是Java內存模型?
  5. 什麼是CAS?
  6. 什麼是樂觀鎖和悲觀鎖?
  7. 什麼是AQS?
  8. 什麼是原子操作?在Java Concurrency API中有哪些原子類(atomic classes)?
  9. 什麼是Executors框架?
  10. 什麼是阻塞隊列?如何使用阻塞隊列來實現生產者-消費者模型?
  11. 什麼是Callable和Future?
  12. 什麼是FutureTask?
  13. 什麼是同步容器和併發容器的實現?
  14. 什麼是多線程?優缺點?
  15. 什麼是多線程的上下文切換?
  16. ThreadLocal的設計理念與作用?*(需要在深入下源代碼原理)
  17. ThreadPool(線程池)用法與優勢?
  18. Concurrent包裡的其他東西:ArrayBlockingQueue、CountDownLatch等等。
  19. synchronized和ReentrantLock的區別?
  20. Semaphore有什麼作用?
  21. Java Concurrency API中的Lock接口(Lock interface)是什麼?對比同步它有什麼優勢?
  22. Hashtable的size()方法中明明只有一條語句”return count”,為什麼還要做同步?
  23. ConcurrentHashMap的併發度是什麼?
  24. ReentrantReadWriteLock讀寫鎖的使用?
  25. CyclicBarrier和CountDownLatch的用法及區別?
  26. LockSupport工具?
  27. Condition接口及其實現原理?*
  28. Fork/Join框架的理解?
  29. wait()和sleep()的區別?
  30. 線程的五個狀態(五種狀態,創建、就緒、運行、阻塞和死亡)?
  31. start()方法和run()方法的區別?
  32. Runnable接口和Callable接口的區別?
  33. Java中如何獲取到線程dump文件?
  34. 線程和進程有什麼區別?
  35. 線程實現的方式有幾種(四種)?
  36. 高併發、任務執行時間短的業務怎樣使用線程池?併發不高、任務執行時間長的業務怎樣使用線程池?併發高、業務執行時間長的業務怎樣使用線程池?
  37. 如果你提交任務時,線程池隊列已滿,這時會發生什麼?
  38. 鎖的等級:方法鎖、對象鎖、類鎖?
  39. 如果同步塊內的線程拋出異常會發生什麼?
  40. 併發編程(concurrency)並行編程(parallellism)有什麼區別?
  41. 如何保證多線程下 i++ 結果正確?
  42. 一個線程如果出現了運行時異常會怎麼樣?
  43. 如何在兩個線程之間共享數據?
  44. 生產者消費者模型的作用是什麼?
  45. 怎麼喚醒一個阻塞的線程?
  46. Java中用到的線程調度算法是什麼?
  47. 單例模式的線程安全性?
  48. 線程類的構造方法、靜態塊是被哪個線程調用的?
  49. 同步方法和同步塊,哪個是更好的選擇?
  50. 如何檢測死鎖?怎麼預防死鎖?

多線程面試題答案:

互聯網大廠面試334題:JVM+數據庫+緩存+Spring+Linux+Netty等

JVM

  1. 內存模型以及分區,需要詳細到每個區放什麼?
  2. 對象創建方法,對象的內存分配,對象的訪問定位。
  3. GC的兩種判定方法:引用計數與引用鏈。
  4. GC的三種收集方法:標記清除、標記整理、複製算法的原理與特點,分別用在什麼地方,如果讓你優化收集方法,有什麼思路?
  5. GC收集器有哪些?CMS收集器與G1收集器的特點。
  6. Minor?GC與Full?GC分別在什麼時候發生?
  7. 幾種常用的內存調試工具:jmap、jstack、jconsole。
  8. 類加載的五個過程:加載、驗證、準備、解析、初始化。
  9. 雙親委派模型:Bootstrap?ClassLoader、Extension?ClassLoader、ApplicationClassLoader。
  10. 分派:靜態分派與動態分派。
  11. JVM過去過來就問了這麼些問題,沒怎麼變,內存模型和GC算法這塊問得比較多,可以在網上多找幾篇博客來看看。
  12. 推薦書籍:《深入理解Java 虛擬機》

JVM答案:

互聯網大廠面試334題:JVM+數據庫+緩存+Spring+Linux+Netty等

數據結構與算法

  1. 鏈表與數組。
  2. 隊列和棧,出棧與入棧。
  3. 鏈表的刪除、插入、反向。
  4. 字符串操作。
  5. Hash表的hash函數,衝突解決方法有哪些?
  6. 各種排序:冒泡、選擇、插入、希爾、歸併、快排、堆排、桶排、基數的原理、平均時間複雜度、最壞時間複雜度、空間複雜度、是否穩定。
  7. 快排的partition函數與歸併的Merge函數。
  8. 對冒泡與快排的改進。
  9. 二分查找,與變種二分查找。
  10. 二叉樹、B+樹、AVL樹、紅黑樹、哈夫曼樹。
  11. 二叉樹的前中後續遍歷:遞歸與非遞歸寫法,層序遍歷算法。
  12. 圖的BFS與DFS算法,最小生成樹prim算法與最短路徑Dijkstra算法。
  13. KMP算法。
  14. 排列組合問題。
  15. 動態規劃、貪心算法、分治算法。
  16. 大數據處理:類似10億條數據找出最大的1000個數

答案:

互聯網大廠面試334題:JVM+數據庫+緩存+Spring+Linux+Netty等

數據庫

  1. 事務四大特性(ACID)原子性、一致性、隔離性、持久性
  2. 數據庫隔離級別,每個級別會引發什麼問題,mysql默認是哪個級別
  3. innodb和myisam存儲引擎的區別
  4. MYSQL的兩種存儲引擎區別(事務、鎖級別等等),各自的適用場景
  5. 查詢語句不同元素(where、jion、limit、group by、having等等)執行先後順序
  6. 數據庫的優化(從sql語句優化和索引兩個部分回答)
  7. 索引有B+索引和hash索引,各自的區別
  8. B+索引數據結構,和B樹的區別
  9. 索引的分類(主鍵索引、唯一索引),最左前綴原則,哪些情況索引會失效
  10. 聚集索引和非聚集索引區別
  11. 有哪些鎖(樂觀鎖悲觀鎖),select時怎麼加排它鎖
  12. 關係型數據庫和非關係型數據庫區別
  13. 數據庫三範式,根據某個場景設計數據表(可以通過手繪ER圖)
  14. 數據庫的讀寫分離、主從複製
  15. 使用explain優化sql和索引
  16. long_query怎麼解決
  17. 內連接、外連接、交叉連接、笛卡兒積等
  18. 死鎖判定原理和具體場景,死鎖怎麼解決*
  19. Archaic和char的使用場景。
  20. mysql併發情況下怎麼解決(通過事務、隔離級別、鎖)
  21. 數據庫崩潰時事務的恢復機制(REDO日誌和UNDO日誌)
  22. 查詢語句不同元素(where、jion、limit、group by、having等等)執行先後順序

數據庫面試題答案:

互聯網大廠面試334題:JVM+數據庫+緩存+Spring+Linux+Netty等

Spring

  1. IOC和DI是什麼?
  2. Spring IOC 的理解,其初始化過程?*
  3. BeanFactory 和 FactoryBean的區別?
  4. BeanFactory和ApplicationContext的區別?
  5. ApplicationContext 上下文的生命週期?
  6. Spring Bean 的生命週期?*
  7. Spring AOP的實現原理
  8. Spring 是如何管理事務的,事務管理機制?
  9. Spring 的不同事務傳播行為有哪些,幹什麼用的?
  10. Spring 中用到了那些設計模式?
  11. Spring MVC 的工作原理?
  12. Spring如何解決循環依賴?
  13. Spring 如何保證 Controller 併發的安全?

Spring 答案:

互聯網大廠面試334題:JVM+數據庫+緩存+Spring+Linux+Netty等

Netty

  1. BIO、NIO和AIO
  2. Netty 的各大組件
  3. Netty的線程模型
  4. TCP 粘包/拆包的原因及解決方法
  5. 瞭解哪幾種序列化協議?包括使用場景和如何去選擇?
  6. Netty的零拷貝實現
  7. Netty的高性能表現在哪些方面

Netty面試題答案:

互聯網大廠面試334題:JVM+數據庫+緩存+Spring+Linux+Netty等

緩存

  1. Redis用過哪些數據數據,以及Redis底層怎麼實現
  2. Redis緩存穿透,緩存雪崩
  3. 如何使用Redis來實現分佈式鎖
  4. Redis的併發競爭問題如何解決
  5. Redis持久化的幾種方式,優缺點是什麼,怎麼實現的
  6. Redis的緩存失效策略
  7. Redis集群,高可用,原理
  8. Redis緩存分片
  9. Redis的數據淘汰策略

緩存面試題答案:

互聯網大廠面試334題:JVM+數據庫+緩存+Spring+Linux+Netty等

Linux 面試題

  1. 硬鏈接和軟連接區別
  2. kill用法,某個進程殺不掉的原因(進入內核態,忽略kill信號)
  3. Linux用過的命令
  4. 系統管理命令(如查看內存使用、網絡情況)
  5. 管道的使用
  6. grep的使用,一定要掌握,每次都會問在文件中查找
  7. shell腳本
互聯網大廠面試334題:JVM+數據庫+緩存+Spring+Linux+Netty等

以上展示的部分面試真題(包括未展示的)均含有詳細的解析,整理成了PDF,需要完整版的小夥伴,評論+轉發,關注我,然後私信回覆【面試】即可免費獲取哦!


分享到:


相關文章: