久久综合色一综合色88欧美|久久er热在这里只有精品66|国产福利一区二区不卡|日本精品动漫二区三区

    1. <address id="l3apk"><var id="l3apk"><source id="l3apk"></source></var></address>

      java開發(fā)面試題

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

      2017java開發(fā)面試題

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

      2017java開發(fā)面試題

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

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

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

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

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

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

        2.對hibernate的延遲加載如何理解,在實際應用中,延遲加載與session關閉的矛盾是如何處理的?

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

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

        1)、關閉延遲加載特性。

        操作起來比較簡單,因為hibernate的延遲加載特性是在hbm配置里面可控制的。默認lazy=”true”,具體配置可以查看一下相關文檔,就不詳細敘述了。

        但使用這個解決辦法帶來的隱患是十分大的'。

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

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

        首先需要了解一下session什么時候關閉,也就是它的生命周期。通常情況下hibernate會在

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

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

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

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

        解答:

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

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

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

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

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

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

        解答:

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

        3.Log4J是Apache組織的開源一個開源項目,通過Log4J,可以指定日志信息輸出的目的地,如console、file等。Log4J采用日志級別機制,請按照輸出級別由低到高的順序?qū)懗鋈罩据敵黾墑e。

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

        4.說出幾個與spring同類型的開源框架,說出幾個與hibernate同類型的開源框架,說出幾個與struts同類型的開源框架

        解答:

        1)與spring同類型的開源框架:JUIDE、EJB3.0、picoContainer

        2)與hibernate同類型的開源框架 :ibatis,jdo,JPA

        3)幾個與struts同類型的開源框架:webwork,tapestry,JSF

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

        1、struts2中,OGNL訪問值棧的時候查找的順序是什么?請排序:模型對象、臨時對象、固定名稱的對象、Action對象

        解答:struts2的值棧排列順序為:1).臨時對象;2).模型對象;3).Action對象;4).固定名稱對象(如#application, #session, #request等對象)。

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

        解答:

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

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

        3.常用的設計模式有哪些?說明工廠模式。

        解答:Java中的23種設計模式:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      java最新面試題04-05

      java面試題匯總04-05

      java基礎面試題04-04

      java集合面試題04-04

      java高級面試題04-06

      java面試題全集04-06