面試題 學校

1. super()與 this()的區別?
This():當前類的對象,super 父類對象。
Super():在子類訪問父類的成員和行爲,必須受類繼承規則的約束
而 this 他表明當前對象,固然全部的資源均可以訪問.
在構造函數中,若是第一行沒有寫 super(),編譯器會自動插入.可是若是父類沒有
不帶參數的構造函數,或這個函數被私有化了(用 private 修飾).此時你必須加入對
父類的實例化構造.而 this 就沒有這個要求,由於它自己就進行實例化的構造.
而在方法中 super 和 this 使用的方法就差很少了.只不過 super 要考慮是否能訪問
其父類的資源.

2. 做用域 public,protected,private,以及不寫時的區別?
 Public:不一樣包、同一包、類內均可用
 Private:類內
 Protected: 不一樣包的子類、同一包、類內均可用
 不寫時:同一包內、類內html

三、線程的基本概念、線程的基本狀態以及狀態之間的關係
線程是進程內的併發,沒有自已內存空間,共享進程的,線程間的通訊成本較
低。
Java 中的線程有四種狀態分別是:運行、就緒、掛起、結束。
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 實現一個快速排序?
排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、
快速排序),選擇排序(直接選擇排序、堆排序),歸併排序,分配排序(箱
排序、基數排序)
快速排序的僞代碼。java

 

9. Overload 和 Override 的區別。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 web

 

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


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);
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
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",輸入"我 ABC 漢 DEF",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);
}
1五、Java 編程,打印昨天的當前時刻
public class YesterdayCurrent{
public void main(String[] args){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println(cal.getTime());
}
} spring

 

1六、文件讀寫,實現一個計數器
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();
}
}
1七、指出下面程序的運行結果。
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 代碼段,能夠看做是類首次加載(被虛擬機加載)執行的代
碼,而對於類的加載,首先要執行其基類的構造,再執行其自己的構造
1八、抽象類和接口的區別?
(1)接口能夠被多重 implements,抽象類只能被單一 extends
(2)接口只有定義,抽象類能夠有定義和實現
(3) 接 口 的 字 段 定 義 默 認 爲 :public static final, 抽 象 類 字 段 默 認 是
"friendly"(本包可見)
當功能須要累積時用抽象類,不須要累積時用接口。
1九、什麼是類的返射機制?
經過類(Class 對象),能夠得出當前類的 fields、method、construtor、
interface、superClass、modified 等,同是能夠經過類實例化一個實例、設置
屬性、喚醒方法。Spring 中一切都是返射、struts、hibernate 都是經過類的
返射進行開發的。
20、類的返射機制中的包及核心類?
java.lang.Class
java.lang.refrection.Method
java.lang.refrection.Field
java.lang.refrection.Constructor
java.lang.refrection.Modifier
java.lang.refrection.Interfacesql

2一、獲得 Class 的三個過程是什麼?
對象.getClass()
 類.class 或 Integer.type(int) Integer.class(java.lang.Integer)
Class.forName(); 數據庫

 

2二、如何喚起類中的一個方法?
產生一個 Class 數組,說明方法的參數
經過 Class 對象及方法參數獲得 Method
經過 method.invoke(實例,參數值數組)喚醒方法apache

 

2五、如何去小數點前兩位,並四捨五入。
double d=1256.22d;
d=d/100;
System.out.println(Math.round(d)*100);

2六、如何取得年月日,小時分秒?
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));編程

2七、如何取得從 1970 年到如今的毫秒數
Java.util.Date dat=new Date();
long now=dat.getTime();

2八、如何獲取某個日期是當月的最後一天?
當前日期加一天,若當前日期與結果的月份不相同,就是最後一天。
取下一個月的第一天,下一個月的第一天-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("不是取後一天");

}
}

 

2九、如何格式化日期?
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"));

3二、String s = new String("xyz");建立了幾個 String Object?
New 了一個,」XYZ」原本又是一個
兩個

3三、float 型 float f=3.4 是否正確?
報錯,應當是 float f=3.4f
若是是 float f=3(整數)正確

3五、說出一些經常使用的類,包,接口,請各舉 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

3六、java 中會存在內存泄漏嗎,請簡單描述。
會。如:int i,i2; return (i-i2); //when i 爲足夠大的正數,i2 爲足夠
大的負數。結果會形成溢位,致使錯誤。

 

3七、java 中實現多態的機制是什麼?
靜態的多態:方法名相同,參數個數或類型不相同。(overloading)
動態的多態:
 子類覆蓋父類的方法,將子類的實例傳與父類的引用調用的是子類的方法
 實現接口的實例傳與接口的引用調用的實現類的方法。

3八、垃圾回收器的基本原理是什麼?垃圾回收器能夠立刻回收內存嗎?有什麼
辦法主動通知虛擬機進行垃圾回收?
動態內存
 存放類實例
靜態內存
類自己
垃圾收集主要針對的是動態內存,通常當內存不夠用時會進行垃圾收集。
或經過 System.gc()手動收集,但不保證必定執行。

 

3九、靜態變量和實例變量的區別?
static i = 10; //常量
 class A a; a.i =10;//可變
靜態方法能夠調用靜態變量。
實現方法能夠調用靜態變量、實例變量

4一、是否能夠從一個 static 方法內部發出對非 static 方法的調用?
不能夠,若是其中包含對象的 method();不能保證對象初始化.

4二、寫 clone()方法時,一般都有一行代碼,是什麼?
Clone 有缺省行爲,super.clone();他負責產生正確大小的空間,並逐位複製。

 

4三、JAVA 語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally
分別表明什麼意義?在 try 塊中能夠拋出異常嗎?
Try:執行部分,產生異常
Catch:捕捉異常
Finally:無論有沒有異常都執行
Throws:在方法聲明處聲明要拋出的異常,調用者必須對其進行處理。
Throw:拋出一個異常
在 try 中能夠拋出異常,通常與聲明的異常相同。
自定義異常要繼承於 Exception 或 Exception 的子類

4五、冒泡排序法
//相鄰兩個數比較,將最小或最大的放到後面,最後面數的不參與比較
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;
}
}

4六、String and StringBuffer 的區別?
String:長度給定不可變,當多個字符串聯合時要先轉爲StringBuffer,再聯合,速度慢。
StringBuffer:長度可變,能夠將多個字符串值直接聯合,效率高

4七、用 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());
}
}
}

 

4八、集合的做用是什麼?
數據的傳送 增、刪、改、查、constainsAll,能夠存放不一樣類型的對象。

4九、集合的通用方法有那些?通用方法是什麼?(操做)
集合 List 的遍歷方法有:
Iterator:
Enumeration
For
Get
set

Collection 的通用方法有:
Iterator()
Add()
Clear();
remove()

50、說出 ArrayList,Vector, LinkedList 的存儲性能和特性 HashMap 和
Hashtable 的區別
ArrayList Vector:以數組的方式存儲,增、刪慢,查、改快
ArrayList:線程不安全,速度快
Vector:線程安全,速度慢(synchoronized)
LikedList: 以單鏈表的方式存儲,增、刪快,查、改慢
HashMap 與 Hashtable 都實現的 Map 接口,HashTable 線程安全,HashMap 線程不
安全。

5一、Collection 和 Collections 的區別。
Collection 是集合的根接口,其下有 set 及 list
Collections 是集合的算法。

5二、Set 裏的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==
仍是 equals()? 它們有何區別?用 contains 來區分是否有重複的對象。仍是都
不用。
在比較時先調用 hashCode 方法,若是不相同,證實不相等。
若是相同,再調用 equals 方法,若是 equals 方法相同,證實相等,不相同,證實不相等。
==:主要用在基本數據類型及引用
Equals:主要是對象或對象引用的比較。
集合中是否包含某一個元素用 contains 來判斷。

5三、List, Set, Map 是否繼承自 Collection 接口?
List,set 繼承於 Collection
Map 沒有繼承於 Collection,其相對是獨立的。
屬於 Collection 類型的對象,能夠經過構造函數將一個集合構形成另一個集
合。

5四、面向對象的特徵有哪些方面
1.抽象:
找共性,將共有的屬性、方法放到父類中
2.繼承:
子類繼承於父類,具備父類的全部屬性與方法,能夠重用,也能夠覆蓋。
3.封裝:
一個類包括多個屬性及方法。
4. 多態性:
動態:
靜態:

5五、String 是最基本的數據類型嗎?
基本數據類型包括 byte、int、char、long、float、double、boolean 和 short。
java.lang.String 類是 final 類型的,所以不能夠繼承這個類、不能修改這個
類。爲了提升效率節省空間,咱們應該用 StringBuffer 類

5六、int 和 Integer 有什麼區別?
Int 是基本數據類型,不是對象,佔一個內存空間,沒有方法。與其同類的有
long,char,doble
Integer 是封裝類,具備方法及屬性。與其同類的有 Long,Double.Float

5七、運行時異常與通常異常有何異同?
運行時異常:java JVM 拋出的異常,代碼中不用處理。

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

5八、&和&&的區別?
&:與: 左邊若爲 false 右邊還執行。
&&:短路與,左邊若爲 false 右邊不執行。


5九、final, finally, finalize 的區別?
final 用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類
不可繼承。
finally 是異常處理語句結構的一部分,表示老是執行。
finalize 是 Object 類的一個方法,在垃圾收集器執行的時候會調用被回收
對象的此方法,能夠覆蓋此方法提供垃圾收集時的其餘資源回收,例如關閉文
件等。
算符能夠用來決定某對象的類是否實現了接口。

6二、heap 和 stack 有什麼區別?
棧是一種線形集合,其添加和刪除元素的操做應在同一段完成。棧按照後進先
出的方式進行處理。
堆是棧的一個組成元素
6三、Static Nested Class 和 Inner Class 的不一樣?
Static Nested Class 是被聲明爲靜態(static)的內部類,它能夠不依賴於外
部類實例被實例化。而一般的內部類須要在外部類實例化後才能實例化。

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

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

6六、short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?
short s1 = 1; s1 = s1 + 1; (s1+1 運算結果是 int 型,須要強制轉換類型)

short s1 = 1; s1 += 1;(能夠正確編譯)

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

6八、Java 有沒有 goto?
 java 中的保留字,如今沒有在 java 中使用。

6九、給我一個你最多見到的 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 的子類。

7一、abstract 的 method 是否可同時是 static,是否可同時是 native,是否可同
時是 synchronized?
 都不能

7二、數組有沒有 length()這個方法? String 有沒有 length()這個方法?
數組沒有 length()這個方法,有 length 這個屬性
String 有 length()這個方法.

7三、構造器 Constructor 是否可被 override?
構造器 Constructor 不能被繼承,所以不能重寫 Overriding,但能夠被重載
Overloading。

7四、是否能夠繼承 String 類?
String 類是 final 類故不能夠繼承。

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

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

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


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

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

80、四種會話跟蹤技術
Cookie
Session
Hidden
url 重寫

8一、編程題: 寫一個 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 的。
通常認爲第一種形式要更加安全些

 

8三、Java 中的異常處理機制的簡單原理和應用。
原理
有錯直接轉到異常處理部分或向上拋出。
應用:
JAVA 的異常就是錯誤,有兩種一種是運行時,編碼能夠不用捕捉。一種
是通常異常,若是 throws 聲明瞭,必須進行處理。

8四、垃圾回收的優勢和原理。並考慮 2 種回收機制。
優勢:
程序員不用管內存,jvm 自動完成,開發方便。運行優先很是低,程序沒法
清楚實例何時被消毀。

8五、描述一下 JVM 加載 class 文件的原理機制?
JVM 中類的裝載是由 ClassLoader 和它的子類來實現的,Java ClassLoader 是一
個重要的 Java 運行時系統組件。它負責在運行時查找和裝入類文件的類。

8六、char 型變量中能不能存貯一箇中文漢字?爲何?
可以定義成爲一箇中文的,由於 java 中以 unicode 編碼,一個 char 佔 16 個字
節,因此放一箇中文是沒問題的

一、java 中有幾種類型的流?JDK 爲每種類型的流提供了一些抽象類以供繼承,
請說出他們分別是哪些類?
字節流,字符流。字節流繼承於 InputStream OutputStream,字符流繼承於
Reader Writer。在 java.io 包中還有許多其餘的流,低層流與調層流,高層流
主要是爲了提升性能和使用方便。

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

三、線程的基本概念、線程的基本狀態以及狀態之間的關係
線程是進程內的併發,沒有自已內存空間,共享進程的,線程間的通訊成本較
低。
Java 中的線程有四種狀態分別是:運行、就緒、掛起、結束。

四、多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼? 用什麼
關鍵字修飾同步方法? 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()從新啓動線程。

 

五、集合框架有什麼?
Collection Map
List set HashMap
ArrayList linkedList HashSet TreeSet
十二、設計 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();
// }
}
}
1三、同步和異步有和異同,在什麼狀況下分別使用他們?舉例說明。
同步:上一段代碼沒的完成,下一段必須等到上一段代碼完成後才能夠執行。
如買票排隊
異步:上一段代碼沒的完成,下一段沒必要等到上一段代碼完成就能夠執行。如
手機發送短信。
1四、sleep() 和 wait() 有什麼區別?
Sleep 是指休眠給定的時間,當這個時間達到以後,線程會再次醒來。
Wait 是等待狀態,多長時間不清楚,由另外一個線程將其喚醒。
1五、當一個線程進入一個對象的一個 synchronized 方法後,其它線程是否可
進入此對象的其它方法?
如只其它方法是同步方法,不能夠進入。若是不是能夠進入。
1七、輸入輸出流的理解:
在 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
1八、請寫一個程序的讀寫,要求用兩種方式一種是低層流另外一種是高層流。
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();
 }
}
1九、如何列出某個目錄下的全部文件
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");
 }
 }
 }
 }

 

2. 判斷一個文件或目錄是否存在
 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();
 }
}
2三、介紹 JAVA 中的 Collection FrameWork(包括如何寫本身的數據結構)?
答:Collection FrameWork 以下:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection 是最基本的集合接口,一個 Collection 表明一組 Object,即
Collection 的元素(Elements)
Map 提供 key 到 value 的映射
2四、請說出你所知道的線程同步的方法
HashTable 中的 put,get,remove
Vector 的相關方法。
jdbc 數據訪問技術
一、JDBC 如何作事務處理?
Con.setAutoCommit(false)
Con.commit();
Con.rollback();
二、寫出幾個在 Jdbc 中經常使用的接口
preparedStatement,callableStatement,statement,Connection,ResultSet
三、簡述你對 Statement,PreparedStatement,CallableStatement 的理解
statement 用於執行靜態 SQL 語句並返回它所生成結果的對象,在執行時

肯定 sql。
PreparedStatement 表示預編譯的 SQL 語句的對象。 SQL 語句被預編譯並
且存儲在 PreparedStatement 對象中。而後可使用此對象高效地屢次執行該
語句,能夠傳參數,在獲得 PreparedStatement 對象時肯定 sql.
CallableStatement 用於執行 SQL 存儲過程的接口。若是有輸出參數要注
冊說明是輸出參數。
四、Java 中訪問數據庫的步驟?
1 鏈接 Oracle 數據庫
Class.forName(「oracle.jdbc.driver.OracleDriver」);
Connection
con=DriverManager.openConnection(「jdbc:oracle:thin:@localhost:1521:Da
taBase 」,」 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(「字段名」)
}
五、JDBC 中的核心類及其做用是什麼?
DriverManager
Class.forName();
DriverManager.openConnection(「」,」sa」,」」)
Connection
PreparedStatement(Statement)
ResultSet rs=executeQuery() dql
While(rs.next())
{
}
executeUpdate() dml ddl

 

六、執行存儲過程用那一個類,如何操做輸出參數?(操做)
CallableStatement c=con. prepareCall ("{call getCustomerName(?,?)}");
c.setString(1,"1");
c.registerOutParameter(2,java.sql.Types.VARCHAR);
c.execute();
c.getString(2);
八、可能會讓你寫一段 Jdbc 連 Oracle 的程序.
Class.forName("oracle.jdbc.driver.OracleDriver");
 Connection
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ac
cp","system","system");
九、Class.forName 的做用?爲何要用?
註冊一個數據庫驅動,將驅動加載到當前的 JVM 中。
十、Jdo 是什麼?
JDO 是 Java 對象持久化的新的規範,爲 java data object 的簡稱,也是一個用
於存取某種數據倉庫中的對象的標準化 API。JDO 提供了透明的對象存儲,所以
對開發人員來講,存儲數據對象徹底不須要額外的代碼(如 JDBC API 的使用)。
這些繁瑣的例行工做已經轉移到 JDO 產品提供商身上,使開發人員解脫出來,
從而集中時間和精力在業務邏輯上。另外,JDO 很靈活,由於它能夠在任何數據
底層上運行。JDBC 只是面向關係數據庫(RDBMS)JDO 更通用,提供到任何數據
底層的存儲功能,好比關係數據庫、文件、XML 以及對象數據庫(ODBMS)等等,
使得應用可移植性更強。(o/rMapping 工具 集合處理)
十一、在 ORACLE 大數據量下的分頁解決方法。通常用截取 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 技術
一、簡單說說 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,肯定便可。

 

二、JSP 中動態 INCLUDE 與靜態 INCLUDE 的區別?
jsp:include:在運行時調用另外一個頁面,變量是能夠重複的。
<%@include file=」」%>:在轉譯時合在一塊兒,會成爲同一個類,變量不能夠重複。
三、forward 和 redirect 的區別?
forward: 轉發,在下一個頁面中,request 保留上一個頁面中的 request 的全部


redirect: 跳轉,不傳遞 request 對象。
四、Servlet 的體系結構是什麼?
Servlet
GenericServlet
HttpServlet
自定義
五、如何實現一個自定義的 servlet?
extends HttpServlet 並覆蓋 doPost 或 doGet 方法
在 web.xml 中進行部署
六、Servlet 的生命週期是什麼?
Init
屢次執行 doGet 或 doPost
destroy
七、jsp 就是一個 servlet 是否正確?

八、請羅列 jsp 中的腳本、指令及動做?
腳本
<%%> <%=%> <%!%> <%----%>
 指令
<%@page contentType=」text/html;charset=utf-8」
language=」java」 import=」」%>
<%@include file=」」%>
<%@taglib uri=」」 prefix=」」%>
 動做:
<jsp:useBean class=」」 id=」」 scope=」」> 在 scope 中若是
沒有實例化一個對象,若是有直接用之前的。
<jsp:getProperty name=」」 property=」」> 向一個 bean 中設
置屬性值
<jsp:forward > jsp 頁的轉發
<jsp:include page=」」> 導入一個 jsp 頁面
九、JSP 的內置對象及方法
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
十、說出在 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>&nbsp;&nbsp;
 <a href="page.jsp?page=<%=currentPage-1%>">上一頁</a>&nbsp;&nbsp;
 <%
 }
 if(currentPage!=pageCount)
 {
 %>
 <a href="page.jsp?page=<%=currentPage+1%>">下一頁</a>&nbsp;&nbsp;
 <a href="page.jsp?page=<%=pageCount%>">最後一頁</a>&nbsp;&nbsp;
 <%
 }
 %>
 </td>
</tr>

 </table>

 

十一、include 的兩種實現方式的區別?
<@include file>:在將 jsp 生成 servlet 類前將兩個文件和在一塊兒,生成一個
java 類,一塊兒運行的。因此是一家子,當中的變量名不能重名。
<jsp:include page>:是兩個類,是一個調用關係,在運行時動態的調用,不是
一家子,能夠重複變量。
十二、jsp 頁面中兩種跳轉方式分別是什麼?有什麼區別?
轉發: 保留上次的 request
<jsp:forward>
actionMapping.findForWard(「」);
pageContext.forward();
request.getRequestDispacher(「a.jsp」).forward(request,response)
跳轉:不保留上次的 request
Response.setRedirect(「」)
1三、描述 JSP 和 Servlet 的區別、共同點、各自應用的範圍
Jsp 主要在於頁面的顯示動態生成頁面,能夠與 html 標記一塊兒使用,其仍是要
生成爲一個 servlet。
Servlet:主要是控制的處理,如調用業務層,跳轉不一樣的 jsp 頁面。
Mvc:
Jsp:v
Servlet:c
1四、在 JSP 中如何讀取客戶端的請求,如何肯定某個 Jsp 文件的真實路徑?
Request.getparameter(「」)
<%=application.getRealPath("aa.jsp") %>
1五、描述 Cookie 和 Session 的做用,區別和各自的應用範圍,Session 工做
原理。
Cookie:主要用在保存客戶端,其值在客戶端與服務端之間傳送,不安全,存儲
的數據量有限。
Session:保存在服務端,每個 session 在服務端有一個 sessionID 做一個標
識。存儲的數據量大,安全性高。佔用服務端的內存資源。

1六、說明 Jsp 中 errorPage 的做用,應用範圍。
正常頁面中
%@page erropage=」error.jsp」%
 錯誤頁面
<%@page iserrorpage=」true」%>
 有一內置對象:exception
1七、介紹在 Jsp 中如何使用 JavaBeans
<jsp:useBean class=」」 id=」」 scope=」」/>
<%
New 類();
%>
1九、簡單介紹 JSP 的標記庫
作一個標記處理類 extends TagSupport
經過 tld 說明標記處理的類的前綴及後綴
在 web.xml 中說明 tld 文件
<taglib>
<taglib-uri>
<taglib-location>
<taglib>
在 jsp 頁面是引用 tld<%@taglib uri=」」 prefix=」」%>
20、Servlet 中的核心類有那些,各有什麼特色?
ServletContext:容器,放置全局變量
setAtribute()
getAttribute()
ServletConfig:一個 servlet 的配置
getInitParameter(」名稱」)
HttpServletRequest:封裝的全部的請求
getParameterValue(」名稱」)
getParameterValues(」稱」)
getSession();
getAttribute(」 名稱」);
getRequestDispatch(」a.jsp」).forward(request,response)
HttpServletResponse:響應
getOut();
sendRedirect(」」)
HttpSession:一個用戶多個頁面共享同一變量
setAttribute(」」,」」)
2一、Servlet 中重要的包有那些,有什麼區別?
javax.servlet.*;javax.servlet.http.*;
2二、說出 Servlet 的生命週期,並說出 Servlet 和 CGI 的區別?
Servlet 被服務器實例化後,容器運行其 init 方法,請求到達時運行其 service
方法,service 方法自動派遣運行與請求對應的 doXXX 方法(doGet,doPost)
等,當服務器決定將實例銷燬的時候調用其 destroy 方法。
與 cgi 的區別在於 servlet 處理服務器進程中,它經過多線程方式運行其
service 方法,一個實例能夠服務於多個請求,而且其實例通常不會銷燬,而
CGI 對每一個請求都產生新的進程,服務完成後就銷燬,因此效率上低於 servlet。
2三、什麼狀況下調用 doGet()和 doPost()?
Jsp 頁面中的 form 標籤裏的 method 屬性爲 get 時調用 doGet(),爲 post
時調用 doPost()。
2五、如何現實 servlet 的單線程模式
在 doGet 及 doPost 方法前加入 synchoronized
JSP:
<%@ page isThreadSafe="true"%>
2七、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):刪除請求中的一個屬性
2八、咱們在 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;
 }
30、Servlet 執行時通常實現哪幾個方法?
public void init(ServletConfig config)
public ServletConfig getServletConfig()
public String getServletInfo()
public void service(ServletRequest request,ServletResponse response)
public void destroy()

 

5 Hibernate 持久層技術
一、在 myeclipse 加入 hibernate 環境的全過程是什麼?
Db-browers 加入配置鏈接
新建工程
加入 hibernate 環境,指定*.hbm.xml 及 HibernateSessionFactory 文件所在的
位置
二、hibernate 的核心配置文件是什麼及其做用?
Hibernate.cfg.xml:數據庫鏈接、指定相關的映射文件
*.hbm.xml:具體的 o/r mapping 說明
三、hibernate 的核心類是什麼,它們的相互關係是什麼?重要的方法是什麼?
Configuration
SessionFactory
Session 以下方法
Save
load
Update
Delete
 Query q=CreateQuery(「from Customer where
customerName=:customerName」)
beginTransaction
close
Transaction
Commit()
四、關聯:
one-to-many
inverse:主控方,外鍵的關係有誰控制
inverse=false 是主控方,外鍵是由它控制的
inverse=true 是被控方,外鍵與它不要緊
 要想實現主控方的控制必須將被控方做爲主控方的屬性
cascade:級聯
 主表增從表增
 主表修從表修
 主表刪從表刪
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
lazy:延遲
lazy=false:一下將全部的內容取出,不延時(經常使用)
lazy=true:取出部份內容,其他內容動態去取
 經過 get 能夠取出對方的全部內容
五、hibernate 中的 one-to-many 或 many-to-one 中經常使用的方式是什麼?
主控方在 many 這邊,不及連刪除
六、Criteria 的做用?
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 行
七、DetachedCriteria 的做用?
產生時不須要 session
DetachedCriteria dc= DetachedCriteria.forClass(Customer.class)
Criteria c=Dc.getExecutableCriteria(session)
八、Query
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]
}
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
}
分組: "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"
九、繼承關係的實現
 一、兩個表,子類重複父類的屬性。
 二、一個表,子類父類共用一個表
 <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" />
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
 </joined-subclass>
</class>
批量刪除
Query query=session.createQuery("update"或"delete");
query.executeUpdate();
十、tomcat鏈接池:在容器中預先產生了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=jsp
dev;SelectMethod=cursor</value>
</parameter>
 <parameter>
<name>username</name>
 <value>sa</value>
</parameter>
 <parameter>
<name>password</name>
<value></value>
 </parameter>
 <parameter>
<name>maxActive</name>
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
 <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>
十一、對象的三大狀態
自由(transient)
 與 session 無關
持久(persistent)
 由 session 來管理
 在持久狀態中經過 get 方法取出對方
遊離(detached)
 被 session 拋棄
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
十二、hibernate 常見優化策略
用最新版本的 hibernate
制定合理的緩存策略
採用合理的 session 管理機制
儘可能使用延遲加載
many
 大文本、大文件
設定合理的批處理參數(batch-size)
若有可能,選用 uuid 做爲主鍵生成器
若有可能,選用基於 version 的樂觀鎖替代悲觀鎖
開發過程當中,打開 hibernate 的 SQl 日誌輸出(hibernate.show_sql=true),
經過觀察 hibernate 生成的 sql 語句進一步瞭解其實現原理,從而指事實上更
好的實現策略。
6. iBatis 持久層技術
用 ibatis 的緣由:
只對開發團隊提供幾條 Select SQL(或存儲過程)以獲取所需數據,具體的表結構不予
公開。
開發規範中要求,全部牽涉到業務邏輯部分的數據庫操做,必須在數據庫層由存儲過
程實現
系統數據處理量巨大,性能要求極爲苛刻,這每每意味着咱們必須經過通過高度優化
的 SQL 語句
(或存儲過程)才能達到系統性能設計指標。
jdbc、hibernate、ibatis 的區別
jdbc:手動
 手動寫 sql
delete、insert、update 要將對象的值一個一個取出傳到 sql 中,不能直接傳入一個對
象。
select:返回的是一個 resultset,要從 ResultSet 中一行一行、一個字段一個字段的取
出,而後封裝到一個對象中,不直接返回一個對象。
ibatis 的特色:半自動化
sql 要手動寫
delete、insert、update:直接傳入一個對象
select:直接返回一個對象
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
hibernate:全自動
 不寫 sql,自動封裝
delete、insert、update:直接傳入一個對象
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
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
buyDao
sqlMapClient
Facade
buyDao
customerDao
abstractProxy:TransactionProxyFactoryBean
transactionManager
transactionAttributes
facadeProxy
target:façade

7 Structs 界面控制層技術
一、請說出 struts 框架的幾大組件?
 一、MVC
 二、標籤庫
 三、校驗框架
 四、國際化
 五、tiles
三、struts 的核心類有那些,在 MVC 模式中其對應的關係是什麼?
C
ActionServlet
RequestProcessor
Action
actionMapping(struts-config.xml)
actionFormard
V
ActionForm
Jsp
M
 Dao
Manager(facade)
四、Struts 的處理請求的全過程是什麼?
url-> ActionServlet(process)-> RequestProcessor(process)->實例化 form
->填充 form 值->進行校驗->實例化 action->調用 execute
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
五、在 struts 中如何經過一個 url 找到一個 action,它的核心配置文件是什麼?
配置文件是 struts-config.xml
六、爲何使用 MVC,其主要目的是什麼?
讓 v 與 M 強制解耦,提升可重用性(旅館的服務員(C))
七、對於 MVC 在 action 中對應有類有幾種,各有什麼做用?
Action:
1) 基本的
DispatchAction:
2) 存在多個方法,根據頁面傳入的表單域的值調用不一樣的方法,表單域的名稱
在<action param=」」/>標記中進行配置
LookupDispatchAction
3) 多個按鈕用同一個 action 的不一樣方法。實現 getMap 方法,說明每個按鈕
在*.properties 中的鍵名及鍵值,在 struts-config.xml 經過 parameter 說明
按鈕的名稱,按鈕的值對應*.properties 的值,經過值找鍵名,經過鍵名找 Map
中的鍵名找到值就是相應的方法。
MappingDispatchAction:未知
forwordAction:直接跳轉到不一樣頁面不執行邏輯(???)
類所在的包:org.apache.struts.actions.ForwardAction
八、struts 的標記有幾類,請列舉並說明其做用?
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>
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
九、如何在 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();
十、如何在 jbuilder 中開發 struts?
工程
Web 模 型 ( 選 中 struts1.2.8 , 會 自 加 在 web –inf 中 生 成 tld 及
struts-config.xml,並加載相關的類包)
建一個 ActionForm
建一個 Action
修改 struts-config.xml 文件
十一、如何實現 struts 的 validator 框架?
 手動:
public class myForm extends ActionForm
{
public ActionErrors validate()
{
actionErrors.add(ActionErrors.GLOBAL_MESSAGE,new
ActionMessage("properties 中的鍵名"));
}
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
}
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="/錯誤頁面"
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
1三、如何實現國際化?
國際化:不用修改代碼,就適用於不一樣的語言國家
本地化:若是要適應一個國家,要修改源代碼
實現過程:
在 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 界面控制層技術
一、Jsf 中的核心類用那些?有什麼做用?
核心類
FacesServlet
LiftCycle FacesContext

二、Jsf 中的 LiftCycle 六大生命週期是什麼?
恢復視圖->應用請求值->校驗->更新模型->調用應用程序->呈現響應
三、如何管量 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>
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
四、Jsf 中導航的標籤是什麼?
<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>
五、jsf 中用戶界面組件模型有幾類,各表明什麼?
UI 組件、事件監聽、顯示、類型轉換、驗證
六、表格處理及取值
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.屬性名},顯示確定無值,但客戶輸入值提交後會
將值勤寫入
七、jsf 的標籤庫有哪些?
核心:f
 校驗
<f:validateDoubleRange>
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
<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 應用框架技術
一、Spring 和 Struts 的區別?
strusts:是一種基於 MVC 模式的一個 web 層的處理。
Spring:提供了通用的服務,ioc/di aop,關心的不只僅 web 層,應當 j2ee 總體的一個服務,
能夠很容易融合不一樣的技術 struts hibernate ibatis ejb remote springJDBC springMVC
二、什麼是 aop,aop 的做用是什麼?
Oop:縱向的業務
Aop:oop 的一個橫向的服務,是對 oop 進一步的補充,提供安全、事務、日誌
等的集中式處理,相關的裝備 before、around、after exception
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
三、aop 中的關鍵名詞有些那些,相互關係是什麼?
攔截器: 代理
裝備(advice)
目標對象
關切點:條件
鏈接點:方法、屬性
四、依賴注入的方式有幾種,各是什麼?
Setter
Interface
constructor
五、spring 中的核心類有那些,各有什麼做用?
BeanFactory:產生一個新的實例,能夠實現單例模式
BeanWrapper:提供統一的 get 及 set 方法
ApplicationContext:提供框架的實現,包括 BeanFactory 的全部功能
六、ApplicationContext 的做用
beanFactory
國際化(getMesage)
資源管理:能夠直接讀取一個文件的內容(getResource)
加入 web 框架中(加入一個 servlet 或監聽器)
事件處理
七、如何實現資源管理
使用
applicationContext.getResource(「classpath:文件名」):在 src 根目錄下,
在類路徑下
applicationContext.getResource(「classpath:/chap01/文件名」): 以 src
根目錄下的基準往下走。
applicationContext.getResource(「file:c:/a.properties」):在系統文件
目錄下。
八、如何實現加入 web 框架中
在 web.xml 中 加 入 如 下 同 容 , 在 啓 動 web 服 務 器 時 加 載
/WEB-INF/applicationContext.xml 中的內容。
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
<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
九、如何實現事件處理
事件
Extends ApplicationEvent
監聽器
Implements ApplicationListener
事件源
Implements ApplicationContextAware
在 applicationContext.xml 中配置事件源、監聽器
先獲得事件源,調用事件源的方法,通知監聽器。
十、spring 的 ioc 及 di 表明什麼意思?
Ioc:程序在運行過程當中,根據配置文件動態加載所依賴的配置類
、如何在 spring 中實現國際化?
在 applicationContext.xml 加載一個 bean
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSour
ce">
<property name="basename">
<value>message</value>
</property>
</bean>
在 src 目錄下建多個 properties 文件
對於非英文的要用 native2ascii -encoding gb2312 源 目轉化文件相關
內容
其命名格式是 message_語言_國家。
頁面中的中顯示提示信息,鍵名取鍵值。
當給定國家,系統會自動加載對應的國家的 properties 信息。
經過 applictionContext.getMessage(「鍵名」,」參數」,」區域」)取出相關
的信息。
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
十二、spring 的配置的主要標籤是什麼?有什麼做用?
<beans>
<bean id=」」 class=」」 init=」」 destroy=」」 singleton=」」>
<property name=」」>
<value></value>
</property>
<property name=」」>
<ref local></ref>
</property>
</bean>
</beans>
1三、spring 與 ejb2.0 的事務管理比較的優缺點?
測試:
Spring:pojo
Ejb:二個接口一個類,一堆配置文件
事務類型
Spring:jdbc jta hibernate
Ejb:jta
成本
 Spring:普通容器(tomcat jboss)
 Ejb:weblogic jboss
開發的週期:
Spring 遠比 ejb 快.
1四、spring 的 jdbc 與傳統的 jdbc 有什麼區別,其核心類有那些?
Spring 的 jdbc:節省代碼,無論鏈接(Connection),無論事務、無論異常、不
管關閉(con.close() ps.close )
JdbcTemplate(dataSource):增、刪、改、查
TransactionTemplate(transactionManager):進行事務處理
1五、在 spring 中有幾種事務管理,分別是什麼?
代碼管理的事務處理
TransactonTemplate 的 execute 方法中的內部類 TransactionCallback 中的
doInTransaction 方法中使用。
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
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;
}
}
 容器管理的事務處理
1六、在 spring 中如何配代碼的事務管理?
Datasouce
transactionManager
userDao 要注入
Datasouce
transactionManager
 經過以下類實現
TransactionTemplate
JdbcTemplate
1七、在 spring 中如何配容器的事務管理,相關的類有那些?
Datasouce
transactionManager
userDao 要注入
Datasouce
Proxy 代理
Target:userDao:代理對象(目標對象)
transactionAttributes(那些方法須要事務處理)
transactionManager(事務處理服務)
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
1八、若是 spring 與 hibernate 結合在一塊兒能夠不須要 hibernate.cfg.xml 文件
是否正確?
不須要
1九、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,能夠節省代碼。
2一、如何配置 spring+struts?
在 struts-config.xml 加入一個插件,經過它加載 applicationContext.xml
在 struts-config.xml 修改 action-mapping 標記,具體 action 交給了
DelegateActionProxy
經過 DelegateActionProxy 進入一 spring 的環境。
在 spring 的 applicationContext.xml 加入<bean name="/login" class=""
singleton="false"/>
2二、如何在 web 環境中配置 applicationContext.xml 文件?
<listener>
軟帝(Softeem)信息科技有限公司
Softeem Information Science and Technology Co,Ltd.
 Tel:(027)51799045 (027)51799054
 http://www.softeem.com
<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.getServl
etContext);
2四、Jsf 和 spring 的區別?
jsf:是一種基於 MVC 模式的一個 web 層的處理,粒度較 struts 較細。
Spring:提供了通用的服務,ioc/di aop,關心的不只僅 web 層,應當 j2ee 總體的一個服務,
能夠很容易融合不一樣的技術 struts hibernate ibatis ejb remote springJDBC springMVC

 

Ejb 技術一、weblogic 的熱發佈將 ear、jar、war 拷到 C:\bea\user_projects\domains\mydomain\applications 目錄weblogic 會自動發佈經過 jbuilder 將 ear 或 jar 或 war 部署到服務器上。二、在 ejb 中實現 one-to-many 一、在 many 中的將外鍵字段屬性刪除 二、在刪除 many 中的值時要將 Collection 轉化爲 ArrayList, 並反向遍歷 ArrayList,先刪除 ArrayList 中值,根據 ArrayList 刪除反回的對象轉化爲 many 的遠程接口,經過 遠程接口將 many 刪除軟帝(Softeem)信息科技有限公司Softeem Information Science and Technology Co,Ltd. Tel:(027)51799045 (027)51799054 http://www.softeem.com三、ejb 所用的技術:Jndi:java naming directory inferfaceRmi: remote method invoke四、實現 ejb 幾個接口,幾個類?兩個接口一個類extends EJBHome 經過 jndi 獲得 home 接口create 方法調用服務端的 ejbCreate 方法,在服務端產生一個 EntityBean 或SessionBean 實例,向客戶端返回一個遠程接口。 經過 find 方法在從服務端找到一個 EntityBean 實例,向客戶端返回一個遠程接口。extends EJBObject 在客戶端經過 rmi 調用遠程服務端方法。 經過 remove 方法調用服務端的 ejbRemove 方法,將 EnityBean 刪除implements SessionBean 在服務端實現真正的處理,實現核心業務五、實現 ejb 相關的配置文件是什麼?ejb-jar.xml:說明 ejb 的兩個接口一個類的。weblogic-ejb-jar.xml:說明 ejb 的 JNDI 名weblogic-rdbms-ejb.xml:o-rMapping 實現數據庫表、字段與 ejb 屬性對應的關係。ejb2.0 的開發 一、用 jbuilder 集成環境 二、能夠用 eclipse 開發,用源代碼註釋說明,用 ant 執行 xdoclet,xdoclet 通 過源代碼註釋自動生相關的配置、兩個接口一個類。/*** @stateLess* @remote*/六、ejb 的分類?區別sessionBeanstateless:方法間不保留(1..1)statefull:方法間保留(1..n)entityBean:持久化cmp:增刪改容器bmp:增刪改手動 jdbc 軟帝(Softeem)信息科技有限公司Softeem Information Science and Technology Co,Ltd. Tel:(027)51799045 (027)51799054 http://www.softeem.commessage driver bean 異處的消息處理七、本地接口與遠程接口的區別。EJBHome(在不一樣的進程或主機間調用,即不一樣的 jvm)EJBObjetEJBLocalHome(在同一進程,同是 jvm 中)EJBLocalObject八、請求處理的過程?會話urlfactory經過 jndi 獲得一個 home 實例在客戶端經過 home 實例在服務端產生一個 sessionBean,客戶端返回一個接口客戶端經過遠程接口調用方法。九、statefull 的生命週期不存在setSessionContextcreate--->ejbcreate就緒:能夠調用 remove 方法將 sessionBean 刪除、能夠調用服務端的任何方法。ejbPassivate(從就緒到掛起)ejbActivate(從掛起到就緒)掛起 若是超時自動刪除十、stateless 的生命週期不存在setSessionContextcreate--->ejbcreateremove-->ejbremove就緒十一、entityBean 的生命週期:不存在軟帝(Softeem)信息科技有限公司Softeem Information Science and Technology Co,Ltd. Tel:(027)51799045 (027)51799054 http://www.softeem.comsetEntityContextcreate--->ejbcreate入池 空房子,沒加載數據ejbActivateejbPassivate就緒remove-->ejbRemove 加載了數據庫的數據十二、EJB 需直接實現它的業務接口或 Home 接口嗎,請簡述理由。遠程接口和 Home 接口不須要直接實現,他們的實現代碼是由服務器產生的,程序運行中經過接口調用服務端產生的實例。1三、EJB 的激活機制以 Stateful Session Bean 爲例:其 Cache 大小決定了內存中能夠同時存在的Bean 實例的數量,根據 MRU 或 NRU 算法,實例在就緒和掛起狀態之間遷移。就緒:從文件到內存,調用 ejbActivate 方法掛起:從內存到文件,調用 ejbPassivate 方法1四、EJB 是基於哪些技術實現的?並說 出 SessionBean 和 EntityBean 的區別,EJB 包括 Session Bean、Entity Bean、Message Driven Bean,基於 JNDI、RMI、JTA 等技術實現.SessionBean 在 J2EE 應用程序中被用來完成一些服務器端的業務操做。例如訪問數據庫、調用其餘 EJB 組件.EntityBean 被用來表明應用系統中用到的數據.對於客戶機,SessionBean 是一種非持久性對象,它實現某些在服務器上運行的業務邏輯;EntityBean 是一種持久性對象,它表明一個存儲在持久性存儲器中的實體的對象視圖,或是一個由現有企業應用程序實現的實體.Session Bean 還能夠再細分爲 Stateful Session Bean 與 Stateless SessionBean .這兩種的 Session Bean 均可以將系統邏輯放在 method 之中執行,不一樣的是 Stateful Session Bean 能夠記錄呼叫者的狀態,所以一般來講,一個使用者會有一個相對應的 Stateful Session Bean 的實體.Stateless SessionBean 雖然也是邏輯組件,可是他卻不負責記錄使用者狀態,也就是說當使用者軟帝(Softeem)信息科技有限公司Softeem Information Science and Technology Co,Ltd. Tel:(027)51799045 (027)51799054 http://www.softeem.com呼叫 Stateless Session Bean 的時候,EJB Container 並不會找尋特定的Stateless Session Bean 的實體來執行這個 method.換言之,極可能數個使用者在執行某個 Stateless Session Bean 的 methods 時,會是同一個 Bean 的Instance 在執行.從內存方面來看, Stateful Session Bean 與 StatelessSession Bean 比較, Stateful Session Bean 會消耗 J2EE Server 較多的內存,然而 Stateful Session Bean 的優點卻在於他能夠維持使用者的狀態.1五、EJB 的分類是什麼?各有什麼特色?sessionBean:主機重起消失Stateless:不記憶StateFull:一個用戶多個操做可記憶EntityBean:持久的數據庫中Cmp:容器經過 o/r mapping 實現數據的持久化,不寫 sql,實現方便,在速度慢。Bmp:經過 jdbc 實現持久化,實現複雜,速度快messageBean:提供異步處理。十、EJB 中主要的配置文件及做用是什麼?EJB 部署時須要三個文件:Ejb-jar.xml:將二個接口一個類打包在一塊兒,給 EJB 一個名稱。說明當前的 sessionBean 的事務是由容器處理的。其在全部的服務器上是通用的。Weblogic-ejb-jar.xml:將一個 EJB 名稱,對應一個 JNDI,在僅對 weblogic 服務器Weblogic-rdbms-jar.xml:實現 o/r mapping 的說明,至關於*.hbm.xml1五、說出數據鏈接池的工做機制是什麼?容器或相關的應用程序在其池中實例化多個邊接,當應用程序在使用時,容器直接將池中的鏈接取出應用程序直接使用,同時當應用程序使用完後,容器還能夠將鏈接收回。從而提升系統的效率。1六、EJB2.0 有哪些內容?分別用在什麼場合? EJB2.0 和 EJB1.1 的區別?sessionBean:是一個過程entityBean:是持久化,表明的是一個業務實體,有主鍵。軟帝(Softeem)信息科技有限公司Softeem Information Science and Technology Co,Ltd. Tel:(027)51799045 (027)51799054 http://www.softeem.comStruts+sessionBean+entityBeanEJB2.0 加入的本地接口及本地 homeEJB1.1 中只有遠程接口及遠程 home1八、EJB 與 JAVA BEAN 的區別?Java Bean 是可複用的組件,任何一個 Java 類均可以是一個 Bean。但一般狀況下,Java Bean 是被容器所建立(如 Tomcat)的,因此 Java Bean 具備以下特點:一個無參的構造器實現 Serializable 接口私有屬性公有 get set 方法Enterprise Java Bean 是一個分佈式組件,其特色是基於(RMI)技術的,能夠被遠程訪問(跨進程、跨計算機)。EJB 必須被佈署在 Webspere、WebLogic 容器中,不能直接訪問 ejb,而是通過容器訪問 ejb,容器是 ejb 訪問的一個代理。1九、EJB 的角色和三個對象六個角色組成,分別是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 類20、EJB 容器提供的服務主要提供安全事務管理分佈式jts聲明週期管理代碼產生持續性管理軟帝(Softeem)信息科技有限公司Softeem Information Science and Technology Co,Ltd. Tel:(027)51799045 (027)51799054 http://www.softeem.com鎖和併發行管理等服務。2一、EJB 規範規定 EJB 中禁止的操做有哪些?1.不能操做線程和線程 API(線程 API 指非線程對象的方法如 notify,wait等),2.不能操做 awt,3.不能實現服務器功能,4.不能對靜態屬生存取,5.不能使用 IO 操做直接存取文件系統,6.不能加載本地庫.,7.不能將 this 做爲變量和返回,8.不能循環調用。2六、EJB 的基本架構答:一個 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; 軟帝(Softeem)信息科技有限公司Softeem Information Science and Technology Co,Ltd. Tel:(027)51799045 (027)51799054 http://www.softeem.compublic 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 軟帝(Softeem)信息科技有限公司Softeem Information Science and Technology Co,Ltd. Tel:(027)51799045 (027)51799054 http://www.softeem.comWebService 技術一、什麼是 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。二、什麼是 Web 容器?實現 J2EE 規範中 web 協議的應用.該協議定義了 web 程序的運行時環境,包括:併發性,安全性,生命週期管理等等.就是在 tomcat、weblogic 下運行 jsp、servlet、struts三、應用服務器有那些?BEA WebLogic Server , IBM WebSphere Application Server , Oracle9iApplication Server,jBoss,Tomcat五、如何給 weblogic 指定大小的內存?在 啓 動 Weblogic 的 腳 本 中 ( 位 於 所 在 Domian 對 應 服 務 器 目 錄 下 的startServerName),增長 set MEM_ARGS=-Xms32m -Xmx200m,能夠調整最小內存爲 32M,最大 200M六、如何設定的 weblogic 的熱啓動模式(開發模式)與產品發佈模式?能夠在管理控制檯中修改對應服務器的啓動模式爲開發或產品模式之一。或者修改服務的啓動文件或者 commenv 文件,增長 set PRODUCTION_MODE=true。軟帝(Softeem)信息科技有限公司Softeem Information Science and Technology Co,Ltd. Tel:(027)51799045 (027)51799054 http://www.softeem.com七、如何啓動時不需輸入用戶名與密碼?修改服務啓動文件,增長 WLS_USER 和 WLS_PW 項。也能夠在 boot.properties文件中增長加密過的用戶名和密碼.八、在 weblogic 管理制臺中對一個應用域(或者說是一個網站,Domain)進行 jms及 ejb 或鏈接池等相關信息進行配置後,實際保存在什麼文件中?保存在此 Domain 的 config.xml 文件中,它是服務器的核心配置文件。九、說說 weblogic 中一個 Domain 的缺省目錄結構?好比要將一個簡單的helloWorld.jsp 放入何目錄下,然的在瀏覽器上就可打入 http://主機:端口號//helloword.jsp 就能夠看到運行結果了? 又好比這其中用到了一個本身寫的javaBean 該如何辦?Domain 目錄服務器目錄 applications,將應用目錄放在此目錄下將能夠做爲應用訪問,若是是 Web 應用,應用目錄須要知足 Web 應用目錄要求,jsp 文件能夠直接放在應用目錄中,Javabean 須要放在應用目錄的 WEB-INF 目錄的 classes目錄中,設置服務器的缺省應用將能夠實如今瀏覽器上無需輸入應用名。十二、CORBA 是什麼?用途是什麼?CORBA 標 準 是 公 共 對 象 請 求 代 理 結 構 (Common Object Request BrokerArchitecture),由對象管理組織 (Object Management Group,縮寫爲 OMG)標準化。它的組成是接口定義語言(IDL), 語言綁定(binding:也譯爲聯編)和容許應用程序間互操做的協議。其目的爲:用不一樣的程序設計語言書寫在不一樣的進程中運行,爲不一樣的操做系統開發。1三、說說在 weblogic 中開發消息 Bean 時的 persistent 與 non-persisten 的差異persistent 方式的 MDB 能夠保證消息傳遞的可靠性,也就是若是 EJB 容器出現問題而 JMS 服務器依然會將消息在此 MDB 可用的時候發送過來,而 non-persistent 方式的消息將被丟棄。軟帝(Softeem)信息科技有限公司Softeem Information Science and Technology Co,Ltd. Tel:(027)51799045 (027)51799054 http://www.softeem.com1四、WEB SERVICE 名詞解釋。JSWDL 開發包的介紹。JAXP、JAXM 的解釋。SOAP、UDDI,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 註冊,以使別的企業可以發現的訪問協議的實現標準。

相關文章
相關標籤/搜索