高級面試

1.java 探針

jdk1.5之後引入了javaAgent技術,javaAgent是運行方法以前的攔截器。咱們利用javaAgent和ASM字節碼技術,在JVM加載class二進制文件的時候,將方法耗時及內部調用狀況放入處理器,處理器利用棧先進後出的特色對方法調用前後順序作處理,當一個請求處理結束後,將耗時方法軌跡和入參map輸出到文件中,而後根據map中相應參數或耗時方法軌跡中的關鍵代碼區分出咱們要抓取的耗時業務。最後將相應耗時軌跡文件取下來,轉化爲xml格式並進行解析java

2.線程池本身實現sql

(1)線程是稀缺資源,使用線程池能夠減小建立和銷燬線程的次數,每一個工做線程均可以重複使用。數據庫

(2)能夠根據系統的承受能力,調整線程池中工做線程的數量,防止由於消耗過多內存致使服務器崩潰。安全

corePoolSize:線程池核心線程數量服務器

maximumPoolSize:線程池最大線程數量多線程

keepAliverTime:當活躍線程數大於核心線程數時,空閒的多餘線程最大存活時間運維

unit:存活時間的單位性能

workQueue:存聽任務的隊列spa

handler:超出線程範圍和隊列容量的任務的處理程序線程

運行原理:

      剛開始都是在建立新的線程,達到核心線程數量5個後,新的任務進來後再也不建立新的線程,而是將任務加入工做隊列,任務隊列到達上線5個後,新的任務又會建立新的普通線程,直到達到線程池最大的線程數量10個,後面的任務則根據配置的飽和策略來處理。咱們這裏沒有具體配置,使用的是默認的配置AbortPolicy:直接拋出異常。

3.容器的原理與底層

容器:Collection收集,集合。自己也是一個對象,只不過它能夠容納其餘的對象。

 

4.RESTFUL 說明

按照HTTP協議的規定:

GET方法是安全且冪等的

POST方法是既不安全也不冪等的(能夠用來做爲全部寫操做的通配方法),

PUT、DELETE方法都是不安全但冪等的。

4.說說項目中遇到的印象最深的一個問題? 我想一下啊,我說一下一次性能調優的問題;咱們系統在有一個階段,天天高峯期的時候都會比較卡,都經過重啓解決;我解決這個問題後系統好久都不須要重啓了; 首先分析是不是內存阻塞或者full GC致使應用卡死,因而我打開了full GC日誌,並使用jstack dump線程下來,我就發現沒有進行full GC,不少線程在wait;因而我 就懷疑是數據庫問題,我就聯繫了運維,讓他幫忙導出數據庫的報告;導出來以後我就發現有一個sql的磁盤io佔用90%多;因而我就看了下該SQL執行計劃;發現當前 執行計劃有索引沒命中,因而我就從新作表分析,讓數據庫決定一個最佳執行計劃,問題解決了;因而我就將遇到的此次問題分享給了相關同事。
相關文章
相關標籤/搜索