更新時間:2019-08-27 14:29:44 來源:動力節點 瀏覽2618次
Spring主要使用了什么模式?
工廠模式:每個Bean的創建通過方法
單例模式:默認的每個Bean的作用域都是單例
代理模式:關于Aop的實現通過代理模式
${}和#{}的區別?
${}:簡單字符串替換,把${}直接替換成變量的值,不做任何轉換,這種是取值以后再去編譯SQL語句。
#{}:預編譯處理,sql中的#{}替換成?,補全預編譯語句,有效的防止Sql語句注入,這種取值是編譯好SQL語句再取值。
總結:一般用#{}來進行列的代替。
談談轉發和重定向的區別
第一個差別點,就是重定向是兩次請求,轉發是一次請求,因此轉發的速度要快于重定向。
第二個差別點,重定向之后地址欄上的地址會發生變化,變化成第二次請求的地址,轉發之后地址欄上的地址不會變化,還是第一次請求的地址。
談談cookie跟session的區別
cookie數據保存在客戶端,session數據保存在服務器端。
一般情況下,服務器會在一定時間內(默認30分鐘)保存這個Session,過了時間限制,就會銷毀這個Session。
如果不設置這個過期時間,那么Cookie將不存放在硬盤上,當瀏覽器關閉的時候,Cookie就消失了,這個SessionID就丟失了。如果我們設置這個時間為若干天之后,那么這個Cookie會保存在客戶端硬盤中,即使瀏覽器關閉,這個值仍然存在,下次訪問相應網站時,同樣會發送到服務器上。
關系數據庫中的主鍵和外鍵有什么關系?
定義主鍵和外鍵主要是為了維護關系數據庫的完整性。
主鍵是能確定一條記錄的唯一標識,比如,一條用戶記錄包括身份證號,姓名等。身份證號是唯一能確定你這個人的,其他都可能有重復,所以,身份證號可以是主鍵。
外鍵用于與另一張表的關聯。是能確定另一張表記錄的字段,用于保持數據的一致性,一表的外鍵是另一張表的主鍵或唯一字段。
比如,A表中的一個字段,是B表的主鍵,那他就可以是A表的外鍵。
談談事務的隔離級別
Readuncommitted
讀未提交,顧名思義,就是一個事務可以讀取另一個未提交事務的數據。
Readcommitted
讀提交,顧名思義,就是一個事務要等另一個事務提交后才能讀取數據。
Repeatableread
重復讀,就是在開始讀取數據(事務開啟)時,不再允許修改操作
Serializable序列化
Serializable是最高的事務隔離級別,在該級別下,事務串行化順序執行,可以避免臟讀、不可重復讀與幻讀。但是這種事務隔離級別效率低下,比較耗數據庫性能,一般不使用。
描述一下spring的工作原理
Spring中兩大核心思想IOC和AOP,IOC控制反轉將對象創建的權利交給了Spring容器,可以自動生產。利用的就是反射的原理,動態的創建對象,調用對象,Spring就是運行的時候根據配置文件來動態的創建對象和維護對象之間的關系,實現了松耦合的思想。
AOP是面向切面編程,就是可以很好的把業務邏輯和系統服務分離(事務,日志等),業務邏輯只關心業務的處理而不再去處理其他事情,這些都是通過配置來實現。
談談Spring如何配置聲明式事務控制
聲明式事務管理也有兩種常用的方式,一種是基于tx和aop名字空間的xml配置文件,另一種就是基于@Transactional注解
配置文件
-配置事務管理器
-事務的策略(這里可以配置事務的隔離級別,傳播屬性,是否可讀等)
-配置事務的切入點,注入事務屬性
注解
-配置事務管理器
-開啟事務控制的注解支持
-在類或者方法上面添加@Transactiona,事務的屬性都在該注解的屬性上設置
spring的特點?如何手寫實現spring原理?
Spring量大核心思想AOP和IOC(具體上面有)
Spring是個巨大的工廠,這個工廠就是專門用來生成Bean,所以如果要手寫的一定要用到工廠設計模式
寫一個工廠類,對外提供一個靜態方法,這個方法接受用戶要創建對象的一個id,對象和id可以寫到配置文件里面,工廠再提供一個init方法進行讀取配置文件。用戶調用的是傳入id根據id在配置文件中找到要創建的對象,最后通過反射創建對象并返回給用戶。
springMVC中的常用注解
@RequestMapping--請求和方法映射
@RequsetBody--接收客戶端出傳入的JOSN數據
@ResponceBody--返回客戶端JOSN數據
@Controller--代表控制層
@Service--代表業務層
@Repository--代表數據層
@Component--把Bean添加到Spring容器中
@Autowired--自動注入,按照類型注入
@Resource--自定注入,可以按照類型注入也可以按照名字注入
@PathVariable--restFul風格的時候使用
@Param--表單參數和方法形參不一樣時使用
更多Java相關面試題,登錄動力節點IT培訓官網,Java面試題專欄。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習