麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

2016最新ssm面試題

2019-11-14 09:37:41
字體:
來源:轉載
供稿:網友

1.很新的面試題

2.很全的面試題

3.很重點的面試題 框架

Struts2與Struts1的面試題

###1.Struts2與Struts1的聯系與區別?為什么要用Struts2?

struts1與struts2都是mvc框架的經典實現模式。

Struts2不是從Struts1升級而來,而是由WebWork改名而來,而WebWork只是Xwork加了很多WEB攔截器而已

區別:

1.核心控制器改成了過濾器(過濾器比Servlet的級別要高,因為程序運行時是先進入過濾器再進入Servlet)

2.struts1嚴重依賴于Servlet(因為太過于依賴于api的HttpServletRequest與HttpServletResponse的兩個參數),

struts2就則脫離了Servlet的API。

3.管理Action時struts1是單例模式,struts2是每個請求產生一個實例。

4.在表達式的支持上struts2不僅有jstl,還有功能更加強大的ognl表達式。

5.struts1的類型轉換是單向的(頁面到ActionForm),struts2是雙向的(頁面到Action再到頁面回顯)

6.校驗,struts1沒有針對具體方法的校驗,struts2提供了指定某個方法進行效驗,還有框架校驗。

7.struts2提供了攔截器,利用攔截器可以在訪問Action之前或之后增加如權限攔截等功能。

8.struts2提供了全局范圍,包范圍,Action范圍的國際化資源文件管理實現。

9.struts2支持多種視圖類型

###2.Struts2的核心是什么,體現了什么思想?

Struts2的核心是攔截器,基本上核心功能都是由攔截器完成,攔截器的實現體現了AOP(面向切面編程)思想

###3.為何繼承ActionSupport

因為ActionSupport實現了Action接口,提供了國際化,校驗的功能。

ActionSupport實現了國際化功能:因為它提供了一個getText(String key)方法實現國際化,該方法從資源文件上獲取國際化信息。

Action接口提供了五個常量(success,error,login,input,none)。

(s?k'ses,er?(r) n?n

###4.模型驅動與屬性驅動是什么 模型驅動使用時注意什么問題

答:模型驅動與屬性驅動都是用來封裝數據的。

1.模型驅動:在實現類中實現ModelDriven<T>接口使用泛型把屬性類封裝起來,重寫getModel()方法,然后在實現類里創建一個屬性類的實例,

2.屬性驅動:在實現類里定義屬性,生成get與set方法,通過屬性來拿值。

###5.Struts2是怎樣進行值封裝的?

struts2的值封裝實際上是采用了ognl表達式.

###6.Struts2如何進行校驗

1.每個Action類有一個校驗文件,命名 Action類名-validation.xml,且與Action類同目錄,這是對action里面所有的方法進行校驗。

2.對Action里面的指定方法做校驗使用Action的類名-訪問路徑_方法名-validation.xml。

在效驗文件里又分為兩種:

字段校驗:字段用什么校驗器來校驗。

非字段校驗:是用校驗器校驗什么字段。

###7.談談Struts2 的國際化

在struts2中是使用了攔截器來實現國際化。

具體是先配置屬性文件,格式是文件名_語言_國家名.PRoperties,然后放的位置有Action同包位置,

package位置,全局位置(要在常量里面配置), 然后頁面通過s:text或者key屬性去訪問

###8.OGNL是什么你在項目中如何使用它

OGNL是:對象圖形導航語言。

在struts2中的作用:

ognl的實現關系:ActionConetxt。

ognl 3個常用的符號 # $ %

#

1 構造map,list集合。 2 取ognl上下文的值。 3 用來過濾集合。 $

1 在校驗框架中取資源文件中的值。

2 可以在配置文件中傳遞參數。

%

使用百分號可以進行轉義。

###9.Strust2如何訪問Servlet API

1:通過ActionContext可以獲得request,applicationsession三個作用域(struts2實際上是通過適配器

來把servlet的api轉換為一個map,并把這些map放在ActionContext里面)。 2:通過ActionContext的子類ServletActionContext去獲取原滋原味的API。

3:可以通過實現ServletRequestAware接口,重寫里面的setServletRequest方法可以獲

得request,實際上是通過set的依賴注入

###10.什么是攔截器 說說Struts2用攔截器來干什么 說出6個攔截器來

解釋:在訪問類的某個方法或者屬性之前執行,攔截的是Action的請求,進行攔截然后在方法的執行前或者之后加入某些操作。

作用:國際化,權限,效驗等與源代碼無關的操作。

攔截器:

國際化,表單重復提交,類型轉換,自動裝配,數據封裝,異常處理,模型驅動,請求參數,處理類型轉換錯誤,日志攔截器。

###11.如何實現自定義攔截器? 需要注意什么?

實現:

1.可以實現Interceptor接口,重寫doIntercept方法指定某個方法進行攔截,或者繼承AbstractInterceptor類,重寫intercept方法。

2.在xml配置文件中定義自定義攔截器,然后注入到攔截器棧中,再把攔截器引用到action中。

3.可以配置到某個action單獨使用,也可以配置到包下面的所有action使用。 注意:

要把默認的攔截器棧重新引用,否則會被覆蓋。

###12. ActionContext是用來干什么的

ActionContext是Action的上下文。

###13.為什么要繼承默認的包?

因為在Strtus2里面默認有很多的常量,攔截器,還有一些bean,如果繼承默認的包,這些默認值和常量就會繼承過來,

###14.常見的有哪幾種結果集類型?

dispatcher:指得是轉發,默認的結果集類型

redirect:重定向,

redirectAction:重定向到一個Action

stream:是返回一個流,一般用在文件下載上面

###15.開發項目時struts2在頁面怎樣拿值?

從值棧中或者是ognl的上下文

###16.怎么樣用Struts2進行文件的上傳或者下載

上傳:

1.在jsp用了s:file標簽,把s:from的enctype 屬性設置為 multipart/form-data

2.在action里面定義三個字段 File file ,String [file]ContentType,String [file] FileName

3.用輸出流轉化成硬盤上面的文件

下載:

1.在struts.xml中配置result為stream的類型

2.在action定義四個屬性,默認的有個是InputStream 的類型叫inputStream的,從硬盤上面讀取文件到這個流賦值即可.

contentType; contentLength; contentDisposition; inputStream;

###17.簡單講下struts里面的標簽,說不少于5個

s:if

s:form

s:url

s:property

s:iterater

###18.默認struts2里面的標簽取值都是從那里取值的

默認都是從OGNL值棧里面取值的

###19.ValueStack分為那兩部分,組成部分是什么,分別怎么訪問

分為:

對象棧和ContextMap

訪問:

1.對象棧前臺可以直接訪問

2.ContextMap訪問的時候前面加#

###20.標簽<s:property>和el表達式有什么區別,

相同:

都可以從值棧里面取值

區別:

el表達式只能取屬性有get set方法的簡單數據類型

s:property標簽:取得數組的一些方法等復雜數據對象類型

###21.說下重復提交的解決思路,Struts2是怎么樣解決重復提交的

1.在頁面表單域加入一個隱藏的s:token字段,然后在session里面也加入同樣的值

2.當用戶第一次請求的時候,把request的值和session對比,相同就通過請求,執行下面攔截器,并且移除Session里面的值

3.如果第二次請求時候,Session已經沒有這個值,那么就阻斷當前請求,定位重復提交 Struts2是通過s:token標簽來完成重復提交思路的

spring的面試題部分

###1.Spring的aop你怎樣實現?

用動態代理和cglib實現,有接口的用動態代理,無接口的用cglib

###2.Spring在SSH起什么作用

為大部分框架提供模版,常見的核心類提供初始化,并且整合三層框架

###3.Spring容器內部怎么實現的

內部用Map實現,或者說HashMap

###4.怎么樣理解IOC與AOP

IOC是一種控制反轉的思想,降低了對象的耦合度,AOP是面向切面編程,非侵入式編程,實現了非業務性編程(公共功能),譬如日志,權限,事務等等

###5.Spring的事務,事務的作用。

Spring里面的事務分為編程式事務和聲明式事務,一般用聲明式事務,用來控制數據操作的完整性,一致性

###6.Spring的IOC和AOP你在項目中是怎么使用的?

IOC主要來解決對象之間的依賴問題,把所有的bean的依賴關系通過配置文件或者注解關聯起來,降低了耦合度,AOP一般用來整合框架時候都可以用得到,

事務用的最多,還有個別日志,權限功能也可以用到

###7Spring主要使用了什么模式?

工廠模式-->每個Bean的創建通過方法

單例模式-->默認的每個Bean的作用域都是單例

代理模式-->關于AOP的實現是通過代理,體現代理模式

###8.Spring bean的作用域.

Scope作用域有4種,常見的有單例或者多例,默認是單例

###9.Spring的事務是如何配置的?

1.先配置事務管理器TransactionManager,不同的框架有不同屬性

2.再配置事務通知和屬性,通過tx:advice

3.配置<aop:config>,設置那些方法或者類需要加入事務

###10.Spring的配置文件最好使用什么文件?

xml,因為它是最簡單,最流行的數據格式

###11.你使用過Spring中的哪些技術?

bean的管理,AOP技術,IOC技術 ,事務等

###12.為什么要用Spring

降低對象耦合度,讓代碼更加清晰,提供一些常見的模版

###13.說下Spring的注解

1.bean的標記注解

@Component 通用注解 @Repository 持久層注解 @Service 業務層注解 @Controller:表現層注解

2.bean的自動裝配注解

@AutoWired 默認是按照類型裝配,如果有多個類型實現可以用Qualifier來指定名

@Resource 默認是按照名稱來裝配,是JDK里面自帶的注解,默認情況下用@AutoWired注解

###15.寫過類似Spring AOP的操作嗎?

簡單的寫過,譬如前置通知,后置通知的方法,環繞通知,事務就是典型的AOP的實現

###16.Spring中的AOP在你項目中是怎么使用的,用在哪里?

Struts2和Hibernate整合時候都可以用得到, 事務用的最多,還有個別日志,權限功能也可以用到

###17.Spring的事務(傳播屬性,隔離級別)。

七大傳播屬性,四大隔離級別

###19.Spring DI的幾種方式

setter注入和構造器注入,一般用setter注入

###20.依賴注入的原理

就是通過反射機制生成想要的對象注入

###21.說一下整合Spring的核心監聽器。

這個是在SSH整合的時候使用,是整個WEB項目啟動的時候初始化Spring的容器. 具體是在web.xml里面配置的ContextLoaderListener

Spring配置文件中的核心是個監聽器,是用來初始化Spring的容器

###22.Spring你們為什么用配置文件而不使用注解?

配置文件耦合度低,容易維護,尤其是在切面或者事務的時候,只配置一次就可以讓很多代碼擁有事務,

###23.Spring和Hibernate的事務有什么區別?

Spring的事務提供了統一的事務處理機制,包含了JDBC,Hibernate,IBatis等事務實現,而Hibernate只處理自己事務

###24.Struts2與Spring整合先啟動那個容器。

先啟動監聽器,因為先要初始化容器,初始化容器了以后Action才能從容器里面獲得

###26.讓你寫Spring的容器,你是怎樣實現的?

我們可以寫一個HashMap,如果并發考慮的話要寫并發的Map,把bean的名字放在map的key,bean的實現map的value

###27.談談Spring的IOC和AOP,如果不用Spring,怎么去實現這兩個技術。

ioc用反射實現 ,AOP用動態代理實現

###28.Spring事務和Hibernate事務的操作上面的區別?

hibernate的事務只能手動顯示代碼的方式控制創建事務與提交事務以及回滾。

Spring可以通過配置文件設定一類class事務的創建與提交以及回滾,也可以顯示代碼方式控制。

###29.講下Spring的七大事務傳播

有七個,常用有兩個REQUIERD, REQUIRED_NEW,REQUIERD表示兩個事務的方法調用的時候,前面的時候和后面的合并成一個事務,REQUIRED_NEW是重啟一個事務,各干各的

###30.在同一進程里,有A,B兩個方法都對不同的表進行更新數據,假如A方法出異常了,若要B方法執行,怎樣配置事務級別,若不要B方法執行,又該怎樣配置?

前者用REQUIRED_NEW,后者用REQUIRED

###31.事務并發會引起什么問題,怎么解決

事務并發會引起臟讀,幻讀,不可重復讀等問題,設定事務的隔離級別就可以解決

###32.事務的隔離級別

Spring定義有四種,但是常見的是READ_COMMIT,Oralce有兩種實現,MySQL有四種

###33.Spring的IOC容器與工廠類有什么區別?

IOC(Inversion of Control)對Bean的控制能力更強,能控制對象自動注入,還可以控制生命周期,而工廠類只是簡單的創建一個對象,沒有什么控制能力

###34.事務的安全問題:鎖機制的實現原理及在項目中的使用

鎖有悲觀鎖和樂觀鎖,悲觀鎖一般假設每個人都會修改數據,默認情況下把數據都鎖住,影響性能,但安全性高.

樂觀鎖是假設每個人都只讀下數據,不會修改數據,性能比較高,但是安全性較低,一般通過增加類似于版本控制里面版本號來解決問題

###35.講下BeanFactory和ApplicationContext的區別

BeanFactory是Spring容器頂級核心接口,比較早,但功能比較少,getBean就是BeanFactory定義的,

ApplicationContext是Spring里面的另外一個容器頂級接口,它繼承于BeanFactory,但是提供的功能譬如校驗,國際化,監聽,

對Bean的管理功能比較多,一般使用ApplicationContext

###f-sm-1. 講下SpringMvc和Struts1,Struts2的比較的優勢

性能上Struts1>SpringMvc>Struts2 開發速度上SpringMvc和Struts2差不多,比Struts1要高

###f-sm-2. 講下SpringMvc的核心入口類是什么,Struts1,Struts2的分別是什么

SpringMvc的是DispatchServlet,Struts1的是ActionServlet,Struts2的是StrutsPrepareAndExecuteFilter

###f-sm-3. SpringMvc的控制器是不是單例模式,如果是,有什么問題,怎么解決

是單例模式,所以在多線程訪問的時候有線程安全問題,不要用同步,會影響性能的,解決方案是在控制器里面不能寫字段

###f-sm-4. SpingMvc中的控制器的注解一般用那個,有沒有別的注解可以替代

一般用@Controller注解,表示是表現層,不能用用別的注解代替.

###f-sm-5. @RequestMapping注解用在類上面有什么作用

用于類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。

###f-sm-6. 怎么樣把某個請求映射到特定的方法上面

直接在方法上面加上注解@RequestMapping,并且在這個注解里面寫上要攔截的路徑 ###f-sm-7. 如果在攔截請求中,我想攔截get方式提交的方法,怎么配置

springMVC模式的面試題部分

可以在@RequestMapping注解里面加上method=RequestMethod.GET

###f-sm-8. 如果在攔截請求中,我想攔截提交參數中包含"type=test"字符串,怎么配置

可以在@RequestMapping注解里面加上params="type=test"

###f-sm-9. 我想在攔截的方法里面得到從前臺傳入的參數,怎么得到

直接在形參里面聲明這個參數就可以,但必須名字和傳過來的參數一樣

###f-sm-10. 如果前臺有很多個參數傳入,并且這些參數都是一個對象的,那么怎么樣快速得到這個對象

直接在方法中聲明這個對象,SpringMvc就自動會把屬性賦值到這個對象里面 ###f-sm-11. 怎么樣在方法里面得到Request,或者Session

直接在方法的形參中聲明request,SpringMvc就自動把request對象傳入

###f-sm-12. SpringMvc中函數的返回值是什么.

返回值可以有很多類型,有String, ModelAndView,List,Set等,一般用String比較好,如果是Ajax請求,返回的可以是一個集合

###f-sm-13. SpringMvc怎么處理返回值的

SpringMvc根據配置文件中InternalResourceViewResolver(內部資源視圖解析器)的前綴和后綴,用前綴+返回值+后綴組成完整的返回值

###f-sm-14. SpringMVC怎么樣設定重定向和轉發的

在返回值前面加"forward:"就可以讓結果轉發,譬如"forward:user.do?name=method4" 在返回值前面加"redirect:"就可以讓返回值重定向,譬如"redirect:http://www.uu456.com" ###f-sm-15. SpringMvc用什么對象從后臺向前臺傳遞數據的

通過ModelMap對象,可以在這個對象里面用addAttribute()方法,把對象加到里面,前臺就可以通過el表達式拿到

###f-sm-16. SpringMvc中有個類把視圖和數據都合并的一起的,叫什么

ModelAndView

###f-sm-17. 怎么樣把數據放入Session里面

可以聲明一個request,或者session先拿到session,然后就可以放入數據,或者可以在類上面加上@SessionAttributes注解,

里面包含的字符串就是要放入session里面的key

###f-sm-18. SpringMvc怎么和AJAX相互調用的

通過Jackson框架就可以把java里面的對象直接轉化成Js可以識別的Json對象 具體步驟如下 :

1.加入Jackson.jar

2.在配置文件中配置json的映射

3.在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解

###f-sm-19. 當一個方法向AJAX返回特殊對象,譬如Object,List等,需要做什么處理

要加上@ResponseBody注解

###f-sm-20. SpringMvc里面攔截器是怎么寫的

有兩種寫法,一種是實現接口,另外一種是繼承適配器類,然后在SpringMvc的配置文件中配置攔截器即可:

<!-- 配置SpringMvc的攔截器 --> <mvc:interceptors> <!-- 配置一個攔截器的Bean就可以了 默認是對所有請求都攔截 -->

<bean id="myInterceptor" class="com.et.action.MyHandlerInterceptor"></bean>

<!-- 只針對部分請求攔截 --> <mvc:interceptor> <mvc:mapping path="/modelMap.do" /> <bean class="com.et.action.MyHandlerInterceptorAdapter" /> </mvc:interceptor> </mvc:interceptors>

###f-sm-21. 講下SpringMvc的執行流程

系統啟動的時候根據配置文件創建spring的容器, 首先是發送http請求到核心控制器DispatcherServlet,spring容器通過映射器去尋找業務控制器,

使用適配器找到相應的業務類,在進業務類時進行數據封裝,在封裝前可能會涉及到類型轉換,執行完業務類后使用ModelAndView進行視圖轉發,

數據放在model中,用map傳遞數據進行頁面顯示。

### 1.講下MyBatis和Hibernate的區別?

MyBatis是JDBC的輕量級封裝,把Sql和java代碼獨立出來,性能相對比較高,寫SQL語句相對于比較靈活,并且容易調試,一般用在大型項目中.

Hibernate是JDBC的重量級封裝,開發速度比較快,但是性能比較低,調試不方便,一般適合對進度要求的比較高的中小型項目

###2.什么是MyBatis的接口綁定,有什么好處

接口映射就是在IBatis中任意定義接口,然后把接口里面的方法和SQL語句綁定,我們直接調用接口方法就可以,

這樣比起原來了SqlSession提供的方法我們可以有更加靈活的選擇和設置.

###3.接口綁定有幾種實現方式,分別是怎么實現的?

接口綁定有兩種實現方式,一種是通過注解綁定,就是在接口的方法上面加上@Select MyBatis的面試題部分

@Update等注解里面包含Sql語句來綁定,另外一種就是通過xml里面寫SQL來綁定,在這種情況下,

要指定xml映射文件里面的namespace必須為接口的全路徑名.

###4.什么情況下用注解綁定,什么情況下用xml綁定

當Sql語句比較簡單時候,用注解綁定,當SQL語句比較復雜時候,用xml綁定,一般用xml綁定的比較多

###5.MyBatis實現一對一有幾種方式?具體怎么操作的

有聯合查詢和嵌套查詢,聯合查詢是幾個表聯合查詢,只查詢一次,通過在resultMap里面配置association節點配置一對一的類就可以完成;

嵌套查詢是先查一個表,根據這個表里面的結果的外鍵id,去再另外一個表里面查詢數據,也是通過association配置,但另外一個表的查詢通過select屬性配置

###6.如果要查詢的表名和返回的實體Bean對象不一致,那你是怎么處理的?

在MyBatis里面最主要最靈活的的一個映射對象的ResultMap,在它里面可以映射鍵值對, 默認里面有id節點,result節點,它可以映射表里面的列名和對象里面的字段名. 并且在一對一,一對多的情況下結果集也一定要用ResultMap

###7.MyBatis里面的動態Sql是怎么設定的?用什么語法?

MyBatis里面的動態Sql一般是通過if節點來實現,通過OGNL語法來實現,但是如果要寫的完整,必須配合where,trim節點,

where節點是判斷包含節點有內容就插入where,否則不插入,trim節點是用來判斷如果動態語句是以and 或or開始,那么會自動把這個and或者or取掉

###8.MyBatis在核心處理類叫什么

MyBatis里面的核心處理類叫做SqlSession

###9.IBatis和MyBatis在細節上的不同有哪些

在sql里面變量命名有原來的#變量# 變成了#{變量} 原來的$變量$變成了${變量}, 原來在sql節點里面的class都換名字交type

原來的queryForObject queryForList 變成了selectOne selectList

原來的別名設置在映射文件里面放在了核心配置文件里

###10.講下MyBatis的緩存

MyBatis的緩存分為一級緩存和二級緩存,一級緩存放在session里面,默認就有,二級緩存放在它的命名空間里,

默認是打開的,使用二級緩存屬性類需要實現Serializable序列化接口(可用來保存對象的狀態),可在它的映射文件中配置<cache/>

###11.MyBatis(IBatis)的好處是什么

ibatis把sql語句從Java源程序中獨立出來,放在單獨的XML文件中編寫,給程序的

維護帶來了很大便利。

ibatis封裝了底層JDBC API的調用細節,并能自動將結果集轉換成Java Bean對象,大大簡化了Java數據庫編程的重復工作。

因為Ibatis需要程序員自己去編寫sql語句,程序員可以結合數據庫自身的特點靈活控制sql語句,

因此能夠實現比hibernate等全自動orm框架更高的查詢效率,能夠完成復雜查詢。 ###12.MyBatis里面怎么處理分頁

用插件分頁

###13.MyBatis里面怎么樣獲得剛插入的主鍵

把insert節點的useGeneratedKeys=true設置先生成主鍵,然后keyProperty="id",把生成的主鍵指向屬性.

###1. 為什么要用自定義標簽?

①Jsp中寫代碼比較混亂,難以維護

②把一些重復的功能都抽取出來,方便復用。

###2. 自定義標簽分為幾個步驟.

1.編寫標簽處理器類(SimpleTagSupport的實現類)

重寫doTag()

2.編寫標簽庫文件(WEB-INF/xxx.tld)

整個文件的定義: <short-name> <uri>

標簽的定義: <tag>

3.在jsp頁面使用標簽:

導入標簽庫(xxx.tld/)

使用標簽

###3. 自定義標簽類要繼承哪個類?

SimpleTagSupport類

sim·ple tag s?'p?rt

###4. 怎么配置自定義標簽的屬性

在.tld文件<tag>標簽中添加<attribute>,

通過<name>標簽設定自定義標簽的標簽名。 JSTL &EL的面試題部分

###5. 為什么要用EL表達式,有什么好處

1.在頁面中用js腳本和jsp表達式來獲取數據顯示比較麻煩

a:需要條件判斷

b:可能需要強轉

2.好處是EL表達式簡單易用,默認可訪問所有的JSP隱藏對象。

###6. EL表達式的語法是什么?

美元符號加大括號 ---> ${ EL表達式 }

###7. EL有哪兩種訪問格式,有什么區別?

EL 提供“.“和“[ ]“兩種運算符來存取數據。

當要存取的屬性名稱中包含一些特殊字符,如 . 或 - 等并非字母或數字的符號,就一定要使用“[ ]“。例如:

${ user. My-Name}應當改為${user["My-Name"]}

如果要動態取值時,就可以用“[ ]“來做,而“.“無法做到動態取值。例如: ${sessionScope.user[data]}中data 是一個變量。

###8. EL表達式中有哪些隱藏對象,舉幾個例子?

pageContext : JSP頁面的上下文

param : 參數

paramValues : 參數值

header : 頭信息

headerValues : 頭的值

cookie : 緩存

initParam : 初始化參數

###9. EL表達式中怎么樣拿到request,session里面的值?

例 :

可以通過它的隱藏對象RequestScope來獲取到Request范圍的屬性名稱所對應的值。 可以通過它的隱藏對象sessionScope來獲取到session范圍的屬性名稱所對應的值。

###10. EL表達式怎么樣拿到用戶請求的參數?

可以用${param.name} 來獲取用戶請求的參數

###11. EL表達式怎么樣得到上下文路徑?

${pageContext.request.contextPath}

###12. EL表達式怎么樣拿到request?

RequestScope

###13. JSTL全稱是什么?

java服務器頁面標準標簽庫

(JavaServer Pages Standard Tag Library)

###14. JSTL是怎么使用的?

將jstl.jar、standard.jar 復制到 Tomcat 的 WEB-INF/lib 中. 若要在 JSP 網頁中使用 JSTL 時,一定要先做下面這行聲明: < %@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

主要提供給 Java Web 開發人員一個標準通用的標簽函數庫。Web 程序開發人員能夠利用 JSTL 和 EL 來開發 Web 程序,

取代傳統直接在頁面上嵌入 Java 程序(Scripting)的做法,以提高程序可讀性、維護性和方便性。

###15. JSTL分為幾個標簽庫?

①核心標簽庫

②國際化標簽庫

③數據庫標簽庫

④XML標簽庫

⑤函數標簽庫

###16. JSTL里面判斷標簽是什么?

1. <c:if>

2. <c:choose>

<c:when></c:when>

<c:otherwise></c:otherwise>

</c:choose>

###17. JSTL里面的屬性是否可以從EL表達式獲取?

可以${xxxScope.attribute}

###18. JSTL里面的循環標簽有幾種,各是怎么用的?

1. <c:forEach> 用于迭代數字或集合;

2. <c:forTokens> 用于迭代字符串標記。

###19.怎么樣得到循環標簽里面的狀態值,譬如index,count等?

在forEach循環標簽中加入varStatus="s",然后直接用EL表達式: <c:forEach items="${atts}" var="item" varStatus="s">

<c:if test="${s.last}">

------

</c:if>

index:${s.index}<br/> count:${s.count}<br/> first:${s.first}<br/> last:${s.last}<br/> ${item}<br/><br/> </c:forEach>

###1.為什么要用自定義標簽

自定義標簽其實是一個Java類,他封裝了一些標簽代碼,形成一個

具有某個功能的新標簽。

1.增加了可擴展性。

2.增加了可復用性。

###2.自定義標簽分為幾個步驟.

1.創建標簽的處理類(Tag Handler Class)

2.創建標簽庫描述文件(Tag Library Descrptor File)

3.在JSP文件中引入標簽庫

###3.自定義標簽類要繼承那個類

TagSupport

###4.怎么配置自定義標簽的屬性

在.tld 文件里配置

集合類面試題

###1.請講下Java里面的容器

分兩大類,Map和Collection。而Collection又有子接口List

(數據存儲順序和插入順序是一樣的)、Set(里面的元素具有唯一性)

Map是存儲鍵值對的,里面的健不可以重復,但值可以重復 List主要有ArrayList和LinkedList兩種實現。實現的數據結構不同, 所以主要的區別也都是和數據結構相關的。 ArrayList基于數組,隨機訪問快, 而對于中間元素的插入刪除效率比較低,而且需要考慮擴容問題。 LinkedList,則 基于鏈表,和ArrayList提到的正相反,隨機訪問慢, 但對于中間元素的插入和刪除更有效率。 Set也是一種Collection,和List比起來主要體現在元素唯一性。

###2.請說下Iterator的作用

迭代器可以實現Collection接口的方法,可以一個一個地獲取集合中的元素 特性:在遍歷集合時 可判斷是否有下一個元素

###3.說下ArrayList和LinkedList的區別和聯系,并說明什么情況下用它們

區別:ArrayList用于對象的隨機訪問速度快,沒有順序

LinkedList實現機制是鏈表式的,和順序有關,速度比ArrayList慢

--->聯系:ArrayList和LinkedList都是List接口的實現類

當要快速獲取一個值時,用ArrayList,用于順序插入操作時,用LinkedList.

###4.說下List,Set,Map三種集合各有什么特征

List集合中的元素可以重復,

Set集合中的元素不可以重復

Map集合用鍵-值映射存放對象,Map容器中的鍵對象不能重復,值對象可以重復

###5.HashSet和TreeSet有什么區別,什么時候用它們

區別:HashSet中的元素不能重復,沒有順序

TreeSet中的元素不能重復,但有順序

當集合中的元素需要排序時,用TreeSet

一般情況下用HashSet,因為不需要排序,速度比TreeSet快

###6.什么是泛型,怎么使用的,有什么好處?

答案

泛型又分為:方法泛型和類泛型。

定義一個集合時,可以知道里面定義的是什么類型

使用:在集合類型后面加< 數據類型 >

使用泛型后,從集合中取得元素后就不用再用強轉

###7.什么是for each循環,它可以循環那些數據類型

答案

通過對象拿到集合里的值 可以用來循環集合和數組

###8.寫一個for each循環看看

for(Object object : list){

System.out.println(object);

}

###9. 什么是強轉怎么寫的,有什么優缺點,一般要多用還是少用,為什么?

一般在繼承的基礎上用. Person person=new Student(); Student student=(Student)person; 把運行期的強轉為編譯期的. 編譯期不會出錯.運行期容易出錯.所以一般少用

###10.HashMap和Hashtable有什么區別,一 般情況下常用那個?

HashMap的鍵-值都可以為空(null)

Hashtable的鍵-值都不可以為空(null),線程安全 ,

一般情況下用HashMap

###11.Hashtable名字為什么沒有駝峰命名

Hashtable的由來比較古老,當時還沒有命名規范

###12.Collections和Collection有什么區別

Collections是一個工具類,可以直接調用List和Set的方法

Collection是一個接口,是List和Set集合的父接口

###13.寫出Collections的6個方法,并詳細解釋

sort():對集合進行排序

shuffle():打亂集合中的元素順序

addAll():將一個集合添加到另一個集合中

max():判斷集合中的最大值

min():判斷集合中的最小值

copy():將一個集合中的元素復制到另一個集合中去

fill():將一個集合中的元素全部替換成指定的元素

###14.Arrays類是做什么的,寫出它的常用6個方法

Arrays是數組的一個工具類

sort():對數組進行排序

binarySearch():搜索數組指定元素的下標

copyOf():復制數組中指定長度的元素

deepEquals():比較兩個數組的深度

fill():把數組中的所有元素替換成指定元素

equals():比較指定兩個數組的元素是否相等

hashcode():將指定數組的指定范圍復制到一個新數組。

###15.比較下集合和數組的優缺點

集合是多個對象的容器,可以將不同數據類型的多個對象組織在一起

數組類型是有相同數據類型的數據集合,數組是很多語言都支持的底層數據結構,性能上是最高的

###16.如何對一個對象排序,有幾種方法

把對象放入List集合中,用Collections工具類調用sort()方法進行排序,

但是這個類必須實現Compareble接口才行

把對象放在Set集合中,用TreeSet()實現類對集合直接排序

###17.在集合里面怎么判斷兩個對象相等,要實現什么方法

重寫equals方法

###18.怎么樣把集合轉化成數組,或把數組轉化為集合

把集合轉為數組,可以用toArray()方法

把數組轉為集合時, for each循壞,先把數組中的元素轉為String型,再放到集合里

###19.分別寫出List,Set,Map里面的5個常用方法

List:

add()新增 clear()清除 contains()判斷是否包含某個元素

indexOf()一個元素在集合中首次出現的位置

set()把指定下標的元素替換成自定義元素

Set:

add()新增 clear()清除 contains()判斷是否包含某個元素

remove():把集合中指定下標的元素刪掉 size():返回集合長度 Map: containsKey()是否包含指定key containsValue()是否包含指定value keySet()返回所有key put()添加元素 Remove()移除

###20.HashMap與LinkedHashMap,和TreeMap的區別。

共同點:HashMap,LinkedHashMap,TreeMap都屬于Map的實現類.

不同點: 1.HashMap里面存入的鍵值對在取出的時候是隨機的,

TreeMap取出來的是排序后的鍵值對。但如果您要按自然順序或自定義順序遍歷鍵,那么TreeMap會更好。

LinkedHashMap 是HashMap的一個子類,如果需要輸出的順序和輸入的相同,那么用LinkedHashMap可以實現.

###21.HashMap怎么實現有序

可以轉化放入TreeMap里面,或者把key放入LinkedList里面。

###22.在List里面怎么去掉重復的數?

通過把List里面的數據放入HashSet可以去除重復

###23.在List里面有幾種排序?

答:兩種:實現Comparable<Article>接口,實現里面的CompareTo方法進行排序。 還有調用Collections.sort()方法排序!

###24.說一下鏈表跟數組的區別

鏈表:用一組任意儲存單元存放線性表的數據元素,并且通過指針鏈相接結點的序列稱為鏈表。

是一種常見的數據組織形式,它采用了動態分配內存的形式實現。

需要時可以用new分配內存空間,不需要時用delete將已分配的空間釋放, 不會造成內存空間的浪費。不靠數組實現,沒有下標。

數組必須事先定義固定的長度,不能適應數據動態增減的情況。當數據增加時,

可能超出原先定義的元素個數;當數據減少時,造成數據浪費。在使用的時候還要數組初始化,

注意數組的下標越界。

###25.HashSet的理解

HashSet實現了Set接口,HashSet不保證集合的迭代順序,允許使用Null元素。

HashSet的底層使用了HashMap,使用HashMap實列進行對集合的元素進行操作,然后再封裝成HashSet的操作。

###26.什么類可以實現有序存儲(除ArrayList以外)?

一種按照插入的順序排序,譬如LinkedList,LiskedHashMap,

另外一種是插入后重新排序TreeSet,TreeMap

###27.HashMap和ArrayList是不是都是線程不安全的?

ArrayList是線程不安全的;HashMap是線程不安全的; 還有我們常見的一些JAVA集合都是線程不安全,這樣做是為了提高性能

在JDK5以后提供了線程安全的并發包java.util.concurrent并發包,譬如里面的類CopyOnWriteArrayList,CopyOnWriteArraySet,ConcurrentHashMap等

###28.HashMap和TreeMap的區別?

TreeMap實現Map接口,能夠把它保存的記錄根據鍵排序,默認是按鍵值的升序排序, 也可以指定排序的比較器,當用Iterator 遍歷TreeMap時,得到的記錄是排過序的。 hashMap最多只允許一條記錄的鍵為Null,允許多條記錄的值為Null,hashMap不支持線程的同步,

即同一時刻可以有多個線程同時寫hashMap.可能會導致數據的不一致。 TreeMap不僅可以保持順序,而且可以用與排序。

HashMap通過hashcode對其內容進行快速查找,而TreeMap中所有的元素都保持著某種固定的順序,

如果你需要得到一個有序的結果你就使用TreeMap.

###29.ArrayList集合加入1萬條數據,應該怎么提高效率

因為ArrayList的底層是數組實現,并且數組的默認值是10,如果插入10000條要不斷的擴容,耗費時間,

所以我們調用ArrayList的指定容量的構造器方法ArrayList(int size) 就可以實現不擴容,就提高了性能

###30.你知道HashMap底層是怎么實現的嗎?

簡單的說是一個數組,因為數組的性能比較好,數組里面放的是Entry類,HashMap類有一個叫做Entry的

內部類。這個Entry類包含了key-value作為實例變量。當存儲或者獲取對象的時候, 就根據哈希算法,對象的hashCode調用得到這個下標,以便實現快速訪問.

###31.怎樣遍歷List Set,Map

List 和Set可以通過一般for循環,迭代器循環,或者增強型循環來遍歷, 其中一般for循環性能最快,

迭代器循環可以判斷和得到下一個值,for each增強型循環擴展性強,但性能稍低.

Map循環可以通過keySet得到Key的Set集合,然后遍歷這個集合就可以得到所有的Value

###32.Set為什么是不允許重復的。

set的實現機制不允許重復的

###33.ArrayList為什么要用for循環,為什么要用迭代器,又有什么好處。

for循環通過對象拿到集合里的值

迭代器可以實現Collection接口的方法,可以一個一個地獲取集合中的元素 在遍歷集合時 可判斷是否有下一個元素

###34.你對與隊 列了解多少你是怎么用的。

答:隊列是一種數據結構,FIFO 先進先出有點類似與棧,只是在隊列中第一個插入的數據項也會被最先刪除,

隊列的兩個基本操作:

一個是插入一個數據項,即把一個數據項放入隊尾

另一個是移除一個數據項,即移除隊頭的數據項.

###35.如果我要存取很多的數據,但是又不需要重復的,要選擇什么容器,說一下為什么使用它,它是哪個的子類?

答:Set容器,它是不允許重復的,它是collection的子類

###36.哪種方法可以得到Map的Key?

keySet()方法 面向對象的面試題部分

###1) 面向對象的優點?

答案

易擴展 易維護 面向對象是相對面向過程的

###2) 如何聲名一個靜態塊?

答案

在類中方法外聲明 static關鍵字+代碼塊

###3) 接口與抽象類的區別?

答案

類是單繼承的,但是可以實現多個接口

抽象類里的方法可以有實例方法也可以有抽象方法

接口里面只能有抽象方法。

!!!注意:關注一個事物的本質的時候,用抽象類;當你關注一個行為的時候,用接口。

###4) 用于類和接口的關鍵字

答案 定義類的是class,如類文件的開頭都是:public class 類名{ } 定義接口的是interface,如public interface 接口名{ } 用于實現接口的是implements。

###5) 如何創建數組?

答案 數組是new出來的 或者直接可以聲明, 舉個例子 String[] array={"1","2"}; 或者String[] array=new String[10];

###6) 如何創建一個構造方法對象的格式?要注意哪些?

答案

構造器是為了創建一個類的實例Platypus p1 = new Platypus();

注意:方法名與類名一致

###7) 類的組成 和執行順序

答案

屬性

方法

靜態塊

非靜態塊

執行順序: 先父類,后子類,靜態塊 靜態字段 非靜態塊 非靜態字段 構造器 方法

###8) main方法必須被什么修飾?

答案 方法名必須是main 是被public static void 修飾 傳入String數組

###9) 如何理解面向對象

答案

世間萬物皆對象,對象有具體的的實例化,任何方法或者屬性都要寫在對象(類)里面

###10) 構造方法可否能被重寫:

答案 構造方法不能被繼承,因此不能重寫,但能被重載。

###11) 靜態方法中能有靜態的變量嗎?

答案

不能 靜態變量是類變量 不可以定義在方法里

###12) String與StringBuffer的區別:

答案

String 是不可變的 可以直接使用它的方法 用來創建字符串

而 Stringbuffer無論怎么修改都是一個對象

如果在字符串改變,或者迭代改變的情況下Stringbuffer比String運行快

###13) 重載(overloading)與重寫(override)的區別:

答案

1.重載發生在同一個類。 重寫發生在父子類中。

2.重載參數簽名不同,而重寫相同且返回類型相同。

3.方法名相同,重寫override是父類與子類之間多態性的一種表現,重載overload是一個類中多態性的一種表現。

###14) (= =)與equals()的區別:

答案

如果是基本類型比較,那么只能用==來比較,不能用 equals 對象間的比較使用equals ==比較的是對象中的地址 而equals比較的對象 的內容

###15) Abstract與interface的區別:

答案

Abstract是用來聲明抽象類抽象方法,而interface是接口 抽象類可以有

變量,有方法的實現,接口內只能有常量和抽象方法

###16) StringBuilder和StringBuffer的區別:

答案 StringBuilder比StringBuffer更加快捷,但是StringBuilder線程不安全

###17) JRE,JDK,JVM分別是什么,它們有什么聯系:

答案

jre 運行時環境,jvm虛擬機 jdk java開發工具包 jvm是jre的一部分

###18) 普通類繼承抽象類為什么一定要重寫其中的抽象方法?

答案

必須要實現的,也就是要重寫,如果不實現,子類無法對象實例化。

###19) 什么是拆箱和裝箱?

答案

裝箱就是將基本類型轉換為對象類型

拆箱就是將對象類型轉換為基本類型。

###20) 繼承與實現的區別?

答案

繼承針對類,實現針對接口。

單繼承、多實現的。

實現要重寫接口里面的方法,而繼承不需要。

###21) Abstract為什么不能與,private,final,同時使用?

答案

抽象方法需要被子類重寫 所以不能夠用private final修飾

###24) 繼承最大好處?

答案 可以對父類的方法進行重用,節省時間

###25) 寫出String類常見的5個方法,并詳細解釋?

答案 indexOf()返回指定字符串在該字符串出現的序列 startsWith()判斷該字符串是否以指定字符開始 concat() 將指定字符串連接在該字符串的結尾 length()返回字符串的長度 substring返回該字符串從索引開始 結束于字符串末尾 或者指定索引的一個子字符串

###27) 普通方法的方法名可以與類名一致嗎?

答案

可以,構造器就是

###28) 在什么情況下局部變量會覆蓋全局變量?

答案

當局部變量名與全局變量名相同 類型相同

###29) static 修飾的方法可否支持多態?

答案

不支持多態,如果父類聲明一個對象,子類實現這邊變量,那么調用static修飾的時候會調用父類的,而不是子類的.

除了工具類。用static修飾的變量會發生一處改變則全部改變。

###30) 使用數組前應該注意的什么?

答案 數組下標是否越界 對數組進行初始化

###31) 如果一個類繼承了父類,父類里有一個靜態塊,子類里也有個靜態塊 ,對子類進行實例,父類的靜態塊先執行還是子類的先執行?

答案

父類的靜態塊先于子類的靜態塊的執行

###32) Java語言最大的特點?

答案 跨平臺性(一次編譯,多次執行)

###33) 請你說說byte short char之間可以互相轉換嗎?為什么?

答案

可以通過強轉

###34) 請說說引用和對象?

答案

對象和引用是分不開的,對象生成一個地址,引用則指向了這個地址

A a=new A();

a為引用 等號右邊的是對象

###35) 怎樣將一個String添加到另一個String的后面?

答案

(StringBuffer ,StringBuilder)的append方法

concat

###36) 有幾種數據類型?

答案

JAVA數據類型分基本數據類型和引用對象類型。

###37) 傳參有幾種類型?有幾種特殊類型?

答案

基本數據類型 引用對象類型

###38) 什么是匿名類,有什么好處

答案 匿名類沒有名字的類 ,封裝性好,比較安全用了一次便可以丟棄 接口不能new,但語法中的匿名類卻和new一個接口的的語法結構很相似。

###39) jar是什么格式的文件,有什么好處

答案

它允許將許多class文件組合成一個壓縮文件,方便管理class文件

###40) java和javac,javaw各有什么作用

答案 java:運行程序 javac:編譯java文件至class文件 javaw: 不需要打開dos窗口就可以運行

有興趣的可以看下 ssh的面試題

http://blog.csdn.net/my_name_nb/article/details/54866319


上一篇:jdbc一般步驟

下一篇:高精 + &amp; *

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: www久久久久久 | 欧美高清另类自拍视频在线看 | 国产免费片 | av电影免费在线 | 久久国产成人精品国产成人亚洲 | 成年人在线视频 | 久久精品视频7 | 国产午夜小视频 | 手机在线看片国产 | 色综av| 国产资源在线观看视频 | 在线观看国产一区二区 | 欧美一区在线观看视频 | 一级免费大片 | 黄色免费不卡视频 | 欧美成人免费 | 免费视频观看 | 亚洲射逼 | 国产免费小视频在线观看 | 福利一区二区三区视频在线观看 | 久久国产精品电影 | 国产精品入口夜色视频大尺度 | 免费午夜视频在线观看 | 国产美女一区二区在线观看 | 嫩草影院在线观看网站成人 | av影院在线播放 | 91一级毛片| 国产三级精品最新在线 | 九色新网址 | 日韩色视频| 午夜色视频在线观看 | 成人黄色网战 | 悠悠成人资源亚洲一区二区 | 欧美日韩亚洲成人 | 成年免费在线视频 | 午夜影视一区二区 | 国产一级一区二区三区 | 精品国产精品久久 | 亚洲第五色综合网 | 亚洲成人久久精品 | 国产一级毛片高清 |