高頻重點面試題①
一、自增變數
- 題目代碼
int i = 1;
i = i++; //i = 1
int j = i++; //i = 2, j = 1
int k = i + ++i * i++;//2+3*3,i=4
System.out.println("i="+i);//i = 4
System.out.println("j="+j);//j = 1
System.out.println("k="+k);//k = 11
- 理解
- 等號的右側
從左到右依次壓入運算元堆疊 - 計算的順序依然還是根據
運算子的優先級計算 - 自增操作是直接對變數表中的變數直接修改,不需要壓入運算元堆疊
- 賦值操作是最后做在處理的
- 等號的右側
二、單例模式
- 餓漢式
//通過構造器私有化,對外暴露get方法獲取
public class Singleton1 {
private static final Singleton1 SINGLETON_1 = new Singleton1();
private Singleton1(){}
public Singleton1 getInstance(){
return SINGLETON_1;
}
}
//通過列舉的方式獲取
public enum Singleton2 {
INSTANCE;
public static void main(String[] args) {
Singleton2 s = Singleton2.INSTANCE;
}
}
//通過靜態代碼塊初始化
public class Singleton3 {
private static final Singleton3 INSTANCE;
static {
//todo 可通過組態檔去加載引數,提供初始化
INSTANCE = new Singleton3();
}
public Singleton3 getInstance(){
return INSTANCE;
}
}
- 懶漢式
//同步方法方案
public class Singleton4 {
private static Singleton4 INSTANCE;
private Singleton4(){}
public synchronized static Singleton4 getINSTANCE(){
if (INSTANCE==null){
INSTANCE = new Singleton4();
}
return INSTANCE;
}
}
//雙重鎖判斷方案
public class Singleton5 {
private volatile static Singleton5 INSTANCE;
private Singleton5(){}
public static Singleton5 getINSTANCE(){
if (INSTANCE == null){
synchronized (Singleton5.class){
if (INSTANCE==null){
INSTANCE = new Singleton5();
}
}
}
return INSTANCE;
}
}
//靜態內部類
public class Singleton6 {
private Singleton6(){}
private static class Inner{
private static final Singleton6 INSTANCE = new Singleton6();
}
public static Singleton6 getInstance(){
return Inner.INSTANCE;
}
}
三、類初始化和實體初始化
- 類初始化程序—(子類初始化需要加載初始化父類)
- 靜態成員變數、靜態代碼塊(從上往下的順序,順序執行)
- 構造器(最后執行)
- 實體初始化程序
- 成員變數、非靜態代碼塊(從上往下順序,順序執行)
- 構造器(最后執行)
- 哪些方法不會被重寫
- final
- private
- static
- 物件的多型性
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-A5i0x0gy-1639837986721)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211218150805183.png)]](https://img.uj5u.com/2021/12/20/289857200754354.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0dNqGMOq-1639837986723)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211218150816315.png)]](https://img.uj5u.com/2021/12/20/289857200754351.png)
四、方法的引數傳遞機制
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FTOV69hB-1639837986723)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211218152927030.png)]](https://img.uj5u.com/2021/12/20/289857200754355.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-hUvXFvdp-1639837986724)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211218153044368.png)]](https://img.uj5u.com/2021/12/20/289857200754352.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ccdAREER-1639837986725)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211218153020204.png)]](https://img.uj5u.com/2021/12/20/289857200754356.png)
五、成員變數&區域變數
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gDewJXlW-1639837986727)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211218164130076.png)]](https://img.uj5u.com/2021/12/20/289857200754357.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-nD2kGzhO-1639837986728)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211218164311857.png)]](https://img.uj5u.com/2021/12/20/289857200754358.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CfN4xmVU-1639837986729)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211218164254238.png)]](https://img.uj5u.com/2021/12/20/289857200754359.png)
六、SpringBean的作用域之間的區別
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MlytLeNZ-1639837986730)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211218164433222.png)]](https://img.uj5u.com/2021/12/20/2898572007543510.png)
七、Spring資料庫事務
地址:https://blog.csdn.net/qq_43284469/article/details/110919021?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163982224916780264049691%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163982224916780264049691&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-7-110919021.pc_v2_rank_blog_default&utm_term=%E4%BA%8B%E5%8A%A1
第五標題開始+
八、如何解決SpringMVCPost請求中文亂碼問題?
創建一個類,繼承OncePerRequestFilter添加一個Filter過濾器,來做字符集的轉換
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-rGkNVPXo-1639837986732)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211218183351340.png)]](https://img.uj5u.com/2021/12/20/2898572007543511.png)
九、簡單的談一下SpringMVC的作業流程


-
DispatchServlet會攔截請求
-
執行這里就會遍歷所有
this.handlerMappings,獲取請求的uri和請求,拿到對應能夠處理這次請求的handlerMapping,并將拿到:↓- handlerMapping處理器
- 對應的攔截器
- 這次的請求request

包裝成一個
HandlerExecutionChain, -
從HandlerExecutionChain攔截器鏈到拿到對應的
handlerMapping -
根據handlerMapping,去獲取對應的
HandlerAdapter的處理器對應的配接器 -
判斷請求方式是否是
get,如果是就判斷是否被修改過 -
遍歷所有的攔截器鏈,執行每個
applyPreHandle()- 每次執行都記錄執行的攔截器鏈遍歷索引
- 如果有一個applyPreHandle回傳false,就去導致執行triggerAfterCompletion,去執行
倒置每一個已經執行applyPreHandle()方法的攔截器的afterCompletion()方法
-
再通過配接器執行
真正處理這次請求的controller方法handle,回傳ModelAndView(這里我們不是jsp,所以肯定必然沒有ModelAndView對應,就肯定為null)
-
執行配接器對應的handle()方法也就是對應的controller的方法后,會回傳
ModelAndView -
判斷當前請求的所選處理程式
是否選擇處理異步處理 -
給對應回傳的ModelAndView物件賦予
默認名 -
倒置去執行每個攔截器鏈中每個攔截的applyPostHandle()方法 -
執行
processDispatchResult()做收尾作業- 判斷是否有
ModelAndView,有就渲染,沒有執行下面的 - 去執行
triggerAfterCompletion(),這里上面已經出現過,也就是去執行已經執行過preHandle攔截器的afterCompletion()方法
- 判斷是否有
十、Mybatis中當物體類中的屬性名和表中名欄位不一樣該怎么辦
- sql陳述句中起
別名 - 在物體類上標注
注解 - 開啟
駝峰規則 - 可以使用
結果集映射—resultmap映射
十一、Linux服務類常用指令
1、CentOS6
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4BmXiqyZ-1639918258337)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211219192312773.png)]](https://img.uj5u.com/2021/12/20/2898572007543514.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-aIO0Fd6g-1639918258339)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211219192438196.png)]](https://img.uj5u.com/2021/12/20/2898572007543515.png)
2、CentOS7
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-aHPQ4Jvg-1639918258341)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211219192538819.png)]](https://img.uj5u.com/2021/12/20/2898572007543516.png)
十二、Git分支相關命令
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-BpY55ct4-1639918258342)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211219194848802.png)]](https://img.uj5u.com/2021/12/20/2898572007543517.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6UFjSKO4-1639918258343)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211219194821359.png)]](https://img.uj5u.com/2021/12/20/2898572007543518.png)
十三、Redis持久化有幾種型別?他們的區別是什么?
1、RDB
- 特點
記憶體快照全量的方式保存,一個fork子行程不影響主行程進行備份【全量替換】
- 優點
- 恢復速度快
- 備份速度快
- 缺點
- 會有可能資料丟失
- 資料量的時候就比較消耗性能
2、AOF
-
特點
- 以日志的形式,記錄每一個寫操作
- 只追加檔案,不改寫檔案【做
增量操作】
-
優點
- 存盤的粒度更小更細
- 可處理誤操作
- 人可讀懂的日志文本
-
缺點
- 比RDB的方式更占用存盤空間
- 恢復速度慢
十四、Mysql建立索引的時機
-
什么時候建立索引
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-AUXtplEN-1639918258343)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211219200242657.png)]](https://img.uj5u.com/2021/12/20/2898572007543519.png)
-
什么時候不適合建立索引
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-TEoC18PB-1639918258344)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211219200343093.png)]](https://img.uj5u.com/2021/12/20/2898572007543520.png)
十五、JVM垃圾回識訓制,GC發生在JVM哪個部分,有幾種GC,他的演算法是什么
GC發生在JVM哪個部分?發生在堆中,
-
GC有幾種
- 年輕代的GC—MinorGC
- 老年代的GC—FullGC
-
演算法的分類
- 參考計數演算法
- python中被使用,已經被jvm淘汰
- 復制演算法
- 特點
- 使用與年輕代的MinorGC
- 優點
- 沒有記憶體碎片
- 沒有標記清楚,效率高
- 缺點
- 雙倍的存盤空間
- 特點
- 標記清除
- 特點
- 發生在老年代,先進行標記,再進行清除
- 優點
- 不需要額外空間
- 缺點
- 存在記憶體碎片
- 特點
- 標記壓縮
- 特點
- 發生老年代,先進行標記,再進行壓縮
- 優點
- 又要標記又要壓縮移動,需要移動的成本,所以效率低
- 缺點
- 解決記憶體碎片的問題
- 特點
- 標記清除壓縮
- 先進行標記,再清除,再壓縮移動記憶體
- 參考計數演算法
十六、Redis在專案中的使用場景
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yfsp9I2j-1639918258346)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211219202812418.png)]](https://img.uj5u.com/2021/12/20/2898572007543521.png)
十七、ES和Solr的區別
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ytbKQXSi-1639918258348)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211219203616835.png)]](https://img.uj5u.com/2021/12/20/2898572007543522.png)
-
Solr集群
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-9TsX2Tkx-1639918258349)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211219203647680.png)]](https://img.uj5u.com/2021/12/20/2898572007543523.png)
十八、單點登錄實作的程序
- 概念
一處登錄,處處使用
- 前提
分布式系統中
- 流程圖
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WusEf4EX-1639918258352)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211219204757962.png)]](https://img.uj5u.com/2021/12/20/2898572007543524.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-dj85lbw5-1639918258363)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20211219204805570.png)]](https://img.uj5u.com/2021/12/20/2898572007543525.png)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/386668.html
標籤:其他
