1. 程式人生 > >有贊 校招 面經

有贊 校招 面經

  • 校招已經過去一年,在此掛出去年有贊校招面經,一輪卒 淚奔

  • sychronized 加兩個sychronize可以嗎? 和可重入鎖有什麼區別?

    • synchronized擁有強制原子性的內部鎖機制
    • 在一個執行緒使用synchronized方法時呼叫該物件另一個synchronized方法,即一個執行緒得到一個物件鎖後再次請求該物件鎖,是永遠可以拿到鎖的
  • volatile

  • Java記憶體模型

  • 如何實現一個雙向連結串列?

  • AQS

    • 同步器 多執行緒併發執行,通過某種共享狀態來同步,只有當狀態滿足xxx條件時,才會觸發執行緒執行xxx
    • AQS框架如何構建同步器
      • 功能
        • 獲取同步狀態 如果允許,則獲取鎖,如果不允許就阻塞執行緒,直到同步狀態允許獲取
        • 釋放同步狀態 修改同步狀態,並且喚醒等待執行緒
      • 需求
        • 獨佔鎖和共享鎖兩種機制。
        • 執行緒阻塞後,如果需要取消,需要支援中斷。
        • 執行緒阻塞後,如果有超時要求,應該支援超時後中斷的機制
      • 獨佔模式
        • tryAcquire 本身不會阻塞執行緒,如果返回 true 成功就繼續,如果返回 false 那麼就阻塞執行緒並加入阻塞佇列
        • 可中斷時獲取,取消,超時模式獲取
      • 共享模式
      • 可以認為同步狀態的維護、獲取、釋放動作是由子類實現的功能,而動作成功與否的後續行為時有AQS框架來實現。
  • CAS

  • final 可以修飾類? 有什麼好處?

  • finalize() 方法會觸發GC嗎

  • 三次握手,四次揮手

  • 有在Linux開發的經歷?linux常用命令知道? 如何檢視節點,檢視cpu命令? grep知道嗎 不知道。。。。。

  • git和svn有哪些區別? 平時怎麼使用git fetch和poll命令

  • 如何實現一個執行緒池?要注意哪些地方,執行緒超出最大容量如何處理?答了異常好像不滿意

    • JDK1.5中提供了4種策略:
      • AbortPolicy 直接丟擲異常
      • CallerRunsPolicy 只用呼叫者所線上程來執行任務
      • DiscardOldestPolicy 丟棄佇列中最近的一個任務,來執行當前任務
      • DiscardPolicy 不處理不丟棄
  • 執行緒的幾種狀態

  • Spring boot有哪些好處? 閱讀過原始碼?

  • Spring在開發中用在哪裡?Aop是如何實現的?

  • applicationContext BeanFactory瞭解嗎?

  • 可重入鎖 ReentrantLock瞭解多少?

  • 程序和執行緒的區別?

  • 程序之間的通訊有哪些?

  • 死鎖發生的條件?

  • 重排序瞭解嗎?

  • hashMap的get()實現,1.8比1.7有哪些改進?

    • 首先計算 key 的 hashCode,找到陣列中對應位置的某一元素,然後通過 key 的 equals 方法在對應位置的連結串列中找到需要的元素
  • equals()

  • ConcurrentHashMap? 和hashtable區別??

  • 平時有關注技術論壇? 怎麼學習? 寫部落格? github上有什麼東西?

  • 歸併排序瞭解? 時間複雜度? 穩定性標準是什麼?

  • java深拷貝 淺拷貝

    • 淺拷貝:
      • 淺複製僅僅複製所考慮的物件,而不復制它所引用的物件
      • Cloneable介面
    • 深拷貝:
      • 深複製把要複製的物件所引用的物件都複製了一遍
      • 物件序列化 物件寫入到一個位元組流中,再從位元組流中將其讀出來
  • 總結

    • 對待問題的細節還不夠深入
    • 建議看一些jdk原始碼和spring原始碼,並思考為什麼要這樣做,觸類旁通