无码人妻一区二区三区免费不卡_日韩AV无码综合久久五月_国产成人aⅴ片在线观看_欧美成人片高清在线观看

蜜蜂職場(chǎng)文庫(kù) > 面試技巧 >

java基礎(chǔ)知識(shí)面試題

時(shí)間: 小龍 面試技巧

  Java面試中,常常提問(wèn)一些Java的基礎(chǔ)知識(shí),那么你有提前了解面試題目了嗎?以下是小編幫你們整理的java基礎(chǔ)知識(shí)面試題,一起來(lái)學(xué)習(xí)啦。

  java基礎(chǔ)知識(shí)面試題(一)

  1.Java異常處理中,try{}里有一個(gè)return語(yǔ)句那么緊跟在這個(gè)try后的finally{}里面的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?

  會(huì)執(zhí)行,在return之前

  2.EJB包含哪3中bean?

  Session bean(會(huì)話bean),entity bean(實(shí)體bean),message bean(消息bean)

  3.Class.forName(String className)這個(gè)方法的作用?

  通過(guò)類的全名獲得該類的類對(duì)象

  4.你認(rèn)為在表上建立索引可以提高數(shù)據(jù)庫(kù)系統(tǒng)的效率嗎?為什么?

  不一定。建立太多的索引將會(huì)影響更新和插入的速度,因?yàn)樗枰瑯痈旅總€(gè)索引文件。對(duì)于一個(gè)經(jīng)常需要更新和插入的表格,就沒(méi)有必要為一個(gè)甚少使用的where字句單獨(dú)建立索引,對(duì)于比較小的表,排序的開銷不會(huì)很大,也沒(méi)有必要建立另外的索引。

  5.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的sava或是savaorupdate把臨時(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ì)持久化現(xiàn)象進(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í)。

  java基礎(chǔ)知識(shí)面試題(二)

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

  延遲加載就是并不是在讀取的時(shí)候把數(shù)據(jù)加載進(jìn)來(lái),而是等到使用時(shí)再加載。那么Hibernate是怎么知道用戶在什么時(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)系。

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

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

  操作起來(lái)比較簡(jiǎn)單,因?yàn)閔ibernate的延遲加載特性實(shí)在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)表,如果去掉延遲加載的話,則表示每次查詢的開銷會(huì)變得非常大,如果關(guān)聯(lián)表越多,后果也可以現(xiàn)象得到。所有不建議使用這個(gè)方法解決。

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

  首先需要了解一下session什么時(shí)候關(guān)閉,也就是他的生命周期。通常情況下hibernate會(huì)在查詢數(shù)據(jù)關(guān)閉session,而使用getHibernateTemplate().get方法查詢后會(huì)延遲關(guān)閉的事件。會(huì)在事務(wù)結(jié)束后才關(guān)閉。

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

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

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

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

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

  3.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ù)及管理。

  4.Error和eception有什么區(qū)別?

  Error表示系統(tǒng)級(jí)別的錯(cuò)誤和程序不必處理的異常,是恢復(fù)不是不可能當(dāng)時(shí)很困難的情況下的一種嚴(yán)重問(wèn)題,比如說(shuō)內(nèi)存溢出,不可能指望程序能處理這樣的情況。

  Exception表示需要捕捉或者需要程序進(jìn)行處理的異常,是一種設(shè)計(jì)或?qū)崿F(xiàn)問(wèn)題;也就是說(shuō),他表示程序運(yùn)行正常,從不會(huì)發(fā)生的情況。

  5.Log4j是apache組織的開元一個(gè)開源項(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è)界別,優(yōu)先級(jí)從高到低分別是ERROR、WARN、INFO、DEBUG。通過(guò)在這里定義的級(jí)別,可以控制到應(yīng)用程序中相應(yīng)級(jí)別的日志信息的開關(guān)。比如在這里定義了INFO級(jí)別。則應(yīng)用程序中所有DEBUG級(jí)別的日志信息將不被打印出來(lái)。

  java基礎(chǔ)知識(shí)面試題(三)

  1.說(shuō)出幾個(gè)與Spring同類型的開源框架,說(shuō)出幾個(gè)與hibernate同類型的開源框架,說(shuō)出幾個(gè)與struts同類型的開源框架。

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

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

  3)幾個(gè)與struts同類型的開源框架:webwork、tapestry、JSF

  2.Struts2中,OGNL訪問(wèn)值棧的時(shí)候查找的順序是什么?請(qǐng)排序:模型對(duì)象、臨時(shí)對(duì)象、固定名稱的隨想、action對(duì)象

  Struts2的值棧排序順序?yàn)椋?/p>

  1)臨時(shí)對(duì)象

  2)模型對(duì)象

  3)Action對(duì)象

  4)固定名稱對(duì)象(如#application,#session,#request等對(duì)象)

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

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

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

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

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

  Factory(工廠模式),Builder(建造模式),F(xiàn)actory Method(工廠方法模式),Prototype(原始模型模式),Singlerton(單例模式),F(xiàn)acade(門面模式),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 Responsiblety(責(zé)任鏈模式)

  
看了“java基礎(chǔ)知識(shí)面試題”

50429