更新時(shí)間:2022-12-07 14:15:32 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2425次
在面對(duì)Java就業(yè)的情況下,不少同學(xué)會(huì)先做出準(zhǔn)備,提前看一些有關(guān)面試的各個(gè)大題,畢竟機(jī)會(huì)總是留給有準(zhǔn)備的人,但想必大家也發(fā)現(xiàn)了不少關(guān)于面試的問(wèn)題,很多網(wǎng)上的面試題都不是很全、要不就是沒(méi)有答案、要不就是沒(méi)有詳細(xì)的解說(shuō),為解決這些問(wèn)題,小編收集了不少的類型面試題,站在面試官的角度上,給出了小編覺(jué)得認(rèn)為對(duì)的答案,來(lái)分享給大家:
1.Log4j常用的四個(gè)日志級(jí)別是哪四個(gè)?優(yōu)先級(jí)順序是怎樣的?
優(yōu)先級(jí)從高到低分別是ERROR、WARN、INFO、DEBUG。
2.攔截器和過(guò)濾器有什么區(qū)別?程序中是先執(zhí)行攔截器還是過(guò)濾器?
①攔截器是基于java反射機(jī)制的,而過(guò)濾器是基于函數(shù)回調(diào)。
②攔截器不依賴與servlet容器,過(guò)濾器依賴與servlet容器。
③攔截器只能對(duì)action請(qǐng)求起作用,而過(guò)濾器則可以對(duì)幾乎所有的請(qǐng)求起作用。
④攔截器可以訪問(wèn)action上下文、值棧里的對(duì)象,而過(guò)濾器不能訪問(wèn)。
⑤在action的生命周期中,攔截器可以多次被調(diào)用,而過(guò)濾器只能在容器初始化時(shí)被調(diào)用一次。
⑥攔截器可以獲取IOC容器中的各個(gè)bean,而過(guò)濾器就不行,這點(diǎn)很重要,在攔截器里注入一個(gè)service,可以調(diào)用業(yè)務(wù)邏輯。
程序中先執(zhí)行過(guò)濾器。
3.請(qǐng)描述Mybatis結(jié)果集中ResultMap和ResultType的區(qū)別。
resultType和resultMap功能類似,都是返回對(duì)象信息,但是resultMap要更強(qiáng)大一些,可自定義。因?yàn)閞esultMap要配置一下,表和類的一一對(duì)應(yīng)關(guān)系,所以說(shuō)就算你的字段名和你的實(shí)體類的屬性名不一樣也沒(méi)關(guān)系,都會(huì)給你映射出來(lái),但是,resultType就比較雞肋了,必須字段名一樣,比如說(shuō)cId和c_id這種的都不能映射。
4.IT中 PostConstruct和 PreDestroy注解有什么作用?
被 PostConstruct修飾的方法會(huì)在服務(wù)器加載Servlet的時(shí)候運(yùn)行,并且只會(huì)被服務(wù)器調(diào)用一次,類似于Serclet的inti()方法。被 PostConstruct修飾的方法會(huì)在構(gòu)造函數(shù)之后,init()方法之前運(yùn)行。
被 PreDestroy修飾的方法會(huì)在服務(wù)器卸載Servlet的時(shí)候運(yùn)行,并且只會(huì)被服務(wù)器調(diào)用一次,類似于Servlet的destroy()方法。被 PreDestroy修飾的方法會(huì)在destroy()方法之后運(yùn)行,在Servlet被徹底卸載之前。
5.編寫Webservice接口服務(wù)端(框架)有幾種方式?
Apache Axis1、Apache Axis2、Codehaus XFire、Apache CXF等。
6.談?wù)勀銓?duì)面向?qū)ο蟮睦斫?
所謂對(duì)象就是由一組數(shù)據(jù)結(jié)構(gòu)和處理它們的方法組成的,重點(diǎn)“數(shù)據(jù)”包括對(duì)象的特性、狀態(tài)等的靜態(tài)信息;“方法” 也就是行為,包括該對(duì)象的對(duì)數(shù)據(jù)的操作、功能等能動(dòng)信息。把相同行為的對(duì)象歸納為類,類是一個(gè)抽象的概念,對(duì)象是類的具體。簡(jiǎn)單點(diǎn)說(shuō):對(duì)象就是類的實(shí)例。例如:小品演員就是一個(gè)類,趙本山就是一個(gè)對(duì)象。
面向?qū)ο蟮哪康模航鉀Q軟件系統(tǒng)的可擴(kuò)展性,可維護(hù)性和可重用性。
● 面向?qū)ο蟮娜筇匦裕悍庋b、多態(tài)和繼承:
(1)封裝(對(duì)應(yīng)可擴(kuò)展性):隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外公開(kāi)接口,控制在程序中屬性的讀和修改的訪問(wèn)級(jí)別。封裝是通過(guò)訪問(wèn)控制符(public protected private)來(lái)實(shí)現(xiàn)。一個(gè)類就可看成一個(gè)封裝。
(2)繼承(重用性和擴(kuò)展性):子類繼承父類,可以繼承父類的方法和屬性??梢詫?duì)父類方向進(jìn)行覆蓋(實(shí)現(xiàn)了多態(tài))。但是繼承破壞了封裝,因?yàn)樗菍?duì)子類開(kāi)放的,修改父類會(huì)導(dǎo)致所有子類的改變,因此繼承一定程度上又破壞了系統(tǒng)的可擴(kuò)展性,只有明確的IS-A關(guān)系才能使用。繼承要慎用,盡量?jī)?yōu)先使用組合。
(3)多態(tài)(可維護(hù)性和可擴(kuò)展性):接口的不同實(shí)現(xiàn)方式即為多態(tài)。接口是對(duì)行為的抽象,剛才在封裝提到,找到變化部分并封裝起來(lái),但是封裝起來(lái)后,怎么適應(yīng)接下來(lái)的變化?這正是接口的作用,接口的主要目的是為不相關(guān)的類提供通用的處理服務(wù),我們可以想象一下。比如鳥(niǎo)會(huì)飛,但是超人也會(huì)飛,通過(guò)飛這個(gè)接口,我們可以讓鳥(niǎo)和超人,都實(shí)現(xiàn)這個(gè)接口。
面向?qū)ο缶幊?OOP)其實(shí)就是一種設(shè)計(jì)思想,在程序設(shè)計(jì)過(guò)程中把每一部分都盡量當(dāng)成一個(gè)對(duì)象來(lái)考慮,以實(shí)現(xiàn)軟件系統(tǒng)的可擴(kuò)展性,可維護(hù)性和可重用性。
7.Java中異常分為哪些種類?
按照異常需要處理的時(shí)機(jī)分為編譯時(shí)異常(也叫受控異常)也叫 CheckedException 和運(yùn)行時(shí)異常(也叫非受控異常)也叫 UnCheckedException。Java認(rèn)為Checked異常都是可以被處理的異常,所以Java程序必須顯式處理Checked異常。如果程序沒(méi)有處理Checked 異常,該程序在編譯時(shí)就會(huì)發(fā)生錯(cuò)誤無(wú)法編譯。這體現(xiàn)了Java 的設(shè)計(jì)哲學(xué):沒(méi)有完善錯(cuò)誤處理的代碼根本沒(méi)有機(jī)會(huì)被執(zhí)行。對(duì)Checked異常處理方法有兩種:
● 第一種:當(dāng)前方法知道如何處理該異常,則用try...catch塊來(lái)處理該異常。
● 第二種:當(dāng)前方法不知道如何處理,則在定義該方法時(shí)聲明拋出該異常。
運(yùn)行時(shí)異常只有當(dāng)代碼在運(yùn)行時(shí)才發(fā)行的異常,編譯的時(shí)候不需要try…catch。Runtime如除數(shù)是0和數(shù)組下標(biāo)越界等,其產(chǎn)生頻繁,處理麻煩,若顯示申明或者捕獲將會(huì)對(duì)程序的可讀性和運(yùn)行效率影響很大。所以由系統(tǒng)自動(dòng)檢測(cè)并將它們交給缺省的異常處理程序。當(dāng)然如果你有處理要求也可以顯示捕獲它們。
8.error和exception的區(qū)別?
Error類和Exception類的父類都是Throwable類,他們的區(qū)別如下:
● Error類一般是指與虛擬機(jī)相關(guān)的問(wèn)題,如系統(tǒng)崩潰,虛擬機(jī)錯(cuò)誤,內(nèi)存空間不足,方法調(diào)用棧溢出等。對(duì)于這類錯(cuò)誤的導(dǎo)致的應(yīng)用程序中斷,僅靠程序本身無(wú)法恢復(fù)和預(yù)防,遇到這樣的錯(cuò)誤,建議讓程序終止。
● Exception類表示程序可以處理的異常,可以捕獲且可能恢復(fù)。遇到這類異常,應(yīng)該盡可能處理異常,使程序恢復(fù)運(yùn)行,而不應(yīng)該隨意終止異常。
●Exception類又分為未檢查異常(UnCheckedException)和受檢查的異常(CheckedException)。運(yùn)行時(shí)異常ArithmeticException,IllegalArgumentException編譯能通過(guò),但是一運(yùn)行就終止了,程序不會(huì)處理運(yùn)行時(shí)異常,出現(xiàn)這類異常,程序會(huì)終止。而受檢查的異常,要么用 try…catch 捕獲,要么用throws字句聲明拋出,交給它的父類處理,否則編譯不會(huì)通過(guò)。
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"Java基礎(chǔ)知識(shí)面試題,2023年最實(shí)用的匯總",希望對(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í)