初级java程序员遇到的面试题
初級java程序員遇到的面試題
- 基礎
- 抽象類和接口有什么區別
- 重載和重寫的區別
- String StringBuid StringBuffer 有什么區別
- Redis
- 緩存雪崩
- 緩存擊穿
- 緩存穿透
- 持久化方式
基礎
抽象類和接口有什么區別
實現不一樣,抽象類需要extends這個關鍵字來繼承的,而接口是使用implements來實現這個接口
抽象類是可以有構造函數的,接口不能有
重載和重寫的區別
重載就是方法名一樣,方法參數不一樣
在子類中把父類本身有的方法重新寫一遍
String StringBuid StringBuffer 有什么區別
String 的源碼規定了他是一個不可變的類,它是使用final關鍵字修飾的,每次修改都會都new一個新的,頻繁修改的話會生成許多沒有用的對象,而這些垃圾對象需要垃圾回收器進行回收
StringBuffer 是一個可變的類,當對象創建后仍然可以改變,它是一個線程安全類,使用了大量的synchronized 關鍵字
StringBuild 是一個線程不安全的 StringBuild的效率比StringBuffer高
Redis
緩存雪崩
某個時間緩存全部失效,解決方法 緩存失效時間分散開
緩存擊穿
緩存擊穿 指 并發查同一條數據。緩存擊穿是指緩存中沒有但數據庫中有的數據(一般是緩存時間到期),這時由于并發用戶特別多,同時讀緩存沒讀到數據,又同時去數據庫去取數據,引起數據庫壓力瞬間增大,造成過大壓力
解決方法 可以加鎖
緩存穿透
緩存穿透是指緩存和數據庫中都沒有的數據
解決方法 緩存空數據
持久化方式
RDB持久化是指在指定的時間間隔內將內存中的數據集快照寫入磁盤,實際操作過程是fork一個子進程,先將數據集寫入臨時文件,寫入成功后,再替換之前的文件,用二進制壓縮存儲。
AOF持久化以日志的形式記錄服務器所處理的每一個寫、刪除操作,查詢操作不會記錄,以文本的方式記錄,可以打開文件看到詳細的操作記錄。
總結
以上是生活随笔為你收集整理的初级java程序员遇到的面试题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 富文本编辑器Ueditor实战(一)
- 下一篇: ueditor