JavaWeb常考面試題(找工作必看)

1.Redis在項目中的使用場景

數據類型 使用場景
String 比如說,我想知道什麼時候封鎖一個IP地址 Incrby 命令
Hash 存儲用戶信息 【ID,name,age】 Hset (key field value )
List 實現最新消息的排行 、 利用List的push命令,將任務存在list集合 ,同時使用另一個命令,將任務從集合中取出 pop --可以模擬消息隊列【電商中的秒殺】
Set 可以自動排重。比如在微博中將每個人的好友存在集合中(Set), 這樣求兩個人的共同好友,只需要求交集即可
Zset 以某個條件爲權重,進行排序 如:商品價格排序

2.消息隊列在項目中的使用

背景:在分佈式系統中是如何處理高併發的。
由於在高併發的環境下,來不及同步處理用戶發送的請求,則會導致請求發生阻塞。
比如說,大量的insert、update之類的請求同時到達數據庫MYSQL,直接導致數據·的行鎖表鎖,甚至會導致請求堆積很多,從而觸發大量的連接錯誤。使用消息對列可以解決
【異步通信】

3.JVM垃圾回收機制,GC發生在JVM哪部分,有幾種GC,它們的算法是什麼?

首先GC肯定在堆裏、
次數上頻繁收集Young區(Minor GC)
次數上較少收集Old區(Full GC)
j基本不動Perm區
GC算法:
1.引用計數法(JVM一般不採用這個方式)
缺點:
1.每次對對象賦值時均要維護引用計數器,且計數器本身也有一定的消耗。
2.較難處理循環引用
2.複製算法
年輕代中使用的是Minor GC 這種GC算法採用的是複製算法
缺點:需要雙倍空間
優點:效率高沒有內存碎片
3.標記清除
老年代一般是由標記清除或者是標記清除與標記整理混合使用
優點:不需要額外空間
缺點:兩次掃描,耗時嚴重
會產生內存碎片
4.標記壓縮
老年代一般是由標記清除或者是標記清除與標記整理混合使用
優點:沒有內存碎片,可以利用bump
缺點:需要移動對象的成本
5.標記清除壓縮

4.mysql在什麼時候建立索引

哪些情況需要建立索引 哪些情況不需要建立索引
主鍵自動建立唯一索引 表記錄太少
頻繁作爲查詢條件的字段應該建立索引 經常增刪改的表或字段
查詢中與其它表關聯的字段,外鍵關係建立索引 where條件裏用不到的字段不建立索引
單鍵/組合索引的選擇問題,組合 索引的 性價比高 過濾性不好的不適合建立索引
查詢中排序的字段,排序字段若通過索引去訪問將大大提高排序的速度
查詢中統計或者分組字段

5.Redis持久化有幾種類型,他們的區別

RDB
優點:節省磁盤空間,恢復速度快。
缺點:當數據量大時比較消耗性能
AOF(以日誌的形式來記錄每個寫操作,只許追加文件,但不可以改寫文件)
優點:備份機制更穩定,丟失數據概率更低
可讀的日誌文本,通過操作AOF穩健,可以處理誤操作。
缺點:比起RDB佔用更多的磁盤空間
恢復備份速度要慢
存在個別BUG,造成恢復不能
每次讀寫都同步的話,有一定的性能壓力

6.簡單談一下SprinMVC的工作流程

我們都知道它在處理模型數據有兩種方式
方式一:將方法返回值設置爲ModelAndView
方式二:方法返回值仍是String類型,在方法的入參中傳入Map,Model或者ModelMap
步驟:
1.發送請求
2.DispatcherServlet(中央控制器) 調用處理器映射器找到處理器—>HandlerMapping(處理器映射器)
3.返回HandlerExecutionChain(HandlerIntercepter處理器攔截器 Handler處理器對象)
4.通過處理器適配器調用具體的處理器

在這裏插入圖片描述

7.序列化使用場景

對象的序列化:目的:將一個具體的對象進行持久化,寫入到硬盤上。(注意:靜態數據不能被序列化,因爲靜態數據不在堆內存中,而是在靜態方法區中)
Serializable: 用於啓動對象的序列化功能,可以強制讓指定類具備序列化功能,該接口中沒有成員,這是一個標記接口。這個標記接口用於給序列化類提供UID。這個uid是依據類中的成員的數字簽名進行運行獲取的。如果不需要自動獲取一個uid,可以在類中,手動指定一個名稱爲serialVersionUID id號。依據編譯器的不同,或者對信息的高度敏感性。最好每一個序列化的類都進行手動顯示的UID的指定。
二、非序列化使用場景
如何將非靜態的數據不進行序列化?用transient 關鍵字修飾此變量即可。使用場景:爲了安全起見,有時候我們不需要在網絡間
傳輸一些數據(如身份證號碼,密碼,銀行卡號等)
三、

  1. 在序列化的時候,被transient或者static修飾的屬性,不可以序列化。
  2. 一個類可以被序列化,那麼它的子類也可以被序列化。
  3. 序列化可以實現深複製,而Object中的clone實現的就只是淺複製。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章