1. 程式人生 > >java每次面試中的問題整理,java篇(詳解)

java每次面試中的問題整理,java篇(詳解)

Java集合框架是什麼,集合框架優點!

最初的java版本包含幾個集合類,Vector,Stack,HashTable,和Array.

Java1.2提出了囊括所有集合的介面,實現和演算法的集合框架。集合框架的部分優點↓

1,實現核心集合類降低開發成本.並非實現我們自己的集合類,

2,隨著使用經過嚴格測試的集合框架類,程式碼質量會得到提高,

3,通過使用JDK附帶的集合類,可以降低程式碼維護成本,

4,複用性和可操作性,

集合框架中泛型有什麼優點,

Java1.5引入的泛型,所有集合的實現都大量的使用它,泛型允許我們為集合提供一個可以容納的物件型別,如果新增其他型別的元素,會在編譯的時候報錯,避免了在執行時出現的類未找到異常(ClassCastException),泛型使程式碼更加整潔,不需要顯示轉換,和instanceOF操作符,同時也可以給執行帶來好處,因為不會產生型別檢查的位元組碼指令。

Java集合框架的基礎介面有哪些?

Collection為集合層次的根介面,一個集合代表一組物件,這些物件也就是他的元素,java平臺不提供任何介面的實現。

Set是一個不能包含重複元素的集合,這個集合對數學集合抽象進行建模,被用來代表集合,就像一副撲克牌。

List是一個有序的集合,可以包含重複的元素。你可以通過索引來訪問任何元素。List更像長度動態變換的陣列。

Map是將一個key對映到value的物件,一個Map不能包含重複的Key,每個Key最多對映一個value,

4.為何Collection不從Cloneable和Serializable介面繼承?

Collection介面指定一組物件,物件即為它的元素。如何維護這些元素由Collection的具體實現決定。

為什麼Iterator介面沒有具體的實現,

Iterator介面定義了遍歷集合的方法,但他的實現則是集合實現類的責任,每個能夠返回用於遍歷的iterator的集合類都有他自己的Iterator實現內部類。

為什麼Map介面不繼承Collection介面,

儘管Map介面和實現是集合框架的一部分,但Map不是集合,集合也不是Map所以Map繼承Collection毫無意義,

如果Map繼承collection那麼元素去哪裡?

Map以鍵值對的方式儲存資料,她提供抽取Key或Value列表集合的方法,他不符合一組物件的規範。

Iterator是什麼

Iterator介面提供遍歷任何collection的介面。迭代器允許呼叫者在迭代過程中移除元素。

Eunmeration和iterator介面的區別?

Enumeration的速度是iterator的兩倍,使用的記憶體少。

Enumeration非常基礎,也滿足了基礎的需要,但是

和Enumeration相比,iterator更加安全,因為當一個集合正在遍歷的時候,他會阻止其他執行緒去修改集合,

迭代器取代了Enumeration在JAVA集合中的地位,迭代器允許呼叫者在迭代過程中移除元素。而Enumeration不可以做到這一點。

為什麼沒有Iterator.add()這個方法向集合中新增元素,

Iterator協議不能確保迭代的次序,Listiterator沒有add操作是因為他要確保迭代的順序,

為什麼迭代器沒有一個方法可以直接獲取下一個元素,而不需要移動遊標,

他可以在當前iterator的頂層實現,但是他用的很少,如果把他加到介面中,每個繼承都需要去實現它,沒有意義,

Iterater和Listiterator之間有什麼區別,

1,iterater可以遍歷Set和List,而ListIterator只可以遍歷List.

2,Iterater只可以向前遍歷,而ListIterator可以雙向遍歷,

ListIterator繼承自Iterater,擴充套件了一些額外的功能,比如新增替換一個元素,獲取前面或者後面元素的索引位置。

遍歷List的方式

Listlist=new ArrayList();

For(String obj : list){

System.out.print(obj);

}

Iterator it=List.iterater();

While(it.hasNext()){

String obj=It.next();

System.out.println(obj);

}

迭代器是執行緒安全的,因為可以確保當前遍歷的集合被元素更改的時候,會丟擲ConcurrentModificationException

集合框架中通用演算法有哪些,

JAVA集合提供常用的演算法實現,比如排序和搜尋,Collections類包含這些演算法的實現,大部分演算法使操作List的,有一些演算法對所有集合都可以使用,比如排序,搜尋混編,最大最小值。

如何對一組物件進行排序

可以使用Arrays.sort();方法

如果排序物件列表可以使用Collection.sort();

或者Comparator的過載的方法,sort();

Collections內部使用陣列排序方法,效能相同,只是Collections需要花時間將列表,轉換為陣列。

Collections類是什麼?

Java.util.Collections是一個工具類,只包含靜態方法,他們操作或返回集合它包含操作集合的多型演算法,返回一個由集合指定的新集合和其他內容,這個類包含集合演算法的方法,比如折半搜尋,排序,混淆,和逆序等

哪些集合提供對元素的隨機訪問?

ArrrayList,HashMap,TreeMap,HashTable類提供對元素的隨機訪問。

哪些集合是執行緒安全的?

Vector,HashTable,Prop,erties,和Stack是同步類,是執行緒安全的,可以在多執行緒的環境下使用,

JAVA1.5併發API包括一些集合類,允許迭代時修改,因為他們都工作在集合的克隆上,所以他們在多執行緒環境中是安全的。

Array和ArrayList區別什麼時候更適合用Array?

Array可以容納基本型別和物件,ArrayList只能容納物件。

Array是指定大小的,而ArrayList大小是固定的。

Array沒有ArrayList功能多,比如addAll,removeAll,iterator等。儘管ArrrayList功能多,但有時 Array比較好用,

如果大小已經被指定,大部分情況下,是儲存和遍歷他們,

如果是多維陣列使用[][]比List<List<>>更容易

什麼時候用HashMap什麼時候用TreeMap?

HashMap適合進行插入,刪除,和定位這類操作。

TreeMap適合對Key進行遍歷

HashMap和HsahTable的區別?

1,HashMap允許key和value為空,HashTable不允許為空。

2,HashTable是同步的,而HashMap不是。所以HashMap適合單執行緒環境,HashTable適合多執行緒環境,

3,HashMap提供對Key和Set進行遍歷,因此他是fail-fast的,但是HashTable提供對key的Enumeration進行遍歷,他不支援fail-fast。

4,JAVA1.4中添加了LinkedHashMap,HashMap的一個子類,如果想要便利順序很容易從HashMap轉向LinkedHashMap,但是HashTable不是這個樣子,他的順序是不可預知的。

在迭代集合的時候,如何避免ConcurrentModificationException

遍歷一個集合時,我們可以使用併發集合來避免這個異常。

比如使用CopyOnWriteArrayList而不是ArrayList

HashCode()和equals()方法的重要性。

HashMap使用Key物件的HashCode()和equals()方法決定key-value對的索引.equals和hashCode的實現應該遵守規則。

例:o1.equals(o2)那麼o1.hashCode()==o2.hashCode()總是true.

O1.hashCode()==o2.hashCode(),並不意味o1.equals(o2)為true.

Map介面提供了哪些不同的集合檢視,

Set keyset():返回map中包含的所有key的一個Set檢視。
Collection values(),返回一個Map中包含所有value的一個Collection檢視。
Set<Map.Entry<K,V>>ebtrySet()返回一個map中包含對映的一個集合檢視。
從Map中移除對應的對映時,他們都不支援add和addAll操作。

佇列

關於集合的實踐

1,根據需要選擇正確的集合型別,比如,如果指定了大小,我會選Array並不是ArrayList,如果按照順序遍歷Map,我會用TreeMap,

如果不想重複,就用Set集合。

基於介面程式設計,而非基於實現程式設計,它允許我們後來輕易地改變實現。
總是使用型別安全的泛型,避免在執行時出現ClassCastException.
使用JDK提供的不可改變類,作為Map和Key可以避免自己實現hashCode()和equals();
儘可能的使用Collection工具類,或者獲取只讀,同步或者空的集合,而非編寫自己的實現,他將會提高程式碼的重用性,因為他有著,更好地穩定性,和可維護性。

對spring IOC 的理解

Ioc 就是控制反轉,不是一種技術,而是一種思想,將組建物件的控制器從程式碼本身轉移到外部容器。

ioc在執行中動態的向某個物件提供她所需要的物件,是通過依賴注入來實現的,

DI依賴注入:將類的建立和使用分開。

可以減少程式碼之間的耦合

依賴注入的方式

Set

Interface 介面

Constructor 構造

Ajax和javaScript的區別。

Ajax是一種建立互動式網頁應用的開發技術,其中使用的技術中包括javascript.

Javascript是一種在瀏覽器端執行的指令碼語言。

ajax是sun公司的,javascript是網景公司的,

Ajax 屬性

1.url:

要求為String型別的引數,傳送請求的地址。

2.type:

要求為String型別的引數,請求方式(post或get)預設為get

3.timeout:

要求為Number型別的引數,設定請求超時時間(毫秒)。此設定將覆蓋$.ajaxSetup()方法的全域性設定

dataType:

要求為String型別的引數,預期伺服器返回的資料型別。

Success回撥函式

3,jquery與JavaScript的區別

答:jquery 就對javascript的一個擴充套件,封裝,比javascript更好用,更簡單。jquery就是要用更少的程式碼,漂亮的完成更多的功能。
9、JSP的內建物件及方法

Request:取客戶端表單域資訊及cookie, header, 和session

response :對客戶端的響應返回文字、寫cookies。

Session:Session一個使用者多個頁面共享同一變數。

application:存放容器級的變數。

out:向客戶端列印html文字.

page :表示從該頁面產生的一個servlet例項

pageContext :當前jsp頁面的上下文環境,得到請求,響應等內建物件,

config:用於存取servlet例項的初始化引數。

exception:異常,當iserrorpage=true

json

json是一種資料傳輸格式。

json的型別:

model

{“name”:“aaa”,“age”,18}

list

[{“name”:“aaa”,“age”,18},{“name”:“aaa”,“age”,18}]

map

{“list1”:[{“name”:“aaa”,“age”,18},{“name”:“aaa”,“age”,18}],“list2”:[{“name”:“aaa”,“age”,18},

Get和post

一般瀏覽器輸入網址訪問資源都是通過get方式,在form表單提交中可以通過method指定提交方式,預設是get方式

最基本的方法有四種 分別是get,post,put,delete對應查,改,增,刪,

Get和post的區別

get用於檢視資源,

post一般用於更新操作,個人認為這是本質的區別,

String和 StringBuffer的區別

答:都是存字串,String類物件不可被修改, StringBuffer類可以被修改,使用append方法
46、String and StringBuffer的區別?

String:長度給定不可變,當多個字串聯合時要先轉為StringBuffer,再聯合,速度慢。

StringBuffer:長度可變,可以將多個字串值直接聯合,效率高
68、Java有沒有goto?

java中的保留字,現在沒有在java中使用。

48、集合的作用是什麼?

可以儲存資料,對資料進行增刪改查操作,可以存放不同型別的物件
49、集合的通用方法有那些?通用方法是什麼?(操作)

集合List 的遍歷方法有:

Iterator:

Enumeration

For

Get

set

Collection的通用方法有:

Iterator()

Add()

Clear();

remove()
50、說出ArrayList,Vector, LinkedList的儲存效能和特性HashMap和Hashtable的區別

ArrayList Vector:以陣列的方式儲存,增、刪慢,查、改快

   ArrayList:執行緒不安全,速度快

   Vector:執行緒安全,速度慢(synchoronized)

LikedList: 以單鏈表的方式儲存,增、刪快,查、改慢
51、Collection 和 Collections的區別。

Collection是集合的根介面,其下有set及list

Collections是集合的演算法。
52、Set裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==還是equals()? 它們有何區別?用contains來區分是否有重複的物件。還是都不用。

在比較時先呼叫hashCode方法,如果不相同,證明不相等。

如果相同,再呼叫equals方法,如果equals方法相同,證明相等,不相同,證明不相等。

==:主要用在基本資料型別及引用

Equals:主要是物件或物件引用的比較。

集合中是否包含某一個元素用contains來判斷。
53、List, Set, Map是否繼承自Collection介面?

List,set繼承於Collection

Map沒有繼承於Collection,其相對是獨立的。屬於Collection型別的物件,

Map可以通過建構函式將一個集合構造成另外一個集合。
54、面向物件的特徵有哪些方面

面向物件的特徵:抽象,封裝,繼承,多型

1.抽象:是將共有的屬性、方法放到父類中

2.繼承:是子類繼承於父類,具有父類的所有屬性與方法,可以重用,可以覆蓋。

3.封裝:是將屬性私有化,提供共有的get,set方法。

4.多型性:子類new父類,方法的重寫和過載

2,mybatis和hibernate的區別

答:1. 而mybatis是半自動框架。 hibernate是全自動框架,

 2. mybatis比hibernate的SQL靈活性高

 3. hibernate比mybatis擁有更完整的日誌系統

 4. hibernate資料庫移植性比mybatis好很多。

 5. mybatis相比hibernate更注重細節

 mybatis:小巧輕便、簡單、高效、半自動化

 hibernate:強大方便、複雜、高效、全自動化

Mysql關鍵字

最大max、最小min、平均avg、求和sum、是否重複distinct、統計行數count等查詢

%代表任意個任意的字元,可以是沒有

limit關鍵字優先順序:條件>排序>limit

什麼是SVN?

SVN=版本控制+備份伺服器。

他可以記住每次上傳到這個伺服器的檔案內容,並自動賦予每次變更一個版本號。

為什麼使用SVN?

1.備份工作檔案。萬一硬碟壞了,無法修復,放在這裡比放在硬盤裡安全。

2.版本控制。我們無法保證手中的最新版本永遠是對的。如果沒有做好版本控管,那麼,最差的情況就是要全部重來。

3.夥伴間的資料同步的重要性。很多時候,除了個人,工作夥伴也需要你的檔案。有一個統一的倉庫,方便傳輸和管理。

4.備份不同版本是很耗費硬碟空間的。單純的檔案備份,佔用空間會累加,

浪費記憶體

poi是什麼?

   比如在後臺新增商品的時候,怎麼整呢?不可能一條一條的新增,這個時候就用到了我們的poi。

   poi就是批量的操作檔案或資料的匯入以及匯出。

   我們一般採用的是用excel的方式將資訊匯入或匯出,

   //定義一個工作簿

   //建立一個sheet,名字簡單取為“111”

   讀取資料庫的資訊,採用的是使用jdbc工具類的方式

   //建立行

   //建立單元格。這裡是把資料庫的欄位寫到第一行單元格

   //迴圈將資料寫入到excel

   //輸出

SpringMVC原理圖

第一步:使用者發起請求到前端控制器(DispatcherServlet)

第二步:前端控制器請求處理器對映器(HandlerMappering)去查詢處理器(Handle):通過xml配置或者註解進行查詢

第三步:找到以後處理器對映器(HandlerMappering)像前端控制器返回執行鏈(HandlerExecutionChain)

第四步:前端控制器(DispatcherServlet)呼叫處理器介面卡(HandlerAdapter)去執行處理器(Handler)

第五步:處理器介面卡去執行Handler

第六步:Handler執行完給處理器介面卡返回ModelAndView

第七步:處理器介面卡向前端控制器返回ModelAndView

第八步:前端控制器請求檢視解析器(ViewResolver)去進行檢視解析

第九步:檢視解析器像前端控制器返回View

第十步:前端控制器對檢視進行渲染

第十一步:前端控制器向用戶響應結果

前端控制器(DispatcherServlet):接收請求,響應結果

處理器對映器(HandlerMapping):根據URL去查詢處理器

處理器(Handler):(需要程式設計師去寫程式碼處理邏輯的)

處理器介面卡(HandlerAdapter):會把處理器包裝成介面卡,這樣就可以支援多種型別的處理器

檢視解析器(ViewResovler):進行檢視解析,多返回的字串,進行處理,可以解析成對應的頁面

30
M-Model 模型(完成業務邏輯:有javaBean構成,service+dao+entity)
V-View 檢視(做介面的展示 jsp,html……)
C-Controller 控制器(接收請求—>呼叫模型—>根據結果派發頁面)

22、Spring MVC的優點:

1、易於通view框架無縫整合,採用IOC便於測試

2、典型的純MVC構架,Struts是不完全基於MVC框架的

3、與tapestry是純正的Servlet系統,(這也是相對於Struts的優勢)

12、jsp頁面中兩種跳轉方式分別是什麼?有什麼區別?

轉發: 保留上次的request

跳轉:不保留上次的request

13陣列有沒有length()這個方法? String有沒有length()這個方法?

陣列沒有length()這個方法,有length的屬性。

String有有length()這個方法。3

67、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

Math.round(11.5)12 Math.round(-11.5)-11 round方法返回與引數最接近的長整數,引數加1/2後求其floor.
78、兩個物件值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?

不對,有相同的hash code。

70、介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類(concrete class)?

介面可以繼承介面。抽象類可以實現(implements)介面,抽象類是否可繼承實體類,但前提是實體類必須有明確的建構函式。任何抽象類都是實際類Object的子類。

71 Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)?

匿名的內部類是沒有名字的內部類。不能extends(繼承) 其它類,但一個內部類可以作為一個介面,由另一個內部類實現。

55、String是最基本的資料型別嗎?

基本資料型別包括byte、int、char、long、float、double、boolean和short。

java.lang.String類是final型別的,因此不可以繼承這個類、不能修改這個類。為了提高效率節省空間,我們應該用StringBuffer類

java中8種資料型別所佔位元組數如下:

boolean 這個試編譯環境而定 
 
byte 1個位元組   8位
 
short 2個位元組  16位
 
char 2個位元組   16位
 
int 4個位元組    32位

float 4個位元組  32位
 
double 8個位元組 64位

long 8個位元組 64位

56、int 和 Integer 有什麼區別?

   Int是基本資料型別,不是物件,佔一個記憶體空間,沒有方法。與其同類的有long,char,doble

   Integer是封裝類,具有方法及屬性。與其同類的有Long,Double.Float

57、執行時異常與一般異常有何異同?

   執行時異常:java JVM丟擲的異常,程式碼中不用處理。

   一般異常:使用者丟擲的異常,如果用throws 聲明瞭,呼叫這個方法的程式碼必須對其處理。

abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?

都不能
抽象類和介面的區別

1 介面可以被多重實現,而抽象類只能被單一繼承

2 抽象類中可以有構造方法,普通方法和靜態方法。介面中只能有抽象方法,

3抽象類方法預設是public,protected 介面中訪問修飾符只能是public, 預設public static

4 抽象類裡可以定義常量和變數,而介面中只能定義常量
73、構造器Constructor是否可被override?

構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被過載Overloading。
74、是否可以繼承String類?

String類是final類故不可以繼承。

58、&和&&的區別?

   &:與: 左邊若為false右邊還執行。

   &&:短路與,左邊若為false右邊不執行。

75、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

switch(expr1)中,expr1是一個整數表示式。因此傳遞給 switch 和 case 語句的引數應該是 int、 short、 char 或者 byte。long,string 都不能作用於swtich。

SpringMVC 元件

DispatcherServlet:作為前端控制器,整個流程控制的中心,控制其它元件執行,統一排程,降低元件之間的耦合性,提高每個元件的擴充套件性。

HandlerMapping:擴充套件對映處理器實現不同的對映方式,例如:配置檔案方式,實現介面方式,註解方式等。

HandlAdapter:擴充套件處理器介面卡,支援更多型別的處理器。

ViewResolver:擴充套件檢視解析器,支援更多型別的檢視解析,例:jsp、pdf、excel等。

Springmvc題

  1. 講下SpringMvc和Struts1,Struts2的比較的優勢

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

講下SpringMvc的核心入口類是什麼,Struts1,Struts2的分別是什麼

SpringMVC是DispatchServlet,

Struts1是ActionServlet,

Struts2的是StrutsPrepareAndExecuteFilter

  1. SpringMvc的控制器是不是單例模式,如果是,有什麼問題,怎麼解決

是單例模式,所以在多執行緒訪問的時候有執行緒安全問題,不要用同步,會影響效能的

解決方案是在控制器裡面不能寫欄位

  1. SpingMvc中的控制器的註解一般用那個,有沒有別的註解可以替代

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

  1. @RequestMapping註解用在類上面有什麼作用

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

  1. 怎麼樣把某個請求對映到特定的方法上面

直接在方法上面加上註解@RequestMapping,並在這個註解裡面寫上要攔截的路徑

  1. 如果在攔截請求中,我想攔截get方式提交的方法,怎麼配置

可以在@RequestMapping註解裡面加上method=RequestMethod.GET

  1. 如果在攔截請求中,我想攔截提交引數中包含"type=test"字串,怎麼配置

可以在@RequestMapping註解裡面加上params=“type=test”

  1. 我想在攔截的方法裡面得到從前臺傳入的引數,怎麼得到

直接在形參裡面宣告這個引數就可以,但必須名字和傳過來的引數一樣

  1. 如果前臺有很多個引數傳入,這些引數都是一個物件的,那麼怎麼樣快速得到這個物件

直接在方法中宣告這個物件,SpringMvc就自動會把屬性賦值到這個物件裡面

  1. 怎麼樣在方法裡面得到Request,或者Session

直接在方法的形參中宣告request,SpringMvc就自動把request物件傳入

  1. SpringMvc中函式的返回值是什麼.

返回值可以有很多型別,有String, ModelAndView,當一般用String比較好

  1. SpringMvc怎麼處理返回值的

SpringMvc根據配置檔案中InternalResourceViewResolver的字首和字尾,用字首+返回值+字尾組成完整的返回值

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

在返回值前面加"forward:“就可以讓結果轉發,譬如"forward:user.do?name=method4” 在返回值前面加"redirect:“就可以讓返回值重定向,譬如"redirect:http://www.baidu.com

  1. SpringMvc用什麼物件從後臺向前臺傳遞資料的

通過ModelMap物件,可以在這個物件裡面用put方法,把物件加到裡面,前臺就可以通過el表示式拿到

  1. SpringMvc中有個類把檢視和資料都合併的一起的,叫什麼

叫ModelAndView

  1. 怎麼樣把ModelMap裡面的資料放入Session裡面

可以在類上面加上@SessionAttributes註解,裡面包含的字串就是要放入session裡面的key

  1. SpringMvc怎麼和AJAX相互呼叫的

通過Jackson框架就可以把Java裡面的物件直接轉化成Js可以識別的Json物件

具體步驟如下

1.加入Jackson.jar

2.在配置檔案中配置json的對映

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

  1. 當一個方法向AJAX返回特殊物件,譬如Object,List等,需要做什麼處理

要加上@ResponseBody註解
Windows 和Linux 的區別

1在收費方面兩個系統對個人使用者來說都是免費使用的.

2windows系統可以執行絕大多數的軟體以及遊戲,對硬體廠商幾乎百分百的支援,

Linux系統下可以直接執行的軟體和遊戲很少,很少有人會在linux系統下玩遊戲,

3在安全性方面我覺得是一樣的,windows系統的漏洞病毒多是因為使用者使用量多,

linux使用者少的病毒不會有優先考慮的,

4 linux對外部開放原始碼,

5windows主攻圖形介面,系統桌面容易使用,

Linux主攻字元模式執行,圖形介面只是附屬品,

6如果沒接觸過電腦

使用windows系統身邊找個上過網的都可以教你兩下,

如果是linux 系統 上網找文件教程吧,

其實沒什麼區別但是如果修電腦,修windows比修linux多,

ervlet簡介

Servlet是處理web請求的框架。沒有main方法,不可以獨立的執行,servlet的執行需要容器的支援,Tomcat是最常使用的JSP/servlet容器。

Servlet 執行在 Servlet 容器中,有容器管理servlet從建立到銷燬的的過程,

當用戶向servlet傳送請求的時候,servlet容器會建立相對應的servletRequest和servletResponce兩個物件,然後呼叫service方法,方法從物件獲得客戶資訊,處理請求,向客戶返回響資訊。

Servlet的生命週期

1、當servlet被部署在應用伺服器中(應用伺服器中用於管理Java元件的部分被抽象成為容器)以後,由容器控制servlet的生命週期。

2、除非特殊制定,否則在容器啟動的時候,servlet是不會被載入的,servlet只會在第一次請求的時候被載入和例項化。
3、servlet一旦被載入,一般不會從容器中刪除,直至應用伺服器關閉或重新啟動。但當容器做記憶體回收動作時,servlet有可能被刪除。也正是因為這個原因,第一次訪問servlet所用的時間要大大多於以後訪問所用的時間。

什麼是servlet

Servlet是web端的處理web請求的框架。

每一個servlet都有doGet doPost service方法。

doGet方法處理get請求。

doPost方法處理Post請求。

service 可以處理get和post請求。

每個方法都有2個引數 httpSerlvetRequest(處理請求),httpServletResponse(處理相應的)這兩個引數的使用需要一個jar包 servlet-api.jar

存servlet的專案結構

entity實體類

dao 資料訪問層

service 業務邏輯層

servlet/web 請求層。

private int i,j;

servlet是單例的,springmvc也是單例的 正是因為Servlet和springmvc都是單例的,所以有資源競爭問題。不建議在類中定義全域性變數。

Servlet的例項過程一般如下:

當伺服器接收一個客戶端請求時,需要做一下四件事情。

(1) 載入和例項化

如果Servlet容器還沒例項化一個Servlet物件,此時容器裝載和例項化一個 Servlet。創建出該 Servlet 類的一個例項。如果已經存在一個Servlet物件,此時不再建立新例項。

初始化
在產生 Servlet 例項後,容器負責呼叫該 Servlet 例項的 init() 方法,在處理使用者請求之前,來做一些額外的初始化工作。
(3) 處理請求
當 Servlet 容器接收到一個 Servlet 請求時,便執行與之對應的 Servlet 例項的 service() 方法,service() 方法根據使用者的請求呼叫相對應的doGet或doPost 方法來處理使用者請求。然後再進入對應的方法中呼叫邏輯層的方法,實現對客戶的響應。
(4) 銷燬
當 Servlet 容器決定將一個 Servlet 從伺服器中移除時 ( 如 Servlet 檔案被更新 ),便呼叫該 Servlet 例項的 destroy() 方法,在銷燬該 Servlet 例項之前,來做一些其他的工作。

5、如何實現一個自定義的servlet?

extends HttpServlet 並覆蓋doPost或doGet方法

在web.xml中進行部署

Servlet的生命週期是什麼?

載入例項化

Init

Service多次執行doGet或doPost

destroy

JSP中的三種Java指令碼

1.<%…%>:該指令碼中寫的是java程式碼,但是這裡面不能定義類、方法以及成員變數。

2.<%=…%>:該指令碼用來輸出,書寫的是java的表示式

3.<%!..%>:該指令碼用來宣告,例如宣告類的成員變數和成員方法。

13、描述JSP和Servlet的區別、共同點、各自應用的範圍

Jsp主要在於頁面的顯示動態生成頁面,可以與html標記一起使用,其還是要生成為一個servlet。

Servlet:主要是控制的處理,如呼叫業務層,跳轉不同的jsp頁面。

MVC:

          Jsp:V

          Servlet:C

          JavaBean:M

↑已經面試過的知識點


給我一個你最常見到的runtime exception

ArithmeticExceptio 算術異常類

ArrayIndexOutOfBoundsException 陣列下標越界異常類

ArrayStoreException 陣列型別不相容異常

ClassCastException 型別強制轉換異常類

ClassNotFoundException 未找到相應類異常

FileNotFoundException 檔案未找到異常類

IOException 輸入輸出異常類

NegativeArraySizeException 建立元素個數為負數的陣列異常類

NullPointerException 空指標異常類

NumberFormatException 字串轉換為數字異常類

NoSuchFieldException 欄位未找到異常類

NoSuchMethodException 方法未找到異常類

SQLException 操作資料庫異常類

StringIndexOutOfBoundsException 字串索引超出範圍異常

IndexOutOfBoundsException 物件(陣列或字串)的索引超出範圍時丟擲

ArrayStoreException, 陣列型別不相容異常,

BufferOverflowException,

BufferUnderflowException,

CannotRedoException,

CannotUndoException,

CMMException,

ConcurrentModificationException,

DOMException,

EmptyStackException,

ImagingOpException,

IndexOutOfBoundsException,

MissingResourceException,

NegativeArraySizeException,

NoSuchElementException,

NullPointerException,

ProfileDataException,

ProviderException,

RasterFormatException,

SecurityException,

SystemException,

一般異常:

IOException

FileNotFoundException

SqlException

super()與this()的區別?

This():當前類的物件,super父類物件。

Super():在子類訪問父類的成員和行為,必須受類繼承規則的約束

而this他代表當前物件,當然所有的資源都可以訪問.

在建構函式中,如果第一行沒有寫super(),編譯器會自動插入.但是如果父類沒有不帶引數的建構函式,或這個函式被私有化了(用private修飾).此時你必須加入對父類的例項化構造.而this就沒有這個要求,因為它本身就進行例項化的構造.
而在方法中super和this使用的方法就差不多了.只不過super 要考慮是否能訪問其父類的資源.

作用域public,protected,private,以及不寫時的區別?

Public:不同包、同一包、類內都可用
Private:類內
Protected: 不同包的子類、同一包、類內都可用
不寫時:同一包內、類內

程式設計輸出如下圖形。



程式碼如下:

public class Print {

public static void main(String[] args) {

   for (int i = 0; i < 5; i++) {

       for (int j = 5; j > i; j--) {

          System.out.print("*");

       }

       System.out.println();

   }

}

}

在JAVA中,如何跳出當前的多重巢狀迴圈?

用break; return 方法。

什麼是java序列化,如何實現java序列化?(寫一個例項)

序列化:

處理物件流的機制,所謂物件流也就是將物件的內容進行流化。可以對流化後的物件進行讀寫操作,也可將流化後的物件傳輸於網路之間。序列化是為了解決在對物件流進行讀寫操作時所引發的問題。

序列化的實現:

將需要被序列化的類實現Serializable介面,該介面沒有需要實現的方法,implements Serializable只是為了標註該物件是可被序列化的,然後使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(物件流)物件,接著,使用ObjectOutputStream物件的writeObject(Object obj)方法就可以將引數為obj的物件寫出(即儲存其狀態),要恢復的話則用輸入流。

JAVA的事件委託機制和垃圾回收機制

java 事件委託機制的概念,一個源產生一個事件並將它送到一個或多個監聽器那裡。在這種方案中,監聽器簡單的等待,直到它收到一個事件。一旦事件被接受,監聽器將處理這個事件,然後返回。

垃圾回收機制 垃圾收集是將分配給物件但不再使用的記憶體回收或釋放的過程。如果一個物件沒有指向它的引用或者其賦值為null,則次物件適合進行垃圾回收

38、垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收記憶體嗎?有什麼辦法主動通知虛擬機器進行垃圾回收?

動態記憶體:存放類例項

靜態記憶體:類本身

垃圾收集主要針對的是動態記憶體,一般當記憶體不夠用時會進行垃圾收集。

或通過System.gc()或者Runtime.getRuntime().gc()手動收集,但不保證一定執行。
65、GC是什麼? 為什麼要有GC?

GC是垃圾收集的意思(Gabage Collection),記憶體處理是程式設計人員容易出現問題的地方,忘記或者錯誤的記憶體回收會導致程式或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測物件是否超過作用域從而達到自動回收記憶體的目的,Java語言沒有提供釋放已分配記憶體的顯示操作方法。
84、垃圾回收的優點和原理。並考慮2種回收機制。

優點:

程式設計師不用擔心記憶體管理,因為垃圾收集器會自動進行管理,開發方便。執行優先非常低,程式無法清楚例項什麼時候被消毀。

85、描述一下JVM載入class檔案的原理機制?

JVM中類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader 是一個重要的Java執行時系統元件。它負責在執行時查詢和裝入類檔案的類。

MySQL資料庫

關於mysql中的drop delete 和 truncate 的區別

1)drop 刪除的是表,delete和truncate刪的是表中的資料,重新插入資料id從1開始自增。delete刪除資料的時候可以加where關鍵字

2)delete刪除資料的時候刪除的是一行,將刪除的操作儲存在日誌中,以便回滾操作;

truncate table 是一次性從表中刪除所有資料,該操作不儲存在日誌中,刪除行不能恢復。刪除過程中不會觸發與表有關的刪除觸發器,執行速度快。

3)表被 truncate刪除時,索引佔用的空間恢復成初始大小,

    delete刪除時不會減小索引佔用空間,

    drop  刪除釋放索引佔用空間。

4)一般來說 drop > truncate > delete

5)應用範圍 truncate對錶,delete 對錶和檢視。

6)truncate 和delete刪除的是資料,drop刪除的是表的結構和資料。

7)truncate和不帶where的delete只能刪除資料,不能刪表的結構,

drop刪除的是表的,結構,資料,約束,觸發器,索引,依賴的儲存過程函式被保留

其狀態改為invalid.

8)truncate drop 是 DLL操作立即生效,資料不能回滾,

delete 是DML,操作會放到rollback中,事務提交後生效,相應的tigger會被觸發。

9)謹慎使用drop, truncate,一般使用delete和where的組合,刪除表用drop,刪除和事務無關的資料用truncate,想觸發tigger用delete。

10)truncate 比delete速度快速度快,效率高,

11)trancate 刪除表中的資料,結構,列,約束。索引等保持不變,

12)有外來鍵約束的表不可以使用truncate 應使用不帶where子句的delete語句,teuncate 不記錄在日誌中,所以不能啟用觸發期。

一、設計資料庫的步驟

1.需求分析階段

2.概要設計階段

3.詳細設計階段

二、資料庫的實體類中間的關係 paga8

*1:1 一對一 主鍵

*1:N 一對多 一所大學對應多個老師或者學生

*M:N 多對多 老師和學生

三、規範設計

第一正規化:確保每列的原子性

第二正規化:在第一正規化的基礎上,確保表中每列都和主鍵間接相關;

第三正規化:在第二正規化的基礎上,確保表中每列都和主鍵直接相關;

四、資料庫的實現

一個完整的資料庫包括三部分:至少包含主檔案和日誌檔案

1主資料檔案【.MDF】

2次要資料檔案【.ndf】

3日誌檔案【.ldf】

約束的目的:

1實體完整性

2域完整性

3引用完整性

4自定義完整性

常用約束型別

1主鍵約束

2非空約束

3唯一約束

4檢查約束

5預設約束

6外來鍵約束

約束的語法

新增約束: Add constraint 約束名 約束型別 具體的約束說明

刪除約束:drop constraint 約束名

五、資料庫變數的使用

區域性變數: 以@為字首標記 例如 @err

全域性變數: 以@@為字首 例如:@@error

輸出語句:print

1.資料型別轉換:

1CAST(表示式 as 資料型別)

2CONVERT(資料型別[(長度)],表示式[樣式])

2.邏輯控制語句

1順序結構: begin end

2分支結構:if else case end

3迴圈結構: while

3.使用GO 來分割查詢單元

*資料庫事務

什麼是事務?

是一種機制,一個操作序列。

要麼都執行,要麼都不執行

特點:

1原子性

2一致性

3隔離性

4永續性

語法:

begin transaction 開始事務

commi transaction 提交事務

roback transaction 回滾事務

定義常量:

declare

(二)檢視

定義:

是一個虛擬的表,通常用來檢視一個或多張表中的資料

檢視的3種操作:

1篩選表中的行;

2防止未經許可的使用者訪問敏感資料

3將多個物理資料表抽象為一個邏輯資料表

注意事項:

1每個檢視可以查詢多個表

2檢視可以巢狀檢視

3不能包含 order by 子句,不能包含into,不能引用臨時表或表變數

(三)索引

索引的分類:

*唯一索引:不允許兩行具有相同的索引值;

*主鍵索引:要求主鍵中的每個值是非空的唯一的;

*聚集索引:一個表只能包含一個聚集索引

*非聚集索引:一個表可以有多個

*複合索引

*全文索引

語法:

建立索引:

CREATE INDEX INDEX_NAME ON TABLE_NAME(列名)

刪除索引:

DROP INDEX TABLE_NAME.INDEX.NAME

*學習XML

節點:

1成對出現

2區分大小寫

3是一種標記語言

mybatis介紹

是一個持久層的orm框架

orm是什麼? object relational mapping 物件關係對映。

特點:輕量,小巧,簡單,易學。
9 Spring 應用框架技術
1、Spring和Struts的區別?
strusts:是一種基於MVC模式的一個web層的處理。

   Spring:提供了通用的服務,ioc/di aop,關心的不僅僅web層,應當j2ee整體的一個服務,可以很容易融合不同的技術struts hibernate ibatis ejb remote springJDBC springMVC

2、什麼是aop,aop的作用是什麼?

Oop:縱向的業務

Aop:oop的一個橫向的服務,是對oop進一步的補充,提供安全、事務、日誌等的集中式處理,相關的裝備before、around、after exception
3、aop中的關鍵名詞有些那些,相互關係是什麼?

攔截器: 代理

裝備(advice)

目標物件

關切點:條件

連線點:方法、屬性
4、依賴注入的方式有幾種,各是什麼?

Setter

Interface

constructor
5、spring中的核心類有那些,各有什麼作用?

BeanFactory:產生一個新的例項,可以實現單例模式

BeanWrapper:提供統一的get及set方法

ApplicationContext:提供框架的實現,包括BeanFactory的所有功能
6、ApplicationContext的作用

beanFactory

國際化(getMesage)

資源管理:可以直接讀取一個檔案的內容(getResource)

加入web框架中(加入一個servlet或監聽器)

事件處理
7、如何實現資源管理

使用

applicationContext.getResource(“classpath:檔名”):在src根目錄下,在類路徑下

applicationContext.getResource(“classpath:/chap01/檔名”): 以src根目錄下的基準往下走。

applicationContext.getResource(“file:c:/a.properties”):在系統檔案目錄下。
8、如何實現加入web框架中

在web.xml中加入如下同容,在啟動web伺服器時載入/WEB-INF/applicationContext.xml中的內容。

context

org.springframework.web.context.ContextLoaderServlet

1

通過如下類得到ApplicationContext例項

                 WebApplicationContextUtils.getWebApplicationContext

9、如何實現事件處理

事件

          Extends ApplicationEvent

監聽器

          Implements ApplicationListener

事件源

          Implements ApplicationContextAware

在applicationContext.xml中配置事件源、監聽器

先得到事件源,呼叫事件源的方法,通知監聽器。
10、spring的ioc及di代表什麼意思?

Ioc:程式在執行過程中,根據配置檔案動態載入所依賴的配置類
、如何在spring中實現國際化?

 在applicationContext.xml載入一個bean

          <property name="basename">

                 <value>message</value>

          </property>

 在src目錄下建多個properties檔案

 對於非英文的要用native2ascii -encoding gb2312 源 目轉化檔案相關內容

 其命名格式是message_語言_國家。

 頁面中的中顯示提示資訊,鍵名取鍵值。

 當給定國家,系統會自動載入對應的國家的properties資訊。

 通過applictionContext.getMessage(“鍵名”,”引數”,”區域”)取出相關的資訊。
12、spring的配置的主要標籤是什麼?有什麼作用?

                 <bean id=”” class=”” init=”” destroy=”” singleton=””>

                        <property name=””>

                               <value></value>

                        </property>

                        <property name=””>

                               <ref local></ref>

                        </property>

                 </bean>
13、spring與ejb2.0的事務管理比較的優缺點?

測試:

                 Spring:pojo

                 Ejb:二個介面一個類,一堆配置檔案

事務型別

                 Spring:jdbc jta  hibernate

                 Ejb:jta

成本

             Spring:普通容器(tomcat jboss)

             Ejb:weblogic jboss

開發的週期:

                 Spring遠比ejb快.

14、spring的jdbc與傳統的jdbc有什麼區別,其核心類有那些?

Spring的jdbc:節省程式碼,不管連線(Connection),不管事務、不管異常、不管關閉(con.close() ps.close )

JdbcTemplate(dataSource):增、刪、改、查

TransactionTemplate(transactionManager):進行事務處理
15、在spring中有幾種事務管理,分別是什麼?

程式碼管理的事務處理

TransactonTemplate的execute方法中的內部類TransactionCallback中的doInTransaction方法中使用。

public void make()

   {    

          TransactionTemplate jtm=new TransactionTemplate(this.getTransactionManager());

          jtm.execute(new myClass1());

   }

   public class myClass1 implements TransactionCallback

   {



          public Object doInTransaction(TransactionStatus trans)

          {

                 JdbcTemplate jdbc=new JdbcTemplate(dataSource);

                 jdbc.execute("insert into customer(customerName) values('b')");

                 jdbc.execute("insert into customer(customerName) values('b')");

                 return null;

          }           

   }

                 容器管理的事務處理

16、在spring中如何配程式碼的事務管理?

Datasouce

                 transactionManager

                 userDao要注入

                        Datasouce

                        transactionManager

          通過如下類實現

                        TransactionTemplate

                        JdbcTemplate

17、在spring中如何配容器的事務管理,相關的類有那些?

Datasource

transactionManager

userDao要注入

Datasouce

Proxy代理

Target:userDao:代理物件(目標物件)

transactionAttributes(那些方法需要事務處理)

transactionManager(事務處理服務)
18、如果spring與hibernate結合在一起可以不需要hibernate.cfg.xml檔案是否正確?

不需要
19、spring+hibernate的配置檔案中的主要類有那些?如何配置?

在myeclipse中先加入spring環境再加入hibernate環境。

   如果spring與hibernate結合在一起可以不需要hibernate.cfg.xml檔案是否正確?

   spring+hibernate的配置檔案中的主要類有那些?如何配置?

          dataSource

          sessionFactory:hibernate.cfg.xml

          transactionManager

          userDao (extends HibernateDaoSupport) 

                 sessionFactory

          facade

          proxy

                 sessionFactory

                 transactionManager

                 facade

20、spring+hibernate的程式碼實現中,對於實現類一定繼承於一個類是那一個,它有什麼作用。

extends HibernateDaoSupport,可以節省程式碼。
21、如何配置spring+struts?

 在struts-config.xml加入一個外掛,通過它載入applicationContext.xml

 在struts-config.xml修改action-mapping標記,具體action交給了DelegateActionProxy

 通過DelegateActionProxy進入一spring的環境。

 在spring的applicationContext.xml加入
22、如何在web環境中配置applicationContext.xml檔案?

          <listener-class>

                 org.springframework.web.context.ContextLoaderListener

          </listener-class>

   </listener>

   或:

   <servlet>

          <servlet-name>context</servlet-name>

                 <servlet-class>

                        org.springframework.web.context.ContextLoaderServlet

                 </servlet-class>

          <load-on-startup>1</load-on-startup>

   </servlet>

   通過如下方法取出applicationContext例項:

   ApplicationContext ac=WebApplicationContextUtils.getWebApplicationContext(this.getServletContext);

24、Jsf和spring的區別?
jsf:是一種基於MVC模式的一個web層的處理,粒度較struts較細。

   Spring:提供了通用的服務,ioc/di aop,關心的不僅僅web層,應當j2ee整體的一個服務,可以很容易融合不同的技術struts hibernate ibatis ejb remote springJDBC springMVC

9 Spring 應用框架技術
1、Spring和Struts的區別?
strusts:是一種基於MVC模式的一個web層的處理。

   Spring:提供了通用的服務,ioc/di aop,關心的不僅僅web層,應當j2ee整體的一個服務,可以很容易融合不同的技術struts hibernate ibatis ejb remote springJDBC springMVC

2、什麼是aop,aop的作用是什麼?

Oop:縱向的業務

Aop:oop的一個橫向的服務,是對oop進一步的補充,提供安全、事務、日誌等的集中式處理,相關的裝備before、around、after exception
3、aop中的關鍵名詞有些那些,相互關係是什麼?

攔截器: 代理

裝備(advice)

目標物件

關切點:條件

連線點:方法、屬性
4、依賴注入的方式有幾種,各是什麼?

Setter

Interface

constructor
5、spring中的核心類有那些,各有什麼作用?

BeanFactory:產生一個新的例項,可以實現單例模式

BeanWrapper:提供統一的get及set方法

ApplicationContext:提供框架的實現,包括BeanFactory的所有功能
6、ApplicationContext的作用

beanFactory

國際化(getMesage)

資源管理:可以直接讀取一個檔案的內容(getResource)

加入web框架中(加入一個servlet或監聽器)

事件處理
7、如何實現資源管理

使用

applicationContext.getResource(“classpath:檔名”):在src根目錄下,在類路徑下

applicationContext.getResource(“classpath:/chap01/檔名”): 以src根目錄下的基準往下走。

applicationContext.getResource(“file:c:/a.properties”):在系統檔案目錄下。
8、如何實現加入web框架中

在web.xml中加入如下同容,在啟動web伺服器時載入/WEB-INF/applicationContext.xml中的內容。

context

org.springframework.web.context.ContextLoaderServlet

1

通過如下類得到ApplicationContext例項

                 WebApplicationContextUtils.getWebApplicationContext

9、如何實現事件處理

事件

          Extends ApplicationEvent

監聽器

          Implements ApplicationListener

事件源

          Implements ApplicationContextAware

在applicationContext.xml中配置事件源、監聽器

先得到事件源,呼叫事件源的方法,通知監聽器。
10、spring的ioc及di代表什麼意思?

Ioc:程式在執行過程中,根據配置檔案動態載入所依賴的配置類
、如何在spring中實現國際化?

 在applicationContext.xml載入一個bean

          <property name="basename">

                 <value>message</value>

          </property>

 在src目錄下建多個properties檔案

 對於非英文的要用native2ascii -encoding gb2312 源 目轉化檔案相關內容

 其命名格式是message_語言_國家。

 頁面中的中顯示提示資訊,鍵名取鍵值。

 當給定國家,系統會自動載入對應的國家的properties資訊。

 通過applictionContext.getMessage(“鍵名”,”引數”,”區域”)取出相關的資訊。
12、spring的配置的主要標籤是什麼?有什麼作用?

                 <bean id=”” class=”” init=”” destroy=”” singleton=””>

                        <property name=””>

                               <value></value>

                        </property>

                        <property name=””>

                               <ref local></ref>

                        </property>

                 </bean>
13、spring與ejb2.0的事務管理比較的優缺點?

測試:

                 Spring:pojo

                 Ejb:二個介面一個類,一堆配置檔案

事務型別

                 Spring:jdbc jta  hibernate

                 Ejb:jta

成本

             Spring:普通容器(tomcat jboss)

             Ejb:weblogic jboss

開發的週期:

                 Spring遠比ejb快.

14、spring的jdbc與傳統的jdbc有什麼區別,其核心類有那些?

Spring的jdbc:節省程式碼,不管連線(Connection),不管事務、不管異常、不管關閉(con.close() ps.close )

JdbcTemplate(dataSource):增、刪、改、查

TransactionTemplate(transactionManager):進行事務處理
15、在spring中有幾種事務管理,分別是什麼?

程式碼管理的事務處理

TransactonTemplate的execute方法中的內部類TransactionCallback中的doInTransaction方法中使用。

public void make()

   {    

          TransactionTemplate jtm=new TransactionTemplate(this.getTransactionManager());

          jtm.execute(new myClass1());

   }

   public class myClass1 implements TransactionCallback

   {



          public Object doInTransaction(TransactionStatus trans)

          {

                 JdbcTemplate jdbc=new JdbcTemplate(dataSource);

                 jdbc.execute("insert into customer(customerName) values('b')");

                 jdbc.execute("insert into customer(customerName) values('b')");

                 return null;

          }           

   }

                 容器管理的事務處理

16、在spring中如何配程式碼的事務管理?

Datasouce

                 transactionManager

                 userDao要注入

                        Datasouce

                        transactionManager

          通過如下類實現

                        TransactionTemplate

                        JdbcTemplate

17、在spring中如何配容器的事務管理,相關的類有那些?

Datasource

transactionManager

userDao要注入

Datasouce

Proxy代理

Target:userDao:代理物件(目標物件)

transactionAttributes(那些方法需要事務處理)

transactionManager(事務處理服務)
18、如果spring與hibernate結合在一起可以不需要hibernate.cfg.xml檔案是否正確?

不需要
19、spring+hibernate的配置檔案中的主要類有那些?如何配置?

在myeclipse中先加入spring環境再加入hibernate環境。

   如果spring與hibernate結合在一起可以不需要hibernate.cfg.xml檔案是否正確?

   spring+hibernate的配置檔案中的主要類有那些?如何配置?

          dataSource

          sessionFactory:hibernate.cfg.xml

          transactionManager

          userDao (extends HibernateDaoSupport) 

                 sessionFactory

          facade

          proxy

                 sessionFactory

                 transactionManager

                 facade

20、spring+hibernate的程式碼實現中,對於實現類一定繼承於一個類是那一個,它有什麼作用。

extends HibernateDaoSupport,可以節省程式碼。
21、如何配置spring+struts?

 在struts-config.xml加入一個外掛,通過它載入applicationContext.xml

 在struts-config.xml修改action-mapping標記,具體action交給了DelegateActionProxy

 通過DelegateActionProxy進入一spring的環境。

 在spring的applicationContext.xml加入
22、如何在web環境中配置applicationContext.xml檔案?

          <listener-class>

                 org.springframework.web.context.ContextLoaderListener

          </listener-class>

   </listener>

   或:

   <servlet>

          <servlet-name>context</servlet-name>

                 <servlet-class>

                        org.springframework.web.context.ContextLoaderServlet

                 </servlet-class>

          <load-on-startup>1</load-on-startup>

   </servlet>

   通過如下方法取出applicationContext例項:

   ApplicationContext ac=WebApplicationContextUtils.getWebApplicationContext(this.getServletContext);

24、Jsf和spring的區別?
jsf:是一種基於MVC模式的一個web層的處理,粒度較struts較細。

   Spring:提供了通用的服務,ioc/di aop,關心的不僅僅web層,應當j2ee整體的一個服務,可以很容易融合不同的技術struts hibernate ibatis ejb remote springJDBC springMVC

2、hibernate的核心配置檔案是什麼及其作用?

Hibernate.cfg.xml:資料庫連線、指定相關的對映檔案
3、hibernate的核心類是什麼,它們的相互關係是什麼?重要的方法是什麼?

Configuration

SessionFactory

Session如下方法

                 Save

                 load

                 Update

                 Delete

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

                 beginTransaction

                 close

                 Transaction

                 Commit()       

5、hibernate中的one-to-many或many-to-one中常用的方式是什麼?

主控方在many這邊,不級聯刪除

27、Request物件的主要方法:

setAttribute(String name,Object):設定名字為name的request的引數值

getAttribute(String name):返回由name指定的屬性值

getAttributeNames():返回request物件所有屬性的名字集合,結果是一個列舉的例項

getCookies():返回客戶端的所有Cookie物件,結果是一個Cookie陣列

getCharacterEncoding():返回請求中的字元編碼方式

getContentLength():返回請求的Body的長度

例項

getInputStream():返回請求的輸入流,用於獲得請求中的資料

getMethod():獲得客戶端向伺服器端傳送資料的方法

getParameter(String name):獲得客戶端傳送給伺服器端的有name指定的引數值

getParameterNames():獲得客戶端傳送給伺服器端的所有引數的名字,結果是一個列舉的例項

getParameterValues(String name):獲得有name指定的引數的所有值

getProtocol():獲取客戶端向伺服器端傳送資料所依據的協議名稱

getQueryString():獲得查詢字串

getRequestURI():獲取發出請求字串的客戶端地址

getRemoteAddr():獲取客戶端的IP地址

getRemoteHost():獲取客戶端的名字

getSession([Boolean create]):返回和請求相關Session

getServerName():獲取伺服器的名字

getServletPath():獲取客戶端所請求的指令碼檔案的路徑

getServerPort():獲取伺服器的埠號

removeAttribute(String name):刪除請求中的一個屬性
30、Servlet執行時一般實現哪幾個方法?

public void init(ServletConfig config)

public ServletConfig getServletConfig()

public String getServletInfo()

public void service(ServletRequest request,ServletResponse response)

public void destroy()

20、Servlet中的核心類有那些,各有什麼特點?

ServletContext:容器,放置全域性變數

   setAtribute()

   getAttribute()

ServletConfig:一個servlet的配置

   getInitParameter(”名稱”)

HttpServletReq