JAVA面試題(47)

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

java

  1. java對象引用類型以及對象回收的策略mysql

    1. 強引用git

      1. 經過顯式的new或反射生成對象
      2. 不會被回收
    2. 軟引用github

      1. 在內存不足的時候會回收
    3. 弱引用算法

      1. 不管內存是否足夠,GC都會回收
    4. 虛引用sql

      1. 不管何時都會被回收
  2. java註解的做用數據庫

    1. 文檔生成
    2. 編譯檢查
    3. 標識功能
  3. 樂觀鎖與悲觀鎖的區別緩存

    1. 數據的修改認爲上服務器

      1. 樂觀鎖認爲數據不會被修改
      2. 悲觀鎖認爲數據總被修改
    2. 鎖的種類上post

      1. 樂觀鎖對寫操做不加鎖
      2. 悲觀鎖在讀寫操做都加鎖
    3. 執行方法上

      1. 樂觀鎖經過版本號以及CAS算法實現
      2. 悲觀鎖經過鎖的等待與釋放實現
    4. 執行效率上

      1. 樂觀鎖比悲觀鎖的效率高
    5. 數據正確性上

      1. 悲觀鎖比樂觀鎖的要好
    6. 使用場景

      1. 悲觀鎖用於寫操做頻繁的場景
      2. 樂觀鎖用於讀操做頻繁的場景
  4. CAS與synchronized的使用場景

    1. CAS不斷自旋更新選定的值,用於讀操做頻繁的場景
    2. synchronized經過鎖的競爭以及釋放進行互斥資源的訪問,用於寫操做頻繁的場景

數據庫

  1. 數據庫select語句的執行流程(客戶端到存儲引擎)

    1. 客戶端經過TCP三次握手與服務端進行鏈接
    2. 鏈接器判斷帳號信息是否有效
    3. 有效,則進入第三步
    4. 無效,鏈接器返回Access denied的錯誤
    5. 查詢緩存中是否有執行的記錄

      1. 不建議使用,能夠經過query_cache_type關閉,MySQL 8.0去除了查詢緩存的功能
      2. 有執行記錄,則返回上次執行結果
      3. 沒有執行記錄,進入第四步
    6. 分析器進行詞法分析,語法分析

      1. 詞法分析

        1. 判斷輸入的SQL語句中的關鍵詞的含義
      2. 語法分析

        1. 判斷SQL是否合法
        2. 若合法,進入第五步
        3. 若不合法,返回 You have an error in your SQL syntax錯誤到客戶端
    7. sql語句通過優化器選擇最佳執行策略

      1. 多索引狀況下的最佳索引的選擇
      2. 多表關聯時決定表的鏈接順序
    8. sql語句交由執行器進行存儲引擎的操做並返回結果

      1. 根據from找到須要查詢的表,根據where造成有效的結果集合
      2. (若是有order by,對數據進行排序)select返回結果
  2. 數據庫更新語句的執行流程(客戶端到存儲引擎)

    1. 客戶端經過TCP三次握手與服務端進行鏈接
    2. 鏈接器判斷帳號信息是否有效

      1. 有效,則進入第三步
      2. 無效,鏈接器返回Access denied的錯誤
    3. 查詢緩存中是否有執行的記錄

      1. 不建議使用,能夠經過query_cache_type關閉,MySQL 8.0去除了查詢緩存的功能
      2. 有執行記錄,則返回上次執行結果
      3. 沒有執行記錄,進入第四步
    4. 分析器進行詞法分析,語法分析

      1. 詞法分析

        1. 判斷輸入的SQL語句中的關鍵詞的含義
      2. 語法分析

        1. 判斷SQL是否合法
        2. 若合法,進入第五步
        3. 若不合法,返回 You have an error in your SQL syntax錯誤到客戶端
    5. sql語句通過優化器選擇最佳執行策略
    6. sql語句交由執行器進行存儲引擎的操做並返回結果
    7. 兩段式提交

      1. 檢查並讀入相關數據頁到內存
      2. 將更新語句的操做行寫入內存

        1. 寫入操做記錄到readlog中,處於prepare狀態
        2. 寫入操做記錄到binlog中
        3. 事務提交,處於commit狀態
  3. mysql執行計劃的瞭解

    1. 指定場景

      1. server層中的分析器中
    2. 做用

      1. 得出最佳sql執行狀況,加快訪問速度以及減小資源的消耗
    3. 使用explain+sql語句進行計劃的查看
    4. 相關概念

      1. type(鏈接的類型)
      2. possible_keys(可能使用到的索引)
      3. key(使用到的索引)
  4. Mysql中Text與Blob的區別
  5. 存儲數據表現形式
  6. Text只能存儲文本型數據
  7. Blob存儲二進制的大數據
  8. 大小寫敏感
  9. Text大小寫不敏感
  10. Blob大小寫敏感
  11. 使用場景
  12. Text存儲大文本
  13. Blob存儲小文件型數據

計網

  1. TCP滑動窗口的瞭解

    1. 滑動窗口是TCP發送進程控制數據發送的速度以及數據傳輸可靠性的重要保證
    2. 有關概念

      1. 從左到右是自定義指針p1,p2,p3
      2. p1左的數據都是已發送已收到確認的數據,p1就是發送進程的發送窗口的左邊界
      3. p3右的數據當前時刻不容許發送的數據,p3是發送進程發送窗口的右邊界
      4. p2在p1與p3之間

        1. p1至p2的數據,是已發送未確認的數據。收到確認後,p1進行右移;若出現丟失或者超時,重傳p1與p2之間的數據
        2. p2至p3是容許發送未發送的數據區間。
    3. TCP的發送窗口根據服務器端回傳的確認報文或者擁塞控制進行擴大或縮小。
  2. 對稱加密與非對稱加密的區別以及常見算法
  3. 區別
  4. 對稱加密用同一密鑰進行加密與解密
  5. 非對稱加密用公鑰進行加密,私鑰進行解密
  6. 常見算法
  7. 對稱加密

    1. DES

      1. AES
  8. 非對稱加密

    1. DSA

      1. RSA

操做系統

  1. 用戶態與內核態的區別

    1. 操做範圍

      1. 用戶態在內存中運行
      2. 內核態能夠操做IO,外設等
    2. 執行指令

      1. 用戶態只能執行非特權指令
      2. 內核態能夠執行特權指令
    3. 搶奪處理機

      1. 用戶態能夠搶佔處理機
      2. 內核態不能夠搶佔處理機
  2. 磁盤調度算法

    1. 先來先服務
    2. 最短距離優先
    3. 掃描算法
    4. 循環掃描算法

算法

  1. 學生出勤記錄 I

    [
    ](https://leetcode-cn.com/probl...

相關文章
相關標籤/搜索