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