JAVA面試題(48)

    本文首發於cartoon的博客
    轉載請註明出處:https://cartoonyu.github.io/c...java

數據結構

  1. B+樹的特色git

    1. B+樹全部數據都在葉子結點,非葉子結點只存儲數據的索引
    2. 葉子結點間造成鏈表,範圍查詢相對於B樹減小了檢索的次數
    3. 全部非葉子結點都同時存在與子節點,都是子節點的端口元素
  2. 跳錶的瞭解github

    1. 採用以空間換時間的思路實現查詢速度的提升
    2. 應用在Redis的有序集合上
    3. 操做算法

      1. 查詢sql

        1. 應用多級索引進行值的比對以及層數的下沉,進而減小了遍歷節點的次數
      2. 插入數據庫

        1. 拋硬幣得出插入元素插入索引的層數
        2. 將插入元素按順序插入到最底層的鏈表中
      3. 刪除元素編程

        1. 刪除各層包括刪除元素的結點
    4. 時間複雜度設計模式

      1. O(log n)

數據庫

  1. Mysql索引的瞭解網絡

    1. 目的數據結構

      1. 爲了加快等值查詢以及範圍查詢的速度
    2. 分類

      1. 主鍵索引
      2. 普通索引
      3. 惟一索引
      4. 全文索引
      5. 多列索引
      6. 組合索引
    3. 實現

      1. B+樹
      2. B樹
      3. Hash樹
  2. Mysql查詢條件帶索引的查詢語句的執行流程

    1. MySQL5.6以前

      1. 最左前綴查找符合條件的第一個索引列值
      2. 回表到主鍵索引樹查找符合條件的結果集合
    2. MySQL5.6以後

      1. 最左前綴查找符合條件的第一個索引列值
      2. 索引下推查找符合條件的下一索引值
      3. 回表到主鍵索引樹查找符合條件的結果集合

網絡

  1. 混合加密的原理以及使用場景

    1. 使用非對稱加密利用隨機數產生的公鑰
    2. 公鑰傳輸完成並解密後傳輸的雙方採用對稱加密的方式傳輸數據
    3. 解決問題

      1. 對稱加密中公鑰的傳輸問題
      2. 減小傳輸中使用非對稱加密中加解密的時間

java

  1. 靜態代理與動態代理的區別

    1. 靜態代理與動態代理都是代理模式的一種實現
    2. 區別

      1. 確立對象方面

        1. 靜態代理在編譯時已經確立好代理對象的類型
        2. 動態代理在運行時採用反射機制動態建立對象
      2. 特色

        1. 靜態代理編碼相對簡單,並且實際運行速度會比動態代理快
        2. 動態代碼能夠有效解決多對象代理編碼重複性的問題

Spring

  1. AOP的概念瞭解

    1. AOP是Spring Framework的一個重要模塊,基於Core模塊進行實現
    2. AOP緩解了原來OOP編程的不一樣功能之間的代碼耦合問題,將原來順序化執行的程序看做一個個切面
    3. 底層實現

      1. 在字節碼層面上進行代理的實現
      2. 使用JDK動態代理或者cglib代理

        1. JDK動態代理中代理類必須實現接口
        2. cglib代理不須要接口,更靈活
  2. Spring MVC的運行流程

    1. Spring MVC組件

      1. 視圖解析組件

        1. ThemeResolver
        2. LocaleResolver
        3. ViewResolver
      2. 處理類組件

        1. HandlerAdapter
        2. HandlerExceptionResolver
        3. RequestToViewNameResolver
        4. MuitipartResolver
      3. 管理類

        1. HandlerMapping
        2. FlashResolver
    2. 步驟

      1. 請求到達DispatchServlet
      2. DispatchServlet調用HandlerMapping查找處理的Controller

        1. 若查找的url修飾的方法不符合Spring的要求,則調用HandlerAdapter進行請求的轉換
        2. 若分發過程出錯,調用HandlerExceptionResolver進行異常處理
      3. Controller調用Service進行業務邏輯的處理,Service返回結果,Controller利用RequestToViewNameResolver進行結果的包裝,並返回ModelAndView對象到DispatchServlet
      4. DispatchServlet分發ModelAndView到視圖渲染器
      5. 視圖渲染器根據ModelAndView調用ViewResolver進行視圖的渲染以及數據的填充

        1. 若請求帶有對國際化的處理,調用LocaleResolver進行渲染
        2. 若請求帶有不一樣主題的切換,調用ThemeResolver進行渲染
      6. 視圖渲染返回頁面到DispatchServlet,DispatchServlet返回頁面到請求方

操做系統

  1. I/O的控制方式
  2. 程序直接控制
  3. 中斷控制
  4. 直接內存存取方式
  5. 通道控制方式

設計模式

  1. 單例模式的四種實現
  2. 餓漢式
  3. 類加載時已經初始化對象
  4. 懶漢式
  5. 調用newInstance方法時初始化對象
  6. DCL式
  7. 雙重加鎖檢查對象
  8. 靜態內部類

算法

  1. 530. 二叉搜索樹的最小絕對差
相關文章
相關標籤/搜索