java基礎面試

[color=red](1)[/color]HashMap和Hashtable的區別
  都屬於Map接口的類,實現了將惟一鍵映射到特定的值上。
  HashMap 類沒有分類或者排序。它允許一個null鍵和多個null值。
  Hashtable 類似於HashMap,但是不允許null鍵和null值.它也比 HashMap慢,因爲它是同步的。

[color=red](2)[/color]abstract class和interface有什麼區別?
  1.接口是公開的,裏面不能有私有的方法或變量,是用於讓別人使用的;而抽象類是可以有私有方法(可以包含方法體)或私有變量的
2.實現接口的一定要實現接口裏定義的所有方法,而實現抽象類可以有選擇地重寫需要用到的方法,一般的應用裏,最頂級的是接口,然後是抽象類實現接口,最後纔到具體類實現。繼承抽象類必須實現抽象類中的抽象方法
3.含有抽象方法的類一定是抽象類

(3)ArrayList和Vector的區別:
ArrayList與Vector主要從二方面來說.
一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的
二.數據增長:當需要增長時,Vector默認增長爲原來一培,而ArrayList卻是原來的一半.

(4)jsp的內置對象有哪些?功能是什麼?

request:request表示HttpServletRequest對象。它包含了有關瀏覽器請求的信息,並且提供了幾個用於獲取 cookie, header和session數據的有用的方法。

response:response表示HttpServletResponse對象,並提供了幾個用於設置送回 瀏覽器的響應的方法(如cookies,頭信息等)

out:out 對象是javax.jsp.JspWriter的一個實例,並提供了幾個方法使你能用於向瀏覽器回送輸出結果。

pageContext:pageContext表示一個javax.servlet.jsp.PageContext對象。它是用於方便存取各種範圍的名字空間、servlet相關的對象的API,並且包裝了通用的servlet相關功能的方法。
session session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯用戶的狀態信息

application :applicaton 表示一個javax.servle.ServletContext對象。這有助於查找有關servlet引擎和servlet環境的信息
config:config表示一個javax.servlet.ServletConfig對象。該對象用於存取servlet實例的初始化參數。
page:page表示從該頁面產生的一個servlet實例。

(5)1、forward 和redirect的區別
答:forward是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,然後把這些內容再發給瀏覽器,瀏覽器根本不知道服務器發送的內容是從哪兒來的,所以它的地址欄中還是原來的地址。
redirect就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛纔請求的所有參數重新請求,所以session,request參數都可以獲取。

(6)jsp有哪些動作?作用分別是什麼?
答:JSP共有以下6種基本動作
jsp:include:在頁面被請求的時候引入一個文件。
jsp:useBean:尋找或者實例化一個JavaBean。
jsp:setProperty:設置JavaBean的屬性。
jsp:getProperty:輸出某個JavaBean的屬性。
jsp:forward:把請求轉到一個新的頁面。
jsp:plugin:根據瀏覽器類型爲Java插件生成OBJECT或EMBED標記
(6)JSP中動態INCLUDE與靜態INCLUDE的區別?
答:動態INCLUDE用jsp:include動作實現
<jsp:include page="included.jsp" flush="true" />它總是會檢查所含文件中的變化,適合用於包含動態頁面,並且可以帶參數
靜態INCLUDE用include僞碼實現,定不會檢查所含文件的變化,適用於包含靜態頁面
<%@ include file="included.htm" %>
(9)什麼是Web容器?

 實現J2EE規範中web協議的應用.該協議定義了web程序的運行時環境,包括:併發性,安全性,生命週期管理等等.

(10).解釋下面關於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,遠程方法調用

(12) XML的解析方法

  Sax,DOM,JDOM, Xstream

(13)什麼是Web Service?

  Web Service就是爲了使原來各孤立的站點之間的信息能夠相互通信、共享而提出的一種接口。
Web Service所使用的是Internet上統一、開放的標準,如HTTP、XML、SOAP(簡單對象訪問協議)、WSDL等,所以Web Service可以在任何支持這些標準的環境(Windows,Linux)中使用。

  注:SOAP協議(Simple Object Access Protocal,簡單對象訪問協議),它是一個用於分散和分佈式環境下網絡信息交換的基於XML的通訊協議。在此協議下,軟件組件或應用程序能夠通過標準的HTTP協議進行通訊。它的設計目標就是簡單性和擴展性,這有助於大量異構程序和平臺之間的互操作性,從而使存在的應用程序能夠被廣泛的用戶訪問。

  優勢:
  (1).跨平臺。
  (2).SOAP協議是基於XML和HTTP這些業界的標準的,得到了所有的重要公司的支持。
  (3).由於使用了SOAP,數據是以ASCII文本的方式而非二進制傳輸,調試很方便;並且由於這樣,它的數據容易通過防火牆,不需要防火牆爲了程序而單獨開一個“漏洞”。
  (4).此外,WebService實現的技術難度要比CORBA和DCOM小得多。
  (5).要實現B2B集成,EDI比較完善與比較複雜;而用WebService則可以低成本的實現,小公司也可以用上。
  (6).在C/S的程序中,WebService可以實現網頁無整體刷新的與服務器打交道並取數。

  缺點:
  (1).WebService使用了XML對數據封裝,會造成大量的數據要在網絡中傳輸。
  (2).WebService規範沒有規定任何與實現相關的細節,包括對象模型、編程語言,這一點,它不如CORBA。

(14).多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼?

  答:多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口
  同步的實現方面有兩種,分別是synchronized,wait與notify

二、Java編程與程序運行結果

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

public class YesterdayCurrent{
public void main(String[] args){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println(cal.getTime());
}
}

  2.文件讀寫,實現一個計數器

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

  3. 指出下面程序的運行結果:

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(); //執行到此處,結果: 1a2bab
}
}

  注:類的static 代碼段,可以看作是類首次加載(被虛擬機加載)執行的代碼,而對於類的加載,首先要執行其基類的構造,再執行其本身的構造

  4.寫一個Singleton模式的例子

public class Singleton{
private static Singleton single = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return single;
}
}

Singleton模式是設計模式中最簡單的模式,很多人學習設計模式都是從這個模式開始學習的,但是該模式仍然有許多細節往往被大家忽略。

一、 Singleton模式的作用

Singleton模式提供了一個全局唯一訪問類的方法,它在整個程序中只有一個實例,不允許出現多個。作用類似於全局變量。但是全局變量的類型依然可以實例化多個對象,從而不能保證唯一性,所以必須採用Singleton模式。

程序中經常將某種管理類,以Singleton模式實現,比如資源管理、路徑服務、網絡訪問處理,這些在整個程序中都應該只有一個實例。

二、 Singleton模式的要點

要點1:Singleton類的構造函數必須是非Public的(及Private或Protected), 從而避免外部實例化該對象;

要點2:自己實例化自己;

要點3: Singleton類必須提供一個訪問自己的接口(靠static聲明的函數訪問);

三、數據庫

  1.刪除表的重複記錄

  如果記錄完全相同纔算重複記錄,那麼: (sql server2000下測試通過)

select distinct * into #tmpp from tid
delete from tid
insert into tid select * from #tmpp
drop table #tmpp

  如果有id主鍵(數字,自增1的那種),那麼:(sql server2000下測試通過)

delete from tableA where id not in
(select id = min(id) from tableA group by name)

  2.delete from tablea & truncate table tablea的區別

  truncate 語句執行速度快,佔資源少,並且只記錄頁刪除的日誌;
  delete 對每條記錄的刪除均需要記錄日誌
發佈了287 篇原創文章 · 獲贊 6 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章