国产在线精品一级A片-国产另类欧美-国产精品va在线观看一-我要找美国一级片黄色|www.zheinei.com

java開(kāi)發(fā)面試題

時(shí)間:2022-11-24 08:16:58 面試技巧 我要投稿

2017java開(kāi)發(fā)面試題

  Java開(kāi)發(fā)工程師在求職中,要準(zhǔn)備好面試準(zhǔn)備,提前了解面試題目很有必要,那么你對(duì)2017的面試題了解了嗎?以下是陽(yáng)光網(wǎng)小編幫你們整理的2017java開(kāi)發(fā)面試題,一起來(lái)學(xué)習(xí)啦。

2017java開(kāi)發(fā)面試題

  2017java開(kāi)發(fā)面試題(一)

  1.hibernate中的java對(duì)象有幾種狀態(tài),其相互關(guān)系如何(區(qū)別和相互轉(zhuǎn)換)。

  解答:在Hibernate中,對(duì)象有三種狀態(tài):臨時(shí)狀態(tài)、持久狀態(tài)和游離狀態(tài)。 臨時(shí)狀態(tài):當(dāng)new一個(gè)實(shí)體對(duì)象后,這個(gè)對(duì)象處于臨時(shí)狀態(tài),即這個(gè)對(duì)象只是一個(gè)保存臨時(shí)數(shù)據(jù)的內(nèi)存區(qū)域,如果沒(méi)有變量引用這個(gè)對(duì)象,則會(huì)被jre垃圾回收機(jī)制回收。這個(gè)對(duì)象所保存的數(shù)據(jù)與數(shù)據(jù)庫(kù)沒(méi)有任何關(guān)系,除非通過(guò)Session的save或者SaveOrUpdate把臨時(shí)對(duì)象與數(shù)據(jù)庫(kù)關(guān)聯(lián),并把數(shù)據(jù)插入或者更新到數(shù)據(jù)庫(kù),這個(gè)對(duì)象才轉(zhuǎn)換為持久對(duì)象;

  持久狀態(tài):持久化對(duì)象的實(shí)例在數(shù)據(jù)庫(kù)中有對(duì)應(yīng)的記錄,并擁有一個(gè)持久化表示(ID)。對(duì)持久化對(duì)象進(jìn)行delete操作后,數(shù)據(jù)庫(kù)中對(duì)應(yīng)的記錄將被刪除,那么持久化對(duì)象與數(shù)據(jù)庫(kù)記錄不再存在對(duì)應(yīng)關(guān)系,持久化對(duì)象變成臨時(shí)狀態(tài)。

  持久化對(duì)象被修改變更后,不會(huì)馬上同步到數(shù)據(jù)庫(kù),直到數(shù)據(jù)庫(kù)事務(wù)提交。在同步之前,持久化對(duì)象是臟的(Dirty)。

  游離狀態(tài):當(dāng)Session進(jìn)行了Close、Clear或者evict后,持久化對(duì)象雖然擁有持久化標(biāo)識(shí)符和與數(shù)據(jù)庫(kù)對(duì)應(yīng)記錄一致的值,但是因?yàn)闀?huì)話已經(jīng)消失,對(duì)象不在持久化管理之內(nèi),所以處于游離狀態(tài)(也叫:脫管狀態(tài))。游離狀態(tài)的對(duì)象與臨時(shí)狀態(tài)對(duì)象是十分相似的,只是它還含有持久化標(biāo)識(shí)。

  2.對(duì)hibernate的延遲加載如何理解,在實(shí)際應(yīng)用中,延遲加載與session關(guān)閉的矛盾是如何處理的?

  解答:延遲加載就是并不是在讀取的時(shí)候就把數(shù)據(jù)加載進(jìn)來(lái),而是等到使用時(shí)再加載。那么Hibernate是怎么知識(shí)用戶在什么時(shí)候使用數(shù)據(jù)了呢?又是如何加載數(shù)據(jù)呢?其實(shí)很簡(jiǎn)單,它使用了代理機(jī)制。返回給用戶的并不是實(shí)體本身,而是實(shí)體對(duì)象的代理。代理對(duì)象在用戶調(diào)用getter方法時(shí)就會(huì)去數(shù)據(jù)庫(kù)加載數(shù)據(jù)。但加載數(shù)據(jù)就需要數(shù)據(jù)庫(kù)連接。而當(dāng)我們把會(huì)話關(guān)閉時(shí),數(shù)據(jù)庫(kù)連接就同時(shí)關(guān)閉了。這種情況就叫做未初始化的關(guān)系。

  延遲加載與session關(guān)閉的矛盾一般可以這樣處理:

  1)、關(guān)閉延遲加載特性。

  操作起來(lái)比較簡(jiǎn)單,因?yàn)閔ibernate的延遲加載特性是在hbm配置里面可控制的。默認(rèn)lazy=”true”,具體配置可以查看一下相關(guān)文檔,就不詳細(xì)敘述了。

  但使用這個(gè)解決辦法帶來(lái)的隱患是十分大的'。

  首先,出現(xiàn)no session or session was closed就證明了您已經(jīng)在使用外鍵關(guān)聯(lián)表,如果去掉延遲加載的話,則表示每次查詢(xún)的開(kāi)銷(xiāo)都會(huì)變得十分的大,如果關(guān)聯(lián)表越多,后果也可以想象得到。所以不建議使用這個(gè)方法解決。

  2)、在session關(guān)閉之前把我們想要查詢(xún)的數(shù)據(jù)先獲取了。

  首先需要了解一下session什么時(shí)候關(guān)閉,也就是它的生命周期。通常情況下hibernate會(huì)在

  查詢(xún)數(shù)據(jù)關(guān)閉session,而使用getHibernateTemplate().get方法查詢(xún)后會(huì)延遲關(guān)閉的時(shí)間。會(huì)在事務(wù)結(jié)束后才關(guān)閉。

  使用攔截器(Interceptor)或過(guò)濾器(Filter)控制session。

  spring為解決hibernate這一特性提供的解決方案,可以有效的控制session生命周期。

  3.什么是AOP和OOP,IOC和DI有什么不同?

  解答:

  1)面向?qū)ο缶幊?Object Oriented Programming,OOP,面向?qū)ο蟪绦蛟O(shè)計(jì))是一種計(jì)算機(jī)編程架構(gòu)。AOP是OOP的延續(xù),是Aspect Oriented Programming的縮寫(xiě),意思是面向方面編程。 將通用需求功能從不相關(guān)類(lèi)之中分離出來(lái);同時(shí),能夠使得很多類(lèi)共享一個(gè)行為,一旦行為發(fā)生變化,不必修改很多類(lèi),只要修改這個(gè)行為就可以。AOP就是這種實(shí)現(xiàn)分散關(guān)注的編程方法,它將“關(guān)注”封裝在“方面”中

  2)控制反轉(zhuǎn)IOC(Inversion of Control) 控制指的就是程序相關(guān)類(lèi)之間的依賴(lài)關(guān)系.傳統(tǒng)觀念設(shè)計(jì)中,通常由調(diào)用者來(lái)創(chuàng)建被調(diào)用者的實(shí)例, 在Spring里,創(chuàng)建被調(diào)用者的工作不再由調(diào)用者來(lái)完成,而是由Spring容器完成,依賴(lài)關(guān)系被反轉(zhuǎn)了,稱(chēng)為控制反轉(zhuǎn),目的是為了獲得更好的擴(kuò)展性和良好的可維護(hù)性。依賴(lài)注入(Dependency injection)創(chuàng)建被調(diào)用者的工作由Spring容器完成,然后注入調(diào)用者,因此也稱(chēng)依賴(lài)注入?刂品崔D(zhuǎn)和依賴(lài)注入是同一個(gè)概念。

  2017java開(kāi)發(fā)面試題(二)

  1.Struts1中actionform和action屬于MVC哪一層,為什么?

  解答:actionform和action屬于MVC的Model層,Action用來(lái)處理業(yè)務(wù)邏輯,actionform保存用戶表單數(shù)據(jù)以便于在不同頁(yè)面間傳遞。而MVC中的model層就是業(yè)務(wù)邏輯層,該層用于實(shí)現(xiàn)具體的業(yè)務(wù)邏輯、狀態(tài)維護(hù)及管理。

  2.error和exception有什么區(qū)別?

  解答:

  error表示系統(tǒng)級(jí)的錯(cuò)誤和程序不必處理的異常,是恢復(fù)不是不可能但很困難的情況下的`一種嚴(yán)重問(wèn)題;比如內(nèi)存溢出,不可能指望程序能處理這樣的情況; exception表示需要捕捉或者需要程序進(jìn)行處理的異常,是一種設(shè)計(jì)或?qū)崿F(xiàn)問(wèn)題;也就是說(shuō),它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況。

  3.Log4J是Apache組織的開(kāi)源一個(gè)開(kāi)源項(xiàng)目,通過(guò)Log4J,可以指定日志信息輸出的目的地,如console、file等。Log4J采用日志級(jí)別機(jī)制,請(qǐng)按照輸出級(jí)別由低到高的順序?qū)懗鋈罩据敵黾?jí)別。

  解答:Log4J分 為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級(jí)別。Log4j建議只使用四個(gè)級(jí)別,優(yōu)先級(jí)從高到低分別是 ERROR、WARN、INFO、DEBUG。通過(guò)在這里定義的級(jí)別,您可以控制到應(yīng)用程序中相應(yīng)級(jí)別的日志信息的開(kāi)關(guān)。比如在這里定義了INFO級(jí)別, 則應(yīng)用程序中所有DEBUG級(jí)別的日志信息將不被打印出來(lái)。

  4.說(shuō)出幾個(gè)與spring同類(lèi)型的開(kāi)源框架,說(shuō)出幾個(gè)與hibernate同類(lèi)型的開(kāi)源框架,說(shuō)出幾個(gè)與struts同類(lèi)型的開(kāi)源框架

  解答:

  1)與spring同類(lèi)型的開(kāi)源框架:JUIDE、EJB3.0、picoContainer

  2)與hibernate同類(lèi)型的開(kāi)源框架 :ibatis,jdo,JPA

  3)幾個(gè)與struts同類(lèi)型的開(kāi)源框架:webwork,tapestry,JSF

  2017java開(kāi)發(fā)面試題(三)

  1、struts2中,OGNL訪問(wèn)值棧的時(shí)候查找的順序是什么?請(qǐng)排序:模型對(duì)象、臨時(shí)對(duì)象、固定名稱(chēng)的對(duì)象、Action對(duì)象

  解答:struts2的值棧排列順序?yàn)椋?).臨時(shí)對(duì)象;2).模型對(duì)象;3).Action對(duì)象;4).固定名稱(chēng)對(duì)象(如#application, #session, #request等對(duì)象)。

  2、struts2中,Action通過(guò)什么方式獲得用戶從頁(yè)面輸入的數(shù)據(jù),又是通過(guò)什么方式把其自身的數(shù)據(jù)傳給視圖的?

  解答:

  1)可以直接通過(guò)與表單元素相同名稱(chēng)的數(shù)據(jù)成員(需要存在符合命名規(guī)范set和get方法)獲取頁(yè)面表單數(shù)據(jù)。

  2)會(huì)把處理好的數(shù)據(jù)成員放入值棧中,到頁(yè)面可以使用struts2標(biāo)簽取值就可以了。

  3.常用的設(shè)計(jì)模式有哪些?說(shuō)明工廠模式。

  解答:Java中的23種設(shè)計(jì)模式:

  Factory(工廠模式), Builder(建造模式),F(xiàn)actory Method(工廠方法模式),

  Prototype(原始模型模式),Singleton(單例模式),Facade(門(mén)面模式),

  Adapter(適配器模式),Bridge(橋梁模式),Composite(合成模式),

  Decorator(裝飾模式),F(xiàn)lyweight(享元模式),Proxy(代理模式),

  Command(命令模式),Interpreter(解釋器模式),Visitor(訪問(wèn)者模式),

  Iterator(迭代子模式),Mediator(調(diào)停者模式),Memento(備忘錄模式),

  Observer(觀察者模式),State(狀態(tài)模式),Strategy(策略模式),

  Template Method(模板方法模式), Chain Of Responsibleity(責(zé)任鏈模式)

  工廠模式:工廠模式是一種經(jīng)常被使用到的模式,根據(jù)工廠模式實(shí)現(xiàn)的類(lèi)可以根據(jù)提供的數(shù)據(jù)生成一組類(lèi)中某一個(gè)類(lèi)的實(shí)例,通常這一組類(lèi)有一個(gè)公共的抽象父類(lèi)并且實(shí)現(xiàn)了相同的方法,但是這些方法針對(duì)不同的數(shù)據(jù)進(jìn)行了不同的操作。首先需要定義一個(gè)基類(lèi),該類(lèi)的子類(lèi)通過(guò)不同的方法實(shí)現(xiàn)了基類(lèi)中的方法。然后需要定義一個(gè)工廠類(lèi),工廠類(lèi)可以根據(jù)條件生成不同的子類(lèi)實(shí)例。當(dāng)?shù)玫阶宇?lèi)的實(shí)例后,開(kāi)發(fā)人員可以調(diào)用基類(lèi)中的.方法而不必考慮到底返回的是哪一個(gè)子類(lèi)的實(shí)例。

  4.什么是數(shù)據(jù)庫(kù)的參照完整性?

  解答:數(shù)據(jù)庫(kù)的參照完整性是指表與表之間的一種對(duì)應(yīng)關(guān)系,通常情況下可以通過(guò)設(shè)置兩表之間的主鍵、外鍵關(guān)系,或者編寫(xiě)兩表的觸發(fā)器來(lái)實(shí)現(xiàn)。 有對(duì)應(yīng)參照完整性的兩張表格,在對(duì)他們進(jìn)行數(shù)據(jù)插入、更新、刪除的過(guò)程中,系統(tǒng)都會(huì)將被修改表格與另一張對(duì)應(yīng)表格進(jìn)行對(duì)照,從而阻止一些不正確的數(shù)據(jù)的操作。

【java開(kāi)發(fā)面試題】相關(guān)文章:

java開(kāi)發(fā)面試題及答案04-04

java軟件開(kāi)發(fā)工程師面試題04-05

java軟件開(kāi)發(fā)工程師面試題寶典04-05

java最新面試題04-05

java面試題匯總04-05

java基礎(chǔ)面試題04-04

java集合面試題04-04

java高級(jí)面試題04-06

java面試題全集04-06