java軟件開發面試題
Java軟件開發的面試問題你有了解了嗎?面試前的準備很重要,以下是小編幫你們整理的java軟件開發面試題,一起來學習啦。
java軟件開發面試題(一)
1.描述J2EE框架的多層結構,并簡要說明各層的作用。
1)Presenttation layer(表示層)
A.表示邏輯(生成界面代碼)
B.接受請求
C.處理業務層拋出的異常
D.負責規則驗證(數據格式,數據非空等)
E.流程控制
2)Service layer(服務層、業務層)
A.封裝業務邏輯處理,并且對外暴露接口
B.負責事務、安全等服務
3)Pesistence layer(持久層)
A.封裝數據訪問的邏輯,暴露接口
B.提供方便的數據訪問方案(查詢語言,API,映射機制等)
4)Domain layer(域層)
A.業務對象以及業務關系的表示
B.處理簡單的業務邏輯
C.域層的對象可以穿越表示層,業務層,持久層
軟件分層結構使得代碼維護非常方便,設計明確,各層獨立,專注自己擅長的領域。
2.請談談對SOA的認識。
面向服務的體系結構(Service-Oriented Architecture,SOA)是一個組建模型,他將相應程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯系起來。接口是采用中立的方式進行定義的,他應該獨立與實現服務的硬件平臺、操作系統和編程語言。這使得構建在各種這樣的系統中的服務可以以一種統一和通用的方式進行交互。
3.簡要描述如何結合Struts、hibernate、spring開發web應用?
Struts可以將jsp頁面的表單關聯起來,就是把JSP頁面的表單數據封裝成javaBean,這樣的話,在action中再也不需要使用創痛的request.getParameter(“name”);還有struts有一個控制器,在Struts變成中的控制器(XxxAction)都是繼承總的ActionServlet,他能集中處理請求,然后轉到相關的頁面。還有struts的表單驗證組件,不能自己寫js驗證了,只需要配置一下文件就可以了。另外struts的令牌機制可以防止表單的重復提交。
Spring是一個輕量級容器,非侵入性,包含依賴注入,AOP等。他是為了解決企業開發應用程序復雜性而構建的。框架的主要優勢之一就是其分層架構,分層架構允許選擇是用哪一個組件,同時為J2EE應用程序開發提供集成的框架。
Hibernate他可以讓我們一OO的方式操作數據庫,這讓我們看到了Hibernate的強大之處,體驗到操作數據的方便。但是Hibernate最耀眼之處是Hibernate的緩存機制,而不是以OO的方式操作數據庫。Hibernate的緩存機制不外乎是一級緩存session,二級緩存sessionfactory,和第三方緩存如ehcache。也就是hibernate的最強大的地方就是它的緩存,理解了這個才能真正的理解hibernate,Hibernate的命名查詢/命名參數查詢,就是講hql語句放在一個單獨的xml文件之中,他仍然讓人們以面向對象的方式操縱數據庫,而不用在以OO的方式寫著代碼的同時,然后再轉變思維,用面向關系的方式去寫那些sql語句。但是Hibernate不僅做了這些,它的native sql查詢方式,完全滿足sql語句的偏愛者,他就像ibatis一樣,將sql語句放在配置文件中。
4.說明反轉控制(IOC)和面向方面編程(AOP)在Spring中的應用。
Spring核心容器(Core)提供Spring框架的基本功能。核心容器的主要組建市BeanFactory,它是工廠模式的實現。beanFactory使用控制反轉(IOC)模式將應用程序的配置和依賴性規范與實際的應用代碼程序分開。Spring的聲明式事務基于AOP實現,卻不需要程序開發者成為AOP專家,亦可輕易使用Spring的聲明式事務管理。
java軟件開發面試題(二)
1.列出自己常用的jdk包
Java.lang:這個是系統的基礎類,比如String等都是這里面的,這個package是唯一一個可以不用import就可以使用的Package
Java.io:這里面是所有輸入輸出有關的類,比如穩健操作等。
Java.net:這里面是與網絡有關的類,比如URL,URLConnection等。
Java.util:這個是系統輔助類,特別是集合類Collection,List,Map等。
Java.sql:這個是數據庫操作類,Connection,Statement,ResultSet等
2.列出自己常用的jdk中的數據結構
線程表,鏈表,hash表都是常用的數據結構
3.List,Map,Set三個接口存儲元素時各有什么特點?
1)List是有序的Collection,使用此接口能夠精確的控制每個元素插入的位置。用戶能夠使用索引(元素在List中的位置,類似于數組下表)來訪問List中的元素,這類似于Java的數組。
2)Set是一種不包含重復元素的Collection,即任意的兩個元素e1和e2都有e1..equals(e2)=false,Set最多有一個null元素。
3)Map接口:Map沒有繼承Collection接口,Map提供Key到Value的映射
4.簡述基于Struts框架Web應用的工作流程
在Web應用啟動時就會加載初始化ActionServlet,ActionServlet從struts-config.xml文件中讀取配置信息,把他們存放到各種配置文對象中,當ActionServlet接收到一個客戶的請求時,將執行如下流程:
1)檢索和用戶請求匹配的ActionMapPing實例,如果不存在,就返回請求路徑無效信息。
2)如果ActionForm實例不存在,就創建ActionForm對象,把客戶提交的表單數據保存到ActionForm對象中。
3)根據配置信息決定是否需要表單驗證,如果需要驗證,就調用ActionForm的validate()方法;
4)如果ActionForm的validate()方法返回null或者返回一個不好喊ActionMessager的ActionErrors對象,就表示表單驗證成功;
5)ActionServlet根據ActionMapping所包含的映射信息決定將請求轉發給哪個Action,如果相應的Action實例不存在,就先創建這個實例,然后調用Action的execute()方法;
6)Action的execute()方法返回一個ActionForward對象,ActionServlet在把客戶請求轉發給ActionForward對象指向JSP組件生成動態網頁,返回給客戶。
java軟件開發面試題(三)
1.在項目中用過Spring的哪些方面?及用過哪些Ajax框架?
在項目中使用過SpringIOC,AOP,DAO,ORM,還有上下文環境
在項目中使用過JQuery,EXtjs等Ajax框架。
(Ajax框架:最長用的就是,prototype、jquery 和EXtjs,Jquery用起來比較方便,EXtjs可能對初學者比較困難。
常用的基本就是Dojo,Extjs,GWT,Prototype,JQuery ,MooTools,Backbase
這些了,他們使用的概率大約是
Prototype jQuery Ext Script.aculo.us Mootools YUI JSON Dojo Backbase
34.1% 29.3% 22.5% 22.3% 14.3% 13% 12.9% 11.8% 8.3%)
2.Abstract class和interface有什么區別?
聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用于要創建一個體現某些基本行為的類,并為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract類的實例。然而可以創建一個變量,其類型是一個抽象類,并讓他指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract類的自雷為他們父類中的所有抽象方法提供實現,否則他們也是抽象類。取而代之,在子類中實現該方法。知道其行為的其他類可以再類中實現這些方法。
接口(interface)是抽象類的變體。新型多繼承性可通過實現這樣的接口而獲得。接口中的所有方法都是抽象的,所有成員變量都是public static final的。一個類可以實現多個接口,當類實現接口時,必須實現接口的所有方法。抽象類在java語言中表示的是一種單繼承的關系,對于interface來說則不然,并不要求interface的實現者和interface定義在概念本質上是一致的,僅僅是實現了interface定義的契約而已。
抽象類中可以定義自己的成員變量,也可以包含非抽象類的方法,而在接口中只能由靜態的敞亮,所有的方法必須是抽象的;實現抽象類是可以實現其中的部分方法,而是要實現一個接口的話就必須實現這個接口中的所有抽象方法。
3.MVC模式中M、V、C每個代表的含義,并簡述在Struts中的MVC的表現的方式。
MVC是MOdel-View-Controller的縮寫,Model代表的是應用的業務邏輯(通過JaveBean,EJB組件實現),View是應用的表示層(由JSP頁面產生),Controller是通過應用的處理過程控制,(一般是一個servert)通過這種設計模型把應用邏輯,處理過程和現實邏輯分成不同的組件實現,這些組件可以進行交互和重用。
在Struts框架中Controller功能由ActionServlert和ActionMapping對象構成,核心是一個Servlet類型的對象ActionServlet,他用來接受客戶端的請求。ActionServlet包括一組基于配置的ActionMapping對象,每個ActionMapping對象實現了一個請求到具體的Model部分的Action處理器對象都是開發者從Struts的Action類派生的子類。Action處理器對象封裝了具體的處理邏輯,調用業務邏輯模塊,并且把響應提交到合適的View組件以產生響應。Struts提供的ActionForm組件對象可以通過定義屬性描述客戶端表單數據,開發者可以從他派生子類對象,并利用它和Struts提供的自定義標記庫相結合,可以實現對客戶端的表單數據的良好封裝和支持,Action處理器對象可以直接對他進行讀寫,而不再需要和request、response對象進行數據交互。通過ActionForm組件對象實現了對View和model之間的交互支持(View部分是通過JSP技術實現的)。Struts提供了自定義的標記庫,通過這些自定義標記庫可以非常容易地和系統Model部分交互,通過使用這些自定義標記庫創建的JSP表單,可以實現對Model部分中的ActionForm的映射,完成對用戶數據的封裝。
看了“java軟件開發面試題”