2.簡述MVC 模式及對其的理解.
3. 接口可否繼承接口?抽象類是否可實現(xiàn)(implements)接口?抽象類是否可繼承實體類(concrete class)?
接口可以繼承接口。
抽象類可以實現(xiàn)(implements)接口.
抽象類可以繼承具體類(concrete class),但前提是實體必須有明確的構造函數(shù).
4.Java 有沒有goto?
goto 是 java 的保留字,但是沒有使用.
5.數(shù)組有沒有l(wèi)ength()這個方法?String 有沒有l(wèi)ength()這個方法?
數(shù)組有l(wèi)ength屬性,沒有l(wèi)ength()方法。
String 有l(wèi)ength()方法,沒有l(wèi)ength屬性.
6.Overload 和Override 的區(qū)別. Overloaded的方法是否可以改變返回值的類型?
方法的重寫override和重載overload 是java 多態(tài)性的不同表現(xiàn)。
Override:覆蓋,是父類與子類之間多態(tài)性的一種表現(xiàn),如果子類中定義的某方法與父類有相同的名稱和參數(shù),我們說該方法被重寫
(overriding).子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。
Overload:重載,方法的重載,是一個類中的多態(tài)性的一種表現(xiàn).在一個類中定義了多個同名的方法,它們有不同的參數(shù)個數(shù)或有不同
參數(shù)類型,則車位方法的重載(overloading)
overloaded方法可以改變返回值的類型
7. ArrayList 、LinkedList和Vector 的區(qū)別, HashMap和Hashtable 的區(qū)別?
ArrayList和Vector都是使用數(shù)組方式存儲數(shù)據(jù),它們都允許直接按序號索引元素,但是插入數(shù)據(jù)要涉及數(shù)組元素移動等內存操作.所以讀取數(shù)據(jù)快而插入數(shù)據(jù)慢.
一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList 是線程不安全的,不是同步的。
二.數(shù)據(jù)增長:當需要增長時,Vector默認增長位原來的一倍,而ArrayList卻是原來的一半。
LinkedList 使用雙向鏈表實現(xiàn)存儲,按序號索引數(shù)據(jù)需要進行前向后后向遍歷,但是插入數(shù)據(jù)的時只需要記錄本項的前后項即可,
所有插入速度較快.
都屬于Map接口的類,實現(xiàn)了將唯一鍵映射到特定的值上.
1.歷史原因:HashMap是基于陳舊的Dictionary類,HashMap是Java 1.2引進的Map接口的一個實現(xiàn)。
2.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程不安全的,不是同步的。
3.只有HashMap 可以讓你將空值作為一個表的條目的key或是value,它允許一個null鍵和多個null值,HashMap 類沒有分類或者是排序..
Hashtable 類類似于HashMap,但是不允許null鍵和null值。
4.HashMap把Hashtable的contains方法去掉了,改成containvalue和containKey,因為contains方法讓人引起誤解.
8.構造器Constructor是否可以被override?
構造器constructor不能被繼承,因此不能重寫overriding,但可以被重載overloading
9.是否可以繼承String類
String類是final 類故不可以繼承
10.當一個線程進入一個對象的一個synchronized方法后,其它線程可否進入此對象的其它方法?
不能,一個對象的一個synchronized 方法只能有一個線程訪問。而其它的用戶必須等待,知道該用戶完成操作。
11.try{} 里有一個return語句,那么緊跟在這個try后的finally{}里的code 會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后面
會執(zhí)行,在return前執(zhí)行。
12.最有效的方法算出2乘以8等于幾?
2<<3
根據(jù)二進制算,第一位00010向左移3位正好是10000,對應二進制是16.這里的3是指移的位數(shù).
13.有兩個對象值相同(x.equals(y)==true),但卻可有不同的hash code,這句話對不對?
不對,有相同的hash code.因為hashcode用的是同一個類的方法,同時其每一個屬性值是相等的.
14.當一個對象被當作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結果,那么這里是值傳遞
還是引用傳遞?
是值傳遞,Java編程語言只由值傳遞參數(shù)。當一個對象實例作為一個參數(shù)被傳遞到方法中時,參數(shù)的值就是對
該對象的引用。對象的內容可以在被調用的方法中改變,但對象的引用是永遠不是改變的.
15.swtich 是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(exp) exp 是一個整數(shù)表達式。因此傳遞給switch和case語句的參數(shù)應該是int,short ,char或者是byte
不可以是其它類型,因此long,string都不能作用于swtich.
16.Collection和Collections的區(qū)別
Collections是java.util下的類,針對集合類的一個幫助類,它提供一些列的靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化等操作。
Collection是java.util下的接口,它是各種集合結構的父接口。List 和Set 都是繼承Collection 接口
17.Java 有那些基本數(shù)據(jù)類型,String是不是基本數(shù)據(jù)類型,他們有和區(qū)別。
String不是基本數(shù)據(jù)類型,它是一個對象。基本數(shù)據(jù)類型不是對象,是一個內存值,其類型是int, long,byte,short,boolean,char
18.abstract 的method 是否可同時是static,是否可同時是native,是否可同時是synchronized?
不可以將abstract與static,native,synchronized任何其中之一合用
19.abstract class和interface 有什么區(qū)別
abstract class 即可以有實現(xiàn)方法,也可以有方法的聲明。(虛虛實實)
類只可以繼承一個,不可以繼承多個。
interface 只提供方法的聲明,并且所有方法都是抽象的。
接口中的所有方法都是抽象的,沒有一個有程序體。接口值可以定義static final成員變量。
20.給我一個你最常見到的runtime exception
1.空指針異常 NullPointException。
2.數(shù)組越界異常
3.IOException
4.FileNotFoundException
5.ClassNotFoundException
21.error和exception有什么區(qū)別?
error表示恢復不是不可能但很困難的情況下的一種嚴重的問題。比如說內存溢出。不可能指望程序能處理這樣的情況
exception:表示一種設計或實現(xiàn)問題。也就是說,它表示如果程序運行正常,從不會發(fā)生的情況。
22.String 是最基本的數(shù)據(jù)類型嗎?
不是,String是一個對象。
23.char型變量不能定義為一個中文?為什么?
可以,因為有16位,正好一個中文漢字
24.繼承時候類執(zhí)行的順序
先是父類,后是子類
25.&和&&的區(qū)別
&和&&都可以作為邏輯運算“與”使用,但是&&是“短路與”,運算時先判斷符號前面表達式的值,如果能夠確定整個表達式
的值,則不進行符號后面的表達式的運算。
另外,&也可作為位運算符使用
26.String s=new String("xyz"),創(chuàng)建了幾個String Object?
兩個對象,一個是"xyx" ,一個是指向"xyx"的對象引用
27.Math.round(11.5)等于多少,Math.round(-11.5)等于多少?
Math.round(11.5)==12
Math.round(-11.5)==-11
28.sleep()和wait()有什么區(qū)別?搞線程的最愛.
sleep()方法是使線程停止一段時間的方法。在sleep 時間間隔期滿后,線程不一定立即恢復執(zhí)行。這是因為在那個時刻
,其它線程可能正在運行而且沒有被調度為放棄執(zhí)行。
除非1.“醒來”的線程具有更高的優(yōu)先級
2.正在運行的線程因為其他原因而阻塞。
wait()是線程交互時,如果線程對一個同步對象x發(fā)初一個wait()調用,該線程會暫停執(zhí)行,被調用的對象進入等待狀態(tài),
直到被喚醒或等待時間到
29.啟動一個線程是用run()還是start()?
啟動一個線程是調用start()方法,使線程所代表的虛擬處理機處于可運行狀態(tài),這意味著它可以由JVM 調度并執(zhí)行.
著并執(zhí)行。這并不意味著線程就會立即運行。run()方法可以產生必須退出的標志來停止一個線程.
30.Set 里的元素是不能重復的,那么用什么方法來區(qū)分重復與否呢?是用==還是equals()?它們有何區(qū)別?
set 里的元素是不能重復的,那么用iterator()方法來區(qū)分重復與否。
31.多線程有幾種實現(xiàn)方法,都是什么?同步有幾種實現(xiàn)方法,都是什么?
多線程有兩種實現(xiàn)方法,分別是繼承Thread類與實現(xiàn)Runnable 接口;
使用Runnable接口的實現(xiàn)類來提供線程體,這是創(chuàng)建線程的基本方式。
使用直接繼承Thread類,重寫其中的run()方法并以之作為線程體的方式創(chuàng)建線程.
兩種方式創(chuàng)建線程的區(qū)別:
1.使用Runnable 接口創(chuàng)建線程時可以將CPU,代碼和數(shù)據(jù)分開,形成清晰的模型。線程體run()方法所在的類還可以從其它
類繼承一些有用的屬性或者方法,并有利于保持程序的風格的一致性。
2.使用直接繼承thread類創(chuàng)建的線程時,Thread子類無法再從其他類繼承,但是這種情況編寫簡單,run()方法的當前對象
就是線程對象,可直接操縱。
同步的實現(xiàn)方法有兩種分別是syschronized,wait與notify.
32.String 與StringBuffer 的區(qū)別
String 的長度是不可變的,StringBuffer 的長度是可變的。
33.Jsp中的動態(tài)include 和靜態(tài)的include 的區(qū)別。
動態(tài)的include用jsp:include動作實現(xiàn)。
<jsp:include page ="included.jsp" flush="true" />它總是會檢查所含的文件中的變化,適合用于包含動態(tài)的頁面,并且可以帶參數(shù)。
靜態(tài)的include 用include喂馬實現(xiàn),不會檢查所含文件的變化,適用于靜態(tài)頁面
<%@ include file="included.html" %>
34.Servlet API中的forward()與redirect()的區(qū)別
前者
35.通過UML畫出你所熟悉的設計模式。
36.開發(fā)中都用到了那些設計模式?用在什么場合?
主要用到了MVC 設計的模式.用來開發(fā)JSP/Servlet 或者是J2EE的相關應用
簡單工廠設計模式
單例模式
裝飾模式IO
門面模式
37.jsp 的頁面跳轉
jsp的頁面實現(xiàn)跳轉主要有jsp:forward和sendRedirect 兩種方法
jsp:forward:在本容器內跳轉。跳轉后,地址欄地址不變。效率高,跳轉后立即結束本頁的內容。
sendRedirect: 在容器之間跳轉,跳轉后地址欄的地址為跳轉后的地址,效率較低。
38.關鍵字throw和throws的區(qū)別?
可以利用throw關鍵字自己拋出異常
Throws一般在定義函數(shù)的時候使用,表明函數(shù)被調用的時候要拋出異常
39.名詞解釋:EJB JNDI RMI
EJB (Enterprise Java Bean ,企業(yè)級的JavaBean) J2EE體系中核心的技術是EJB,提供了一個框架來開發(fā)分布式商務邏輯,顯著地
簡化了具有可伸縮性和高度復雜的企業(yè)級應用的開發(fā)。
JNDI (Java Naming and Directory Interface,java命名和目錄接口) JNDI用于名字和目錄服務,提供了一致的接口來存取和操作企業(yè)級的資源
,如DNS(Domain Name Service)和本地文件系統(tǒng)。
RMI(Remote Method Invocation ,遠程方法調用)RMI是在遠程的對象上調用的一些方法,使用了連續(xù)的方式在客戶端和服務器端傳遞數(shù)據(jù),
RMI 是EJB技術基礎。
40.Swing中組件布局有哪幾種方式?
常用的布局管理器有下面幾種方式
FlowLayout ,GridLayout,BorderLayout,CardLayout,GridBagLayout
41. 多線程有那些狀態(tài)?
42.簡述Java語言的核心機制
Java 語言包括三種核心機制:Java虛擬機、垃圾收集機制和代碼安全檢測.
1.Java 虛擬機(Java Virtual Machine ,JVM)
在一臺計算機上由軟件或硬件模擬的計算機. Java虛擬機讀取并處理經過編譯過的平臺無關的字節(jié)碼class文件.
2.垃圾收集機制(Garbage collection)
在C/C++等語言中,有程序員負責回收無用內存。Java 語言解除了程序員回收無用的內存空間的責任。它提供一種系統(tǒng)級線程跟蹤
存儲空間的分配情況。并在JVM空閑時,檢查并釋放那些可被釋放的存儲器空間。垃圾收集在Java程序運行過程中自動進行,程序員
無法精確控制和干預.
3.代碼安全性檢測(Code Security)
Java執(zhí)行代碼的時候,有JVM對運行的代碼進行安全性檢測,當進行一些非法操作的時候,比如修改一些系統(tǒng)的設置的時候,
JVM會發(fā)出警告.
43.設計模式:對抽象工廠模式的理解.
44.對O/R MAPPING的理解.
45.對Ajax 的理解及應用.
46.運用JavaScript ,寫一個類,類名:student ,他的屬性:name ,age,tall,他的方法:getname,getAge,getTall 要突出Javascript 的oop思想.
47.寫一個XML 文件
格式如下:
<student>
<name>11</name>
<age>33</age>
</studnet>
使用Java 語言,遍歷所有節(jié)點,然后在頁面上輸出。
48.如何獲得客戶端的IP地址?
利用request 對象可以獲得客戶提交的信息,比如:jsp文件目錄,客戶端的地址,以及服務器的端口等。
<BR>獲取客戶的Ip地址
<% String ip=request.getRemoteAddr();
out.println(ip);%>
49.構造函數(shù)有什么作用?簡述重載構造函數(shù)的好處。
構造函數(shù)也叫構造方法,是java類中的一種特俗的方法,其功能是創(chuàng)建其所屬類型的一個新的對象。
聲明構造方法的語法規(guī)則如下:
<modifiers> <class_name> ([argu_list]){
[<statements>]
}
構造方法的特點是:沒有返回值類型,方法名必須取和所屬類相同的名字。
在定義Java類的時候,可以定義一個或者是多個構造方法,通常在構造方法中進行一些初始化工作。
50.application 對象有什么特點?和sesion 對象有什么聯(lián)系和區(qū)別?
站點所有的用戶公用一個application對象,當站點服務器開啟的時候,applicaiton就被創(chuàng)建,直到網站關閉
可以使用Session對象儲存用戶登陸網站時候的信息。當用戶在頁面之間跳轉時,儲存在Session對象中的變量
不會被清除。
聯(lián)系是:數(shù)據(jù)都存儲在服務器端,而且都可以保留一段時間。
區(qū)別是:每個用戶有一個session,但是application是共有的
51.簡述Servlet 的生命周期?
Servlet運行機制和Applet類似,Servlet是在服務器端運行的,但是Applet是在客戶端運行的。Servlet是 javax.servlet包中的
HttpServlet類的子類,由服務器完成該子類的創(chuàng)建和初始化。
Servlet的生命周期主要有3個過程組成。
1.init(),服務器初始化Servlet
2.service()方法:初始化完畢,Servlet對象調用該方法響應客戶的請求。
3.destroy()方法:調用該方法消滅Servlet對象。
其中,init()方法只在Servlet第一次被請求加載的時候被調用一次,當有客戶再請求Servlet服務時,Web服務器將啟動一個新的線程,
在該線程中,調用Service方法相應客戶的請求。
52.
答題時間20分鐘
1.
System.out.println(1+’\002’)會打印出多少? _________
System.out.println(1+2+”3”)會打印出多少? _________
2. 請簡單補充完下面jdbc讀取數(shù)據(jù)的實現(xiàn)
String SQL = “SELECT id , title, description FROM t_blog WHERE id = ?”;
long id;
String title;
String description;
Connection conn = null;//假設用ConnectionManager.getConnection();可以獲得連接對象
PrepareStatement pstmt = null;
如果description字段在數(shù)據(jù)庫中是text類型,而且存儲的文字比較多(20K左右),這時候該如何優(yōu)化讀取,讓系統(tǒng)支撐更大的并發(fā)?
3. 有一篇文章的URL為 view.jsp?id=100 ,每分鐘訪問量可能上千次,在記錄和顯示它的查看次數(shù)時,你覺得如何做性能比較好?
4. 寫出你最常見到的一些運行時異常(runtime exception),再簡述一下你是如何避免java 中空指針異常的
5. 你用lucene做過全文檢索嗎? 簡單描述一下你的經驗。
6. 簡述一下你對GC的理解,以及如何避免內存泄露。
7. 要求最后打印出的全部是數(shù)字,下面的程序滿足要求嗎?還可以再優(yōu)化嗎?請簡單描述。
String strA = “1:2:3:4:5:6:7:8:9:10:”;
String arrA[] = strA.split(“:”);
for(int i=0;i<arrA.length;i++)
{
System.out.println(arrA[i]);
}
8. 簡述一下javascript/dhtml/css/ajax在你以前項目中的應用程度;熟悉跨瀏覽器兼容javascript/css嗎? 有興趣對它們進行深入研究嗎?
9. 你最熟悉Web開發(fā)過程中的哪部分?
1.
System.out.println(1+’\002’)會打印出多少? _________
System.out.println(1+2+”3”)會打印出多少? _________
2. 請簡單補充完下面jdbc讀取數(shù)據(jù)的實現(xiàn)
String SQL = “SELECT id , title, description FROM t_blog WHERE id = ?”;
long id;
String title;
String description;
Connection conn = null;//假設用ConnectionManager.getConnection();可以獲得連接對象
PrepareStatement pstmt = null;
如果description字段在數(shù)據(jù)庫中是text類型,而且存儲的文字比較多(20K左右),這時候該如何優(yōu)化讀取,讓系統(tǒng)支撐更大的并發(fā)?
3. 有一篇文章的URL為 view.jsp?id=100 ,每分鐘訪問量可能上千次,在記錄和顯示它的查看次數(shù)時,你覺得如何做性能比較好?
4. 寫出你最常見到的一些運行時異常(runtime exception),再簡述一下你是如何避免java 中空指針異常的
5. 你用lucene做過全文檢索嗎? 簡單描述一下你的經驗。
6. 簡述一下你對GC的理解,以及如何避免內存泄露。
7. 要求最后打印出的全部是數(shù)字,下面的程序滿足要求嗎?還可以再優(yōu)化嗎?請簡單描述。
String strA = “1:2:3:4:5:6:7:8:9:10:”;
String arrA[] = strA.split(“:”);
for(int i=0;i<arrA.length;i++)
{
System.out.println(arrA[i]);
}
8. 簡述一下javascript/dhtml/css/ajax在你以前項目中的應用程度;熟悉跨瀏覽器兼容javascript/css嗎? 有興趣對它們進行深入研究嗎?
9. 你最熟悉Web開發(fā)過程中的哪部分?