1. Error和Exception的區別?
Error表示系統級的錯誤和程序不必處理的錯誤;
Exception表示需要捕獲和程序進行處理的異常;
2.堆和棧有什麼區別?
棧是一種線性結構,後進先出,增加和刪除在同一端;堆是棧的一個組成元素;
堆是用來new創建出來的對象和數組的空間,棧是存放基本數據類型的變量和引用的內存空間;
棧中的變量,超過變量的作用域範圍,就會被回收內存空間;堆中的內存則是由Java虛擬機的垃圾回收器來回收,只有當內存不夠的時候,垃圾收集器會回收堆的內存空間;
3.throw和throws的區別?
throws是聲明一個方法可能拋出的異常,throw是拋出具體的異常。throws用於方法聲明的後面,throw則用於方法方法的內部來拋出異常;
throws表示當前方法不需要捕獲的異常,由系統重新拋出給方法的調用者;throw是捕獲異常,重新封裝後拋出上一級;
4.super和this的區別?
Java虛擬機會爲當前類的對象分配一個指向自身的指針,this就是這個對象的默認引用;需要用到this的情況:
調用本類的一個構造方法;
局部變量和成員變量同名的時候,要用this.num的方式來調用成員變量;
訪問當前方法的引用;
super是指向父類的應用。下面是要用到super的情況:
調用父類的構造方法,通過super來調用;
在子類訪問父類被屏蔽的方法和屬性;
5.類的初始化機制?
創建類的實例;
調用類的靜態方法;
訪問某個類的或接口的靜態變量;
調用Java API的某些反射方法;
初始化一個類的子類;
啓動類。
6.構造方法的特點?
沒有返回值;
方法名和類名相同;
不能被static,final,synchronized,native等修飾;
不能顯式調用構造方法;
7.垃圾回收的優點和缺點?
把程序員從複雜的內存的跟蹤,檢測,釋放中解放出來,
防止內存泄露,提高程序的健壯性;
程序中的對象只有不被引用變量引用的時候,纔可以回收;
程序無法迫使垃圾收集器回收內存;
當垃圾收集器要回收這個對象的內存的時候,會調用finalize方法,但是調用這個方法可能會導致這個對象復活。
8.異常處理機制?
把異常分類,用Java類來表示異常;
把異常的代碼和正常的流程分開,提高程序的可讀性,簡化結構;
靈活處理異常,當前可以處理的異常就處理,不能處理的異常拋出給調用者處理;
濫用異常會降低程序的性能;
過多使用異常會影響程序的可讀性;
容易覆蓋程序的錯誤,影響調試;
用異常來表示正確的情況,違背了異常的處理機制。
9.異常的處理原則?
異常只能用於非正常的情況;
爲異常提供說明文檔;
儘可能避免運行性異常;
保持異常的原子性;
避免過於龐大的try代碼塊;
catch最好跟具體的異常;
不雅忽略catch捕獲的異常。
10.Java的異常處理機制和簡答應用?
當違反Java的語義規則的時候,Java虛擬機就會錯誤表示一個異常。Java的違背語義規則有兩種情況:
一種是Java內置的類庫的語義檢查,如數組越界,null異常;
另一種是程序員擴充語義檢查,自定義異常,在適當的地方和適當的時候拋出異常。
11.接口的特徵
接口的變量時靜態常量,默認是用public static final來修飾;
接口中的方法是公有的抽象方法,用public abstract來修飾;
接口中不能有構造函數;
一個只能繼承一個父類,但是可以實現多個接口;
不允許創建一個接口的實例。
12.抽象類和接口的區別?
都代表系統的抽象層;
不能被實例化;
都可以有抽象的方法;
一個類可以有實現多個接口,但是隻能繼承一個類;
抽象類可以與構造函數,但是接口不能有構造函數;
類代表的是is a的關係,接口代表的是has a的關係;
接口的變量都是公有的靜態常量,但是抽象類可有各種類型的變量;
接口中的方法必須是抽象的,但是抽象類的方法可以有實現;
13.static的用法?
static代表內存中只有一份拷貝,所有的額對象實例共用這一份內存;
static的變量和方法可以用類名去訪問;
不能用abstract來修飾靜態變量和方法;
靜態方法不能使用this,super的關鍵字;
靜態方法不可以使用成員函數和成員變量;
在類加載的時候,靜態變量會被加載一次,加載的順序和靜態代碼塊的順序有關。
14 abstract的使用?
abstract修飾類,表示這個是抽象類,可有抽象方法,但是抽象類不能被實例化;
abstract修飾方法,表示這個方法是抽象方法,抽象方法只有聲明,沒有方法體;
抽象類和抽象方法不能被final修飾;
15.多態有什麼特徵?
對於引用類型的變量,編譯器按照它聲明的類型處理;
對於引用類型的變量,運行時Java虛擬機根據它實際引用的類型來處理;
實例方法和運行時候的實際類型的方法綁定,屬於動態綁定,因爲運行的時候由Java虛擬機決定的;
靜態方法和引用變量所聲明的類型的方法綁定,屬於靜態綁定,因爲在編譯的時候已經決定了;
成員變量和所聲明的類型的變量綁定,屬於靜態綁定,因爲在編譯的時候已經決定了。
16.靜態內部類和內部類的區別?
靜態內部類不依賴於外部類被實例化,而普通的內部類依賴於外部類的實例化。
17.什麼是GC?
GC是垃圾回收器,內存是編程人員很容易出現問題的地方,忘記或者錯誤的內存管理會導致程序不穩定甚至奔潰,
Java的GC功能可以自動檢測對象是否超過作用域而達到自動回收內存的目的,
18.length()和length?
數組有length;String有length()的方法;
19.Java中的內置異常原理?
當違反Java的語義時候,Java的虛擬機就會拋出異常。一種是Java的內置語義檢查,一種是程序員擴充的語義檢查,如創建自己的異常類。
20.Java虛擬機加載Class文件的機制和原理?
JVm的類加載是由classLoader和它的子類來完成,在運行的時候查找和加載類。
21.簡述Synchronized和lock的異同?
lock可以實現synchronized的功能;
lock可以比synchronized有更好的線程語義和線程性能;
synchronized自動釋放內置的鎖,Lock要手工釋放鎖;
22.Java如何進行異常處理?
Java通過面向對象的方法進行異常處理,把各種不同的異常分類,提供了良好的接口。Java中每一個異常都是對象,它是Throwable類和它的子類。
當方法遇到異常的時候,JVM就會生成一個異常類,可以通過調用這個異常類的方法來對異常進行處理。
23.Java的可序列化?
序列化是一種處理對象流的機制,爲了解決在對象流進行讀寫所產生的問題。
24.EJB是基於哪些技術實現的?並說出SessionBean和EntityBean的區別,StatefulBean和StatelessBean的區別。
EJB包括SessionBean,EntityBean和Message Driven Bean,基於JNDI、RMI、JAT等技術實現。
實體Bean代表系統要用到的數據;
SessionBean是J2EE應用程序用來完成服務器端的一些業務操作,例如訪問數據庫,調用其它EJB組件;
25.JSP中動態INCLUDE與靜態INCLUDE的區別?
靜態INCLUDE不會檢查文件的變化,把文件插入到頁面執行,<@ include="index.html">
動態INCLUDE包含的是一個動態文件,相當於調用,就是那個文件編譯執行,返回結果,可以傳遞參數,會檢查文件的變化。
26.JavaBean和EJB的區別?
JavaBean是可重用的組件,對於JavaBean沒有嚴格的規範,理論上,任何一個Java類都可以是JavaBean。JavaBean一般是由如Tomcat這樣的容器創建,
要有一個無參數的構造函數,要實現Serialable接口。EJB是分佈式組件,它是基於Java的遠程調用技術實現的。EJB容器是EJB的遠程代理。
27.EJB包括(SessionBean,EntityBean)說出他們的生命週期,及如何管理事務的?
SessionBean的生命週期是由容器決定的;
EntityBean存活時間較長,並且是連續的,只要數據庫中的數據存在,EntityBean就存在。
28.數據連接池的工作機制是什麼?
J2EE的服務器啓動的時候,會啓動一定數目的連接,並且維護不少於此數目的連接。當有連接到來的時候,連接池驅動程序會返回一個未使用的連接並標記爲
忙。如果當前沒有空連接,連接池會新建一個連接,標記爲忙。當池連接調用完之後,又會重新標記爲空閒。
29.JSP的內置對象及方法?
request表示HttpServletRequest,包含了所有瀏覽器的請求信息,提供了獲取Cookie,Session和Header的方法;
response表示HttpServletResponse,包含了處理請求的相應方法;
out是JspWriter的一個實例,提供了幾個向瀏覽器返回結果的方法;
session是用於保存用戶會話的信息;
aplication表示一個ServletContext對象,有利於查找servlet引擎和servlet環境的信息;
config表示ServletConfig,用於初始化存取Servlet實例化的參數;
page表示一個Servlet的實例。
pageContext表示一個javax.servlet.jsp.PageContext對象。它是用於方便存取各種範圍的名字空間、servlet相關的對象的API,並且包裝了通用的servlet相關功能的方法。
30.jsp的常用指令?
<%@ page language="java" contentType="text/html;charset="UTF-8" pageContext="UTF-8">
<%@ include="path">
<%@ taglib prefix="tagPrefix" uri="tagURI">
31.頁面間對象傳遞的方法
request,session,application,cookie
32.JSP和Servlet有哪些相同點和不同點,他們之間的聯繫是什麼?
jsp的本質是Servlet,翻譯後就是類Servlet文件;
Servlet只有Java代碼,邏輯清晰,用於邏輯控制;jsp由HTML和Java代碼顯示,用於試圖顯示。
33.四種會話跟蹤技術?
page代表頁面相關的對象和屬性;
request代表一個請求相關的對象和屬性;
Session代表會話相關的對象和屬性,可以跨多個請求;
Application代表整個應用程序相關的對象和屬性。
34.排序都有哪幾種方法?請列舉。用JAVA實現一個快速排序.
/ /使用快速排序方法對a[ 0 :n- 1 ]排序
從a[0:n-1]選取一個數值爲middle,作爲支點;
把剩下的元素分割爲兩段left和right,使得left那段的元素小於middle,right那段的元素大於middle;
遞歸地使用快排對left段的元素排序;
遞歸地使用快排對right段的元素排序;
35.請對以下在J2EE中常用的名詞進行解釋(或簡單描述)
web容器:給處於其中的應用程序組件(JSP,SERVLET)提供一個環境,使JSP,SERVLET直接更容器中的環境變量接口交互,不必關注其它系統問題。
EJB容器:Enterprise java bean 容器。更具有行業領域特色。
JNDI:(Java Naming & Directory Interface)JAVA命名目錄服務:提供一個目錄系統,讓其他的應用程序在上面留下一個自己的索引,滿足快速查找和定位
分佈式應用程序的功能;
JMS:(Java Message Service)JAVA消息服務:用於應用程序之間的通訊;
JTA:(Java Transaction API)JAVA事務服務:提供分佈式事務管理;
JAF:(Java Action FrameWork)JAVA安全認證框架;
RMI/IIOP:(Remote Method Invocation /internet對象請求中介協議)他們主要用於通過遠程調用服務。
36.J2EE是什麼?
J2EE是sun提出來的多層,分佈式,基於組件的企業級應用模型。它包括客戶層,web層,Business層,企業信息系統層。
37.BS和CS的區別和聯繫?
C/S是Client/Server的縮寫,B/S是Brower/Server的縮寫。
硬件環境不同: 局域網和廣域網;
對安全要求不同:
程序架構不同:
軟件重用不同:
系統維護不同:
用戶接口不同