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