JAVA面試題(44)

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

java基礎

  1. Iterator與ListIterator的區別mysql

    1. Iterator與ListIterator都是Collection的迭代器實現,ListIterator繼承於Iterator
    2. 遍歷集合分類git

      1. Iterator能夠遍歷Set,List,Queue的實現類
      2. ListIterator只能遍歷List接口下的實現類
    3. 修改被迭代集合github

      1. Iterator不能對元素進行修改或者添加元素
      2. ListIterator能夠在迭代中修改添加元素
    4. 刪除元素算法

      1. 兩個均可以在迭代過程當中刪除元素
    5. 遍歷方式spring

      1. Iterator只能向下遍歷
      2. ListIterator能夠向前向後遍歷,同時能夠獲取當前迭代元素的索引
  2. synchronized和ReentrantLock的區別sql

    1. 共同點數據庫

      1. 都是協調線程間訪問互斥資源
      2. 可重入,同一線程能夠屢次得到同一鎖
      3. 都保證了可見性和互斥性
    2. 不一樣點設計模式

      1. 獲取鎖的方式緩存

        1. ReentrantLock須要顯式獲取鎖
        2. synchronized隱式獲取鎖
      2. 靈活性

        1. ReentrantLock能夠響應中斷,能夠切換鎖的公平性
        2. synchronized不能夠響應中斷,鎖的獲取只能依靠系統調度
      3. 存在位置

        1. ReentrantLock是API級別
        2. synchronized是JVM級別
      4. 底層實現

        1. synchronized是同步阻塞式的,採用悲觀併發策略
        2. ReentrantLock時同步非阻塞式的,採用樂觀併發策略
  3. hasCode,equals的瞭解

    1. hasCode方法是JVM計算對象的哈希碼的方法,計算結果會放在對象頭的哈希碼字段中
    2. equals是經常使用的對象對比方法
    3. 重寫equals,須要重寫hashCode
    4. equals返回true,hashCode也返回相等的整數
    5. equasl返回false,hasCode返回不必定相等
    6. hashCode相等,equals對比不必定相等
    7. hashCode不相等,equals返回false

JVM

  1. java對象在jvm的組成

    1. 對象頭

      1. 自身運行數據

        1. 哈希碼
        2. GC分代年齡
        3. 鎖狀態標誌
        4. 線程鎖
        5. 偏向線程ID
        6. 偏向時間戳
      2. 類型指針

        1. 對象指向元數據的指針
    2. 實例數據
    3. 對齊字節
  2. 雙親委派模型的概念

    1. 雙親委派模型發生在類加載的過程當中
    2. 當前類不直接負責加載,將類依次遞歸交給父加載器進行加載
    3. 若父加載器都不能加載,則當前類負責加載
  3. 若是我不想用這個雙親加載模型,怎麼操做

    1. 自定義類加載器,重載loadClass方法

數據庫

  1. 延遲加載是什麼?Mybatis 是否支持延遲加載?

    1. 延遲加載

      1. 符合查詢條件的結果只加載知足要求的部分
      2. 若信息須要更詳細則再查詢從關聯表
    2. 延遲加載配置

      1. 查詢語句中開啓fetchType
      2. 全局配置文件中
      3. 開啓lazyLoadingEnabled(開啓全局延遲加載)
      4. 關閉aggressiveLazyLoading
      5. 開啓lazyLoadTriggerMethods
  2. select語句是怎麼執行的

    1. 鏈接器

      1. 客戶端經過帳戶密碼進入到mysql服務器層中
    2. 查詢緩存

      1. 查詢時候執行過此條select語句

        1. 若執行過,直接返回緩存結果
        2. 若未執行過,進入第三步
    3. 分析器

      1. 詞法分析
      2. 語法分析
    4. 優化器

      1. 經過選擇索引實現查詢速度的優化
    5. 執行器

      1. 操做引擎,進行查詢操做並返回結果

Spring

  1. spring的做用域

    1. singleton(多用於無狀態)
    2. prototype(多用於有狀態)
    3. session
    4. request
    5. global session
  2. spring的bean線程安全嗎

    1. prototype以及request再每次被調用會產生新對象,因此是線程安全的
    2. 無狀態的singleton線程安全,有狀態的singleton線程不安全
    3. session以及global session會形成線程競爭

設計模式

  1. 裝飾者模式的原理實現以及java中使用場景

    1. 原理以及實現

      1. 裝飾者與被裝飾者有一致的行爲流程
      2. 定義一個接口,接口方法爲一致的行爲流程
      3. 裝飾者與被裝飾者實現同一個接口,並重寫方法實現自身邏輯
      4. 當須要裝飾時,傳入被裝飾者到裝飾者的實現邏輯中,並返回裝飾者的對象
    2. 使用場景

      1. java的IO相關類

算法

  1. 字符串統計最後一個單詞的長度(leetcode58)

    1. 題目

      1. 給定一個僅包含大小寫字母和空格 ' ' 的字符串,返回其最後一個單詞的長度。

        若是不存在最後一個單詞,請返回 0 。

      2. 樣例

        1. 輸入:"Hello World"
        2. 輸出:5
    2. 解法

      1. 倒序遍歷去除字符串最後的全部空格
      2. 定義計數器緩存長度
      3. 循環直到遇到空格,計數器自增
相關文章
相關標籤/搜索