Java知識結構——面試相關總結


前言


由於疫情的原因金三銀四也不是那么好找工作了,雖然沒打算換工作,不過每年這個時候出去面試一下也是不錯的,確認一下自己當前的技術水平,順便了解一下當前業內流行的技術。當然,要是有好的工作機會,跳槽也無妨..話不多說,總結一下Java的知識點,以后復習起來也容易些

 

一、Java基礎

  • 面向對象的概念
  • ArrayList,LinkedList
  • String為什么final,它的equals方法怎么重寫的,String.internal,字符串常量池相關
  • HashMap底層實現及在jdk1.7,1.8的區別,HashMap 的長度為什么是 2 的冪次方、HashMap 多線程操作導致死循環問題、HashMap 的線程安全實現有哪些、ConcurrentHashMap 的底層實現
  • fail-fast 和 fail-safe
  • Integer 緩存池(自動裝拆箱)
  • JDK 動態代理和 GClib 動態代理、JDK 動態代理具體實現原理、CGLib 動態代理、兩者對比。
  • 設計模式:單例模式、工廠模式、代理模式、策略模式等

二、多線程

  • 悲觀鎖、樂觀鎖
  • 分布式鎖的實現(redis,zookeeper)
  • Threadlocal 內存泄漏問題
  • Synchronized是悲觀鎖,CAS是樂觀鎖
  • CAS 帶來的 ABA 問題。CAS 帶來的循環時間長開銷大問題。CAS 帶來的只能保證一個共享變量的原子操作問題。CAS 是如何保證原子操作的。
  • volatile關鍵字,指令重排序的問題
  • 可重入鎖,偏向鎖,自旋鎖
  • ThreadPoolExecutor線程池創建參數
  • 線程池的5種狀態:
    • 1.Running: 接受新task, 處理等待的task
    • 2.ShutDown: 不接受新task,但處理等待的task;
    • 3.Stop: 不接受新task, 不處理等待的task, 嘗試打斷正在執行的task;
    • 4.Tidying:但所有task都被終止, worCount == 0的時候(workCount是指有效的線程數);
    • 5.Terminated: 執行完terminated()方法;
  • 多線程間通信的幾種方式:
    • 使用 volatile 關鍵字。
    • 鎖機制
    • final 關鍵字
    • ThreadLocal 類
    • JUC 包中的相關 lock 類

三、框架

  • Spring IOC AOP,如何解決循環依賴
  • Spring中FactoryBean,BeanFactory與ApplicationContext
  • Spring中的bean是否線程安全?(不安全)
  • bean的生命周期,加載過程
  • Springboot啟動流程
  • SpringMVC工作流程
  • Mybatis核心對象及流程,緩存機制,與Hibernate對比
  • hibernate的對象狀態
  • SpringCloud隔離,限流,熔斷,降級

四、數據庫

  • MySQL、Oracle、索引、存儲過程、查詢優化,默認事務隔離級別:可重復讀
  • MySQL索引分為hash和B+,哈希表的特點就是可以快速的精確查詢,但是不支持范圍查詢,B+樹范圍查詢效率更高,B+樹中一個節點為一頁或頁的倍數最為合適
  • InnoDb 和 MyISAM 有什么區別,這兩個引擎實現 BTree 索引方式的區別
  • 索引的最左匹配原則,索引失效的幾種情況,聚簇索引與非聚簇索引
  • 事務特性,隔離級別。分布式事務的解決方案
  • 慢Sql定位及優化,分庫分表等

五、中間件

  • Redis數據類型,消息隊列,Lua腳本,Redis哨兵模式,持久化RDB和AOF。一致性hash
  • Redis作為緩存時的數據一致性,緩存的三個問題及解決方案:緩存雪崩,緩存擊穿,緩存穿透
  • Kafka,RocketMQ,重復消費,順序消息,事務消息,高可用,消息丟失,擠壓場景,整個消息發送消費的流程
  • Zookeeper:zookpeer 選舉算法。Paxos 算法。Raft 算法。ZAB 協議

六、JVM

  • JVM內存模型
    • 程序計數器(記錄當前線程)
    • Java棧(虛擬機棧)
    • 本地方法棧
    • 方法區
    • 直接內存
  • JVM 垃圾回收
    • 垃圾判斷標准
    • 引用計數法
    • 可達性分析算法(根索法)
  • 垃圾回收算法
    • 標記清除
    • 復制算法(新生代From、To)
    • 標記整理(老年代)
    • 分代回收
  • 垃圾收集器
    • Serial 垃圾收集器(單線程、復制算法) (新生代)
    • ParNew 垃圾收集器(Serial+多線程) (新生代)
    • Parallel Scavenge 收集器(多線程復制算法、高效) (新生代)
    • Serial Old 收集器(單線程標記整理算法 ) (老年代)
    • Parallel Old 收集器(多線程標記整理算法)(老年代)
    • CMS 收集器(多線程標記清除算法) (老年代)
    • G1垃圾回收器
  • Minor GC 和 Full GC,Full GC 觸發條件

七、計算機網絡

  • OSI七層模型
  • HTTP請求流程
  • GET/POST區別
  • UDP/TCP區別
  • TCP三次握手及衍生問題:
    • 什么是TIME-WAIT
    • 為什么一定是三次握手不是兩次
    • 流量控制,滑動窗口,擁塞控制,慢啟動,擁塞避免,快重傳,快恢復
  • HTTP 1.0、1.1、2.0
  • HTTPS的流程
  • SSL是什么
  • TCP/IP四層協議
  • DNS,ARP協議原理
  • DOS攻擊如何解決
  • DNS欺騙如何解決,ARP欺騙等
  • XSS、CSRF、iFrame安全問題
  • Session的實現機制,分布式環境下的注意事項
  • 如何判斷遠程機器上某個端口是否開啟
  • nginx+tomcat,服務端如何獲取客戶端請求IP

八、算法

  • 數據結構:隊列,數組,棧,鏈表,樹,散列,堆,圖
  • 二叉樹遍歷方式:前序,中序,后序遍歷,層次遍歷
  • 最短路徑算法:dijkstra 迪傑斯特拉算法(時間復雜度O(n²)),floyd 弗洛依德算法(時間復雜度O(n³))
  • 圖:深度優先搜索(DFS),廣度優先搜索(BFS)
  • 八種數組排序:
  •  

     

九、Linux

  • 常用命令ls,netstat -anp,top,ifconfig,df -h,ps -ef
  • JVM調優命令jstat,jmap,jstack
  • 進程調度算法
    • 先來先服務FCFS
    • 短作業優先SPN
    • 最短剩余時間優先SRT
    • 高響應比優先HRRN
    • 時間片輪轉
    • 優先權
    • 多級反饋隊列
  • 用戶態與內核態轉換

 

遇到的主要問題基本是這些,還沒有面試過大廠,不知道大廠面試會問一些什么其他問題,以后有機會面試了再記錄下來。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM