国产精品亚洲综合久久系列,一本大道香蕉青青久久,播放高清的播放器,国产在线观看无码不卡

蜜蜂職場文庫 > 面試技巧 >

java程序員面試題

時間: 小龍 面試技巧

  做好面試準備是每位Java程序員在求職面試中應該做的,那么你對面試問題有了解了嗎?以下是小編幫你們整理的java程序員面試題,一起來學習啦。

  java程序員面試題(一)

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

  解答:會執(zhí)行,在return前執(zhí)行。

  2.EJB包含哪3種bean

  解答:session bean(會話bean), entity bean(實體bean), message bean(消息bean)

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

  解答:通過類的全名獲得該類的類對象

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

  解答:不一定

  建立太多的索引將會影響更新和插入的速度,因為它需要同樣更新每個索引文件。對于一個經常需要更新和插入的表格,就沒有必要為一個很少使用的where子句單獨建立索引了,對于比較小的表,排序的開銷不會很大,也沒有必要建立另外的索引。

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

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

  持久狀態(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ù)庫對應記錄一致的值,但是因為會話已經消失,對象不在持久化管理之內,所以處于游離狀態(tài)(也叫:脫管狀態(tài))。游離狀態(tài)的對象與臨時狀態(tài)對象是十分相似的,只是它還含有持久化標識。

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

  解答:

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

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

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

  解答: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(調停者模式),Memento(備忘錄模式),

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

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

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

  java程序員面試題(二)

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

  解答:

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

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

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

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

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

  解答:

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

  4.Log4J是Apache組織的開源一個開源項目,通過Log4J,可以指定日志信息輸出的目的地,如console、file等。Log4J采用日志級別機制,請按照輸出級別由低到高的順序寫出日志輸出級別。

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

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

  解答:

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

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

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

  java程序員面試題(三)

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

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

  2.如何優(yōu)化數(shù)據(jù)庫,如何提高數(shù)據(jù)庫的性能?

  解答:

  1) 硬件調整性能

  最有可能影響性能的是磁盤和網(wǎng)絡吞吐量,解決辦法擴大虛擬內存,并保證有足夠可以擴充的空間;把數(shù)據(jù)庫服務器上的不必要服務關閉掉;把數(shù)據(jù)庫服務器和主域服務器分開;把SQL數(shù)據(jù)庫服務器的吞吐量調為最大;在具有一個以上處理器的機器上運行SQL。

  2)調整數(shù)據(jù)庫

  若對該表的查詢頻率比較高,則建立索引;建立索引時,想盡對該表的所有查詢搜索操作, 按照where選擇條件建立索引,盡量為整型鍵建立為有且只有一個簇集索引,數(shù)據(jù)在物理上按順序在數(shù)據(jù)頁上,縮短查找范圍,為在查詢經常使用的全部列建立非簇集索引,能最大地覆蓋查詢;但是索引不可太多,執(zhí)行UPDATE DELETE INSERT語句需要用于維護這些索引的開銷量急劇增加;避免在索引中有太多的索引鍵;避免使用大型數(shù)據(jù)類型的列為索引;保證每個索引鍵值有少數(shù)行。

  3)使用存儲過程

  應用程序的實現(xiàn)過程中,能夠采用存儲過程實現(xiàn)的對數(shù)據(jù)庫的操作盡量通過存儲過程來實現(xiàn),因為存儲過程是存放在數(shù)據(jù)庫服務器上的一次性被設計、編碼、測試,并被再次使用,需要執(zhí)行該任務的應用可以簡單地執(zhí)行存儲過程,并且只返回結果集或者數(shù)值,這樣不僅可以使程序模塊化,同時提高響應速度,減少網(wǎng)絡流量,并且通過輸入?yún)?shù)接受輸入,使得在應用中完成邏輯的一致性實現(xiàn)。

  4)應用程序結構和算法

  建立查詢條件索引僅僅是提高速度的前提條件,響應速度的提高還依賴于對索引的使用。因為人們在使用SQL時往往會陷入一個誤區(qū),即太關注于所得的結果是否正確,特別是對數(shù)據(jù)量不是特別大的數(shù)據(jù)庫操作時,是否建立索引和使用索引的好壞對程序的響應速度并不大,因此程序員在書寫程序時就忽略了不同的實現(xiàn)方法之間可能存在的性能差異,這種性能差異在數(shù)據(jù)量特別大時或者大型的或是復雜的數(shù)據(jù)庫環(huán)境中(如聯(lián)機事務處理OLTP或決策支持系統(tǒng)DSS)中表現(xiàn)得尤為明顯。在工作實踐中發(fā)現(xiàn),不良的SQL往往來自于不恰當?shù)乃饕O計、不充份的連接條件和不可優(yōu)化的where子句。在對它們進行適當?shù)膬?yōu)化后,其運行速度有了明顯地提高!

  3.JS中的三種彈出式消息提醒(警告窗口、確認窗口、信息輸入窗口)的命令是什么?

  解答:alert confirm prompt

  4.描述JSP和Servlet的區(qū)別、共同點、各自應用的范圍

  解答:JSP在本質上就是SERVLET,但是兩者的創(chuàng)建方式不一樣.Servlet完全是JAVA程序代碼構成,擅長于流程控制和事務處理,通過Servlet來生成動態(tài)網(wǎng)頁很不直觀.JSP由HTML代碼和JSP標簽構成,可以方便地編寫動態(tài)網(wǎng)頁.因此在實際應用中采用Servlet來控制業(yè)務流程,而采用JSP來生成動態(tài)網(wǎng)頁.

  5.在java語言中int 和 Integer 有什么區(qū)別

  解答:int是基本數(shù)據(jù)類型,Integer是int的包裝類,屬于引用類型

  
看了“java程序員面試題”

50445