面試必問(wèn):幾道經(jīng)典的Java面試題

面試必問(wèn):幾道經(jīng)典的Java面試題

天津卓眾教育      2022-04-28 01:28:01     16

面試必問(wèn):幾道經(jīng)典的Java面試題,  Spring主要使用了什么模式?  工廠模式:每個(gè)Bean的創(chuàng)建通過(guò)方法  單例模式:默認(rèn)的每個(gè)Bean的作用域都是單例  代理模

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹


  Spring主要使用了什么模式?


  工廠模式:每個(gè)Bean的創(chuàng)建通過(guò)方法


  單例模式:默認(rèn)的每個(gè)Bean的作用域都是單例


  代理模式:關(guān)于Aop的實(shí)現(xiàn)通過(guò)代理模式


  ${}和#{}的區(qū)別?


  ${}:簡(jiǎn)單字符串替換,把${}直接替換成變量的值,不做任何轉(zhuǎn)換,這種是取值以后再去編譯SQL語(yǔ)句。


  #{}:預(yù)編譯處理,sql中的#{}替換成?,補(bǔ)全預(yù)編譯語(yǔ)句,有效的防止Sql語(yǔ)句注入,這種取值是編譯好SQL語(yǔ)句再取值。


  總結(jié):一般用#{}來(lái)進(jìn)行列的代替。


  談?wù)勣D(zhuǎn)發(fā)和重定向的區(qū)別


  第一個(gè)差別點(diǎn),就是重定向是兩次請(qǐng)求,轉(zhuǎn)發(fā)是一次請(qǐng)求,因此轉(zhuǎn)發(fā)的速度要快于重定向。


  第二個(gè)差別點(diǎn),重定向之后地址欄上的地址會(huì)發(fā)生變化,變化成第二次請(qǐng)求的地址,轉(zhuǎn)發(fā)之后地址欄上的地址不會(huì)變化,還是第一次請(qǐng)求的地址。


  談?wù)刢ookie跟session的區(qū)別


  cookie數(shù)據(jù)保存在客戶端,session數(shù)據(jù)保存在服務(wù)器端。


  一般情況下,服務(wù)器會(huì)在一定時(shí)間內(nèi)(默認(rèn)30分鐘)保存這個(gè)Session,過(guò)了時(shí)間限制,就會(huì)銷毀這個(gè)Session。


  如果不設(shè)置這個(gè)過(guò)期時(shí)間,那么cookie將不存放在硬盤上,當(dāng)瀏覽器關(guān)閉的時(shí)候,cookie就消失了,這個(gè)SessionID就丟失了。如果我們?cè)O(shè)置這個(gè)時(shí)間為若干天之后,那么這個(gè)cookie會(huì)保存在客戶端硬盤中,即使瀏覽器關(guān)閉,這個(gè)值仍然存在,下次訪問(wèn)相應(yīng)網(wǎng)站時(shí),同樣會(huì)發(fā)送到服務(wù)器上。


  關(guān)系數(shù)據(jù)庫(kù)中的主鍵和外鍵有什么關(guān)系?


  定義主鍵和外鍵主要是為了維護(hù)關(guān)系數(shù)據(jù)庫(kù)的完整性。


  主鍵是能確定一條記錄的唯一標(biāo)識(shí),比如,一條用戶記錄包括身份證號(hào),姓名等。身份證號(hào)是唯一能確定你這個(gè)人的,其他都可能有重復(fù),所以,身份證號(hào)可以是主鍵。


  外鍵用于與另一張表的關(guān)聯(lián)。是能確定另一張表記錄的字段,用于保持?jǐn)?shù)據(jù)的一致性,一表的外鍵是另一張表的主鍵或唯一字段。


  比如,A表中的一個(gè)字段,是B表的主鍵,那他就可以是A表的外鍵。


  談?wù)勈聞?wù)的隔離級(jí)別


  Readuncommitted


  讀未提交,顧名思義,就是一個(gè)事務(wù)可以讀取另一個(gè)未提交事務(wù)的數(shù)據(jù)。


  Readcommitted


  讀提交,顧名思義,就是一個(gè)事務(wù)要等另一個(gè)事務(wù)提交后才能讀取數(shù)據(jù)。


  Repeatableread


  重復(fù)讀,就是在開(kāi)始讀取數(shù)據(jù)(事務(wù)開(kāi)啟)時(shí),不再允許修改操作


  Serializable序列化


  Serializable是最高的事務(wù)隔離級(jí)別,在該級(jí)別下,事務(wù)串行化順序執(zhí)行,可以避免臟讀、不可重復(fù)讀與幻讀。但是這種事務(wù)隔離級(jí)別效率低下,比較耗數(shù)據(jù)庫(kù)性能,一般不使用。


  描述一下spring的工作原理


  Spring中兩大核心思想IOC和AOP,IOC控制反轉(zhuǎn)將對(duì)象創(chuàng)建的權(quán)利交給了Spring容器,可以自動(dòng)生產(chǎn)。利用的就是反射的原理,動(dòng)態(tài)的創(chuàng)建對(duì)象,調(diào)用對(duì)象,Spring就是運(yùn)行的時(shí)候根據(jù)配置文件來(lái)動(dòng)態(tài)的創(chuàng)建對(duì)象和維護(hù)對(duì)象之間的關(guān)系,實(shí)現(xiàn)了松耦合的思想。


  AOP是面向切面編程,就是可以很好的把業(yè)務(wù)邏輯和系統(tǒng)服務(wù)分離(事務(wù),日志等),業(yè)務(wù)邏輯只關(guān)心業(yè)務(wù)的處理而不再去處理其他事情,這些都是通過(guò)配置來(lái)實(shí)現(xiàn)。


  談?wù)凷pring如何配置聲明式事務(wù)控制


  聲明式事務(wù)管理也有兩種常用的方式,一種是基于tx和aop名字空間的xml配置文件,另一種就是基于@Transactional注解


  配置文件


  -配置事務(wù)管理器


  -事務(wù)的策略(這里可以配置事務(wù)的隔離級(jí)別,傳播屬性,是否可讀等)


  -配置事務(wù)的切入點(diǎn),注入事務(wù)屬性


  注解


  -配置事務(wù)管理器


  -開(kāi)啟事務(wù)控制的注解支持


  -在類或者方法上面添加@Transactiona,事務(wù)的屬性都在該注解的屬性上設(shè)置


  spring的特點(diǎn)?如何手寫(xiě)實(shí)現(xiàn)spring原理?


  Spring量大核心思想AOP和IOC(具體上面有)


  Spring是個(gè)巨大的工廠,這個(gè)工廠就是專門用來(lái)生成Bean,所以如果要手寫(xiě)的一定要用到工廠設(shè)計(jì)模式


  寫(xiě)一個(gè)工廠類,對(duì)外提供一個(gè)靜態(tài)方法,這個(gè)方法接受用戶要?jiǎng)?chuàng)建對(duì)象的一個(gè)id,對(duì)象和id可以寫(xiě)到配置文件里面,工廠再提供一個(gè)init方法進(jìn)行讀取配置文件。用戶調(diào)用的是傳入id根據(jù)id在配置文件中找到要?jiǎng)?chuàng)建的對(duì)象,最后通過(guò)反射創(chuàng)建對(duì)象并返回給用戶。


  springMVC中的常用注解


  @RequestMapping--請(qǐng)求和方法映射


  @RequsetBody--接收客戶端出傳入的JOSN數(shù)據(jù)


  @ResponceBody--返回客戶端JOSN數(shù)據(jù)


  @Controller--代表控制層


  @Service--代表業(yè)務(wù)層


  @Repository--代表數(shù)據(jù)層


  @Component--把Bean添加到Spring容器中


  @Autowired--自動(dòng)注入,按照類型注入


  @Resource--自定注入,可以按照類型注入也可以按照名字注入


  @PathVariable--restFul風(fēng)格的時(shí)候使用


  @Param--表單參數(shù)和方法形參不一樣時(shí)使用

  更多Java相關(guān)面試題,登錄天津卓眾教育IT培訓(xùn)官網(wǎng),Java面試題專欄。

Java面試題

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過(guò)大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。