[轉]JAVA WEB 面試題

來源:互聯網
上載者:User

標籤:需要   根據   應用程式伺服器   菜鳥   持久化   library   核心   二級緩衝   調用   

原文:http://blog.csdn.net/liuxiaogangqq/article/details/8124793

 

1、jsp和servlet的區別、共同點、各自應用的範圍??

JSP是Servlet技術的擴充,本質上就是Servlet的簡易方式。JSP編譯後是“類servlet”。Servlet和JSP最主要的不同點在於,Servlet的應用邏輯是在Java檔案中,並且完全從展示層中的HTML裡分離開來。而JSP的情況是Java和HTML可以組合成一個副檔名為.jsp的檔案。JSP側重於視圖,Servlet主要用於控制邏輯。在struts架構中,JSP位於MVC設計模式的視圖層,而Servlet位於控制層.

 

2、cookie和session的作用、區別、應用範圍,session的工作原理???

Cookie:主要用在儲存用戶端,其值在用戶端與服務端之間傳送,不安全,儲存的資料量有限。

Session:儲存在服務端,每一個session在服務端有一個sessionID作一個標識。儲存的資料量大,安全性高。佔用服務端的記憶體資源。

 

3、jstl是什嗎?優點有哪些??

JSTL(JSP Standard Tag Library ,JSP標準標籤庫)是一個不斷完善的開放原始碼的JSP標籤庫,由四個定製標記庫(core、format、xml 和 sql)和一對通用標記庫驗證器(ScriptFreeTLV 和 PermittedTaglibsTLV)組成。優點有:

1、 在應用程式伺服器之間提供了一致的介面,最大程式地提高了WEB應用在各應用伺服器之間的移植。

2、 簡化了JSP和WEB應用程式的開發。

3、 以一種統一的方式減少了JSP中的scriptlet代碼數量,可以達到沒有任何scriptlet代碼的程式。在我們公司的項目中是不允許有任何的scriptlet代碼出現在JSP中。

4、 允許JSP設計工具與WEB應用程式開發的進一步整合。相信不久就會有支援JSTL的IDE開發工具出現。

 

4、j2ee的優越性主要表現在哪些方面?MVC模式

a、 J2EE基於JAVA 技術,與平台無關

b、 J2EE擁有開放標準,許多大型公司實現了對該規範支援的應用伺服器。如BEA ,IBM,Oracle等。

c、 J2EE提供相當專業的通用軟體服務。

d、 J2EE提供了一個優秀的企業級應用程式架構,對快速高品質的開發系統打下了基礎。

Model模型:應用程式的主體部分,用於表示商務邏輯。

View視圖:應用程式中使用者介面相關的部分,是使用者看到並與之互動的介面。

Controller控制器:用於根據使用者的輸入,控制使用者介面資料顯示,更新Model對象狀態。

MVC模式的出現不僅實現了功能模組和顯示模組的分離,同時還提夠了應用系統的可維護、可擴充性、可移植性、和組建的可複用性。

 

5、Struts的優點

a、實現MVC模式,結構清晰,使開發人員只需關注商務邏輯的實現。

b、有豐富的tag可以用,能大大提夠開發效率,縮短開發時間。

c、頁面導航。通過一個設定檔,即可把握整個系統各部分之間的聯絡,這對於後期的維護有很大的好處

d、提供Exception處理機制

e、支援L18N

6、為什麼要用struts?

  JSP、Servlet、JavaBean技術的出現給我們構建強大的公司專屬應用程式系統提供了可能。但用這些技術構建的系統非常的繁亂,所以在此之上,我們需要一個規則、一個把這些技術組織起來的規則,這就是架構,Struts便應運而生。

  基於Struts開發的應用由3類組件構成:控制器組件、模型組件、視圖組件

 

7、Sturt1的核心類、核心標籤庫?

ActionServlet 控制器、ActionMapping狀態改變事件 、 Action控制器的一部分、ActionForward使用者指向、ActionForm狀態改變的資料

Html標籤、bean標籤、logic標籤、tiles標籤、nested標籤

 

8、struts1與sturts2的區別(struts2是struts1和webwork的結合體)

1、struts1要求Action類繼承一個抽象基類,而不是介面。

struts2的action類可以實現一個action介面,也可以實現其他介面。

2、sturts1 action是單例模式,線程是安全的。

struts2 action線程是不安全的,action為每一個請求都產生了一個執行個體。

3、sturts1過去依賴serlet API,不容易測試。

struts2不依賴於容器,允許Action脫離容器單獨被測試。

4、Struts1 使用ActionForm對象捕獲輸入。所有的ActionForm必須繼承一個基類。

Struts 2直接使用Action屬性作為輸入屬性,消除了對第二個輸入對象的需求。

5、Struts1 整合了JSTL,因此使用JSTL EL。這種EL有基本對象圖遍曆,但是對集合和索引屬性的支援很弱。

Struts2可以使用JSTL,但是也支援一個更強大和靈活的運算式語言--"Object Graph Notation Language" (OGNL).

6、Struts 1使用標準JSP機制把對象綁定到頁面中來訪問。

Struts 2 使用 "ValueStack"技術,使taglib能夠訪問值而不需要把你的頁面(view)和對象綁定起來。

7、Struts 1 ActionForm 屬性通常都是String類型。Struts1使用Commons-Beanutils進行類型轉換。

Struts2 使用OGNL進行類型轉換。提供基本和常用對象的轉換器。

8、Struts 1支援在ActionForm的validate方法中手動校正,或者通過Commons Validator的擴充來校正。

Struts2支援通過validate方法和XWork校正架構來進行校正。

9、Struts1支援每一個模組有單獨的Request Processors(生命週期),但是模組中的所有Action必須共用相同的生命週期。

Struts2支援通過攔截器堆棧(Interceptor Stacks)為每一個Action建立不同的生命週期。堆棧能夠根據需要和不同的Action一起使用。

 

9、過濾器和攔截器的區別

1、攔截器是基於java的反射機制的,而過濾器是基於函數回調

2、過濾器依賴於servlet容器,而攔截器不依賴於servlet容器

3、攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用

4、攔截器可以訪問action上下文、值棧裡的對象,而過濾器不能

5、在action的生命週期中,攔截器可以多次被調用,而過濾器只在容器初始化時調用一次

攔截器 :是在面向切面編程的就是在你的service或者一個方法,前調用一個方法,或者在方法後調用一個方法比如動態代理就是攔截器的簡單實現,在你調用方法前列印出字串(或者做其它商務邏輯的操作),也可以在你調用方法後列印出字串,甚至在你拋出異常的時候做商務邏輯的操作。

過濾器:是在Java web中,你傳入的request,response提前過濾掉一些資訊,或者提前設定一些參數,然後再傳入servlet或者struts的 action進行商務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果使用者沒有登陸都過濾掉),或者在傳入servlet或者 struts的action前統一設定字元集,或者去除掉一些非法字元.

 

 

10、hibernate是一個開放原始碼的對象關係映射架構,它對JDBC進行了非常輕量級的對象封裝,使得java程式員可以隨心所欲的使用對象編程思維來操縱資料庫。

工作原理:

1.讀取並解析設定檔2.讀取並解析映射資訊,建立SessionFactory 3.開啟Sesssion 4.建立事務Transation 5.持久化操作6.提交事務7.關閉Session 8.關閉SesstionFactory

 

優點有:

1. 對JDBC訪問資料庫的代碼做了封裝,大大簡化了資料訪問層繁瑣的重複性代碼。

2. Hibernate是一個基於JDBC的主流持久化架構,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作

3、 Hibernate使用Java反射機制而不是位元組碼增強程式來實現透明性。

4、 Hibernate的效能好,映射的靈活性比較出色。它支援各種關聯式資料庫,從一對一到多對多的各種複雜關係。

 

11、hibernate的核心類是什嗎??重要方法是什嗎??

Configuration、SessionFactory

Session如下方法 Save、 load、 Update、Delete

Query q=CreateQuery(“from Customer where customerName=:customerName”)

beginTransaction、close、Transaction、Commit()

 

12、session.load()和session.get()的區別

Session.load/get方法均可以根據指定的實體類和id從資料庫讀取記錄,並返回與之對應的實體物件。其區別在於:

如果未能發現合格記錄,get方法返回null,而load方法會拋出一個ObjectNotFoundException。

 

13、hql和sql的區別【可以這樣說,hibernate是物件導向語言與關係型資料庫之間的橋樑,他使得程式員可以不用關心底層資料庫連接的代碼,而可以專心寫商務邏輯。】

sql是面向資料庫表查詢

hql是物件導向查詢的,其form子句返回的是對象的執行個體。

 

14、hibernate與jdbc之間的區別【可以這樣說,hibernate是物件導向語言與關係型資料庫之間的橋樑,他使得程式員可以不用關心底層資料庫連接的代碼,而可以專心寫商務邏輯。】

Hibernate作為一個O/R Mapping,比JDBC具備的優勢有:

1.編程思想上,更加符合人的邏輯思維習慣,物件導向比面向過程更加容易理解,測試和維護

2.開發維護速度上,Hibernate顯著的快,代碼量顯著小

3.通過Annotation進行資料庫的欄位加密

4.對Sql不熟的菜鳥來說可以自動調優

5.結合spring,通過聲明式事務可以省略事務的控制,事務以橫切面形式出現

 

Jdbc比Hibernate具備的優勢有:

1.大資料量訪問時,Jdbc的效率顯著快

2.直接操作資料庫比較靈活

 

15、Hibernate是如何消極式載入?

當Hibernate在查詢資料的時候,資料並沒有存在與記憶體中,當程式真正對資料的操作時,對象才存在與記憶體中,就實現了消極式載入,他節省了伺服器的記憶體開銷,從而提高了伺服器的效能。

 

16、說下Hibernate的緩衝機制

  1. 內部緩衝存在Hibernate中又叫一級緩衝,屬於應用事物級緩衝

  2. 二級緩衝:

  a) 應用及緩衝

  b) 分布式緩衝

c) 第三方緩衝的實現

 

17、spring工作機制及為什麼要用?【spring是一個輕量的控制反轉和面向切面的容器架構】

  1.springmvc把所有的請求都提交給DispatcherServlet,它會委託應用系統的其他模組負責對請求進行真正的處理工作。

  2.DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller.

  3.DispatcherServlet把請求提交到目標Controller

  4.Controller進行商務邏輯處理後,會返回一個ModelAndView

  5.Dispathcher查詢一個或多個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象

  6.視圖對象負責渲染返回給用戶端。

IoC就是由容器來控制業務對象之間的依賴關係。控制反轉的本質,是控制權由應用代碼轉到了外部容器,控制器的轉移既是所謂的反轉。控制權的轉移帶來的好處就是降低了業務對象之間的依賴程度,即實現瞭解耦。

DI/IOC,對持久層和展示層的控制與分配,增加系統的靈活性和穩定性. AOP,面向切面,利用代理對程式的有效管理.

spring是一個輕量級的IOC和AOP架構,通過spring的IOC實現松耦合,而作為一個AOP架構他又能分離系統服務,實現內聚開發 Spring 最好的地方是它有助於您替換對象。有了 Spring,只要用 JavaBean 屬性和設定檔加入依賴性(協作對象)。然後可以很容易地在需要時替換具有類似介面的協作對象。} 
Spring對多種ORM架構提供了很好的支援

[轉]JAVA WEB 面試題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.