近期憔辫,某大型企業(yè)的高級(jí)java開(kāi)發(fā)工程師的面試題趣些,現(xiàn)給出試題和答案,供大家參考贰您,如有不對(duì)之處坏平,請(qǐng)大家指教。
選擇題
1)servlet處理請(qǐng)求的方式锦亦? 以響應(yīng)的方式
2)抽象類代碼的編寫(xiě)舶替,哪行代碼不產(chǎn)生編譯出錯(cuò)?A
public abstract class MyClass{
public int constInt=5;
(________)
public void method(){
}
}
A 杠园、 public abstract void method (int a) ;
B 顾瞪、 constInt=constInt+5; 聲明階段不能賦值
C 、 public int method () ; 抽象類可以重載,重載輸入?yún)?shù)要不一樣玲昧,與返回參數(shù)無(wú)關(guān)栖茉,這體現(xiàn)了java的多態(tài)性
D 、 public abstract void anothermethod (){} ; 抽象方法無(wú){}
3)下面說(shuō)法正確的有(B)
A class中的constructor不可以省略
B constructor必須與class同名孵延,但方法不能與class同名
C constructor在一個(gè)對(duì)象被new時(shí)執(zhí)行
D 一個(gè)class只能定義一個(gè)constructor
4)java中集合類型包含ArrayList吕漂,LinkedList,HashMap等類尘应,下面描述錯(cuò)誤的是(B)
A ArrayList和LinkedList均實(shí)現(xiàn)了List接口
B 添加和刪除元素時(shí)惶凝,ArrayList的表現(xiàn)更佳
C ArrayList的訪問(wèn)速度比LinkedList快
D HashMap的實(shí)現(xiàn)MAP接口,它允許任何類型的鍵和值對(duì)象并允許將null作為鍵或值
多選題
下列哪些情況可以終止當(dāng)前線程的運(yùn)行犬钢?(AB)
A 拋出一個(gè)異常
B 當(dāng)該線程調(diào)用sleep()方法時(shí)
C 當(dāng)創(chuàng)建一個(gè)新線程時(shí)
D 當(dāng)一個(gè)優(yōu)先級(jí)高的線程進(jìn)入就緒狀態(tài)時(shí)苍鲜。下面關(guān)于java語(yǔ)言實(shí)例方法和類方法的說(shuō)法,哪幾項(xiàng)是對(duì)的玷犹?(BC)
(在方法前面加上static就成了類方法,static只能操作static)
A 實(shí)例方法可以直接通過(guò)類名調(diào)用混滔。
B 類方法可以直接通過(guò)類名調(diào)用。
C 實(shí)例方法可以操作實(shí)例變量也可以操作類變量歹颓。
D 類方法可以操作實(shí)例變量也可以操作類變量坯屿。關(guān)于IOC的理解,正確的是(ABD)
A 控制反轉(zhuǎn) B 對(duì)象被動(dòng)的接口依賴類
C 對(duì)象主動(dòng)的去找依賴類 D 一定要用接口
8 以下哪些對(duì)接口methoda的定義是正確的巍扛?AC
A void methoda()领跛;
B public final double methoda(); // final 不能用
C public double methoda();
D static void methoda(double d1); //static不能用
9 下列是jsp作用域的通信對(duì)象的有(ABD)+page
A session B cookie C application D pagecontext
10 以下關(guān)于final關(guān)鍵字說(shuō)法錯(cuò)誤的是(AD)
A final是java的修飾符,可以修飾類撤奸、接口吠昭、抽象類、方法和屬性
B final修飾變量不允許被再次賦值從而避免了復(fù)雜的協(xié)議轉(zhuǎn)換
C final修飾的類肯定不能被繼承
D final修飾的方法不能被重載
一胧瓜、final關(guān)鍵字可以用來(lái)修飾類矢棚、方法、變量贷痪。各有不同幻妓。
A、修飾類(class)劫拢。 ** 1肉津、該類不能被繼承。 2舱沧、類中的方法不會(huì)被覆蓋妹沙,因此默認(rèn)都是final的。 3熟吏、用途:設(shè)計(jì)類時(shí)距糖,如果該類不需要有子類玄窝,不必要被擴(kuò)展,類的實(shí)現(xiàn)細(xì)節(jié)不允許被改變悍引,那么就設(shè)計(jì)成final類
B恩脂、修飾方法(method) 1、該方法可以被繼承趣斤,但是不能被覆蓋俩块。 2、用途:一個(gè)類不允許子類覆蓋該方法浓领,則用final來(lái)修飾 3玉凯、好處:可以防止繼承它的子類修改該方法的意義和實(shí)現(xiàn);更為高效联贩,編譯器在遇到調(diào)用fianal方法轉(zhuǎn)入內(nèi)嵌機(jī)制漫仆,提高了執(zhí)行效率。 4泪幌、注意:父類中的private成員方法不能被子類覆蓋盲厌,因此,private方法默認(rèn)是final型的(可以查看編譯后的class文件)
C座菠、修飾變量(variable) ** 1狸眼、用final修飾后變?yōu)槌A刻偈鳌0?/strong>靜態(tài)變量浴滴、實(shí)例變量和局部變量這三種。 2岁钓、特點(diǎn):可以先聲明升略,不給初值,這種叫做final空白屡限。但是使用前必須被初始化品嚣。一旦被賦值,將不能再被改變钧大。
**D翰撑、修飾參數(shù)(arguments) ** 1、用final修飾參數(shù)時(shí)啊央,可以讀取該參數(shù)眶诈,但是不能對(duì)其作出修改
二、final關(guān)鍵字不能用來(lái)抽象類和接口瓜饥。
11 接口和抽象類描述正確的是 (BC)
A 抽象類沒(méi)有構(gòu)造函數(shù)
B 接口沒(méi)有構(gòu)造函數(shù)
C 抽象類不允許多繼承
D 接口中的方法可以有方法體
12 以下可以正確獲取結(jié)果集的有(AD)
A Statement sta=con.createStatement();
ResultSet rst=sta.excuteQuery("select * from book");
B Statement sta=con.createStatement("select * from book");
ResultSet rst=sta.excuteQuery();
C PreparedStatement pst=con.preparedStatement();
ResultSet rst=sta.excuteQuery("select * from book");
D PreparedStatement pst=con.preparedStatement("select * from book");
ResultSet rst=sta.excuteQuery();
問(wèn)答器
** 用一個(gè)sql語(yǔ)言查詢每門(mén)課程大于80分的學(xué)生姓名
name kecheng fenshu
張三 語(yǔ)文 81
張三 數(shù)學(xué) 74
李四 語(yǔ)文 76
李四 數(shù)學(xué) 90
王五 語(yǔ)文 81
王五 數(shù)學(xué) 100
王五 英語(yǔ) 90
** 什么是java線程池逝撬?在什么情況下使用線程池?**
java線程池就是java用來(lái)管理線程的池子乓土。限制線程的數(shù)量
當(dāng)程序并發(fā)的線程數(shù)量很多宪潮,并且每個(gè)線程都是執(zhí)行一個(gè)時(shí)間很短的任務(wù)就結(jié)束了溯警,
那么就需要頻繁地創(chuàng)建銷毀一些相同的線程時(shí),可以使用線程池來(lái)管理狡相。
線程池的優(yōu)點(diǎn)
1)避免線程的創(chuàng)建和銷毀帶來(lái)的性能開(kāi)銷梯轻。
2)避免大量的線程間因互相搶占系統(tǒng)資源導(dǎo)致的阻塞現(xiàn)象。
3}能夠?qū)€程進(jìn)行簡(jiǎn)單的管理并提供定時(shí)執(zhí)行尽棕、間隔執(zhí)行等功能檩淋。
** 寫(xiě)出一個(gè)單例模式。
public class Singleton {
private static final Singleton singleton = null;
private Singleton(){ }
public static Singleton getInstance() {
if (singleton== null) {
synchronized (Singleton.class) {
if (singleton== null) {
singleton= new Singleton();
}
}
}
return singleton;
}
}
或者
```python
public class Singleton {
private static final Singleton singleton = new Singleton();
private Singleton() { }
public static Singleton getInstance() {
return singleton;
}
}
sleep() 和wait() 的區(qū)別
Java程序中wait 和 sleep都會(huì)造成某種形式的暫停萄金,它們可以滿足不同的需要蟀悦。wait()方法用于線程間通信,如果等待條件為真且其它線程被喚醒時(shí)它會(huì)釋放鎖氧敢,而sleep()方法僅僅釋放CPU資源或者讓當(dāng)前線程停止執(zhí)行一段時(shí)間日戈,但不會(huì)釋放鎖。需要注意的是孙乖,sleep()并不會(huì)讓線程終止浙炼,一旦從休眠中喚醒線程,線程的狀態(tài)將會(huì)被改變?yōu)镽unnable唯袄,并且根據(jù)線程調(diào)度弯屈,它將得到執(zhí)行。
總結(jié): sleep()保持對(duì)象鎖恋拷、wait()釋放對(duì)象鎖资厉。
附加題
** 假如有一個(gè)投票支持頁(yè)面,用戶點(diǎn)擊支持按鈕蔬顾,限定一個(gè)小時(shí)內(nèi)不能再次點(diǎn)擊宴偿,一小時(shí)后可以再次點(diǎn)擊,后面以此類推诀豁,請(qǐng)問(wèn)如何實(shí)現(xiàn)
** 如有要采集一個(gè)頁(yè)面的PV窄刘、UV數(shù)量,應(yīng)該如何設(shè)計(jì)舷胜?(PV頁(yè)面展示次數(shù)娩践;UV獨(dú)立訪客數(shù))
補(bǔ)充
servlet和 filter的區(qū)別
1、servlet:servlet是一種運(yùn)行服務(wù)器端的java應(yīng)用程序烹骨,具有獨(dú)立于平臺(tái)和協(xié)議的特性翻伺,并且可以動(dòng)態(tài)的生成web頁(yè)面,它工作在客戶端請(qǐng)求與服務(wù)器響應(yīng)的中間層展氓。
2穆趴、filter:filter是一個(gè)可以復(fù)用的代碼片段,可以用來(lái)轉(zhuǎn)換HTTP請(qǐng)求遇汞、響應(yīng)和頭信息未妹。Filter不像Servlet簿废,它不能產(chǎn)生一個(gè)請(qǐng)求或者響應(yīng),它只是修改對(duì)某一資源的請(qǐng)求络它,或者修改從某一的響應(yīng)族檬。
友情提示
我是和奇谷樸,一個(gè)在帝都周末自己選擇加班的有志好青年化戳,讀完我的文章如果有收獲单料,記得打賞、關(guān)注和點(diǎn)贊哦点楼!么么噠I狻!