隨著互聯(lián)網(wǎng)的發(fā)展,從事java后臺(tái)開發(fā)的人不斷增多,那么面試java后臺(tái)開發(fā)的人都有碰到哪些java后臺(tái)面試問題呢?現(xiàn)在跟隨天津卓眾教育java學(xué)院小編一起去了解一下吧。
Arrays.sort實(shí)現(xiàn)原理和Collection實(shí)現(xiàn)原理
答:Arrays.sort():快排
Collections.sort() :MergeSort,后來變成了TimSort
2. foreach和while的區(qū)別(編譯之后)
答:foreach針對(duì)確定次數(shù);while不確定次數(shù)
3. 線程池的種類,區(qū)別和使用場(chǎng)景
答:newCachedThreadPool創(chuàng)建一個(gè)可緩存線程池,如果線程池長(zhǎng)度超過處理需要,可靈活回收空閑線程,若無可回收,則新建線程。
newFixedThreadPool 創(chuàng)建一個(gè)定長(zhǎng)線程池,可控制線程最大并發(fā)數(shù),超出的線程會(huì)在隊(duì)列中等待。
newScheduledThreadPool 創(chuàng)建一個(gè)定長(zhǎng)線程池,支持定時(shí)及周期性任務(wù)執(zhí)行。
newSingleThreadExecutor 創(chuàng)建一個(gè)單線程化的線程池,它只會(huì)用唯一的工作線程來執(zhí)行任務(wù),保證所有任務(wù)按照指定順序(FIFO, LIFO, 優(yōu)先級(jí))執(zhí)行。
4. 線程池如何調(diào)優(yōu)
答:使用線程池的核心問題在于應(yīng)該使用多少線程。利特爾法則、拆分線程池
5. 線程池的最大線程數(shù)目根據(jù)什么確定
答:corePoolSize: tasks*tasktime個(gè)線程數(shù)
queueCapacity: corePoolSize/tasktime)*responsetime
maxPoolSize: (每秒任務(wù)-queueCapacity)*(每秒單個(gè)線程處理任務(wù)數(shù)量)
6. 動(dòng)態(tài)代理的幾種方式
答:代理模式的作用是:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。在某些情況下,一個(gè)客戶不想或者不能直接引用另一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用。
動(dòng)態(tài)代理:在程序運(yùn)行時(shí),運(yùn)用反射機(jī)制動(dòng)態(tài)創(chuàng)建而成。每一個(gè)動(dòng)態(tài)代理類都必須要實(shí)現(xiàn)InvocationHandler這個(gè)接口。
jdk動(dòng)態(tài)代理:jdk動(dòng)態(tài)代理是由Java內(nèi)部的反射機(jī)制來實(shí)現(xiàn)的,應(yīng)用前提,必須是目標(biāo)類基于統(tǒng)一的接口
cglib動(dòng)態(tài)代理:動(dòng)態(tài)代理框架,借助asm來實(shí)現(xiàn)的
更多關(guān)于java后臺(tái)開發(fā)的相關(guān)面試題,請(qǐng)繼續(xù)關(guān)注天津卓眾教育java學(xué)院官網(wǎng),會(huì)有更多精彩內(nèi)容與您分享。