更新時(shí)間:2020-04-03 16:18:37 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2970次
Java程序員面試考點(diǎn)包括Java基礎(chǔ)語(yǔ)法、集合、設(shè)計(jì)模式、多線程、JDK源碼、框架、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)和算法分析等等。本文針對(duì)這些考試重點(diǎn)知識(shí),整理匯總了2020年Java高級(jí)面試題。
servlet執(zhí)行流程
客戶端發(fā)出http請(qǐng)求,web服務(wù)器將請(qǐng)求轉(zhuǎn)發(fā)到servlet容器,servlet容器解析url并根據(jù)web.xml找到相對(duì)應(yīng)的servlet,并將request、response對(duì)象傳遞給找到的servlet,servlet根據(jù)request就可以知道是誰(shuí)發(fā)出的請(qǐng)求,請(qǐng)求信息及其他信息,當(dāng)servlet處理完業(yè)務(wù)邏輯后會(huì)將信息放入到response并響應(yīng)到客戶端。
springMVC的執(zhí)行流程
springMVC是由dispatchservlet為核心的分層控制框架。首先客戶端發(fā)出一個(gè)請(qǐng)求web服務(wù)器解析請(qǐng)求url并去匹配dispatchservlet的映射url,如果匹配上就將這個(gè)請(qǐng)求放入到dispatchservlet,dispatchservlet根據(jù)mapping映射配置去尋找相對(duì)應(yīng)的handel,然后把處理權(quán)交給找到的handel,handel封裝了處理業(yè)務(wù)邏輯的代碼,當(dāng)handel處理完后會(huì)返回一個(gè)邏輯視圖modelandview給dispatchservlet,此時(shí)的modelandview是一個(gè)邏輯視圖不是一個(gè)正式視圖,所以dispatchservlet會(huì)通過(guò)viewresource視圖資源去解析modelandview,然后將解析后的參數(shù)放到view中返回到客戶端并展現(xiàn)。
給定一個(gè)txt文件,如何得到某字符串出現(xiàn)的次數(shù)
File file = new File("E://test.txt");
InputStream is = new FileInputStream(file);
byte b[] = new byte[1024];
int a = is.read(b);
String str[] = new String(b,0,a).split("");
int count = 0;
for(int i = 0;i<str.length;i++){< p="">
if("a".equals(str[i]))count++;
}
System.out.println(count);
Java設(shè)計(jì)模式思想
a) 單例模式:?jiǎn)卫J胶诵闹恍枰猲ew一個(gè)實(shí)例對(duì)象的模式,比如數(shù)據(jù)庫(kù)連接,在線人數(shù)等,一些網(wǎng)站上看到的在線人數(shù)統(tǒng)計(jì)就是通過(guò)單例模式實(shí)現(xiàn)的,把一個(gè)計(jì)時(shí)器存放在數(shù)據(jù)庫(kù)或者內(nèi)存中,當(dāng)有人登陸的時(shí)候取出來(lái)加一再放回去,有人退出登陸的時(shí)候取出來(lái)減一再放回去,但是當(dāng)有兩個(gè)人同時(shí)登陸的時(shí)候,會(huì)同時(shí)取出計(jì)數(shù)器,同時(shí)加一,同時(shí)放回去,這樣的話數(shù)據(jù)就會(huì)錯(cuò)誤,所以需要一個(gè)全局變量的對(duì)象給全部人使用,只需要new出一個(gè)實(shí)例對(duì)象,這就是單例模式的應(yīng)用,并且單例模式節(jié)省資源,因?yàn)樗刂屏藢?shí)例對(duì)象的個(gè)數(shù),并有利于gc回收。
b) 策略模式:就是將幾個(gè)類中公共的方法提取到一個(gè)新的類中,從而使擴(kuò)展更容易,保證代碼的可移植性,可維護(hù)性強(qiáng)。比如有個(gè)需求是寫鴨子對(duì)象,鴨子有叫,飛,外形這三種方法,如果每個(gè)鴨子類都寫這三個(gè)方法會(huì)出現(xiàn)代碼的冗余,這時(shí)候我們可以把鴨子中的叫,飛,外形這三個(gè)方法提取出來(lái),放到鴨父類中,讓每個(gè)鴨子都繼承這個(gè)鴨父類,重寫這三個(gè)方法,這樣封裝的代碼可移植性強(qiáng),當(dāng)用戶提出新的需求比如鴨子會(huì)游泳,那么對(duì)于我們oo程序員來(lái)講就非常簡(jiǎn)單了我們只需要在鴨父類中加一個(gè)游泳的方法,讓會(huì)游泳的鴨子重寫游泳方法就可以了。
c) 工廠模式:簡(jiǎn)單的工廠模式主要是統(tǒng)一提供實(shí)例對(duì)象的引用,通過(guò)工廠模式接口獲取實(shí)例對(duì)象的引用。比如一個(gè)登陸功能,后端有三個(gè)類,controller類,interface類,實(shí)現(xiàn)接口的實(shí)現(xiàn)類。當(dāng)客戶端發(fā)出一個(gè)請(qǐng)求,當(dāng)請(qǐng)求傳到controller類中時(shí),controller獲取接口的引用對(duì)象,而實(shí)現(xiàn)接口的實(shí)現(xiàn)類中封裝好了登陸的業(yè)務(wù)邏輯代碼。當(dāng)你需要加一個(gè)注冊(cè)需求的時(shí)候只需要在接口類中加一個(gè)注冊(cè)方法,實(shí)現(xiàn)類中實(shí)現(xiàn)方法,controller獲取接口的引用對(duì)象即可,不需要改動(dòng)原來(lái)的代碼,這種做法是的可拓展性強(qiáng)。
冒泡排序、二分查找
a) 冒泡
public static void mp(int a[]) {
int swap = 0;
for (int i = 0; i < a.length; i++) {
for (int j = i; j < a.length; j++) {
if (a[j] > a[i]) {
swap = a[i];
a[i] = a[j];
a[j] = swap;
}
}
}
System.out.println(Arrays.toString(a));
}
b)二分查找
public static int ef(int a[], int tag) {
int first = 0;
int end = a.length;
for (int i = 0; i < a.length; i++) {
int middle = (first + end) / 2;
if (tag == a[middle]) {
return middle;
}
if (tag > a[middle]) {
first = middle + 1;
}
if (tag < a[middle]) {
end = middle - 1;
}
}
return 0;
}
a) Ajax為異步請(qǐng)求,即局部刷新技術(shù),在傳統(tǒng)的頁(yè)面中,用戶需要點(diǎn)擊按鈕或者事件觸發(fā)請(qǐng)求,到刷新頁(yè)面,而異步技術(shù)為不需要點(diǎn)擊即可觸發(fā)事件,這樣使得用戶體驗(yàn)感增強(qiáng),比如商城購(gòu)物車的異步加載,當(dāng)你點(diǎn)擊商品時(shí)無(wú)需請(qǐng)求后臺(tái)而直接動(dòng)態(tài)修改參數(shù)。
父類與子類之間的調(diào)用順序(打印結(jié)果)
a) 父類靜態(tài)代碼塊
b) 子類靜態(tài)代碼塊
c) 父類構(gòu)造方法
d) 子類構(gòu)造方法
e) 子類普通方法
f) 重寫父類的方法,則打印重寫后的方法
內(nèi)部類與外部類的調(diào)用
a) 內(nèi)部類可以直接調(diào)用外部類包括private的成員變量,使用外部類引用的this.關(guān)鍵字調(diào)用即可
b) 而外部類調(diào)用內(nèi)部類需要建立內(nèi)部類對(duì)象
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“2020年Java高級(jí)面試題整理”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743