常見面試題(2)

1.spring 常用的注入方式有哪些?

1.屬性注入
2.構造方法注入
3.註解方式注入

2.說一下 spring mvc 運行流程

1.spring mvc 先將請求發送給 DispatcherServlet(前置控制器)2.DispatcherServlet 查詢一個或多個 HandlerMapping(映射註冊),找到處理請求的 Controller。
3.DispatcherServlet 再把請求提交到對應的 Controller(控制器)。
4.Controller 進行業務邏輯處理後,會返回一個ModelAndView。
5.Dispathcher(分配器) 查詢一個或多個 ViewResolver 視圖解析器,找到 ModelAndView 對象指定的視圖對象。
6.視圖對象負責渲染返回給客戶端

3.spring mvc 有哪些組件

1.前置控制器 DispatcherServlet。
2.映射控制器 HandlerMapping。
3.處理器 Controller。
4.模型和視圖 ModelAndView。
5.視圖解析器 ViewResolver。

4.@Autowired與@Resource的區別

1.@Autowired與@Resource都是自動注入
2.@Autowired是spring提供的註解,@Resource是sun公司提供的註解
3.@Autowired是先根據類型注入,再根據名字注入,@Resource是先根據名字注入,然後再根據類型注入
所以注入字段推薦使用@Autowired,因爲它和spring進行無縫集成

5.爲什麼要使用 spring

1.spring 提供 ioc 技術,容器會幫你管理依賴的對象,從而不需要自己創建和管理依賴對象了,更輕鬆的實現了程序的解耦。
2.spring 提供了事務支持,使得事務操作變的更加方便。
3.spring 提供了面向切片編程,允許你把遍佈應用各處的功能分離出來形成可重用的組件
4.更方便的框架集成,spring 可以很方便的集成其他框架,比如 MyBatis、hibernate 等。

6.請談談你對spring的理解

Spring的2大核心
1.IOC/DI
   所謂的IOC就是控制反轉,把當前應用中的對象都交給spring來統一進行管理控制,這種創建對象權利的反轉就叫做控制反轉
   所謂DI就是依賴注入,把spring創建對象注入到指定字段的過程就叫做依賴注入
2.AOP
   所謂AOP就是面向切面編程,把遍佈引用各處的重複功能抽取成可重用的組件,能讓代碼有效的進行解耦,並且維護性較強
   AOP一般用來做日誌管理,權限還有事務管理等等..

7.MyBatis 中 #{}和 ${}的區別是什麼

1.#{}是預編譯處理,${}是字符替換。
2.MyBatis 會將 SQL 中的 #{}替換成“?”,配合 PreparedStatement 的 set 方法賦值,這樣可以有效的防止 SQL 注入,保證程序的運行安全。

8.MyBatis 和 hibernate 的區別有哪些

1.靈活性:MyBatis 更加靈活,自己可以寫 SQL 語句,使用起來比較方便。
2.可移植性:MyBatis 都是自己手寫的 SQL,因爲每個數據庫的 SQL 都有不同之處,所以可移植性比較差。
3.學習和使用門檻:MyBatis 入門比較簡單,使用門檻也更低。
4.二級緩存:hibernate 擁有更好的二級緩存,它的二級緩存可以自行更換爲第三方的二級緩存。

9.數據庫的三範式是什麼

第一範式:強調的是列的原子性,即數據庫表的每一列都是不可分割的原子數據項。
第二範式:就是要有主鍵,要求其他字段都依賴於主鍵
第三範式:就是要消除傳遞依賴

10.char 和 varchar 的區別是什麼

char(n) :固定長度類型,比如訂閱 char(10),當你輸入"abc"三個字符的時候,它們佔的空間還是 10 個字節,其他 7 個是空字節。
char 優點:效率高;缺點:佔用空間;適用場景:存儲密碼的 md5 值,固定長度的,使用 char 非常合適。
varchar(n) :可變長度,存儲的值是每個值佔用的字節再加上一個用來記錄其長度的字節的長度。
所以,從空間上考慮 varcahr 比較合適;從效率上考慮 char 比較合適,二者使用需要權衡。

11.MySQL 的內連接、左連接、右連接有什麼區別

內連接關鍵字:inner join;左連接:left join;右連接:right join。
內連接是把匹配的關聯數據顯示出來;左連接是左邊的表全部顯示出來,右邊的表顯示出符合條件的數據;右連接正好相反

12.說一下 spring 的事務隔離

默認值爲 ISOLATION_DEFAULT(使用數據庫的設置),其他四個隔離級別和數據庫的隔離級別一致:
ISOLATION_DEFAULT:用底層數據庫的設置隔離級別,數據庫設置的是什麼我就用什麼;

ISOLATIONREADUNCOMMITTED:未提交讀,最低隔離級別、事務未提交前,就可被其他事務讀取(會出現幻讀、髒讀、不可重複讀);

ISOLATIONREADCOMMITTED:提交讀,一個事務提交後才能被其他事務讀取到(會造成幻讀、不可重複讀),SQL server 的默認級別;

ISOLATIONREPEATABLEREAD:可重複讀,保證多次讀取同一個數據時,其值都和事務開始時候的內容是一致,禁止讀取到別的事務未提交的數據(會造成幻讀),MySQL 的默認級別;

ISOLATION_SERIALIZABLE:序列化,代價最高最可靠的隔離級別,該隔離級別能防止髒讀、不可重複讀、幻讀。

13.BeanFactory和ApplicationContext有什麼區別?

1.都是接口,ApplicationContext是BeanFactory的子接口,擁有更多的功能與方法

2.ApplicationContext是在啓動容器創建上下文環境的時候就創建Bean對象(預先加載,迫切加載),而BeanFactory是在使用的時候才進行對象的創建(懶加載)

14.SpringMVC常用的註解有哪些

@RequestMapping:用於處理請求 url 映射的註解,可用於類或方法上。用於類上,則表示類中的所有響應請求的方法都是以該地址作爲父路徑。

@RequestBody:註解實現接收http請求的json數據,將json轉換爲java對象。

@ResponseBody:註解實現將conreoller方法返回對象轉化爲json對象響應給客戶。

15.說一下 ACID 是什麼

1.原子性:要麼都執行,要麼都不執行。
2.一致性:合法的數據纔可以被寫入。
3.隔離性:允許多個用戶併發訪問。
4.持久性:事務結束後,事務處理的結果必須得到固化。即一旦提交,對數據庫改變是永久的。


16.索引的作用?和它的優點缺點是什麼?

1.作用:加速對數據的檢索
2.優點:它很類似與現實生活中書的目錄,不需要查詢整本書內容就可以找到想要的數據
3.缺點:是它減慢了數據錄入的速度,同時也增加了數據庫的尺寸大小。

17.union和union all有什麼不同

UNION在進行表連接後會篩選掉重複的記錄
UNION ALL只是簡單的將兩個結果合併後就返回。
從結果上來說,union去重,union all 不去重,從效率上說,UNION ALL 要比UNION快很多,所以,如果可以確認合併的兩個結果集中不包含重複的數據的話,那麼就使用UNION ALL。

18.sql執行順序

(1)from (查表)
(2)On
(3) join (連表) 
(4) where (條件)
(5)group by(分組)
(6) avg,sum.... (聚合函數)
(7)having 
(8) select  查詢字段
(9) distinct 去重
(10) order by 排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章