JAVA面試題二

 

 

JAVA 綜合面試題html

 

 

 

 

2007-08-12前端


目錄java

Java面試題整理 9程序員

Java面向對象 9web

1. super()this()的區別? 9面試

2. 做用域public,protected,private,以及不寫時的區別 9算法

3. 編程輸出以下圖形。 9spring

4. JAVA的事件委託機制和垃圾回收機制 10sql

5. JAVA中,如何跳出當前的多重嵌套循環? 10數據庫

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

7. 一個".java"源文件中是否能夠包括多個類(不是內部類)?有什麼限制? 10

8. 排序都有哪幾種方法?請列舉。用JAVA實現一個快速排序? 10

9. OverloadOverride的區別。Overloaded的方法是否能夠改變返回值的類型? 11

10. Final類有什麼特色? 11

11. 繼承時候類的執行順序問題,通常都是選擇題,問你將會打印出什麼? 11

12. 內部類的實現方式? 12

13. JAVA實現一種排序JAVA類實現序列化的方法(二種) 13

14. 如在COLLECTION框架中實現比較要實現什麼樣的接口 13

15. 用插入法進行排序代碼以下 13

16. 編程:編寫一個截取字符串的函數,輸入爲一個字符串和字節數,輸出爲按字節截取的字符串。 可是要保證漢字不被截半個,如"ABC"4,應該截爲"AB",輸入"ABCDEF"6,應該輸出爲"ABC"而不是"ABC+漢的半個" 14

15Java編程,打印昨天的當前時刻 15

16、文件讀寫,實現一個計數器 15

17、指出下面程序的運行結果 16

18、抽象類和接口的區別? 16

19、什麼是類的返射機制? 17

20、類的返射機制中的包及核心類? 17

21、獲得Class的三個過程是什麼? 17

22、如何喚起類中的一個方法? 17

23、如何將數值型字符轉換爲數字(IntegerDouble)? 17

24、如何將數字轉換爲字符? 17

25、如何去小數點前兩位,並四捨五入。 17

26、如何取得年月日,小時分秒? 18

27、如何取得從1970年到如今的毫秒數 18

28、如何獲取某個日期是當月的最後一天 18

29、如何格式化日期 19

30、編碼轉換,怎樣實現將GB2312編碼的字符串轉換爲ISO-8859-1編碼的字符串。 19

32String s = new String("xyz");建立了幾個String Object? 19

33floatfloat f=3.4是否正確? 19

35、說出一些經常使用的類,包,接口,請各舉5 19

36java中會存在內存泄漏嗎,請簡單描述。 20

37java中實現多態的機制是什麼? 20

38、垃圾回收器的基本原理是什麼?垃圾回收器能夠立刻回收內存嗎?有什麼辦法主動通知虛擬機進行垃圾回收? 20

39、靜態變量和實例變量的區別? 20

41、是否能夠從一個static方法內部發出對非static方法的調用? 20

42、寫clone()方法時,一般都有一行代碼,是什麼? 20

43JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別表明什麼意義?在try塊中能夠拋出異常嗎? 21

45、冒泡排序法 21

46String and StringBuffer的區別 22

47、用java代碼編寫堆棧 22

48、集合的做用是什麼? 23

49、集合的通用方法有那些?通用方法是什麼?(操做) 23

50、說出ArrayList,Vector, LinkedList的存儲性能和特性HashMapHashtable的區別 24

51Collection  Collections的區別。 24

52Set裏的元素是不能重複的那麼用什麼方法來區分重複與否呢? 是用==仍是equals()? 它們有何區別?contains來區分是否有重複的對象。仍是都不用。 24

53List, Set, Map是否繼承自Collection接口? 24

54、面向對象的特徵有哪些方面 25

55String是最基本的數據類型嗎? 25

56int  Integer 有什麼區別? 25

57、運行時異常與通常異常有何異同? 25

58&&&的區別? 25

59final, finally, finalize的區別? 26

62heapstack有什麼區別? 26

63Static Nested Class  Inner Class的不一樣 26

64、何時用assert 26

65GC是什麼? 爲何要有GC? 26

66short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯? 27

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

68Java有沒有goto? 27

69、給我一個你最多見到的runtime exception 27

70、接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)? 27

71abstractmethod是否可同時是static,是否可同時是native是否可同時是synchronized? 28

72、數組有沒有length()這個方法? String有沒有length()這個方法? 28

73、構造器Constructor是否可被override? 28

74、是否能夠繼承String? 28

75swtich是否能做用在byte是否能做用在long是否能做用在String? 28

76try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,何時被執行,在return前仍是後? 28

77、編程題: 用最有效率的方法算出2乘以8等於幾? 28

78、兩個對象值相同(x.equals(y) == true),但卻可有不一樣的hash code,這句話對不對? 29

79、當一個對象被看成參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這裏究竟是值傳遞仍是引用傳遞? 29

80、四種會話跟蹤技術 29

81、編程題: 寫一個Singleton出來。 29

83Java中的異常處理機制的簡單原理和應用。 30

84、垃圾回收的優勢和原理。並考慮2種回收機制。 30

85、描述一下JVM加載class文件的原理機制? 30

86char型變量中能不能存貯一箇中文漢字?爲何? 30

88、寫一個程序,從文件(c:\test.txt)中查出字符串mobnet」出現的次數? 30

java基礎類庫(io流,集合類,線程,SocketAWTSwing,sql) 31

1java中有幾種類型的流?JDK爲每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類? 31

2、啓動一個線程是用run()仍是start()? 31

3、線程的基本概念、線程的基本狀態以及狀態之間的關係 31

4、多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼? 用什麼關鍵字修飾同步方法? stop()suspend()方法爲什麼不推薦使用? 31

synchoronized修飾同步方法。 32

5、集合框架有什麼? 32

12、設計4個線程,其中兩個線程每次對j增長1,另外兩個線程對j每次減小1。寫出程序 32

13、同步和異步有和異同,在什麼狀況下分別使用他們?舉例說明。 34

14sleep()  wait() 有什麼區別? 34

15、當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法? 34

17、輸入輸出流的理解: 34

18、請寫一個程序的讀寫要求用兩種方式一種是低層流另外一種是高層流。 35

19、如何列出某個目錄下的全部文件 36

Socket 37

20、用socket通信寫出客戶端和服務器端的通信,要求客戶發送數據後可以回顯相同的數據? 37

23、介紹JAVA中的Collection FrameWork(包括如何寫本身的數據結構)? 39

24、請說出你所知道的線程同步的方法 39

jdbc數據訪問技術 39

1JDBC如何作事務處理? 39

2、寫出幾個在Jdbc中經常使用的接口 39

3、簡述你對Statement,PreparedStatement,CallableStatement的理解 40

4Java中訪問數據庫的步驟 40

5JDBC中的核心類及其做用是什麼? 40

6、執行存儲過程用那一個類,如何操做輸出參數?(操做) 41

8、可能會讓你寫一段JdbcOracle的程序. 41

9Class.forName的做用?爲何要用? 41

10Jdo是什麼? 41

11ORACLE大數據量下的分頁解決方法。通常用截取ID方法,還有是三層嵌套方法 41

Web編程Jsp&Servlet技術 42

1、簡單說說tomcat的配置 42

2JSP中動態INCLUDE與靜態INCLUDE的區別 43

3forwardredirect的區別? 43

4Servlet的體系結構是什麼? 43

Servlet 43

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

6Servlet的生命週期是什麼? 43

7jsp就是一個servlet是否正確? 43

8、請羅列jsp中的腳本、指令及動做? 44

9JSP的內置對象及方法 44

10、說出在JSP頁面裏是怎麼分頁的? 44

11include的兩種實現方式的區別? 47

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

13、描述JSPServlet的區別、共同點、各自應用的範圍 47

14、在JSP中如何讀取客戶端的請求,如何肯定某個Jsp文件的真實路徑? 47

15、描述CookieSession的做用區別和各自的應用範圍Session工做原理。 48

16、說明JsperrorPage的做用應用範圍。 48

17、介紹在Jsp中如何使用JavaBeans 48

19、簡單介紹JSP的標記庫 48

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

21Servlet中重要的包有那些,有什麼區別? 49

22、說出Servlet的生命週期,並說出ServletCGI的區別? 49

23、什麼狀況下調用doGet()doPost() 49

25、如何現實servlet的單線程模式 49

27Request對象的主要方法 49

28、咱們在web應用開發過程當中常常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出一個某種編碼的字符串? 50

30Servlet執行時通常實現哪幾個方法? 51

5 Hibernate持久層技術 51

1、在myeclipse加入hibernate環境的全過程是什麼? 51

2hibernate的核心配置文件是什麼及其做用? 51

3hibernate的核心類是什麼它們的相互關係是什麼?重要的方法是什麼? 51

4、關聯: 52

5hibernate中的one-to-manymany-to-one中經常使用的方式是什麼? 52

6Criteria 的做用? 52

7DetachedCriteria的做用 52

8Query 53

9、繼承關係的實現 53

10tomcat鏈接池:在容器中預先產生了n個鏈接實例,客戶端不用從新實例化能夠直接取。 54

11、對象的三大狀態 56

12hibernate常見優化策略 56

6. iBatis持久層技術 56

ibatis的緣由: 56

jdbchibernateibatis的區別 57

ibatis的核心配置文件: 57

ibatis的核心類: 57

7 Structs界面控制層技術 58

1請說出struts框架的幾大組件 58

3struts的核心類有那些,在MVC模式中其對應的關係是什麼? 58

4Struts的處理請求的全過程是什麼? 59

5、在struts中如何經過一個url找到一個action它的核心配置文件是什麼? 59

6、爲何使用MVC其主要目的是什麼? 59

7、對於MVCaction中對應有類有幾種,各有什麼做用? 59

8struts的標記有幾類,請列舉並說明其做用? 59

9、如何在struts中配置數據源在,什麼文件?用什麼標籤?如何取出DataSource? 60

10、如何在jbuilder中開發struts? 60

11、如何實現strutsvalidator框架 61

13、如何實現國際化? 62

國際化:不用修改代碼,就適用於不一樣的語言國家 62

8 JSF界面控制層技術 62

1Jsf中的核心類用那些?有什麼做用? 62

2Jsf中的LiftCycle六大生命週期是什麼? 62

3、如何管量web層中的Bean,用什麼標籤。如何經過jsp頁面與Bean綁定在一塊兒進行處理? 63

4Jsf中導航的標籤是什麼? 63

5jsf中用戶界面組件模型有幾類各表明什麼? 63

6、表格處理及取值 63

7jsf的標籤庫有哪些? 64

9 Spring 應用框架技術 65

1SpringStruts的區別?  strusts:是一種基於MVC模式的一個web層的處理。 65

2、什麼是aopaop的做用是什麼? 65

3aop中的關鍵名詞有些那些,相互關係是什麼? 65

4、依賴注入的方式有幾種,各是什麼? 65

5spring中的核心類有那些,各有什麼做用? 65

6ApplicationContext的做用 65

7、如何實現資源管理 66

8、如何實現加入web框架中 66

9、如何實現事件處理 66

10springiocdi表明什麼意思? 66

、如何在spring中實現國際化? 67

12spring的配置的主要標籤是什麼?有什麼做用? 67

13springejb2.0的事務管理比較的優缺點? 67

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

15、在spring中有幾種事務管理分別是什麼? 68

16、在spring中如何配代碼的事務管理? 68

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

18、若是springhibernate結合在一塊兒能夠不須要hibernate.cfg.xml文件是否正確? 69

19spring+hibernate的配置文件中的主要類有那些?如何配置? 69

20spring+hibernate的代碼實現中對於實現類必定繼承於一個類是那一個它有什麼做用。 70

21、如何配置spring+struts? 70

22、如何在web環境中配置applicationContext.xml文件? 70

24Jsfspring的區別? 70

jsf:是一種基於MVC模式的一個web層的處理,粒度較struts較細。 70

Ejb技術 71

1weblogic的熱發佈 71

2、在ejb中實現one-to-many 71

3ejb所用的技術: 71

4、實現ejb幾個接口,幾個類? 71

5、實現ejb相關的配置文件是什麼? 72

6ejb的分類?區別 72

7、本地接口與遠程接口的區別。 72

8、請求處理的過程? 72

9statefull的生命週期 73

10stateless的生命週期 73

11entityBean的生命週期: 73

12EJB需直接實現它的業務接口或Home接口嗎,請簡述理由。 73

13EJB的激活機制 74

14EJB是基於哪些技術實現的?並說 SessionBeanEntityBean的區別, 74

15EJB的分類是什麼?各有什麼特色? 74

10EJB中主要的配置文件及做用是什麼? 75

15、說出數據鏈接池的工做機制是什麼? 75

16EJB2.0有哪些內容?分別用在什麼場合? EJB2.0EJB1.1的區別? 75

18EJBJAVA BEAN的區別 75

19EJB的角色和三個對象 76

20EJB容器提供的服務 76

21EJB規範規定EJB中禁止的操做有哪些? 76

26EJB的基本架構 76

30、如何在weblogic中進行ssl配置與客戶端的認證配置或說說j2ee(標準)進行ssl的配置 78

31如何查看在weblogic中已經發布的EJB? 78

WebService技術 78

1、什麼是Web Service? 78

2、什麼是Web容器? 79

3、應用服務器有那些? 79

5、如何給weblogic指定大小的內存? 79

6、如何設定的weblogic的熱啓動模式(開發模式)與產品發佈模式? 79

7、如何啓動時不需輸入用戶名與密碼? 79

8、在weblogic管理制臺中對一個應用域(或者說是一個網站,Domain)進行jmsejb或鏈接池等相關信息進行配置後,實際保存在什麼文件中? 79

9、說說weblogic中一個Domain的缺省目錄結構?好比要將一個簡單的helloWorld.jsp放入何目錄下,然的在瀏覽器上就可打入 http://主機:端口號//helloword.jsp就能夠看到運行結果了? 又好比這其中用到了一個本身寫的javaBean該如何辦? 79

12CORBA是什麼?用途是什麼? 80

13、說說在weblogic中開發消息Bean時的persistentnon-persisten的差異 80

14WEB SERVICE名詞解釋。JSWDL開發包的介紹。JAXPJAXM的解釋。SOAPUDDI,WSDL解釋。 80

j2ee模式MVC模式、Model1Model2 81

1j2ee經常使用的設計模式?說明工廠模式。 81

2、說說你所熟悉或據說過的j2ee中的幾種經常使用模式?及對設計模式的一些見解 81

3、解釋下面關於J2EE的名詞 81

4、介紹J2EEJ2SEJ2ME的區別。 82

5、開發中都用到了那些設計模式?用在什麼場合? 82

6J2EE是什麼? 82

7J2EE是技術仍是平臺仍是框架? 82

其餘 83

1、當前主流的解析器有那些? 83

2Dom解析處理的過程是什麼? 83

3Sax解析處理的過程是什麼? 84

4DomSax相比它們的優缺點是什麼? 85

5、如何將Dom對象寫入到文件中? 86

6、用jdom解析xml文件時如何解決中文問題? 86

7XML文檔定義有幾種形式?它們之間有何本質區別?解析XML文檔有哪幾種方式? 86

8、標準建模語言UML中的各類圖? 86

9BSCS的聯繫與區別。 86

10Uml的概念是什麼?主要的工具是什麼 88

Uml:統一建模語言 88

11Uml的概念中的九大圖形是什麼?最重的三個圖是什麼?各有什麼特色? 88

13、在類圖中如何找類? 89

 


Java面試題整理

 Java面向對象

1. super()this()的區別?

This():當前類的對象,super父類對象

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

this他表明當前對象,固然全部的資源均可以訪問.

在構造函數中,若是第一行沒有寫super(),編譯器會自動插入.可是若是父類沒有不帶參數的構造函數,或這個函數被私有化了(private修飾).此時你必須加入對父類的實例化構造.this就沒有這個要求,由於它自己就進行實例化的構造.
而在方法中superthis使用的方法就差很少了.只不過super 要考慮是否能訪問其父類的資源.

 

2. 做用域public,protected,private,以及不寫時的區別

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

 

3. 編程輸出以下圖形

* * * * *

* * * *

* * *

* *

*

代碼以下:

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();

}

}

}

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

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

垃圾回收機制 垃圾收集是將分配給對象但再也不使用的內存回收或釋放的過程。若是一個對象沒有指向它的引用或者其賦值爲null,則次對象適合進行垃圾回收

 

5. JAVA中,如何跳出當前的多重嵌套循環?

break; return 方法。

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

序列化:

處理對象流的機制,所謂對象流也就是將對象的內容進行流化。能夠對流化後的對象進行讀寫操做,也可將流化後的對象傳輸於網絡之間。序列化是爲了解決在對對象流進行讀寫操做時所引起的問題。

序列化的實現:

將須要被序列化的類實現Serializable接口,該接口沒有須要實現的方法,implements Serializable只是爲了標註該對象是可被序列化的,而後使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接着,使用ObjectOutputStream對象的writeObject(Object obj)方法就能夠將參數爲obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。

 

7. 一個".java"源文件中是否能夠包括多個類(不是內部類)?有什麼限制?

能夠。若是這個類的修飾符是public,其類名與文件名必須相同。

8. 排序都有哪幾種方法?請列舉。用JAVA實現一個快速排序?

排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸併排序,分配排序(箱排序、基數排序)

快速排序的僞代碼。

9. OverloadOverride的區別。Overloaded的方法是否能夠改變返回值的類型?

方法的

重寫Override,子類覆蓋父類的方法,將子類傳與父類的引用調用的仍是子類的方法。

重載Overloading 一個類多個方法,名稱相同,參數個數類型不一樣。

二者都是Java多態性的不一樣表現。

Overloaded的方法是能夠改變返回值的類型。

 

1, public class Ctest()

{

Public static void main()

{

System.out.prinln(8+8+88+8+8);

}

}

 

168888

10. Final類有什麼特色?

屬性常量

方法不能夠overridding

類不能夠繼承

11. 繼承時候類的執行順序問題,通常都是選擇題,問你將會打印出什麼? 

:父類:

package test;

public class FatherClass

{

public FatherClass()

{

System.out.println("FatherClass Create");

}

}

子類:

package test;

import test.FatherClass;

public class ChildClass extends FatherClass

{

public ChildClass()

{

System.out.println("ChildClass Create");

}

public static void main(String[] args)

{

FatherClass fc = new FatherClass();

 

ChildClass cc = new ChildClass();

}

}

輸出結果

C:>java test.ChildClass

 

FatherClass Create

FatherClass Create

ChildClass Create

12. 內部類的實現方式

答:示例代碼以下

package test;

public class OuterClass

{

private class InterClass

{

Public Interlass()

{

System.out.println("InterClass Create");

}

}

public OuterClass()

{

InterClass ic = new InterClass();

System.out.println("OuterClass Create");

}

public static void main(String[] args)

{

OuterClass oc = new OuterClass();

}

}

輸出結果:

C:>java test/OuterClass

InterClass Create

OuterClass Create

13. JAVA實現一種排序JAVA類實現序列化的方法(二種)

14.  如在COLLECTION框架中實現比較要實現什麼樣的接口 

15. 用插入法進行排序代碼以下 

package test;

import java.util.*;

class InsertSort

{

ArrayList al;

public InsertSort(int num,int mod)

{

al = new ArrayList(num);

Random rand = new Random();

System.out.println("The ArrayList Sort Before:");

for (int i=0;i<num ;i++ )

{

al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));

System.out.println("al["+i+"]="+al.get(i));

}

}

public void SortIt()

{

Integer tempInt;

int MaxSize=1;

for(int i=1;i<al.size();i++)

{

tempInt = (Integer)al.remove(i);

if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())

{

al.add(MaxSize,tempInt);

MaxSize++;

System.out.println(al.toString());

} else {

for (int j=0;j<MaxSize ;j++ )

{

if

 

(((Integer)al.get(j)).intValue()>=tempInt.intValue())

{

al.add(j,tempInt);

MaxSize++;

System.out.println(al.toString());

break;

}

}

}

}

System.out.println("The ArrayList Sort After:");

for(int i=0;i<al.size();i++)

{

System.out.println("al["+i+"]="+al.get(i));

}

}

public static void main(String[] args)

{

InsertSort is = new InsertSort(10,100);

is.SortIt();

}

}

 

 

JAVA類實現序例化的方法是實現java.io.Serializable接口 

Collection框架中實現比較要實現Comparable 接口和 Comparator 接口

 

16. 編程:編寫一個截取字符串的函數,輸入爲一個字符串和字節數,輸出爲按字節截取的字符串。 可是要保證漢字不被截半個,如"ABC"4,應該截爲"AB",輸入"ABCDEF"6,應該輸出爲"ABC"而不是"ABC+漢的半個" 

答:代碼以下:

public static void split(String source,int num) throws Exception

{

int k=0;

String temp="";

for (int i = 0; i <source.length(); i++)

{

byte[] b=(source.charAt(i)+"").getBytes();

k=k+b.length;

if(k>num)

{

break;

}

temp=temp+source.charAt(i);

}

System.out.println(temp);

}

 

15Java編程,打印昨天的當前時刻

public class YesterdayCurrent{

public void main(String[] args){

Calendar cal = Calendar.getInstance();

cal.add(Calendar.DATE, -1);

System.out.println(cal.getTime());

}

}

16、文件讀寫,實現一個計數器

public int getNum(){

int i = -1;

try{

String stri="";

BufferedReader in = new BufferedReader(new FileReader(f));

while((stri=in.readLine())!=null){

i = Integer.parseInt(stri.trim());

}

in.close();

}catch(Exception e){

e.printStackTrace();

}

return i;

}

public void setNum(){

int i = getNum();

i++;

try{ 

PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(f,false)));

out.write(String.valueOf(i)); //多是編碼的緣由,若是直接寫入int的話,將出現java編碼和windows編碼的混亂,所以此處寫入的是String

out.close() ;

}catch(Exception e){

e.printStackTrace();

}

}

 

17、指出下面程序的運行結果

class A{

static{

System.out.print("1");

}

public A(){

System.out.print("2");

}

}

class B extends A{

static{

System.out.print("a");

}

public B(){

System.out.print("b");

}

}

public class Hello{

public static void main(String[] ars){

A ab = new B(); //執行到此處,結果: 1a2b

ab = new B(); //執行到此處,結果: 1a2b2b

}

}

  注:類的static 代碼段,能夠看做是類首次加載(被虛擬機加載)執行的代碼,而對於類的加載,首先要執行其基類的構造,再執行其自己的構造

18、抽象類和接口的區別?

(1)接口能夠被多重implements,抽象類只能被單一extends

(2)接口只有定義,抽象類能夠有定義和實現

(3)接口的字段定義默認爲:public static final, 抽象類字段默認是"friendly"(本包可見)

當功能須要累積時用抽象類,不須要累積時用接口。

19、什麼是類的返射機制?

經過類(Class對象),能夠得出當前類的fields、method、construtor、interface、superClass、modified等,同是能夠經過類實例化一個實例、設置屬性、喚醒方法。Spring中一切都是返射、struts、hibernate都是經過類的返射進行開發的。

20、類的返射機制中的包及核心類?

u java.lang.Class

u java.lang.refrection.Method

u java.lang.refrection.Field

u java.lang.refrection.Constructor

u java.lang.refrection.Modifier

u java.lang.refrection.Interface

21、獲得Class的三個過程是什麼?

對象.getClass()

類.class或Integer.type(int)  Integer.class(java.lang.Integer)

Class.forName();

22、如何喚起類中的一個方法?

產生一個Class數組,說明方法的參數

經過Class對象及方法參數獲得Method

經過method.invoke(實例,參數值數組)喚醒方法

23、如何將數值型字符轉換爲數字(IntegerDouble)?

Integer.parseInt(1234)

Double.parseDouble(123.2)

24、如何將數字轉換爲字符?

1+」」

1.0+」」

25、如何去小數點前兩位,並四捨五入。

double d=1256.22d;

d=d/100;

System.out.println(Math.round(d)*100);

26、如何取得年月日,小時分秒

Calendar c=Calendar.getInstance();

c.set(Calendar.YEAR,2004);

c.set(Calendar.MONTH,0);

c.set(Calendar.DAY_OF_MONTH,31);

System.out.println(c.get(Calendar.YEAR)+"  "+(c.get(Calendar.MONTH)+1)+"  "+c.get(Calendar.DAY_OF_MONTH));

27如何取得從1970年到如今的毫秒數

Java.util.Date dat=new Date();

long now=dat.getTime();

28如何獲取某個日期是當月的最後一天

當前日期加一天,若當前日期與結果的月份不相同,就是最後一天。

 

取下一個月的第一天,下一個月的第一天-1

 

public static void main(String[] args)

{

Calendar c=Calendar.getInstance();

c.set(Calendar.YEAR,2004);

c.set(Calendar.MONTH,0);

c.set(Calendar.DAY_OF_MONTH,30);

Calendar c1=(Calendar)c.clone();

System.out.println(c.get(Calendar.YEAR)+"  "+(c.get(Calendar.MONTH)+1)+"  "+c.get(Calendar.DAY_OF_MONTH));

 

c.add(Calendar.DAY_OF_MONTH,1);

if(c.get(Calendar.MONTH)!=c1.get(Calendar.MONTH))

{

System.out.println("是最後一天");

}

else

{

System.out.println("不是取後一天");

 

}

29、如何格式化日期

Import java.text. SimpleDateFormat;

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

Date dat=new Date();

//把日期轉化爲字符串

String str=sdf.format(dat);

System.out.println(str);

//將字符串轉化爲日期

Java.util.Date d1=sdf.parse(yyyy-mm-dd);

30、編碼轉換,怎樣實現將GB2312編碼的字符串轉換爲ISO-8859-1編碼的字符串。

String a=new String("中".getBytes("gb2312"),"iso-8859-1");

 

 

String a=new String("中".getBytes("iso-8859-1"));

 

32String s = new String("xyz");建立了幾個String Object?

New了一個,」XYZ」原本又是一個

兩個

33floatfloat f=3.4是否正確?

Ø 報錯,應當是float f=3.4f

Ø 若是是float f=3(整數)正確

35、說出一些經常使用的類,包,接口,請各舉5

經常使用的類:BufferedReader  BufferedWriter  FileReader  FileWirter  String  Integer

經常使用的包:java.lang  java.awt  java.io  java.util  java.sql javax.xml javax.sevlet javax.ejb.  java.net  javax.faces  

經常使用的接口 List  Map  Document  NodeList EjbObject EjbHome SessionBean  EntityBean

36java中會存在內存泄漏嗎,請簡單描述。

會。如:int i,i2;  return (i-i2);   //when i爲足夠大的正數,i2爲足夠大的負數。結果會形成溢位,致使錯誤。

37java中實現多態的機制是什麼?

靜態的多態:方法名相同,參數個數或類型不相同。(overloading)

動態的多態:

子類覆蓋父類的方法,將子類的實例傳與父類的引用調用的是子類的方法

實現接口的實例傳與接口的引用調用的實現類的方法。

38、垃圾回收器的基本原理是什麼?垃圾回收器能夠立刻回收內存嗎?有什麼辦法主動通知虛擬機進行垃圾回收?

動態內存

存放類實例

靜態內存

類自己

垃圾收集主要針對的是動態內存,通常當內存不夠用時會進行垃圾收集。

或經過System.gc()手動收集,但不保證必定執行。

39、靜態變量和實例變量的區別?

static i = 10; //常量

class A a;  a.i =10;//可變

靜態方法能夠調用靜態變量。

實現方法能夠調用靜態變量、實例變量

41、是否能夠從一個static方法內部發出對非static方法的調用?

不能夠,若是其中包含對象的method();不能保證對象初始化.

42、寫clone()方法時,一般都有一行代碼,是什麼?

Clone 有缺省行爲,super.clone();他負責產生正確大小的空間,並逐位複製。

43JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別表明什麼意義?在try塊中能夠拋出異常嗎?

Try:執行部分,產生異常

Catch:捕捉異常

Finally:無論有沒有異常都執行

Throws:在方法聲明處聲明要拋出的異常,調用者必須對其進行處理。

Throw:拋出一個異常

 

try中能夠拋出異常,通常與聲明的異常相同。

 

自定義異常要繼承於Exception或Exception的子類

45、冒泡排序法

//相鄰兩個數比較,將最小或最大的放到後面,最後面的不參與比較

public class BubbleSort {

private static int al[] = new int[10];

public BubbleSort() {

al[0]=2;

al[1]=3;

al[2]=23;

al[3]=45;

al[4]=1;

al[5]=67;

al[6]=23;

al[7]=80;

al[8]=35;

al[9]=72;

}

public static void main(String[] args) {

BubbleSort bs = new BubbleSort();

System.out.println("排序前:");

display(al);

 

for(int i=0;i<al.length;i++) {

 

for (int j = 0; j < al.length-i-1; j++) {

 

if(al[j]>al[j+1]) {

swap(j,j+1);

}

}

}

System.out.println();

System.out.println("排序後:");

display(al);

}

private static void display(int[] al2) {

for (int i = 0; i < al2.length; i++) {

System.out.print(al2[i]+"  ");

}

}

private static void swap(int i, int j) {

int temp = al[i];

al[i]= al[j];

al[j] = temp;

}

}

46String and StringBuffer的區別

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

StringBuffer:長度可變,能夠將多個字符串值直接聯合,效率高

47、用java代碼編寫堆棧

public class Stack {

 

int[] data;

int maxSize;

int top;

public Stack(int maxSize) {

this.maxSize = maxSize;

data = new int[maxSize];

top = -1;

}

 

/**

 * 依次加入數據

 * @param data 要加入的數據

 * @return 添加是否成功

 */

public boolean push(int data) {

if(top+1== maxSize) {

System.out.println("棧已滿!");

return false;

}

this.data[++top] = data;

return true;

}

 

/**

 * 從棧中取出數據

 * @return 取出的數據

 */

public int pop() throws Exception{

if(top==-1) {

throw new Exception("棧已空!");

}

return this.data[top--];

}

 

public static void main(String[] args) throws Exception {

Stack stack=new Stack(1000);

stack.push(1);

stack.push(2);

stack.push(3);

stack.push(4);

stack.push(5);

while(stack.top>=0)

{

System.out.println(stack.pop());

}

}

}

48、集合的做用是什麼?

數據的傳送 增、刪、改、查、constainsAll,能夠存放不一樣類型的對象。

49、集合的通用方法有那些?通用方法是什麼?(操做)

集合List 的遍歷方法有:

Iterator:

Enumeration

For

Get

set

Collection的通用方法有:

Iterator()

Add()

Clear();

remove()

 

50、說出ArrayList,Vector, LinkedList的存儲性能和特性HashMapHashtable的區別

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

ArrayList:線程不安全,速度快

Vector:線程安全,速度慢(synchoronized)

LikedList: 以單鏈表的方式存儲,增、刪快,查、改慢

 

HashMap與Hashtable都實現的Map接口,HashTable線程安全,HashMap線程不安全。

 

HashTable原理

原理:經過節點的關鍵碼肯定節點的存儲位置,即給定節點的關鍵碼k,經過必定的函數關係H(散列函數),獲得函數值H(k),將此值解釋爲該節點的存儲地址

51Collection  Collections的區別。

Collection是集合的根接口,其下有set及list

Collections是集合的算法。

52Set裏的元素是不能重複的那麼用什麼方法來區分重複與否呢? 是用==仍是equals()? 它們有何區別?contains來區分是否有重複的對象。仍是都不用。

 

在比較時先調用hashCode方法,若是不相同,證實不相等。

若是相同,再調用equals方法,若是equals方法相同,證實相等,不相同,證實不相等。

 

==:主要用在基本數據類型及引用

Equals:主要是對象或對象引用的比較。

 

集合中是否包含某一個元素用contains來判斷。

53List, Set, Map是否繼承自Collection接口?

List,set繼承於Collection

Map沒有繼承於Collection,其相對是獨立的。

屬於Collection類型的對象,能夠經過構造函數將一個集合構形成另一個集合。

54、面向對象的特徵有哪些方面  

1.抽象:

找共性,將共有的屬性、方法放到父類中

2.繼承:

子類繼承於父類,具備父類的全部屬性與方法,能夠重用,也能夠覆蓋。

3.封裝:

一個類包括多個屬性及方法。

4. 多態性:

動態:

靜態:

55String是最基本的數據類型嗎?

基本數據類型包括byte、int、char、long、float、double、boolean和short。

 

java.lang.String類是final類型的,所以不能夠繼承這個類、不能修改這個類。爲了提升效率節省空間,咱們應該用StringBuffer類

56int Integer 有什麼區別?

Int是基本數據類型,不是對象,佔一個內存空間,沒有方法。與其同類的有long,char,doble

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

57、運行時異常與通常異常有何異同?

運行時異常:java JVM拋出的異常,代碼中不用處理。

 

通常異常:用戶拋出的異常,若是用throws 聲明瞭,調用這個方法的代碼必須對其處理。

58&&&的區別?

&:: 左邊若爲false右邊還執行。

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

59final, finally, finalize的區別?

final 用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。

finally是異常處理語句結構的一部分,表示老是執行。

finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,能夠覆蓋此方法提供垃圾收集時的其餘資源回收,例如關閉文件等。

算符能夠用來決定某對象的類是否實現了接口。

62heapstack有什麼區別?

棧是一種線形集合,其添加和刪除元素的操做應在同一段完成。棧按照後進先出的方式進行處理。

堆是棧的一個組成元素

 

63Static Nested Class  Inner Class的不一樣

Static Nested Class是被聲明爲靜態static)的內部類,它能夠不依賴於外部類實例被實例化。而一般的內部類須要在外部類實例化後才能實例化。

64、何時用assert

assertion (斷言)在軟件開發中是一種經常使用的調試方式,不少開發語言中都支持這種機制。在實現中,assertion就是在程序中的一條語句,它對一個 boolean表達式進行檢查,一個正確程序必須保證這個boolean表達式的值爲true;若是該值爲false,說明程序已經處於不正確的狀態下,系統將給出警告或退出。通常來講,assertion用於保證程序最基本、關鍵的正確性。assertion檢查一般在開發和測試時開啓。爲了提升性能,在軟件發佈後,assertion檢查一般是關閉的。

65GC是什麼? 爲何要有GC? 

GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會致使程序或系統的不穩定甚至崩潰,Java提供的GC功能能夠自動監測對象是否超過做用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操做方法。

66short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?

short s1 = 1; s1 = s1 + 1; (s1+1運算結果是int型,須要強制轉換類型) short s1 = 1; s1 += 1;(能夠正確編譯)

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

 Math.round(11.5)==12 Math.round(-11.5)==-11 round方法返回與參數最接近的長整數,參數加1/2後求其floor.

 

68Java有沒有goto?

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

 

69、給我一個你最多見到的runtime exception

ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

 

通常異常:

IOException

FileNotFoundException

SqlException

 

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

接口能夠繼承接口。抽象類能夠實現(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數任何抽象類都是實際類Object的子類

71abstractmethod是否可同時是static,是否可同時是native是否可同時是synchronized?

    都不能

72、數組有沒有length()這個方法? String有沒有length()這個方法?

數組沒有length()這個方法,有length這個屬性

String有length()這個方法.

73、構造器Constructor是否可被override?

構造器Constructor不能被繼承,所以不能重寫Overriding,但能夠被重載Overloading。 

74、是否能夠繼承String?

String類是final類故不能夠繼承。

75swtich是否能做用在byte是否能做用在long是否能做用在String?

switch(expr1)中expr1是一個整數表達式。所以傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 bytelong,string 都不能做用於swtich。

76try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,何時被執行,在return前仍是後?

會執行,在return前執行。

77、編程題: 用最有效率的方法算出2乘以8等於幾?

2 << 3

78、兩個對象值相同(x.equals(y) == true),但卻可有不一樣的hash code,這句話對不對?

對,有相同的hash code。

79、當一個對象被看成參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這裏究竟是值傳遞仍是引用傳遞?

是引用傳遞

基本數據類型:

對象: 引用

80、四種會話跟蹤技術

Cookie

Session

Hidden

url 重寫

81、編程題: 寫一個Singleton出來

Singleton模式主要做用是保證在Java應用程序中,一個類Class只有一個實例存在。

通常Singleton模式一般有幾種種形式:

第一種形式: 定義一個類,它的構造函數爲private的,它有一個static的private的該類變量,在類初始化時實例話,經過一個public的getInstance方法獲取對它的引用,繼而調用其中的方法。

public class Singleton {

private Singleton(){}

      //在本身內部定義本身一個實例,是否是很奇怪?

      //注意這是private 只供內部調用

      private static Singleton instance = new Singleton();

      //這裏提供了一個供外部訪問本class的靜態方法,能夠直接訪問  

      public static Singleton getInstance() {

        return instance;   

      }

    }

    第二種形式:

public class Singleton {

  private static Singleton instance = null;

  public static synchronized Singleton getInstance() {

  //這個方法比上面有所改進,不用每次都進行生成對象,只是第一次     

  //使用時生成實例,提升了效率!

  if (instance==null)

    instance=new Singleton();

return instance;   }

}

其餘形式:

定義一個類,它的構造函數爲private的,全部方法爲static的。

通常認爲第一種形式要更加安全些

83Java中的異常處理機制的簡單原理和應用。

原理

有錯直接轉到異常處理部分或向上拋出。

應用:

JAVA的異常就是錯誤,有兩種一種是運行時,編碼能夠不用捕捉。一種是通常異常,若是throws聲明瞭,必須進行處理。

84、垃圾回收的優勢和原理。並考慮2種回收機制。

優勢:

程序員不用管內存,jvm自動完成,開發方便。運行優先很是低,程序沒法清楚實例何時被消毀。

 

85、描述一下JVM加載class文件的原理機制?

JVM中類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader 是一個重要的Java運行時系統組件。它負責在運行時查找和裝入類文件的類。

86char型變量中能不能存貯一箇中文漢字?爲何?

可以定義成爲一箇中文的,由於java中以unicode編碼,一個char佔16個字節,因此放一箇中文是沒問題的

 

88、寫一個程序,從文件(c:\test.txt)中查出字符串」mobnet」出現的次數?

 

 

java基礎類庫(io流,集合類,線程,SocketAWTSwing,sql)

1java中有幾種類型的流?JDK爲每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?

字節流,字符流。字節流繼承於InputStream OutputStream,字符流繼承於Reader Writer。在java.io包中還有許多其餘的流,低層流與調層流,高層流主要是爲了提升性能和使用方便。

2、啓動一個線程是用run()仍是start()?

啓動一個線程是調用start()方法,啓動線程並調用run方法。

3、線程的基本概念、線程的基本狀態以及狀態之間的關係

線程是進程內的併發,沒有自已內存空間,共享進程的,線程間的通訊成本較低。

Java中的線程有四種狀態分別是:運行、就緒、掛起、結束。

4多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼? 用什麼關鍵字修飾同步方法? stop()suspend()方法爲什麼不推薦使用?

Extends Thread

Implements Runnable

同步

Public synchronized aa()

{

 

}

 

 

Public void cc(object aa)

{

synchronized(aa)

{

}

}

 

用synchoronized修飾同步方法。

 

答:多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口

同步的實現方面有兩種,分別是synchronized,wait與notify

反對使用stop(),是由於它不安全。它會解除由線程獲取的全部鎖定,並且若是對象處於一種不連貫狀態,那麼其餘線程能在那種狀態下檢查和修改它們。結果很難檢查出真正的問題所在。suspend()方法容易發生死鎖。調用suspend()的時候,目標線程會停下來,但卻仍然持有在這以前得到的鎖定。此時,其餘任何線程都不能訪問鎖定的資源,除非被"掛起"的線程恢復運行。對任何線程來講,若是它們想恢復目標線程,同時又試圖使用任何一個鎖定的資源,就會形成死鎖。因此不該該使用suspend(),而應在本身的Thread類中置入一個標誌,指出線程應該活動仍是掛起。若標誌指出線程應該掛起,便用wait()命其進入等待狀態。若標誌指出線程應當恢復,則用一個notify()從新啓動線程。

5、集合框架有什麼?

Collection      Map

List             set                                     HashMap

ArrayList  linkedList  HashSet  TreeSet

 

12、設計4個線程,其中兩個線程每次對j增長1,另外兩個線程對j每次減小1。寫出程序

 

public class TestThread

{

private int j;

public synchronized void inc()

{

j++;

System.out.println(Thread.currentThread().getName() + "-inc:" + j);

}

public synchronized void dec()

{

j--;

System.out.println(Thread.currentThread().getName() + "-dec:" + j);

}

public static void main(String[] args)

{

TestThread t=new TestThread();

for (int i = 0; i < 2; i++)

{

Thread inc=new Thread(new Inc(t));

Thread dec=new Thread(new Dec(t));

inc.start();

dec.start();

}

}

}

 

class Inc implements Runnable

{

private TestThread obj;

public Inc(TestThread obj)

{

this.obj=obj;

}

public void run()

{

// for (int i = 0; i < 100; i++)

// {

this.obj.inc();

// }

}

}

class Dec implements Runnable

{

private TestThread obj;

public Dec(TestThread obj)

{

this.obj=obj;

}

public void run()

{

// for (int i = 0; i < 100; i++)

// {

this.obj.dec();

// }

}

}

 

13同步和異步有和異同,在什麼狀況下分別使用他們?舉例說明。

同步:上一段代碼沒的完成,下一段必須等到上一段代碼完成後才能夠執行。如買票排隊

異步:上一段代碼沒的完成,下一段沒必要等到上一段代碼完成就能夠執行。如手機發送短信。

14sleep() wait() 有什麼區別?

Sleep是指休眠給定的時間,當這個時間達到以後,線程會再次醒來。

Wait是等待狀態,多長時間不清楚,由另外一個線程將其喚醒。

 

15、當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?

如只其它方法是同步方法,不能夠進入。若是不是能夠進入。

17、輸入輸出流的理解:

java使用流的機制進行數據的傳送,從文件到內存是輸入流,從內存到文件是輸出流,輸入流能夠經過 read讀取,輸出流以write或print寫入,對於流能夠是分爲高層流和低層流,低層以一個字節或字符爲單位進行處理,高層流以一批數據爲單位進行處理。

 FileInputStream(System.in)至InputSteamReader至BufferReader

 OutputSteam(System.out)至printStream

 FileReader至BufferedReader

 FileWriter 至 PrintWriter或bufferWriter

分類:

字節(二進制)

FileInputStream(低層輸入流)

FileOutputStream(低層輸出流)

 

PrintStream(高層流)  System.out.println()

字符(一個char)

FileReader

FileWriter

 

18、請寫一個程序的讀寫要求用兩種方式一種是低層流另外一種是高層流。

 

import java.io.FileWriter;

import java.io.InputStream;

import java.io.BufferedWriter;

import java.io.InputStreamReader;

import java.io.BufferedReader;

import java.io.FileReader;

 

 

public class Untitled1 {

    public static void writeFileChar() throws Exception {

        FileWriter f = new FileWriter("c:\\aa.txt");

        InputStream is = System.in;

        int c = is.read();

        while (((char) c) != 'x') {

            f.write(c);

            c = is.read();

        }

        f.close();

        is.close();

    }

 

    public static void writeFileString() throws Exception {

        FileWriter f = new FileWriter("c:\\aa.txt");

        BufferedWriter bwr=new BufferedWriter(f);

        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

        String c = bf.readLine();

        while (!c.equals("stop")) {

            bwr.write(c+"\r\n");

            c = bf.readLine();

        }

        bwr.close();

        f.close();

        bf.close();

    }

    

    public static void readFileChar() throws Exception {

       FileReader f = new FileReader("c:\\aa.txt");

       int c = f.read();

       while (c!=-1) {

           System.out.print((char)c);

           c=f.read();

       }

       f.close();

   }

 

   public static void readFileString() throws Exception {

       BufferedReader bf = new BufferedReader(new FileReader("c:\\aa.txt"));

       String c = bf.readLine();

       while (c!=null)

       {

           System.out.println(c);

           c=bf.readLine();

       }

       bf.close();

   }

 

 

    public static void main(String[] args) throws Exception {

        readFileString();

    }

}

19、如何列出某個目錄下的全部文件

Import java.io.File;

File f=new File("C:\\");

        File[] f1=f.listFiles();

        for(int i=0;i<f1.length;i++)

        {

            if(f1[i].isDirectory())

            {

                System.out.println("dirctory is"+f1[i].getName());

            }

            else

            {

                System.out.println("file is"+f1[i].getName());

            }

        }

    }

  1. 如何列出某個目錄下的全部子目錄

public static void main(String[] args) throws Exception

{

       getFile(new File("C:\\entityBean"),"\t");

}

public static void getFile(File f,String sem) throws Exception

{

        System.out.println(sem+f.getName());

        File fl[]=f.listFiles();

        if(fl.length>=1)

        {

            for(int i=0;i<fl.length;i++)

            {

                if(fl[i].isDirectory())

                {

                    getFile(fl[i],sem+"\t");

                }

            }

        }

    }

  1. 判斷一個文件或目錄是否存在

  File f=new File("C:\\entityBean");

   if(f.exists())

   {

          System.out.println("exist");

   }

    else

    {

        System.out.println("not exist");

    }

Socket

20、用socket通信寫出客戶端和服務器端的通信,要求客戶發送數據後可以回顯相同的數據?

public class ServerSocket_1

{

    public static void main(String[] args)

            throws Exception

    {

        ServerSocket ss = new ServerSocket(4001);

        Socket s = ss.accept();

        BufferedReader br = new BufferedReader(new InputStreamReader(s.

                getInputStream()));

        PrintStream ps=new PrintStream(s.getOutputStream());

        String temp = br.readLine();

        while (true)

        {

            System.out.println("客戶端:"+temp);

            ps.println(temp);

            if (temp.equals("stop"))

            {

                break;

            }

            temp = br.readLine();

        }

        br.close();

        ps.close();

        ss.close();

    }

}

 

public class ClientSocket

{

  public static void main(String[] args) throws Exception

  {

      Socket s = new Socket("localhost", 4001);

      PrintStream ps = new PrintStream(s.getOutputStream());

      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

      BufferedReader br_server = new BufferedReader(new InputStreamReader(s.

              getInputStream()));

      String temp = br.readLine();

      while (true)

      {

          ps.println(temp);

          temp = br_server.readLine();

          System.out.println("服務器的信息:" + temp);

          if (temp.equals("stop"))

          {

              break;

          }

          temp = br.readLine();

      }

      s.close();

      br.close();

      br_server.close();

  }

}

 

23、介紹JAVA中的Collection FrameWork(包括如何寫本身的數據結構)? 

Collection FrameWork以下

Collection

├List

│├LinkedList

│├ArrayList

│└Vector

│ └Stack

└Set

Map

├Hashtable

├HashMap

└WeakHashMap

Collection是最基本的集合接口,一個Collection表明一組Object,即Collection的元素Elements)

Map提供key到value的映射

 

24、請說出你所知道的線程同步的方法

HashTable中的put,get,remove

Vector的相關方法。

 

jdbc數據訪問技術

1JDBC如何作事務處理?

Con.setAutoCommit(false)

Con.commit();

Con.rollback();

2、寫出幾個在Jdbc中經常使用的接口

preparedStatement,callableStatement,statement,Connection,ResultSet

3、簡述你對Statement,PreparedStatement,CallableStatement的理解

statement用於執行靜態 SQL 語句並返回它所生成結果的對象,在執行時肯定sql

 

 

 

PreparedStatement表示預編譯的 SQL 語句的對象。 SQL 語句被預編譯而且存儲在 PreparedStatement 對象中。而後可使用此對象高效地屢次執行該語句,能夠傳參數,在獲得PreparedStatement對象時肯定sql.

CallableStatement用於執行 SQL 存儲過程的接口。若是有輸出參數要註冊說明是輸出參數。

 

4Java中訪問數據庫的步驟

1鏈接Oracle數據庫

Class.forName(oracle.jdbc.driver.OracleDriver);

Connection con=DriverManager.openConnection(jdbc:oracle:thin:@localhost:1521:DataBase ,UserName,Password )

  1. 利用JDBC檢索出表中的數據

Class.forName(「」);

Connection con=DriverManager.openConnection(「 」,」 」,」 」)

preparedStatment  ps=Con.preparedStatment(「select * from [table]」);

ResultSet rs=ps.executeQuery();

While(rs.next)

{

Rs.getString(1) 或rs.getString(「字段名」)

}

5JDBC中的核心類及其做用是什麼?

DriverManager

Class.forName();

DriverManager.openConnection(「」,」sa」,」」)

Connection   

PreparedStatement(Statement)

ResultSet  rs=executeQuery()  dql

While(rs.next())

{

 

}

executeUpdate()  dml ddl

6、執行存儲過程用那一個類,如何操做輸出參數?(操做)

CallableStatement c=con. prepareCall ("{call getCustomerName(?,?)}");

c.setString(1,"1");

c.registerOutParameter(2,java.sql.Types.VARCHAR);

c.execute();

c.getString(2);

8、可能會讓你寫一段JdbcOracle的程序.

Class.forName("oracle.jdbc.driver.OracleDriver");

        Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:accp","system","system");

9Class.forName的做用?爲何要用?

註冊一個數據庫驅動,將驅動加載到當前的JVM中。

10Jdo是什麼?

JDO是Java對象持久化的新的規範,爲java data object的簡稱,也是一個用於存取某種數據倉庫中的對象的標準化API。JDO提供了透明的對象存儲,所以對開發人員來講,存儲數據對象徹底不須要額外的代碼(如JDBC API的使用)。這些繁瑣的例行工做已經轉移到JDO產品提供商身上,使開發人員解脫出來,從而集中時間和精力在業務邏輯上。另外,JDO很靈活,由於它能夠在任何數據底層上運行。JDBC只是面向關係數據庫(RDBMS)JDO更通用,提供到任何數據底層的存儲功能,好比關係數據庫、文件、XML以及對象數據庫(ODBMS)等等,使得應用可移植性更強。(o/rMapping工具 集合處理)

11ORACLE大數據量下的分頁解決方法。通常用截取ID方法,還有是三層嵌套方法

create or replace package myPack

is

type c_type is ref cursor;

procedure getPage(v_sql varchar2,pageSize number,pageIndex number,c out c_type);

end;

 

create or replace  package  body myPack

is

procedure getPage(v_sql varchar2,pageSize number,pageIndex number,c out c_type)

  is

    pageTotal int:=0;

    pageFirstRow int:=0;

    pageLastRow int:=0;

    rowTotal int:=0;

  begin

    execute immediate 'select count(*)  from ('||v_sql||')' into rowTotal;

    pageTotal:=ceil(rowTotal/pageSize);

    if(pageIndex<1) then

           raise_application_error(-20001,'頁數不能小於1');

    end if;

    if(pageIndex>pageTotal) then

           raise_application_error(-20001,'頁數太大,不能讀取');

    end if;

    pageFirstRow:=(pageIndex-1)*pageIndex+1;

    pageLastRow:=pageFirstRow+pageSize;

    open c for ' select * from '||v_sql||' where rownum<'||

         pageLastRow||'minus select * from '||v_sql

         ||' where rownum<'||pageFirstRow;    

  end;

end;

Web編程Jsp&Servlet技術

1、簡單說說tomcat的配置

JAVA_HOME=JDK的根目錄

CATALINA_HOME=tomcat的根目錄

 

CATALINA-HOME\conf\server.xml:能夠配置tomcat的端口,能夠配置tomcat中下鏈接池。

CATALINA-HOME\common\lib:存放公用的類包

 

My eclipse中如何配置tomcat

在eclipse中,選擇windows->preference->MyEclipse->ApplicationServer->Tomcat

選擇Tomcat 的安裝目錄,並選擇TomCat所需的jdk,選擇enable,肯定便可。

2JSP中動態INCLUDE與靜態INCLUDE的區別

jsp:include:在運行時調用另外一個頁面,變量是能夠重複的。

<%@include file=」」%>:在轉譯時合在一塊兒,會成爲同一個類,變量不能夠重複。

3forwardredirect的區別?

forward: 轉發,在下一個頁面中,request保留上一個頁面中的request的全部值

 

redirect: 跳轉,不傳遞request對象。

4Servlet的體系結構是什麼? 

Servlet

GenericServlet

HttpServlet

自定義

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

extends HttpServlet 並覆蓋doPost或doGet方法

 

web.xml中進行部署

6Servlet的生命週期是什麼?

Init

屢次執行doGet或doPost  

destroy

7jsp就是一個servlet是否正確?

8、請羅列jsp中的腳本、指令及動做? 

腳本

<%%>  <%=%>  <%!%> <%----%>

指令

<%@page contentType=text/html;charset=utf-8language=javaimport=」」%>

<%@include file=」」%>

<%@taglib uri=」」 prefix=」」%>

動做:

<jsp:useBean class=」」 id=」」 scope=」」>  在scope中若是沒有實例化一個對象,若是有直接用之前的。

<jsp:getProperty name=」」 property=」」>  向一個bean中設置屬性值

<jsp:forward >  jsp頁的轉發

<jsp:include page=」」>  導入一個jsp頁面

9JSP的內置對象及方法

Request  request表示HttpServletRequest對象。取客戶端表單域信息及cookie, header, 和session

response response表示HttpServletResponse對象,對客戶端的響應返回文本、寫cookies。

out out 向客戶端打印html文本.

pageContext :當前jsp頁面的上下文環境,能夠獲得session、request、application等內置對象,在自定義標籤中使用的不少。

session session表示一個請求的javax.servlet.http.HttpSession對象。Session一個用戶多個頁面共享同一變量。

application applicaton 表示一個javax.servle.ServletContext對象。存放容器級的變量。

config config表示一個javax.servlet.ServletConfig對象。該對象用於存取servlet實例的初始化參數。

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

exception:異常,當iserrorpage=true

10、說出在JSP頁面裏是怎麼分頁的?

頁面須要保存如下參數:(數據庫的分頁及比較)

總行數:根據sql語句獲得總行數

每頁顯示行數:設定值

當前頁數:請求參數

頁面根據當前頁數和每頁行數計算出當前頁第一行行數,定位結果集到此行,對結果集取出每頁顯示行數的行便可。

 

數據庫:

Sqlserver:

SELECT TOP 頁大小 *

FROM TestTable

 

WHERE (ID NOT IN

        (SELECT TOP 頁大小*(頁數-1) id

         FROM 表

         ORDER BY id))

ORDER BY ID

 

 

--pageSize=5  頁大小

--pageIndex=2 所要的頁

--若是有主鍵能夠,沒以及鍵不行

select top 5 *

from aa where a1 not in

(select top 5 a1 from aa order by a1)

order by a1;

 

oracle:

select * from '||v_sql||' where rownum<'||

         pageLastRow||'minus select * from '||v_sql

         ||' where rownum<'||pageFirstRow;

 

 

Session

先取出數據中的全部信息封裝到對象並保存在session中,轉發到jsp頁面作以下處理。

<table border="1">

    <tr>

      <td>a1</td>

      <td>a2</td>

    </tr>

<%

     List l=(List)session.getAttribute("as");

     //一頁顯示多少行

     int pageSize=3;

     //總頁數

     int pageCount=0;

     int currentPage=1;

     if(l!=null && l.size()>0)

     {

     pageCount=(l.size()/pageSize)+(l.size()%pageSize==0?0:1);

     if(request.getParameter("page")!=null)

     {

       currentPage=Integer.parseInt(request.getParameter("page"));

     }

     if(currentPage<1)

     {

       currentPage=1;

     }

     if(currentPage>pageCount)

     {

       currentPage=pageCount;

     }

     for (int i = (currentPage-1)*pageSize; i <(currentPage-1)*pageSize+pageSize; i++)

     {

       if(i>=l.size())

       {

         break;

       }

       Aa aa=(Aa)l.get(i);

       %>

        <tr>

      <td><%=aa.getA1()%></td>

      <td><%=aa.getA2()%></td>

    </tr>

       <%

       }

     }

%>

<tr>

  <td colspan="2">

    <%

    if(currentPage!=1)

    {

    %>

    <a href="page.jsp?page=1">首頁</a>  

    <a href="page.jsp?page=<%=currentPage-1%>">上一頁</a>  

    <%

    }

    if(currentPage!=pageCount)

    {

    %>

    <a href="page.jsp?page=<%=currentPage+1%>">下一頁</a>  

    <a href="page.jsp?page=<%=pageCount%>">最後一頁</a>  

    <%

    }

    %>

  </td>

</tr>

  </table>

 

11include的兩種實現方式的區別?

<@include file>:在將jsp生成servlet類前將兩個文件和在一塊兒,生成一個java類,一塊兒運行的。因此是一家子,當中的變量名不能重名。

<jsp:include page>:是兩個類,是一個調用關係,在運行時動態的調用,不是一家子,能夠重複變量。

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

轉發: 保留上次的request

<jsp:forward>

actionMapping.findForWard(「」);

pageContext.forward();

request.getRequestDispacher(「a.jsp」).forward(request,response)

跳轉:不保留上次的request

Response.setRedirect(「」)

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

Jsp主要在於頁面的顯示動態生成頁面,能夠與html標記一塊兒使用,其仍是要生成爲一個servlet。

Servlet:主要是控制的處理,如調用業務層,跳轉不一樣的jsp頁面。

Mvc:

Jsp:v

Servlet:c

14、在JSP中如何讀取客戶端的請求,如何肯定某個Jsp文件的真實路徑?

Request.getparameter(「」)

<%=application.getRealPath("aa.jsp") %>

15、描述CookieSession的做用區別和各自的應用範圍Session工做原理。

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

Session:保存在服務端,每個session在服務端有一個sessionID做一個標識。存儲的數據量大,安全性高。佔用服務端的內存資源。

16、說明JsperrorPage的做用應用範圍。

正常頁面中

%@page erropage=error.jsp%

錯誤頁面

<%@page iserrorpage=true%>

 有一內置對象:exception

17、介紹在Jsp中如何使用JavaBeans

<jsp:useBean class=」」 id=」」 scope=」」/>

<%

New 類();

%>

19、簡單介紹JSP的標記庫

作一個標記處理類 extends TagSupport

經過tld說明標記處理的類的前綴及後綴

web.xml中說明tld文件

<taglib>

<taglib-uri>

<taglib-location>

<taglib>

在jsp頁面是引用tld<%@taglib uri=」」 prefix=」」%>

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

ServletContext:容器,放置全局變量

setAtribute()

getAttribute()

ServletConfig:一個servlet的配置

getInitParameter(」名稱」)

HttpServletRequest:封裝的全部的請求

getParameterValue(」名稱」)

getParameterValues(」稱」)

getSession();

getAttribute(」 名稱」);

getRequestDispatch(a.jsp).forward(request,response)

HttpServletResponse:響應

getOut();

sendRedirect(」」)

HttpSession:一個用戶多個頁面共享同一變量

setAttribute(」」,」」)

21Servlet中重要的包有那些,有什麼區別?

javax.servlet.*;javax.servlet.http.*;

22、說出Servlet的生命週期,並說出ServletCGI的區別?

Servlet被服務器實例化後,容器運行其init方法,請求到達時運行其service方法,service方法自動派遣運行與請求對應的doXXX方法(doGet,doPost)等,當服務器決定將實例銷燬的時候調用其destroy方法。

 

cgi的區別在於servlet處理服務器進程中,它經過多線程方式運行其service方法,一個實例能夠服務於多個請求,而且其實例通常不會銷燬,而CGI對每一個請求都產生新的進程,服務完成後就銷燬,因此效率上低於servlet。

23、什麼狀況下調用doGet()doPost()

Jsp頁面中的form標籤裏的method屬性爲get時調用doGet(),爲post時調用doPost()。

25、如何現實servlet的單線程模式

在doGet及doPost方法前加入synchoronized

JSP:

<%@ page isThreadSafe="true"%>

27Request對象的主要方法

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):刪除請求中的一個屬性

28、咱們在web應用開發過程當中常常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出一個某種編碼的字符串?

  Public String translate (String str) {

    String tempStr = "";

    try {

      tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");

      tempStr = tempStr.trim();

    }

    catch (Exception e) {

      System.err.println(e.getMessage());

    }

    return tempStr;

  }

 

30Servlet執行時通常實現哪幾個方法?

public void init(ServletConfig config)

public ServletConfig getServletConfig()

public String getServletInfo()

public void service(ServletRequest request,ServletResponse response)

public void destroy()

5 Hibernate持久層技術

1、在myeclipse加入hibernate環境的全過程是什麼?

Db-browers加入配置鏈接

新建工程

加入hibernate環境,指定*.hbm.xml及HibernateSessionFactory文件所在的位置

2hibernate的核心配置文件是什麼及其做用?

Hibernate.cfg.xml:數據庫鏈接、指定相關的映射文件

*.hbm.xml:具體的o/r mapping說明

3hibernate的核心類是什麼它們的相互關係是什麼?重要的方法是什麼?

Configuration

SessionFactory

Session以下方法

Save

load

Update

Delete

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

beginTransaction

close

Transaction

Commit()

4、關聯:

one-to-many

inverse:主控方,外鍵的關係有誰控制

inverse=false 是主控方,外鍵是由它控制的

inverse=true 是被控方,外鍵與它不要緊

要想實現主控方的控制必須將被控方做爲主控方的屬性

cascade:級聯

主表增從表增

主表修從表修

主表刪從表刪

lazy:延遲

lazy=false:一下將全部的內容取出,不延時(經常使用)

lazy=true:取出部份內容,其他內容動態去取

經過get能夠取出對方的全部內容

5hibernate中的one-to-manymany-to-one中經常使用的方式是什麼

主控方在many這邊,不及連刪除

6Criteria 的做用?

Criteria c=session.createCriteria(Customer.class);

//設置條件

c.add(Expression.ge(「字段名」,」值對象」))

ge:>=

gt:>

le:<=

lt:<

eq:=

//排序

c.addOrder(Order.asc(「字段名」))

//分頁

c.setFirstResult(1)//從第2行開始提取

c.setMaxResults(5)//返回5行

7DetachedCriteria的做用

產生時不須要session

DetachedCriteria dc= DetachedCriteria.forClass(Customer.class)

Criteria c=Dc.getExecutableCriteria(session)

8Query

1 個或多個屬性查詢:

Query query=session.createQuery(select customername,customerid from Customer)

List l=query.list();

For(int i=0;i<l.size();i++)

{

Obejct[] object=(Object[])l.get(i);

Object[0]  object[1]

}

}

分組: "select count(*),productname from Product group by productname order by productname"

取值與屬性同樣

配置的查詢,在*.hbm.xml中

<query name="sql">

    <![CDATA[

     from Product where productid=:productid

    ]]>

</query>

Query query=session.getNamedQuery(sql);

聯接1

"from Customer as customer join fetch customer.buySet":將多的放到buySet屬性中,得出的結是Customer有一個,Buy有多個

聯接2

"from Customer as customer join customer.buySet":得出的對象,customer與buy是1對1

子查詢:

"from Customer as customer where (select count(*) from customer.buySet)>1"

9、繼承關係的實現

一、兩個表,子類重複父類的屬性。

二、一個表,子類父類共用一個表

  <class name="Users" table="users" discriminator-value="Users">

<discriminator column="DISCRIMINATOR_USERTYPE" type="string"/>

<subclass name="admin" discriminator-value="admin">

         <property name="adminRemark" column="admin_remark" type="string" />

      </subclass>

  </class>

三、兩個表,子類引用父類的主鍵,享用公共的字段或屬性。

    <class name="Users" table="users">

        <id name="userid" column="USERID" type="string">

            <generator class="assigned"/>

        </id>

        <property name="pwd" column="pwd" type="string" />

  <joined-subclass name="Guest" table="guest">

  <key column="USERID"/>

        <property name="guestRemark" column="guest_remark" type="string" />

        </joined-subclass>

</class>

批量刪除

Query query=session.createQuery("update"或"delete");

query.executeUpdate();

 

10tomcat鏈接池:在容器中預先產生了n個鏈接實例,客戶端不用從新實例化能夠直接取。

6.一、在tomcat-5.0\conf\server.xml中</host>前面加入以下內容

<Context path="/app1" docBase="app1" debug="0"    reloadable="true" crossContext="true">   

<Resource name="jdbc/sa" auth="Container" type="javax.sql.DataSource"/>   

            <ResourceParams name="jdbc/sa">

      <parameter>

      <name>factory</name>

      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

      </parameter>   

<parameter>

               <name>driverClassName</name>

         <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

      </parameter>  

<parameter>

         <name>url</name>

         <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev;SelectMethod=cursor</value>   

  </parameter>

      <parameter>     

<name>username</name>

                 <value>sa</value>   

</parameter>

      <parameter>     

<name>password</name>     

<value></value>

      </parameter>

      <parameter>     

<name>maxActive</name>     

        <value>20</value>   

</parameter>

      <parameter>

         <name>maxIdle</name>     

<value>10</value>   

</parameter>   

<parameter>

         <name>maxWait</name>     

<value>-1</value>   

</parameter>

      </ResourceParams>     

</Context>

6.二、將sql-server包拷貝到C:\tomcat-5\common\lib

6.三、jdbc測試代碼

Context initCtx = new InitialContext();

    Context envCtx = (Context)initCtx.lookup("java:comp/env");

ds = (DataSource)envCtx.lookup("jdbc/sa");

Connection conn = ds.getConnection();

6.四、hibernate經過鏈接池實現鏈接

<session-factory name="foo">

<property name="connection.datasource">java:comp/env/jdbc/sa</property>  <!--指定tomcat鏈接池-->

<property name="show_sql">true</property> <!--是否顯示sql-->

<property name="dialect">org.hibernate.dialect.SQLServerDialect</property> <!--hibernate的驅動管理器-->

<mapping resource="com/accp/t15/Customer.hbm.xml"/>

</session-factory>

 

11、對象的三大狀態

自由(transient)

與session無關

持久(persistent)

由session來管理

在持久狀態中經過get方法取出對方

遊離(detached)

被session拋棄

12hibernate常見優化策略

用最新版本的hibernate

制定合理的緩存策略

採用合理的session管理機制

儘可能使用延遲加載

many

大文本、大文件

設定合理的批處理參數(batch-size)

若有可能,選用uuid做爲主鍵生成器

若有可能,選用基於version的樂觀鎖替代悲觀鎖

開發過程當中,打開hibernate的SQl日誌輸出(hibernate.show_sql=true),經過觀察hibernate生成的sql語句進一步瞭解其實現原理,從而指事實上更好的實現策略。

6. iBatis持久層技術

 

ibatis的緣由:

只對開發團隊提供幾條Select SQL(或存儲過程)以獲取所需數據,具體的表結構不予公開。

開發規範中要求,全部牽涉到業務邏輯部分的數據庫操做,必須在數據庫層由存儲過程實現

系統數據處理量巨大,性能要求極爲苛刻,這每每意味着咱們必須經過通過高度優化的SQL語句

(或存儲過程)才能達到系統性能設計指標。

jdbchibernateibatis的區別

jdbc:手動

手動寫sql

deleteinsertupdate要將對象的值一個一個取出傳到sql,不能直接傳入一個對象。

select:返回的是一個resultset,要從ResultSet中一行一行、一個字段一個字段的取出,而後封裝到一個對象中,不直接返回一個對象。

ibatis的特色:半自動化

sql要手動寫

deleteinsertupdate:直接傳入一個對象

select:直接返回一個對象

hibernate:全自動

不寫sql,自動封裝

deleteinsertupdate:直接傳入一個對象

select:直接返回一個對象

ibatis的核心配置文件:

sqlmapclient.xml數據庫鏈接及相關o/rMapping的映射文件(hibernate.cfg.xml)

sqlmapBuy.xml:具體的o/rmapping映射(*.hbm.xml)

四大標記:

select

update

delete

insert

procedure

ibatis的核心類:

SqlMapClientBuilder:加載配置文件,返回一個會話。

SqlMapClient:具體的會話

List list=queryForList("標籤名",object);

Object obj=queryForObject("標籤名",object);

delete("標籤名",object)

update("標籤名",object)

insert("標籤名",object)

工程的使用:

將ibatisfactory拷貝到工程目錄下

將ms的3個包及ibatis的三個包拷貝到/WEB-INF/lib下

修改ibatisfactory中的abatorConfig.xml文件

進入ibatisfactory目錄運行java -jar  abator.jar abatorConfig.xml true

將sql標記、select、update、insert、delete的副本刪除

spring&ibatis:

dataSource

sqlMapClient:SqlMapClientFactoryBean

configLocation

classpath:sqlMapClient.xml

/WEB-INF/sqlMapClient.xml

dataSource

transactionManager:DataSourceTransactionManager

dataSource

customerDao extends SqlMapClientDaoSupport

sqlMapClient

buyDao

sqlMapClient

Facade

buyDao

customerDao

abstractProxy:TransactionProxyFactoryBean

transactionManager

transactionAttributes

facadeProxy

target:façade

7 Structs界面控制層技術

1請說出struts框架的幾大組件

1MVC

2、標籤庫

3、校驗框架

4、國際化

5tiles

3struts的核心類有那些,在MVC模式中其對應的關係是什麼?

C

ActionServlet

RequestProcessor

Action

actionMapping(struts-config.xml)

actionFormard

V

ActionForm

Jsp

M

Dao

Manager(facade)

4Struts的處理請求的全過程是什麼?

url-> ActionServlet(process)-> RequestProcessor(process)->實例化form ->填充form值->進行校驗->實例化action->調用execute

5、在struts中如何經過一個url找到一個action它的核心配置文件是什麼?

配置文件是struts-config.xml

6、爲何使用MVC其主要目的是什麼

讓v與M強制解耦,提升可重用性(旅館的服務員(C))

7、對於MVCaction中對應有類有幾種,各有什麼做用?

Ø Action:

1) 基本的

Ø DispatchAction:

2) 存在多個方法,根據頁面傳入的表單域的值調用不一樣的方法,表單域的名稱在<action param=」」/>標記中進行配置

Ø LookupDispatchAction

3) 多個按鈕用同一個action的不一樣方法。實現getMap方法,說明每個按鈕在*.properties中的鍵名及鍵值,在struts-config.xml經過parameter說明按鈕的名稱,按鈕的值對應*.properties的值,經過值找鍵名,經過鍵名找Map中的鍵名找到值就是相應的方法。

Ø MappingDispatchAction:未知

Ø forwordAction:直接跳轉到不一樣頁面不執行邏輯(???)

n 類所在的包:org.apache.struts.actions.ForwardAction

8struts的標記有幾類,請列舉並說明其做用?

Bean:

<bean:define scope=」」 name=」」 property=」」 id=」」/>

<bean:write  name=」customer」 property=」customerName」/>

<bean:message key=」」/>國際化

Logic:

<logic:iteator>  //將集合的內容取出

<logic:present> //

<logic:equals> //

Html:

<html:file>上傳文件

<html:select property=」sex」>

<html:options collection=」」 property=」」 labelProperty=」」/>

</html:select>

9、如何在struts中配置數據源在,什麼文件?用什麼標籤?如何取出DataSource?

Struts-config.xml

 

<data-sources>

   <data-source key="data" type="org.apache.commons.dbcp.BasicDataSource">

   <set-property property="driverClassName"   value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />

    <set-property property="url"     value="jdbc:microsoft:sqlserver://localhost:1433;databaseName=t23" />

    <set-property property="username" value="sa" />

     <set-property property="password" value="" />  

  </data-source>

</data-sources>

 

DataSource ds=(DataSource)this.getServlet().getServletContext().getAttribute("data");

Connection con=ds.getConnection();

10、如何在jbuilder中開發struts?

Ø 工程

Ø Web模型(選中struts1.2.8,會自加在web inf中生成tld及struts-config.xml,並加載相關的類包)

Ø 建一個ActionForm

Ø 建一個Action

Ø 修改struts-config.xml文件

11、如何實現strutsvalidator框架

Ø 手動:

Ø public class myForm extends ActionForm

Ø {

Ø public ActionErrors validate()

Ø {

actionErrors.add(ActionErrors.GLOBAL_MESSAGE,new ActionMessage("properties中的鍵名"));

Ø }

Ø }

Ø struts-config.xml中修改action的標籤validate=true

Ø input="錯誤頁面"

Ø 若是validate方法中的ActionErrors不爲空且size>0時

Ø 會回到input頁面。

Ø 自動

Ø public class myForm extends ValidateForm

Ø {

Ø 不能覆蓋validate方法。

Ø //public void validate()

Ø //{

Ø

Ø //}

Ø }

Ø 在struts-config.xml文件中加入插件

Ø  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">

Ø      <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />

Ø    </plug-in>

Ø 修改validation.xml中的內容

Ø errors.required={0} is required.

Ø errors.minlength={0} can not be less than {1} characters.

 

Ø <formset>

Ø <form name="loginForm">

Ø <field property="userName" depends="required">

Ø <arg0 key="userName" />

Ø </field>

Ø <field property="pwd" depends="required,minlength">

Ø <arg0 key="pwd" />

Ø <arg1 key="${var:minlength}" resource="false"/>

Ø <var>

Ø <var-name>minlength</var-name>

Ø <var-value>6</var-value>

Ø </var>

Ø </field>

Ø </form>

Ø </formset>

Ø struts-config.xml中修改action的標籤validate=true

Ø input="/錯誤頁面"

13、如何實現國際化?

國際化:不用修改代碼,就適用於不一樣的語言國家

本地化:若是要適應一個國家,要修改源代碼

實現過程:

struts-config.xml中用以下標籤說明資源文件名,注意其只是文件名,沒有語言_國家

 <message-resources parameter="struts.ApplicationResources" />

在資源文件對應的目錄struts中加入適應不一樣語言、國家的properties文件

ApplicationResources_zh_CN.properties 中國

ApplicationResources_en_US.properties us

若是不是英語要轉碼

native2ascii -encoding gb2312 源 ApplicationResources_zh_CN.properties

在jsp頁面中用

<bean:message key=""/>取出信息

8 JSF界面控制層技術

1Jsf中的核心類用那些?有什麼做用?    

核心類

FacesServlet

LiftCycle    FacesContext  

        

2Jsf中的LiftCycle六大生命週期是什麼

恢復視圖->應用請求值->校驗->更新模型->調用應用程序->呈現響應

3、如何管量web層中的Bean,用什麼標籤。如何經過jsp頁面與Bean綁定在一塊兒進行處理?

<managed-bean>

     <managed-bean-name>checkNumber</managed-bean-name>

      <managed-bean-class>jsf1.CheckNumber</managed-bean-class>

     <managed-bean-scope>session</managed-bean-scope>

</managed-bean>

4Jsf中導航的標籤是什麼?

<navigation-rule>

     <from-view-id>/main.jsp</from-view-id>

     <navigation-case>

       <from-outcome>success</from-outcome>

         <to-view-id>/result.jsp</to-view-id>

     </navigation-case>

</navigation-rule>

5jsf中用戶界面組件模型有幾類各表明什麼?

UI組件、事件監聽、顯示、類型轉換、驗證

6、表格處理及取值

import javax.faces.model.DataModel;

import javax.faces.model.ListDataModel;

DataModel:表明一個表格,其能夠從客戶端傳上來。

實例化:

DataModel dm=new ListDataModel();

將一個list值放入到DataModel中.

dm.setWrappedData(list)

將客戶端當前行取出

(LogsVO) dm.getRowData()

對於多條的查詢及增刪改在模型中加入了以下屬性:

模型的名稱是bean,其下的屬性是

DataModel dm:表明返有的行數據

VO vo:表明一行數據。

取一行:

vo=(VO) dm.getRowData();

#{bean.vo.屬性名},若是修改對應信息自動修改。

增長一行:

this.vo=new VO();

#{bean.vo.屬性名},顯示確定無值,但客戶輸入值提交後會將值勤寫入

7jsf的標籤庫有哪些?

核心:f

校驗

<f:validateDoubleRange>

<f:validateLength>

轉化

<f:convertDateTime pattern="yyyy-MM-dd"/>

<f:convertNumber type="currency"/>

選擇框:

<f:selectItem/>

<f:selectItems/>

 

html:h

選擇控件:

<h:selectOneRadio>:一個string

<h:selectManyCheckBox>:一個String數組

<h:selectOneMenu>:組合框架選擇一個

<h:selectManyMenu>:組合框架選擇多個

<h:selectOneList>:下拉列表選擇一個

<h:selectManyList>:下拉列表選擇多個

表格:

<h:dataTable value="集合" var="集合中的一個">

<h:column>

<!--頭-->

<f:facet name=header>

<h:outputText >

</f:facet>

<!--具體的行值-->

<h:outputText value=""/>

<h:column>

</h:dataTable>

9 Spring 應用框架技術

1SpringStruts的區別?
strusts:是一種基於MVC模式的一個web層的處理。

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

2、什麼是aopaop的做用是什麼?

Oop:縱向的業務

Aop:oop的一個橫向的服務,是對oop進一步的補充,提供安全、事務、日誌等的集中式處理,相關的裝備before、around、after exception

3aop中的關鍵名詞有些那些,相互關係是什麼? 

攔截器: 代理

裝備(advice)

目標對象

關切點:條件

鏈接點:方法、屬性

4、依賴注入的方式有幾種,各是什麼?

Setter

Interface

constructor

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

BeanFactory:產生一個新的實例,能夠實現單例模式

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

ApplicationContext:提供框架的實現,包括BeanFactory的全部功能

6ApplicationContext的做用

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中的內容。

<servlet>

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

<servlet-class>

org.springframework.web.context.ContextLoaderServlet

</servlet-class>

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

</servlet>

經過以下類獲得ApplicationContext實例

WebApplicationContextUtils.getWebApplicationContext

9、如何實現事件處理

事件

Extends ApplicationEvent

監聽器

Implements ApplicationListener

事件源

Implements ApplicationContextAware

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

先獲得事件源,調用事件源的方法,通知監聽器。

10springiocdi表明什麼意思

Ioc:程序在運行過程當中,根據配置文件動態加載所依賴的配置類

、如何在spring中實現國際化?

Ø 在applicationContext.xml加載一個bean

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">

<property name="basename">

<value>message</value>

</property>

</bean>

Ø 在src目錄下建多個properties文件

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

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

Ø 頁面中的中顯示提示信息,鍵名取鍵值。

Ø 當給定國家,系統會自動加載對應的國家的properties信息。

Ø 經過applictionContext.getMessage(鍵名」,參數」,區域」)取出相關的信息。

 

12spring的配置的主要標籤是什麼?有什麼做用?

<beans>

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

<property name=」」>

<value></value>

</property>

<property name=」」>

<ref local></ref>

</property>

</bean>

</beans>

13springejb2.0的事務管理比較的優缺點?

測試:

Spring:pojo

Ejb:二個接口一個類,一堆配置文件

事務類型

Spring:jdbc jta  hibernate

Ejb:jta

成本

   Spring:普通容器(tomcat jboss)

   Ejb:weblogic jboss

開發的週期:

Spring遠比ejb快.

14springjdbc與傳統的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中如何配容器的事務管理相關的類有那些

Datasouce

transactionManager

userDao要注入

Datasouce

Proxy代理

Target:userDao:代理對象(目標對象)

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

transactionManager(事務處理服務)

18、若是springhibernate結合在一塊兒能夠不須要hibernate.cfg.xml文件是否正確?

不須要

19spring+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

 

20spring+hibernate的代碼實現中對於實現類必定繼承於一個類是那一個它有什麼做用。

extends HibernateDaoSupport,能夠節省代碼。

21、如何配置spring+struts?

Ø 在struts-config.xml加入一個插件,經過它加載applicationContext.xml

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

u 經過DelegateActionProxy進入一spring的環境。

Ø 在spring的applicationContext.xml加入<bean name="/login" class="" singleton="false"/>

22、如何在web環境中配置applicationContext.xml文件?

<listener>

<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);

24Jsfspring的區別?

jsf:是一種基於MVC模式的一個web層的處理,粒度較struts較細。

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

 

Ejb技術

1weblogic的熱發佈

將ear、jar、war拷到C:\bea\user_projects\domains\mydomain\applications目錄

weblogic會自動發佈

經過jbuilder將ear或jar或war部署到服務器上。

2、在ejb中實現one-to-many

1、在many中的將外鍵字段屬性刪除

2、在刪除many中的值時要將Collection轉化爲ArrayList

   並反向遍歷ArrayList,先刪除ArrayList中值,根據

   ArrayList刪除反回的對象轉化爲many的遠程接口,經過

   遠程接口將many刪除

3ejb所用的技術:

Jndijava naming directory inferface

Rmi remote method invoke 

4、實現ejb幾個接口,幾個類?

兩個接口一個類

extends EJBHome

經過jndi獲得home接口

create方法調用服務端的ejbCreate方法,在服務端產生一個EntityBeanSessionBean實例,向客戶端返回一個遠程接口。

經過find方法在從服務端找到一個EntityBean實例,向客戶端返回一個遠程接口。

extends EJBObject

在客戶端經過rmi調用遠程服務端方法。

經過remove方法調用服務端的ejbRemove方法,將EnityBean刪除

implements SessionBean

在服務端實現真正的處理,實現核心業務

5、實現ejb相關的配置文件是什麼?

ejb-jar.xml:說明ejb的兩個接口一個類的。

weblogic-ejb-jar.xml:說明ejbJNDI

weblogic-rdbms-ejb.xml:o-rMapping實現數據庫表、字段與ejb屬性對應的關係。

ejb2.0的開發

1、用jbuilder集成環境

2、能夠用eclipse開發,用源代碼註釋說明,用ant執行xdocletxdoclet

過源代碼註釋自動生相關的配置、兩個接口一個類。

/**

* @stateLess

* @remote

*/

6ejb的分類?區別

sessionBean

stateless:方法間不保留(1..1)

statefull:方法間保留(1..n)

entityBean:持久化

cmp:增刪改容器

bmp:增刪改手動jdbc

message driver bean

異處的消息處理

7、本地接口與遠程接口的區別。

EJBHome(在不一樣的進程或主機間調用,即不一樣的jvm)

EJBObjet

EJBLocalHome(在同一進程,同是jvm)

EJBLocalObject

8、請求處理的過程?

會話

url

factory

經過jndi獲得一個home實例

在客戶端經過home實例在服務端產生一個sessionBean,客戶端返回一個接口

客戶端經過遠程接口調用方法。

9statefull的生命週期

不存在

setSessionContext

create--->ejbcreate

就緒:能夠調用remove方法將sessionBean刪除、能夠調用服務端的任何方法。

ejbPassivate(從就緒到掛起)

ejbActivate(從掛起到就緒)

掛起

若是超時自動刪除

10stateless的生命週期

不存在

setSessionContext

create--->ejbcreate

remove-->ejbremove

就緒

11entityBean的生命週期:

不存在

setEntityContext

create--->ejbcreate

入池

空房子,沒加載數據

ejbActivate

ejbPassivate

就緒

remove-->ejbRemove

加載了數據庫的數據

 

12EJB需直接實現它的業務接口或Home接口嗎,請簡述理由。

遠程接口和Home接口不須要直接實現,

他們的實現代碼是由服務器產生的,

程序運行中經過接口調用服務端產生的實例。

 

13EJB的激活機制

Stateful Session Bean 爲例:其Cache大小決定了內存中能夠同時存在的Bean實例的數量,根據MRU或NRU算法,實例在就緒和掛起狀態之間遷移。

 

就緒:從文件到內存,調用ejbActivate方法

掛起:從內存到文件,調用ejbPassivate方法

14EJB是基於哪些技術實現的?並說 出SessionBeanEntityBean的區別,

EJB包括Session Bean、Entity Bean、Message Driven Bean,基於JNDI、RMI、JTA等技術實現.

SessionBean在J2EE應用程序中被用來完成一些服務器端的業務操做。例如訪問數據庫、調用其餘EJB組件.

EntityBean被用來表明應用系統中用到的數據.對於客戶機,

SessionBean是一種非持久性對象,它實現某些在服務器上運行的業務邏輯;

EntityBean是一種持久性對象,它表明一個存儲在持久性存儲器中的實體的對象視圖,或是一個由現有企業應用程序實現的實體.

Session Bean 還能夠再細分爲 Stateful Session Bean 與 Stateless Session Bean .這兩種的 Session Bean均可以將系統邏輯放在 method之中執行,不一樣的是 Stateful Session Bean 能夠記錄呼叫者的狀態,所以一般來講,一個使用者會有一個相對應的 Stateful Session Bean 的實體.Stateless Session Bean 雖然也是邏輯組件,可是他卻不負責記錄使用者狀態,也就是說當使用者呼叫 Stateless Session Bean 的時候,EJB Container 並不會找尋特定的 Stateless Session Bean 的實體來執行這個 method.換言之,極可能數個使用者在執行某個 Stateless Session Bean 的 methods 時,會是同一個 Bean 的 Instance 在執行.從內存方面來看, Stateful Session Bean 與 Stateless Session Bean 比較, Stateful Session Bean 會消耗 J2EE Server 較多的內存,然而 Stateful Session Bean 的優點卻在於他能夠維持使用者的狀態.

 

15EJB的分類是什麼?各有什麼特色?

sessionBean:主機重起消失

Stateless:不記憶

StateFull:一個用戶多個操做可記憶

EntityBean:持久的數據庫中

Cmp:容器經過o/r mapping實現數據的持久化,不寫sql,實現方便,在速度慢。

Bmp:經過jdbc實現持久化,實現複雜,速度快

messageBean:提供異步處理。

 

10EJB中主要的配置文件及做用是什麼? 

EJB部署時須要三個文件:

n Ejb-jar.xml:

u 將二個接口一個類打包在一塊兒,給EJB一個名稱。

u 說明當前的sessionBean的事務是由容器處理的。

u 其在全部的服務器上是通用的。

n Weblogic-ejb-jar.xml:

u 將一個EJB名稱,對應一個JNDI,在僅對weblogic服務器

n Weblogic-rdbms-jar.xml:

u 實現o/r mapping的說明,至關於*.hbm.xml

15、說出數據鏈接池的工做機制是什麼?

容器或相關的應用程序在其池中實例化多個邊接,當應用程序在使用時,容器直接將池中的鏈接取出應用程序直接使用,同時當應用程序使用完後,容器還能夠將鏈接收回。從而提升系統的效率。

16EJB2.0有哪些內容?分別用在什麼場合? EJB2.0EJB1.1的區別?

sessionBean:是一個過程

entityBean:是持久化,表明的是一個業務實體,有主鍵。

Struts+sessionBean+entityBean

EJB2.0加入的本地接口及本地home

EJB1.1中只有遠程接口及遠程home

 

 

18EJBJAVA BEAN的區別

Java Bean 是可複用的組件,任何一個Java類均可以是一個Bean。但一般狀況下,Java Bean是被容器所建立(如Tomcat)的,因此Java Bean具備以下特色:

 

一個無參的構造器

實現Serializable接口

私有屬性

公有get set方法

 

Enterprise Java Bean 是一個分佈式組件,其特色是

基於(RMI)技術的,能夠被遠程訪問(跨進程、跨計算機)。

EJB必須被佈署在Webspere、WebLogic容器中,不能直接訪問ejb,而是經過容器訪問ejb,容器是ejb訪問的一個代理。

19EJB的角色和三個對象

六個角色組成,分別是

EJB組件開發者(Enterprise Bean Provider):sun

應用組合者(Application Assembler)真正的開發商

部署者Deployer):

EJB 服務器提供者EJB Server Provider):sun ibm 小機

EJB 容器提供者EJB Container Provider):weblogic jboss

系統管理員System Administrator):維護員

三個對象是Remote(Local)接口、Home(LocalHome)接口Bean類

20EJB容器提供的服務

主要提供

安全

事務管理

分佈式

jts

聲明週期管理

代碼產生

持續性管理

鎖和併發行管理等服務。

21EJB規範規定EJB中禁止的操做有哪些?

1.不能操做線程和線程API(線程API指非線程對象的方法如notify,wait等),

2.不能操做awt,

3.不能實現服務器功能,

4.不能對靜態屬生存取,

5.不能使用IO操做直接存取文件系統,

6.不能加載本地庫.,

7.不能將this做爲變量和返回,

8.不能循環調用。

26EJB的基本架構 

:一個EJB包括三個部分:

 

Remote Interface 接口的代碼

 

package Beans;

 

import javax.ejb.EJBObject;

 

import java.rmi.RemoteException;

 

public interface Add extends EJBObject

 

{

 

//some method declare

 

}

 

Home Interface 接口的代碼

 

package Beans;

 

import java.rmi.RemoteException;

 

import jaax.ejb.CreateException;

 

import javax.ejb.EJBHome;

 

public interface AddHome extends EJBHome

 

{

 

//some method declare

 

}

 

EJB類的代碼 

 

package Beans;

 

import java.rmi.RemoteException;

 

import javax.ejb.SessionBean;

 

import javx.ejb.SessionContext;

 

public class AddBean Implements SessionBean

 

{

 

//some method declare

 

}

30、如何在weblogic中進行ssl配置與客戶端的認證配置或說說j2ee(標準)進行ssl的配置

缺省安裝中使用DemoIdentity.jks和DemoTrust.jks KeyStore實現SSL,須要配置服務器使用Enable SSL,配置其端口,在產品模式下須要從CA獲取私有密鑰和數字證書,建立identity和trust keystore,裝載得到的密鑰和數字證書。能夠配置此SSL鏈接是單向仍是雙向的。

31如何查看在weblogic中已經發布的EJB?

可使用管理控制檯,在它的Deployment中能夠查看全部已發佈的EJB

WebService技術

1、什麼是Web Service?

Web Service就是爲了使原來各孤立的站點之間的信息可以相互通訊、共享而提出的一種接口。

使用的技術:

HTTP、XML、SOAP(簡單對象訪問協議)、WSDL

優勢:

跨平臺、跨語言、跨系統

SOAP協議:

SOAP協議(Simple Object Access Protocal,簡單對象訪問協議)

Tcp/ipàhttp->soap,soap 經過xml文件傳送信息

缺點:

 (1).WebService使用了XML對數據封裝,會形成大量的數據要在網絡中傳輸。

 (2).WebService規範沒有規定任何與實現相關的細節,包括對象模型、編程語言,這一點,它不如CORBA。

2、什麼是Web容器?

實現J2EE規範中web協議的應用.該協議定義了web程序的運行時環境,包括:併發性,安全性,生命週期管理等等.

就是在tomcat、weblogic下運行jsp、servlet、struts

3、應用服務器有那些?

BEA WebLogic Server,IBM WebSphere Application Server,Oracle9i Application Server,jBoss,Tomcat

5、如何給weblogic指定大小的內存?

在啓動Weblogic的腳本中(位於所在Domian對應服務器目錄下的startServerName),增長set MEM_ARGS=-Xms32m -Xmx200m,能夠調整最小內存爲32M,最大200M

6、如何設定的weblogic的熱啓動模式(開發模式)與產品發佈模式?

能夠在管理控制檯中修改對應服務器的啓動模式爲開發或產品模式之一。或者修改服務的啓動文件或者commenv文件,增長set PRODUCTION_MODE=true。

7、如何啓動時不需輸入用戶名與密碼?

修改服務啓動文件,增長 WLS_USER和WLS_PW項。也能夠在boot.properties文件中增長加密過的用戶名和密碼.

8、在weblogic管理制臺中對一個應用域(或者說是一個網站,Domain)進行jmsejb或鏈接池等相關信息進行配置後,實際保存在什麼文件中?

保存在此Domain的config.xml文件中,它是服務器的核心配置文件。

9、說說weblogic中一個Domain的缺省目錄結構?好比要將一個簡單的helloWorld.jsp放入何目錄下,然的在瀏覽器上就可打入 http://主機:端口號//helloword.jsp就能夠看到運行結果了? 又好比這其中用到了一個本身寫的javaBean該如何辦?

Domain 目錄服務器目錄applications,將應用目錄放在此目錄下將能夠做爲應用訪問,若是是Web應用,應用目錄須要知足Web應用目錄要求,jsp文件能夠直接放在應用目錄中,Javabean須要放在應用目錄的WEB-INF目錄的classes目錄中,設置服務器的缺省應用將能夠實如今瀏覽器上無需輸入應用名。

12CORBA是什麼?用途是什麼?

CORBA 標準是公共對象請求代理結構(Common Object Request Broker Architecture),由對象管理組織 (Object Management Group,縮寫爲 OMG)標準化。它的組成是接口定義語言(IDL), 語言綁定(binding:也譯爲聯編)和容許應用程序間互操做的協議。其目的爲:用不一樣的程序設計語言書寫在不一樣的進程中運行,爲不一樣的操做系統開發。

13、說說在weblogic中開發消息Bean時的persistentnon-persisten的差異

persistent方式的MDB能夠保證消息傳遞的可靠性,也就是若是EJB容器出現問題而JMS服務器依然會將消息在此MDB可用的時候發送過來,而non-persistent方式的消息將被丟棄。

14WEB SERVICE名詞解釋。JSWDL開發包的介紹。JAXPJAXM的解釋。SOAPUDDI,WSDL解釋。

Web ServiceWeb Service是基於網絡的、分佈式的模塊化組件,它執行特定的任務,遵照具體的技術規範,這些規範使得Web Service能與其餘兼容的組件進行互操做。

JAXP(Java API for XML Parsing) 定義了在Java中使用DOM, SAX, XSLT的通用的接口。這樣在你的程序中你只要使用這些通用的接口,當你須要改變具體的實現時候也不須要修改代碼。

JAXM(Java API for XML Messaging) 是爲SOAP通訊提供訪問方法和傳輸機制的API。

WSDL是一種 XML 格式,用於將網絡服務描述爲一組端點,這些端點對包含面向文檔信息或面向過程信息的消息進行操做。這種格式首先對操做和消息進行抽象描述,而後將其綁定到具體的網絡協議和消息格式上以定義端點。相關的具體端點即組合成爲抽象端點(服務)。

SOAP即簡單對象訪問協議(Simple Object Access Protocol),它是用於交換XML編碼信息的輕量級協議。

UDDI 的目的是爲電子商務創建標準;UDDI是一套基於Web的、分佈式的、爲Web Service提供的、信息註冊中心的實現標準規範,同時也包含一組使企業能將自身提供的Web Service註冊,以使別的企業可以發現的訪問協議的實現標準。

j2ee模式MVC模式、Model1Model2

1j2ee經常使用的設計模式?說明工廠模式。

Java中的23種設計模式:

Factory(工廠模式), Builder(建造模式), Factory Method(工廠方法模式),

Prototype(原始模型模式),Singleton(單例模式), Facade(門面模式),

Adapter(適配器模式), Bridge(橋樑模式), Composite(合成模式),

Decorator(裝飾模式), Flyweight(享元模式), Proxy(代理模式),

Command(命令模式), Interpreter(解釋器模式), Visitor(訪問者模式),

Iterator(迭代子模式), Mediator(調停者模式), Memento(備忘錄模式),

Observer(觀察者模式), State(狀態模式), Strategy(策略模式),

Template Method(模板方法模式), Chain Of Responsibleity(責任鏈模式)

工廠模式:工廠模式是一種常常被使用到的模式,根據工廠模式實現的類能夠根據提供的數據生成一組類中某一個類的實例,一般這一組類有一個公共的抽象父類而且實現了相同的方法,可是這些方法針對不一樣的數據進行了不一樣的操做。首先須要定義一個基類,該類的子類經過不一樣的方法實現了基類中的方法。而後須要定義一個工廠類,工廠類能夠根據條件生成不一樣的子類實例。當獲得子類的實例後,開發人員能夠調用基類中的方法而沒必要考慮到底返回的是哪個子類的實例。

2、說說你所熟悉或據說過的j2ee中的幾種經常使用模式?及對設計模式的一些見解

Session Facade Pattern:使用SessionBean訪問EntityBean

Message Facade Pattern:實現異步調用

EJB Command Pattern:使用Command JavaBeans取代SessionBean,實現輕量級訪問

Data Transfer Object Factory:經過DTO Factory簡化EntityBean數據提供特性

Generic Attribute Access:經過AttibuteAccess接口簡化EntityBean數據提供特性

Business Interface:經過遠程(本地)接口和Bean類實現相同接口規範業務邏輯一致性

ejb架構的設計好壞將直接影響系統的性能、可擴展性、可維護性、組件可重用性及開發效率。項目越複雜,項目隊伍越龐大則越能體現良好設計的重要性。

3、解釋下面關於J2EE的名詞

(1)JNDI:Java Naming & Directory Interface,JAVA命名目錄服務.主要提供的功能是:提供一個目錄系統,讓其它各地的應用程序在其上面留下本身的索引,從而知足快速查找和定位分佈式應用程序的功能.

(2)JMS:Java Message Service,JAVA消息服務.主要實現各個應用程序之間的通信.包括點對點和廣播.

(3)JTA:Java Transaction API,JAVA事務服務.提供各類分佈式事務服務.應用程序只需調用其提供的接口便可.

(4)JAF: Java Action FrameWork,JAVA安全認證框架.提供一些安全控制方面的框架.讓開發者經過各類部署和自定義實現本身的個性安全控制策略.

(5)RMI:Remote Method Interface,遠程方法調用

 

4、介紹J2EEJ2SEJ2ME的區別。

J2ee:企業級,主要的application server的web及應用服務

J2se:標準版, 沒有application server

J2me:手機、pda的嵌入式開發

 

5、開發中都用到了那些設計模式?用在什麼場合?

每一個模式都描述了一個在咱們的環境中不斷出現的問題,而後描述了該問題的解決方案的核心。經過這種方式,你能夠無數次地使用那些已有的解決方案,無需在重複相同的工做。主要用到了MVC的設計模式。用來開發JSP/Servlet或者J2EE的相關應用。簡單工廠模式等。

6J2EE是什麼?

J2EE 是Sun公司提出的多層(multi-diered),分佈式(distributed),基於組件(component-base)的企業級應用模型 (enterpriese application model).在這樣的一個應用系統中,可按照功能劃分爲不一樣的組件,這些組件又可在不一樣計算機上,而且處於相應的層次(tier)中。所屬層次包括客戶層(clietn tier)組件,web層和組件,Business層和組件,企業信息系統(EIS)層。

7J2EE是技術仍是平臺仍是框架?

    J2EE自己是一個標準,一個爲企業分佈式應用的開發提供的標準平臺。

    J2EE也是一個框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技術。

其餘

1、當前主流的解析器有那些?

DOM:文檔對象模型(document object model)

SAX

2Dom解析處理的過程是什麼?

package ss;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.DocumentBuilder;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.Attr;

import org.w3c.dom.NodeList;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.Transformer;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

 

public class XmlParser

{

    public static void main(String[] args)

            throws Exception

    {

        xmlwriter();

    }

 

    public static void xmlparser()

            throws Exception

    {

        DocumentBuilderFactory xdf = DocumentBuilderFactory.newInstance();

        DocumentBuilder db = xdf.newDocumentBuilder();

        Document d = db.parse("C:\\A1\\customer.xml");

        NodeList nl = d.getElementsByTagName("customer");

        for (int i = 0; i < nl.getLength(); i++)

        {

 

            Element e = (Element) nl.item(i);

            Attr a = e.getAttributeNode("customerID");

            System.out.println(a.getNodeValue());

            NodeList nl1 = e.getElementsByTagName("customerName");

            System.out.println(nl1.item(0).getFirstChild().getNodeValue());

        }

    }

    public static void xmlwriter() throws Exception

    {

        DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();

        DocumentBuilder db=dbf.newDocumentBuilder();

        Document d=db.parse("C:\\A1\\customer.xml");

        NodeList nl=d.getElementsByTagName("customerName");

        for(int i=0;i<nl.getLength();i++)

        {

           Element e=(Element) nl.item(i);

           System.out.println(e.getFirstChild().getNodeValue());

           e.getFirstChild().setNodeValue(e.getFirstChild().getNodeValue()+"111111111111111");

        }

        TransformerFactory tff=TransformerFactory.newInstance();

        Transformer tf=tff.newTransformer();

        tf.transform(new DOMSource(d),new StreamResult("c:\\aa.xml"));

    }

}

 

DocumentBuilderFactory

DocumentBuiler db

Document d=db.parse(具體文件路徑」);

NodeList nl=d.getElementsByTagName(節點名」)

3Sax解析處理的過程是什麼?

import org.xml.sax.helpers.DefaultHandler;

import org.xml.sax.SAXException;

import org.xml.sax.Attributes;

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;

public class SaxParser extends DefaultHandler

{

    public void characters(char[] ch, int start, int length)

            throws SAXException

    {

        String temp=new String(ch,start,length);

        System.out.println(temp);

    }

 

    public void endDocument()

            throws SAXException

    {

        System.out.println("正在開始一個文檔");

    }

 

    public void endElement(String namespaceURI, String localName, String qName)

            throws SAXException

    {

        System.out.println("結束元素"+qName);

    }

 

    public void startDocument()

            throws SAXException

    {

        System.out.println("開始文檔");

    }

 

    public void startElement(String namespaceURI, String localName,

                             String qName, Attributes atts)

            throws SAXException

    {

         System.out.println("開始元素"+qName);

    }

    public static void main(String[] args) throws Exception

    {

        SAXParserFactory spf=SAXParserFactory.newInstance();

        SAXParser sp=spf.newSAXParser();

        sp.parse("C:\\A1\\customer.xml",new SaxParser());

    }

}

4DomSax相比它們的優缺點是什麼?

DOM能夠訪問任何一個節點,要將全部資源所有加載,比較耗內存,能夠修改。

SAX只能順序讀,不可隨意訪問,不可寫,但速度快。

  1. Dom中的核心接口有那些?

Node

TextNode

Element  

Arr

NodeList

Document

5、如何將Dom對象寫入到文件中? 

TransformerFactory

Transformer經過以下方法進行處理

Transformer(DOMSource(Document d),ResultStream(OutputStream o))

6、用jdom解析xml文件時如何解決中文問題?

類文件是utf-8xml文件頭也應是utf-8 <?xml version="1.0" encoding="UTF-8" ?>

7XML文檔定義有幾種形式?它們之間有何本質區別?解析XML文檔有哪幾種方式?

a: 兩種形式 dtd  schema

b: 本質區別:schema自己是xml的,能夠被XML解析器解析(這也是從DTD上發展schema的根本目的)

c:有DOM,SAX,STAX等

 DOM:處理大型文件時其性能降低的很是厲害。這個問題是由DOM的樹結構所形成的,這種結構佔用的內存較多,並且DOM必須在解析文件以前把整個文檔裝入內存,適合對XML的隨機訪問

SAX:不現於DOM,SAX是事件驅動型的XML解析方式。它順序讀取XML文件,不須要一次所有裝載整個文件。當遇到像文件開頭,文檔結束,或者標籤開頭與標籤結束時,它會觸發一個事件,用戶經過在其回調事件中寫入處理代碼來處理XML文件,適合對XML的順序訪問

STAX:Streaming API for XML (StAX)

 

8、標準建模語言UML中的各類圖?

靜態圖

用例圖、類圖、對象圖、構件、部署,

動態圖(行爲圖)

活動圖,協做圖,狀態、時序

9BSCS的聯繫與區別。

C/SClient/Server的縮寫。服務器一般採用高性能的PC、工做站或小型機,並採用大型數據庫系統,如OracleSybaseInformixSQL Server。客戶端須要安裝專用的客戶端軟件。

B/S是Brower/Server的縮寫,客戶機上只要安裝一個瀏覽器(Browser),如Netscape NavigatorInternet Explorer,服務器安裝OracleSybaseInformixSQL Server等數據庫。在這種結構下,用戶界面徹底經過WWW瀏覽器實現,一部分事務邏輯在前端實現,可是主要事務邏輯在服務器端實現。瀏覽器經過Web Server 同數據庫進行數據交互。

C/S B/S 區別:

1.硬件環境不一樣:

  C/S 通常創建在專用的網絡上, 小範圍裏的網絡環境, 局域網之間再經過專門服務器提供鏈接和數據交換服務.

  B/S 創建在廣域網之上的, 沒必要是專門的網絡硬件環境,例與電話上網, 租用設備. 信息本身管理. 有比C/S更強的適應範圍, 通常只要有操做系統和瀏覽器就行

2.對安全要求不一樣

  C/S 通常面向相對固定的用戶羣, 對信息安全的控制能力很強. 通常高度機密的信息系統採用C/S 結構適宜. 能夠經過B/S發佈部分可公開信息.

  B/S 創建在廣域網之上, 對安全的控制能力相對弱, 可能面向不可知的用戶。

3.對程序架構不一樣

  C/S 程序能夠更加註重流程, 能夠對權限多層次校驗, 對系統運行速度能夠較少考慮.

  B/S 對安全以及訪問速度的多重的考慮, 創建在須要更加優化的基礎之上. C/S有更高的要求 B/S結構的程序架構是發展的趨勢, MS.Net系列的BizTalk 2000 Exchange 2000, 全面支持網絡的構件搭建的系統. SUN IBM推的JavaBean 構件技術等,使 B/S更加成熟.

4.軟件重用不一樣

  C/S 程序能夠不可避免的總體性考慮, 構件的重用性不如在B/S要求下的構件的重用性好.

  B/S 對的多重結構,要求構件相對獨立的功能. 可以相對較好的重用.就入買來的餐桌能夠再利用,而不是作在牆上的石頭桌子

5.系統維護不一樣

  C/S 程序因爲總體性, 必須總體考察, 處理出現的問題以及系統升級. 升級難. 多是再作一個全新的系統

  B/S 構件組成,方面構件個別的更換,實現系統的無縫升級. 系統維護開銷減到最小.用戶從網上本身下載安裝就能夠實現升級.

6.處理問題不一樣

  C/S 程序能夠處理用戶面固定, 而且在相同區域, 安全要求高需求, 與操做系統相關. 應該都是相同的系統

  B/S 創建在廣域網上, 面向不一樣的用戶羣, 分散地域, 這是C/S沒法做到的. 與操做系統平臺關係最小.

7.用戶接口不一樣

  C/S 可能是創建的Window平臺上,表現方法有限,對程序員廣泛要求較高

  B/S 創建在瀏覽器上, 有更加豐富和生動的表現方式與用戶交流. 而且大部分難度減低,減低開發成本.

8.信息流不一樣

  C/S 程序通常是典型的中央集權的機械式處理, 交互性相對低

  B/S 信息流向可變化, B-B B-C B-G等信息、流向的變化, 更像交易中心。

10Uml的概念是什麼?主要的工具是什麼

Uml:統一建模語言

工具:Rational Rose

11Uml的概念中的九大圖形是什麼?最重的三個圖是什麼?各有什麼特色?

類圖

繼承

關聯:(1..n  n..1  n..n)

依賴

實現接口

彙集

組成

類圖的生命週期(開發的全部階段都使用)

整體設計

詳細設計

開發:以類圖進行開發

測試

Use-case

關係

用例與用例

包含(include):必須調用

擴展(extends):能夠調用也能夠不調用

角色與角色的關係

泛化

用例與角色的關係:

用例與角色:通知

角色與用例:調用

元素

用例

角色

系統邊界

Use-case圖的生命週期

需求

總體設計

測試(單元測試、集成測試、系統測試、用戶驗收)

時序

元素

橫座標:對象

縱座標: 時間

做用

找類

找方法

驗證系統的正確

生命週期

詳細設計

活動(流程圖)

做用

分析業務

構件圖

做用:說明組件與組件之間的關係,依賴關係

部署

做用:說明安裝軟件的主機之間的關係,系統運行時的性能的主要影響者。

協做

對象與對象之間的調用協做。

狀態

一個對象狀態在不一樣的動做下的變化。

對象

說明對象

13、在類圖中如何找類?

找名詞

相關文章
相關標籤/搜索