JAVA:SSH框架面試技巧和常見面試問題
1.請描述下你做的專案:
XXX系統是什麼什麼,主要目的是XXX,整個系統包含了哪些功能模組,然後說包含了哪些模組,自己做了哪些模組。
2.結合專案談談你對MVC的理解
MVC是model-view-controler的簡稱。也就是模型-檢視-控制器。mvc是一種設計模式,他強制性的把應用程式的輸入、處理和輸出分開。mvc中的模型、檢視、控制器分別擔任著不同的任務。 檢視:檢視是使用者看到並與之互動的介面。檢視向用戶顯示相關的資料,並接受使用者的輸入。檢視不進行任何業務邏輯處理。 模型:模型表示業務資料和業務處理。相當於javaBean。一個模型能為多個檢視提供資料。這提高了應用程式的重用性。 控制器:當用戶單擊web頁面中的提交按鈕時,控制器接收請求並呼叫相應的模型去處理請求。然後根據處理的結果呼叫相應的檢視來顯示處理的結構。 MVC的處理過程:首先控制器接收使用者的請求,呼叫相應的模型來進行業務處理,並返回資料給控制器。控制器呼叫相應的檢視來顯示處理的結構。並通過檢視呈現給使用者。如在專案中要對應MVC的話;View對應專案中的jsp,controler對應action,model對應service+dao層的業務邏輯和持久層的操作。
3.專案中為什麼要使用ssh(三大框架的優點)
1.使用struts是因為struts是基於mvc模式的,很好的將應用程式進行了分層,使開發者更關注業務邏輯的實現;struts有著豐富的標籤庫,能大大的提高開發效率。 2.使用Hibernate;是因為Hibernate為java應用提供了一個易用的、搞效率的物件關係對映框架。hibernate是個輕量級的持久層框架,功能豐富。 3.使用spring;是因為spring基於ioc(控制反轉)和aop框架多層j2ee系統的框架
4.挑選一個你做的功能說明ssh框架的應用原理
1.在表示層中,首先通過jsp頁面實現互動介面,負責傳送請求(request)和接收響應(response),然後struts根據配置檔案(struts。xml)將actionServlet接收到的request委派給響應的action處理。 2.在業務層中,管理服務元件的spring ioc容器負責向action提供業務模型(model)元件和元件的協作物件資料處理(dao)元件完成業務邏輯,並提供事務處理、緩衝池等容器元件以提升系統性能和保證資料的完整性。 3.在持久層中,則依賴於hibernate的物件化對映和資料庫互動,處理dao元件請求的資料,並返回處理結果。
綜合上面的概述;然後可以把我們做的資訊釋出管理模組用上述的方式例項化描述一遍。
5.struts工作原理
——-按照struts工作原理圖說 1.客戶端發出一個指向servlet容器的請求; 2.請求會經過strutsPrepareAndExecuteFilter過濾器; 3.過濾器和請求將訪問strut2的底層框架結構。在web容器啟動時,struts2框架會自動載入配置檔案裡相關引數,並轉換成相應的類。 如:ConfigurationManager、ActionMapper和Objectfactory.ConfigurationManager存有配置檔案的一些基本資訊,ActionMapper存有action的配置資訊。在請求過程中所有的物件(Action,results,Interceptors,等)都是通過Objectfactory來建立的。過濾器會通過詢問ActionMapper類來查詢請求中需要用到的Action。 4.如果找到需要呼叫的Action,過濾器會把請求的處理交給ActionProxy。ActionProxy為Action的代理物件。ActionProxy通過ConfigurationManager詢問框架的配置檔案,找到需要呼叫的Action類。 5.ActionProxy建立一個ActionInvocation的例項。ActionInvocation在ActionProxy層之下,它表示了Action的執行狀態,或者說它控制的action的執行步驟。它持有Action例項和所有的Interceptor。 6.ActionInvocation例項使用命名模式來呼叫,1.ActionInvocation初始化時,根據配置,載入Action相關的所有Interceptor.2.通過ActionInvocation.invoke方法呼叫Action實現時,執行Interceptor。在呼叫action的過程前後,涉及到相關攔截器(Interceptor)的呼叫。 7.一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。
————–通俗的說———— 傳送http請求 web伺服器(tomcat、weblogic) 執行struts核心過濾器StrutsprepareAndExecuteFilter 載入struts配置檔案中配置資訊,找到對應的Action類並例項化 執行各類攔截器和action中對應方法 配置檔案中找到返回結果 轉發到具體頁面或其他操作
6.struts有什麼優缺點
————–優點———— 1.實現MVC模式,結構清晰; 2.豐富的struts的標記庫,利用好能大大提高開發效率 3.全域性結果與宣告式異常; 4.可使用OGNL進行引數傳遞 5.各類方便使用的攔截器
————–缺點————- 1.轉到表現層時,需要配置結果頁面;頁面多了比較繁雜; 2.對Servlet的依賴性過強 3.struts標籤稍微比el表示式繁重
7.為何使用spring
spring是一個輕量級的控制反轉(ioc)、面向切面(AOp)、面向介面、事務管理、包容促進其他框架;使系統中用到的其他框架的耦合程度大大降低,擴充套件性強、簡單易用好管理。
8.spring在專案中如何充當粘合劑
1.在專案中利用spring的ioc(控制反轉或依賴注入),明確的定義元件介面(如UserDao),開發者可以獨立開發各個元件,然後根據元件間的依賴關係組裝(UserAction依賴於UserService,UserService依賴於Userdao)執行,很好的把struts(Action)和hibernate(dao的實現)結合起來; 2.spring的事務管理把hibernate對資料庫的操作進行了事務配置
9.描述在系統中如何使用了spring的事務控制
spring事務包括程式設計事務和宣告式事務。在系統中使用了宣告式的事務管理是用spring的AOP來實現的;配置了只讀事務和回滾事務(傳播行為為REQUIRED)當出現錯誤後進行事務回滾操作。在專案中通過aop切入事務到service層,這樣做能使一次業務邏輯操作如果包括幾個資料庫操作都控制在一個事務中。
10.Hibernate工作原理以及為什麼要用?
原理: 1.讀取並解析配置檔案 2.讀取並解析對映資訊,建立SessionFactory 3.開啟Session 4.建立事務Transaction 5.持久化操作 6.提交事務 7.關閉Session 8關閉SessionFactory
為什麼要用: 1.對Jdbc訪問資料庫程式碼做了封裝,大大簡化了資料訪問層繁瑣的重複性程式碼。 2.Hibernate是一個基於JDBC的主流持久化框架,是一個優秀的ORM實現。他很大程度上簡化DAO層的編碼工作。3.Hibernate使用Java反射機制,而不是位元組碼增強程式來實現透明性。 4.Hibernate的效能非常好,因為他是一個輕量級框架。對映的靈活性很出色。他支援各種關係資料庫,從一對一到多對對的各種複雜關係。
11.Hibernate在系統中使用的優化策略
Hibernate對資料的快取包括兩個級:一級快取,在Session的級別上進行,主要是物件快取,以其id為鍵儲存物件,在Session的生命期間存在;二級快取,在SessionFactory的級別上進行,有物件快取和查詢快取,查詢快取以查詢條件為鍵儲存查詢結果,在SessionFactory的生命期間存在,預設地,Hibernate只啟用一級快取
12.列舉你在開發中常用的struts標籤
property、iterator、if、date、form、a、url、textfiled、textarea、select、radio、checkboxlist、 hidden、param
13.Jquery非同步獲取資料的方式有幾種?有何區別?
1.load載入遠端Html檔案程式碼並插入至Dom中 2.get 3.post 4.ajax 5.getJSON 6.getScript通過get方式請求載入並執行一個JavaScript指令碼。
14,簡述UML並書名你是用Rose常用於什麼情況,畫什麼圖?
UML是統一建模語言;用於在軟體開發各個階段中用圖形的方式描述流程和功能需求;IBM Rational Rose是uml建模工具之一比較多的在需求階段,常用於畫例圖,類圖,時序圖。
15.請簡述匯入匯出的工具類;並說明你匯出過的最大資料量