0925Java面試知識點準備

  1. java數據庫性能優化之SQL語句?

參考地址
一般來講數據查詢會使用索引來提高查詢效率,優化器根據索引來提高性能.但如果在SQL語句中的代碼不合理,導致優化器刪除索引而全表掃描,一般這種SQL語句就是劣質語句,實際SQL語句中我們要清楚優化器何時會刪除索引,從而提高查詢效率.

SQL語句中where子句容易出現的問題.及時某些列存在索引,但是由於劣質SQL語句導致不能使用索引,出現問題.

  • 以EXIST代替IN的方式,提高查詢效率(主要是多了多表連接轉換的過程)
  • 以NOT EXIST代替NOT IN(因爲NOT IN 沒有辦法使用索引)
  • 以>0或者設置字段默認值的方式替代IS NULL和IS NOT NULL(如果字段中存在空值,索引是不會被使用的,所以通過設置字段默認值的方式 使用索引提高查詢效率)
  • 以>=3替換>2(雖然從效果上看是一樣的,但是>2首先會查詢出記錄爲2的值進行比較,而>=3的會直接查詢出3的記錄索引.)
  • 模糊查詢條件下不適用%xxx(因爲通配符在前面無法使用索引,造成效率的下降)
  • 使用UNION ALL替代UNION(因爲UNION實際上是將2張表的數據疊加後將重複的去掉,所以效率來講就很慢)
  • 避免在未建立索引的字段上進行order by排序,降低效率
  • 以x<3000 x>3000的方式替代NOT (x=3000)(以爲前面的那種方式採用了索引)
    所以關於SQL語句上性能的優化實際上就是儘量讓優化器使用索引,提高查詢效率(exist替代in/not exist 替代not in/>0替代is not null 設置默認值/通配符不要放在第一位/>=3替換>3/order by使用索引字段/union all 替換union/>3000and <3000替換<>3000)

SQL語句書寫的影響
1.書寫方式大寫保持一致,減少SQL語句分析
2.where限制條件順序的不同,數據量少的放前面
3.查詢表順序,數據量小的儘量放前面

所以再次強調一遍關於SQL語句優化平時有哪些點要注意?where限制條件8個+3個寫法上的注意
8個限制條件–》extist 替換in/not exist 替換not in/x>0替換 x is not null 字段設置默認值/like模糊查詢通配符不要放前面/x>=3替換x>2/orderby 排序使用索引字段/union all替代union /x>1000and x<1000替換x<>1000 not語句
3個書寫上的注意點:書寫格式保持一致 使用大寫+where 限制條件字段 存在率少的放面前/關聯查詢數據量少的儘量放前面

使用explain進行SQL語句優化.使用關聯查詢替代子查詢

  1. Java中常見的設計模式有哪些?
    java中常見的設計模式包含23種,包含5種構創建型模式+7中構建型模式+11種行爲性模式.
    5中創建型模式:工廠方法模式,抽象工廠模式,單例模式,建造者模式,原型模式.
    7中構建型模式:適配器模式,裝飾器模式,代理模式,外觀模式,組合模式,橋接模式,亨元模式.
    11種行爲型模式:策略模式,模板方法模式,觀察者模式,責任鏈模式,迭代子模式,命令模式,備忘錄模式,狀態模式,訪問者模式,中介者模式,解釋器模式.
    所以總的來看23種模式看起來雖然很多,但只要3種模式的前面幾種後面的模式也就都好記起來了.更多的還是要理解起來.如5種創建型模式:工廠方法模式,抽象工廠模式,單例模式,原型模式,建造者模式.7種結構性模式:裝飾器模式,適配器模式,代理模式,外觀模式,橋接模式,組合模式,亨模式.11中行爲型模式.策略模式,模板方法模式,觀察者模式,責任鏈模式,迭代子模式,命令模式,狀態模式,備忘錄模式,訪問者模式,中介者模式,解釋器模式.

  2. 請列舉出jdk中常用的一些設計模式?
    單例模式引用與RunTime和Calendar類下,工廠模式主要應用於各種不可變的類,如Boolean.valueOf(),觀察者模式主要應用於swing和時間監聽裏面.裝飾器模式適應於IO輸入流中。

  3. 什麼是設計模式?
    設計模式是開發人員針對特定問題提出的一種有效的解決辦法,設計模式是代碼可用性的延伸.

  4. Java中什麼是單例模式,請寫出線程安全的單例模式?
    單例模式說白了一個只有一個實例對象,主要應用於Runtime(餓漢模式)和Calendar類中.
    而線程安全的餓漢模式沒有問題,懶漢模式需要雙重安全檢查的.
    在這裏插入圖片描述

  5. 解釋下什麼是 觀察者模式?
    觀察者模式屬於行爲型模式的一種,主要應用於swing及時間監聽.觀察者是基於對象的狀態變化和觀察者通訊,以便對這些變化做出應對.

  6. 使用工廠模式的好處是什麼?在哪裏使用
    使用工廠模式最大的好處就是增加了創建對象的層次性.
    當使用工廠模式創建對象的時候,以後可以使用更高級或者更高性能的創建對象.而不用再代碼調用層去修改.
    .

  7. 舉一個用java實現的裝飾器模式,它是對象層次還是類層次?
    裝飾器模式是對象層次的,主要應用於IO輸入流.類似於靜態代理,通過代理對象實現同目標對象同樣的接口功能,並在此基礎上進行功能擴展.類似BufferReader和BufferWriter,都是基於Reader和Writer基礎上擴展的功能.

  8. 如果讓你設計一個ATM系統,需要考慮哪些問題?
    事物控制,鎖機制,錯誤條件,邊界條件等.

  9. 什麼是工廠模式,工廠模式中的工廠方法模式與抽象工廠有什麼區別?
    工廠模式是基於一個抽象產品類,衍生出不同的產品實現類,通過工廠類傳入不同的類型得以生成不同的類對象實例.工廠方法是一個抽象類或接口衍生出來的,而抽象工廠是不同的抽象類或接口衍生出來的。所以抽象工廠實際上是在工廠方法模式上的一種升級.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章