更新時間:2022-12-20 14:53:59 來源:動力節(jié)點(diǎn) 瀏覽1696次
小編發(fā)現(xiàn)網(wǎng)上有不少的Java相關(guān)面試題,但問題也同樣存在,第一就是面試題不全、第二就是沒有答案、第三有答案但未必會有解答思路等等,所以今天小編就根據(jù)以上問題,總結(jié)出了比較詳細(xì)的Java初級工程師面試題:

1.你對SpringMVC的了解
答:采用三層框架,降低代碼之間的耦合,提高代碼質(zhì)量。SpringMVC的重要核心組件有:前端控制器(dispatcherServlet), 處理器映射(handlerMapping), 處理器適配器(HandlerAdapter), 視圖解析器(ViewResolver)
工作流程
1.客戶端發(fā)送請求到前端控制器(中央處理器),前端控制器判斷請求是否符合格式,
如果符合格式到請求到達(dá)處理映射器,處理器映射器查找對應(yīng)的處理器,將查找到的結(jié)果(處理器路徑)返回給前端控制器,前端控制器到處理器適配器,處理器適配器進(jìn)行處理業(yè)務(wù),將業(yè)務(wù)執(zhí)行的結(jié)果返回給前端控制器,前端控制器到視圖解析器,進(jìn)行視圖解析,視圖解析后返回一個view(數(shù)據(jù))到前端控制器,前端控制器到視圖渲染,將渲染后的結(jié)果返回給客戶端
2.面向?qū)ο蟮奶卣饔心男?/strong>
封裝、繼承、多態(tài)、重載、重寫
(1)繼承:就是保留父類的屬性,開擴(kuò)新的東西。通過子類可以實(shí)現(xiàn)繼承,子類繼承父類的所有狀態(tài)和行為,同時添加自身的狀態(tài)和行為。
(2)封裝:就是類的私有化。將代碼及處理數(shù)據(jù)綁定在一起的一種編程機(jī)制,該機(jī)制保證程序和數(shù)據(jù)不受外部干擾。
(3)多態(tài):是允許將父對象設(shè)置成為和一個和多個它的子對象相等的技術(shù)。包括重載和重寫。重載為編譯時多態(tài),重寫是運(yùn)行時多態(tài)。
(4)重載:在同一個類中,方法名一樣。參數(shù)列表、方法體、返回值類型、訪問修飾符可以不一樣
(5)重寫:存在于子父類關(guān)系中,子類重寫父類方法,方法名一樣訪問權(quán)限修飾符大于等于父類,拋出異常范圍小于等于父類,參數(shù)列表一樣,方法體不一樣
3.抽象類和接口的區(qū)別
(1)抽象類中有抽象方法有構(gòu)造方法,構(gòu)造方法不能直接創(chuàng)建對象,可以有靜態(tài)代碼塊和靜態(tài)方法;子類繼承抽象類必須重寫所有抽象方法,否則把自己變成抽象類
(2)接口中只能有抽象方法,jdk1.8之后允許有普通方法,不能含有靜態(tài)代碼塊以及靜態(tài)方法
一個類只能繼承一個抽象類,而一個類卻可以實(shí)現(xiàn)多個接口
4.在java里面有反射,反射的用途
反射:動態(tài)地發(fā)現(xiàn)和綁定類、方法、字段,以及所有其他的由于有所產(chǎn)生的的元素。通過反射,能夠在需要時完成創(chuàng)建實(shí)例、調(diào)用方法和訪問字段的工作。
在程序運(yùn)行中通過類名,可以調(diào)用這個類中的所有方法以及屬性
優(yōu)點(diǎn): 可以在程序運(yùn)行的過程中,操作這些對象。
可以解耦,提高程序的可擴(kuò)展性。
缺點(diǎn):因?yàn)槭荍VM操作,所以對于性能來說會有所下降。
容易對程序源碼造成一定的混亂。
用途:
1.在運(yùn)行時判斷任意一個對象所屬的類
2.在運(yùn)行時構(gòu)造任意一個類的對象
3.在運(yùn)行時判斷任意一個類所具有的成員變量和方法
3.在運(yùn)行時調(diào)用任意一個對象的方法,通過反射甚至可以調(diào)用到private修飾的方法
4.生成動態(tài)代理
5.實(shí)現(xiàn)線程的方法
1.繼承Thread類,重寫run方法
2.實(shí)現(xiàn)Runnable接口,重寫run方法,實(shí)現(xiàn)Runnable接口的實(shí)現(xiàn)類的實(shí)例對象作為Thread構(gòu)造函數(shù)的target
3.通過Callable和FutureTask創(chuàng)建線程
4.通過線程池創(chuàng)建線程
線程的物種狀態(tài):創(chuàng)建、就緒、運(yùn)行、阻塞、死亡
6.get和post的區(qū)別
(1)get:地址欄傳輸數(shù)據(jù),攜帶數(shù)據(jù)數(shù)量小,地址欄可見,速度快,不安全
(2)post:Tcp包傳輸數(shù)據(jù),攜帶數(shù)據(jù)量大,地址欄不可見,速度相對慢,安全
7.SpringBoot相對于SpringMVC優(yōu)勢
(1)SpringBoot減少了大量的配置文件,約定優(yōu)于配置 ,可以極大地簡化了 spring 的配置流程,Spring Boot實(shí)現(xiàn)了自動配置,降低了項(xiàng)目搭建的復(fù)雜度。
(2)Spring 是一個“引擎”;
Spring MVC 是基于Spring的一個 MVC 框架 ;
Spring Boot 是基于Spring4的條件注冊的一套快速開發(fā)整合包。
8.在java里面常用的集合類都有哪些
(1)單集合:set不能重復(fù)(HashSet,LinkedHashSet,TreeSet)
List有序、可重復(fù)(ArrayList,LinkedList)
(2)雙列集合:Map(HashMap,TreeMap)
1、List(有序、可重復(fù))
List里存放的對象是有序的,同時也是可以重復(fù)的,List關(guān)注的是索引,擁有一系列和索引相關(guān)的方法,查詢速度快。因?yàn)橥鵯ist集合里插入或刪除數(shù)據(jù)時,會伴隨著后面數(shù)據(jù)的移動,所以插入刪除數(shù)據(jù)速度慢。
ArrayList:基于數(shù)組實(shí)現(xiàn),查找、更新效率高,自動擴(kuò)容1.5倍,初始容量10
LinkedList:基于雙向鏈表實(shí)現(xiàn),刪除插入效率高,鏈表是由節(jié)點(diǎn)組成的節(jié)點(diǎn)中分兩部分一部分存儲節(jié)點(diǎn)元素,另一部分存儲指針,指向下一個節(jié)點(diǎn),刪除一個元素,只要改變他前一個節(jié)點(diǎn)的指針指向就可以了
2、Set(不能重復(fù))
Set里存放的對象是無序,不能重復(fù)的,集合中的對象不按特定的方式排序,只是簡單地把對象加入集合中。
HashSet,基于Hash表去重,重寫equals和hashcode
LinkedHashSet,通過比較器,實(shí)現(xiàn)Comparable重寫comporTo()方法,底層是紅黑樹
3、Map(鍵值對、鍵唯一、值不唯一)
Map集合中存儲的是鍵值對,鍵不能重復(fù),值可以重復(fù)。根據(jù)鍵得到值,對map集合遍歷時先得到鍵的set集合,對set集合進(jìn)行遍歷,得到相應(yīng)的值。
HashMap,初始大小11,加載因子0.75,擴(kuò)容2倍+1
TreeMap,有序(自然升序)基于紅黑樹葉
集合的優(yōu)點(diǎn)
(1)使用核心集合類降低開發(fā)成本,而非實(shí)現(xiàn)我們自己的集合類。
(2)隨著使用經(jīng)過嚴(yán)格測試的集合框架類,代碼質(zhì)量會得到提高。
(3)通過使用JDK附帶的集合類,可以降低代碼維護(hù)成本。
(4)復(fù)用性和可操作性。
以上就是“Java初級工程師面試題常見問題集錦”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀

初級 202925

初級 203221

初級 202629

初級 203743