1. 程式人生 > >JAVA 開發常見面試題

JAVA 開發常見面試題

1、Java中連線資料庫

1)  載入驅動

2)  建立資料庫連線

3)  建立執行sql的語句

4)  執行語句

5)  處理執行結果

6)  釋放資源

2、Throwable是所有異常Exception和錯誤Error的祖先

public class Throwable extends Object implementsSerializable
Throwable
類是Java語言中所有錯誤或異常的超類。只有當物件是此類(或其子類之一)的例項時,才能通過Java虛擬機器或者Java throw 語句丟擲。類似地,只有此類或其子類之一才可以是 catch 子句中的引數型別。兩個子類的例項,Error Exception

,通常用於指示發生了異常情況。通常,這些例項是在異常情況的上下文中新近建立的,因此包含了相關的資訊(比如堆疊跟蹤資料)。

3、陣列(array)和列表(arrayList)有什麼區別?什麼時候應該使用Array而不是ArrayList

1Array陣列可以包含基本型別和物件型別, ArrayList卻只能包含物件型別。

2 Array陣列在存放的時候一定是同種型別的元素。ArrayList就不一定了,因為ArrayList可以儲存Object

3Array的空間大小是固定的,空間不夠時也不能再次申請,所以需要事前確定合適的空間大小。

ArrayList的空間是動態增長的,如果空間不夠,它會建立一個空間比原空間大一倍的新陣列,然後將所有元素複製到新陣列中,接著拋棄舊陣列。而且,每次新增新的元素的時候都會檢查內部陣列的空間是否足夠。(比較麻煩的地方)。

4)方法上的比較:ArrayList作為Array的增強版,當然是在方法上比Array更多樣化,比如新增全部addAll()、刪除全部removeAll()、返回迭代器iterator()等。

5)適用場景:如果想要儲存一些在整個程式執行期間都會存在而且不變的資料,我們可以將它們放進一個全域性數組裡,但是如果我們單純只是想要以陣列的形式儲存資料,而不對資料進行增加等操作,只是方便我們進行查詢的話,那麼,我們就選擇ArrayList。而且還有一個地方是必須知道的,就是如果我們需要對元素進行頻繁的移動或刪除,或者是處理的是超大量的資料,那麼,使用ArrayList就真的不是一個好的選擇,因為它的效率很低,使用陣列進行這樣的動作就很麻煩,那麼,我們可以

考慮選擇LinkedList

4、jsp的四大作用域?

(1)如果把變數放到pageContext裡,就說明它的作用域是page它的有效範圍只在當前jsp頁面裡。從把變數放到pageContext開始,到jsp頁面結束,你都可以使用這個變數

(2)如果把變數放到request裡,就說明它的作用域是request,它的有效範圍是當前請求週期。所謂請求週期,就是指從http請求發起,到伺服器處理結束,返回響應的整個過程。在這個過程中可能使用forward的方式跳轉了多個jsp頁面,在這些頁面裡你都可以使用這個變數。

(3)如果把變數放到session裡,就說明它的作用域是session,它的有效範圍是當前會話。所謂當前會話,就是指從使用者開啟瀏覽器開始,到使用者關閉瀏覽器這中間的過程。這個過程可能包含多個請求響應。也就是說,只要使用者不關瀏覽器,伺服器就有辦法知道這些請求是一個人發起的,整個過程被稱為一個會話(session),而放到會話中的變數,session預設的實效時間是30分鐘,可在web.xml裡面或者tomcat配置檔案裡修改!

(4)如果把變數放到application裡,就說明它的作用域是application,它的有效範圍是整個應用。整個應用是指從應用啟動,到應用結束


所謂作用域就是資訊共享的範圍,也就是說一個資訊能夠在多大的範圍內有效。

JSP中九個內建物件及其相應所屬作用域如下表:

編號

物件

所屬作用域

作用域描述

1

request

request

在當前請求中有效

2

response

page

在當前頁面有效

3

out

page

在當前頁面有效

4

session

session

在當前會話中有效

5

application

application

在所有應用程式中有效

6

config

page

在當前頁面有效

7

pageContext

page

在當前頁面有效

8

page

page

在當前頁面有效

9

Exception

page

在當前頁面有效

5、下表列出了JSP支援的九個隱式物件 -

1. request物件

request物件是javax.servlet.http.HttpServletRequest物件的一個例項。每當客戶端請求頁面時,JSP引擎將建立一個新物件來表示該請求。

request物件提供了獲取包括表單資料,CookieHTTP方法等HTTP頭資訊的方法。

2. response物件

response物件是javax.servlet.http.HttpServletResponse物件的一個例項。就像伺服器建立request物件一樣,它還建立一個物件來表示對客戶端的響應。

response物件還定義了處理建立新HTTP頭的介面。通過此物件,JSP程式設計師可以新增新的Cookie或日期戳,HTTP狀態程式碼等。

3. out物件

out隱式物件是javax.servlet.jsp.JspWriter物件的一個例項,用於在響應中傳送內容。

初始化JspWriter物件根據頁面是否快取而不同地例項化。緩衝可以通過使用page指令的buffered ='false'屬性來關閉。

JspWriter物件包含與java.io.PrintWriter類大部分相同的方法。但是,JspWriter還有一些額外的方法用來處理緩衝。與PrintWriter物件不同,JspWriter會丟擲IOExceptions異常。

4. session物件

session物件是javax.servlet.http.HttpSession的一個例項,其行為與Java Servlet下的會話物件行為完全相同。session物件用於跟蹤客戶端請求之間的客戶端會話。

5. application物件

application物件是生成的ServletServletContext物件的直接包裝,實際上是javax.servlet.ServletContext物件的一個例項。

application物件是JSP頁面在其整個生命週期中的表示。JSP頁面被初始化時,將建立此物件,並且在JSP頁面被jspDestroy()方法刪除時application物件也將被刪除。

通過向application物件新增屬性值,可以確保組成Web應用程式的所有JSP檔案都可以訪問它。

6. config物件

config物件是javax.servlet.ServletConfig的例項化,是生成的servletServletConfig物件周圍的直接包裝。

7. pageContext物件

pageContext物件是javax.servlet.jsp.PageContext物件的一個例項。pageContext物件用於表示整個JSP頁面。

8. page物件

page物件是對該頁面例項的實際引用。可以認為它是表示整個JSP頁面的物件。

page物件是this物件的直接同義詞。

9. exception物件

exception物件是一個包含上一頁丟擲的異常的包裝器。它通常用於生成對錯誤條件的適當響應。

7、Redis整理

8、執行緒整理

9、MyBatis中的動態SQL是什麼意思?MyBatis中用於實現動態SQL的元素主要有?

MyBatis的動態SQL是基於OGNL表示式的,它可以幫助我們方便的在SQL語句中實現某些邏輯。

MyBatis中用於實現動態SQL的元素主要有:

1)  if

2)  choose(when,otherwise)

3)  trim

4)  where

5)  set

6)  foreach

10、  獲得一個類的類物件有哪些方式?

通過類本身來獲得物件,通過子類的例項獲取父類物件,通過類名加.class獲取物件

11、  當一個執行緒進入一個物件的synchronized方法A之後,其它執行緒是否可進入此物件的synchronized方法B?

1)        其他方法前是否加了synchronized關鍵字,如果沒加,則能。

2)        如果這個方法內部呼叫了wait,則可以進入其他synchronized方法。

3)        如果其他個方法都加了synchronized關鍵字,並且內部沒有呼叫wait,則不能。

4)        如果其他方法是static,它用的同步鎖是當前類的位元組碼,與非靜態的方法不能同步,因為非靜態的方法用的是this

12、介面是否可繼承(extends)介面?抽象類是否可實現(implements)介面?抽象類是否可繼承具體類(concreteclass)?
介面可以繼承介面,而且支援多重繼承。抽象類可以實現(implements)介面。抽象類可繼承具體類也可以繼承抽象類。

13、隨機產生20個字元並且排序?要求字元不能相同?

import java.util.HashSet;

import java.util.Random;

import java.util.Set;

import java.util.TreeSet;

public class bb {

   public static void main(String[] args) {

       Set noreapeat  =new TreeSet();

Random rdm = new Random(); 

       while (noreapeat.size()<20){

           int  bb=Math.abs(rdm.nextInt())%26+97;

            char cc =(char)bb;

           noreapeat.add(cc);

       }

       System.out.println(noreapeat);

    }

}

注:treeSet本身就具有去重排序作用