大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) 9月份21道最新Java面試題剖析

9月份21道最新Java面試題剖析

更新時(shí)間:2019-09-02 15:05:53 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2628次

  縱觀幾年來的Java面試題,你會(huì)發(fā)現(xiàn)每家都差不多。你仔細(xì)觀察就會(huì)發(fā)現(xiàn),HashMap的出現(xiàn)幾率未免也太高了吧!連考察的知識(shí)點(diǎn)都一樣,什么hash碰撞啊,并發(fā)問題啊!再比如JVM,無外乎考內(nèi)存結(jié)構(gòu),GC算法等!因此,如果是為了面試,完全是有套路可以準(zhǔn)備的!記住,基礎(chǔ)再好,也架不住面試官天馬行空的問,所以刷面試題還是很有必要的!


  1、Map的底層結(jié)構(gòu)?(HashMap)


  評(píng)注:老題目了,各位面試的人員必須熟記!


  回答:Map是以鍵值對(duì)來存儲(chǔ)對(duì)象的,它的底層實(shí)際上是數(shù)組和鏈表來組成的,經(jīng)典的一張圖如下(別人畫的);

image.png

  當(dāng)使用put方法時(shí),先查找出數(shù)組位置是否存在對(duì)象,通過key.hashcode對(duì)數(shù)組長(zhǎng)度取余;存在,則把里面的鏈表拿出來,判斷鏈表里面是否存在key值與傳遞過來的key值一樣的對(duì)象,存在,則把傳遞過來的value取代鏈表key對(duì)應(yīng)的value,不存在,則直接通過鏈表的add()方法加到鏈表后面;


  當(dāng)使用get方法時(shí),先查找出數(shù)組位置是否存在對(duì)象,通過key.hashcode對(duì)數(shù)組長(zhǎng)度取余;如果不存在,則返回為空,如果存在,則遍歷鏈表,判斷鏈表里面是否存在key值與傳遞過來的key值一樣的對(duì)象,存在,則把key值對(duì)應(yīng)的value取出返回,不存在,則返回為空;


  2、線程安全的Map(concurrentHashMap)簡(jiǎn)單的說了下這兩1.7和1.8的區(qū)別,本想問下要不要深入的講下(源碼級(jí)別),結(jié)果面試官說不用了。


  評(píng)注:老題目了,如果有時(shí)間,再去了解一下,解決HashMap線程安全的各種方法,以及原理!此題只能大概回答一下結(jié)構(gòu)的變化,因?yàn)槠渲械膶?shí)現(xiàn)代碼都變了,細(xì)說可以說很久,估計(jì)面試官也沒時(shí)間聽!


  回答:


  jdk1.7中采用Segment+HashEntry的方式進(jìn)行實(shí)現(xiàn),結(jié)構(gòu)如下:

image.png

  Segment數(shù)組的意義就是將一個(gè)大的table分割成多個(gè)小的table來進(jìn)行加鎖,而每一個(gè)Segment元素存儲(chǔ)的是HashEntry數(shù)組+鏈表,這個(gè)和HashMap的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)一樣


  而jdk1.8中則


  去除Segment+HashEntry+Unsafe的實(shí)現(xiàn),


  改為Synchronized+CAS+Node+Unsafe的實(shí)現(xiàn)


  其結(jié)構(gòu)圖如下:

image.png

  如上圖所示,取消了Segment字段,數(shù)組中存儲(chǔ)的就是Node。它與HashMap中的HashEntry定義很相似,但是有一些差別。它對(duì)value和next屬性設(shè)置了volatile同步鎖,它不允許調(diào)用setValue方法直接改變Node的value域。


  另外,將原先table數(shù)組+單向鏈表的數(shù)據(jù)結(jié)構(gòu),變更為table數(shù)組+單向鏈表+紅黑樹的結(jié)構(gòu),在hash碰撞過多的情況下會(huì)將鏈表轉(zhuǎn)化成紅黑樹。


  3、項(xiàng)目MySQL的數(shù)據(jù)量和并發(fā)量有多大?


  評(píng)注:此題為走向題,你的回答不同,后面問題走向就變了。


  關(guān)于容量:單表行數(shù)超過500萬行或者單表容量超過2GB,此時(shí)就要答分庫(kù)分表的中間件了!那后面題目的走向就變?yōu)閙ycat、sharing-jdbc等分庫(kù)分表中間件的底層原理了!


  關(guān)于并發(fā)量:如果并發(fā)數(shù)過1200,此時(shí)就要答利用MQ或者redis等中間件,作為補(bǔ)償措施,而不能直接操作數(shù)據(jù)庫(kù)。那后面的題目走向就是redis、mq的原理了!


  介于面試者還是一個(gè)應(yīng)屆生,我斗膽猜測(cè)面試者是這么答的


  回答:數(shù)據(jù)量估計(jì)就三四百萬吧,并發(fā)量就五六百左右!


  4、你對(duì)數(shù)據(jù)庫(kù)了解多少?


  評(píng)注:因?yàn)槟愦鸬臄?shù)據(jù)量和并發(fā)量不大,因此中間件這塊沒啥好問的。因此,題目走向變?yōu)閿?shù)據(jù)庫(kù)底層!另外,此題為引導(dǎo)題,面試官在給你機(jī)會(huì)引向你最擅長(zhǎng)的方面!


  回答:了解常見數(shù)據(jù)庫(kù)調(diào)優(yōu)方法,索引優(yōu)化等!


  5、你說下數(shù)據(jù)庫(kù)的索引實(shí)現(xiàn)和非主鍵的二級(jí)索引


  評(píng)注:這個(gè)問題是根據(jù)上面,你的回答而問出來的!記得引向自己最擅長(zhǎng)的數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)!默認(rèn)是回答mysql數(shù)據(jù)庫(kù)的


  回答:


  從數(shù)據(jù)結(jié)構(gòu)角度:


  B-Tree索引,數(shù)據(jù)結(jié)構(gòu)就是一顆B+樹。


  Hash索引,Hash索引比較的是進(jìn)行Hash運(yùn)算之后的Hash值,所以它只能用于等值的過濾,不能用于基于范圍的過濾。基本不用!


  R-Tree索引,僅支持geometry數(shù)據(jù)類型,也基本不用!


  至于非主鍵的二級(jí)索引,這個(gè)實(shí)際上問的就是非聚簇索引!非聚簇索引本身就是一顆B+樹,其根節(jié)點(diǎn)指向聚簇索引的B+樹。


  6、項(xiàng)目用的是SpringBoot,你能說下SpringBoot與Spring的區(qū)別嗎?


  評(píng)注:基礎(chǔ)題,會(huì)springboot的,基本都答的上來。就算沒準(zhǔn)備過,當(dāng)場(chǎng)思考下都可以回答的出來!也是屬于引導(dǎo)題!


  回答:


  SpringBoot可以建立獨(dú)立的Spring應(yīng)用程序;


  內(nèi)嵌了如Tomcat,Jetty和Undertow這樣的容器,也就是說可以直接跑起來,用不著再做部署工作了。


  無需再像Spring那樣搞一堆繁瑣的xml文件的配置;


  可以自動(dòng)配置Spring;


  提供了一些現(xiàn)有的功能,如量度工具,表單數(shù)據(jù)驗(yàn)證以及一些外部配置這樣的一些第三方功能;


  提供的POM可以簡(jiǎn)化Maven的配置


  7、SpringBoot的自動(dòng)配置是怎么做的?


  評(píng)注:此題也是根據(jù)你的第七問,進(jìn)一步提問而得出。


  回答:


  先答為什么需要自動(dòng)配置?


  顧名思義,自動(dòng)配置的意義是利用這種模式代替了配置XML繁瑣模式。以前使用SpringMVC,需要進(jìn)行配置組件掃描、調(diào)度器、視圖解析器等,使用SpringBoot自動(dòng)配置后,只需要添加MVC組件即可自動(dòng)配置所需要的Bean。所有自動(dòng)配置的實(shí)現(xiàn)都在spring-boot-autoconfigure依賴中,包括SpringMVC、Data和其它框架的自動(dòng)配置。


  接著答spring-boot-autoconfigure依賴的工作原理?


  spring-boot-autoconfigure依賴的工作原理很簡(jiǎn)單,通過@EnableAutoConfiguration核心注解初始化,并掃描ClassPath目錄中自動(dòng)配置類對(duì)應(yīng)依賴。比如工程中有木有添加Thymeleaf的Starter組件依賴。如果有,就按按一定規(guī)則獲取默認(rèn)配置并自動(dòng)初始化所需要的Bean。


  其實(shí)還能再繼續(xù)答@EnableAutoConfiguration注解的工作原理!不過篇幅太長(zhǎng),答到上面那個(gè)地步就夠了!


  8、MyBatis定義的接口,怎么找到實(shí)現(xiàn)的?


  評(píng)注:mybatis底層原理題,考察有沒有看過mybatis的原理。博主剛好曾經(jīng)自己寫過一個(gè)mybatis,所以此題恰巧答的上來。


  博主內(nèi)心活動(dòng):"現(xiàn)在校招的都這么牛逼了么!"


  回答:一共五步


  1.Mapper接口在初始SqlSessionFactory注冊(cè)的。


  2.Mapper接口注冊(cè)在了名為MapperRegistry類的HashMap中,key=Mapperclassvalue=創(chuàng)建當(dāng)前Mapper的工廠。


  3.Mapper注冊(cè)之后,可以從SqlSession中g(shù)et


  4.SqlSession.getMapper運(yùn)用了JDK動(dòng)態(tài)代理,產(chǎn)生了目標(biāo)Mapper接口的代理對(duì)象。


  5.動(dòng)態(tài)代理的代理類是MapperProxy,這里邊最終完成了增刪改查方法的調(diào)用。


  9、Java內(nèi)存結(jié)構(gòu)


  評(píng)注:基礎(chǔ)題,這個(gè)應(yīng)該學(xué)JAVA的都會(huì)吧!送分題!如果博主沒理解錯(cuò)應(yīng)該是在問JVM的內(nèi)存結(jié)構(gòu)!


  回答:JVM內(nèi)存結(jié)構(gòu)主要有三大塊:堆內(nèi)存、方法區(qū)和棧。堆內(nèi)存是JVM中最大的一塊由年輕代和老年代組成,而年輕代內(nèi)存又被分成三部分,Eden空間、FromSurvivor空間、ToSurvivor空間,默認(rèn)情況下年輕代按照8:1:1的比例來分配;


  方法區(qū)存儲(chǔ)類信息、常量、靜態(tài)變量等數(shù)據(jù),是線程共享的區(qū)域,為與Java堆區(qū)分,方法區(qū)還有一個(gè)別名Non-Heap(非堆);棧又分為java虛擬機(jī)棧和本地方法棧主要用于方法的執(zhí)行。


  10、對(duì)象是否可GC?


  評(píng)注:這個(gè)問題就是在問,JVM如何判斷對(duì)象是否需要被回收!不用答引用計(jì)數(shù)法,答可達(dá)性分析算法就行。


  回答:


  這個(gè)算法的基本思路是通過一些列稱為“GCRoots”的對(duì)象作為起始點(diǎn),從這些點(diǎn)開始向下搜索,搜索走過的路徑稱為引用鏈,當(dāng)一個(gè)對(duì)象到GCRoots沒有任何引用鏈相連時(shí),則證明對(duì)象需要被回收.


  如圖:

image.png

  上圖中o3,o4對(duì)象沒有任何GCRoots可達(dá)到,所有這兩個(gè)對(duì)象不可用了,需要被GC回收


  Java可作為GCRoots的對(duì)象包括下面幾種:


  虛擬機(jī)棧中引用的對(duì)象


  方法區(qū)中類靜態(tài)屬性引用的對(duì)象


  方法區(qū)中產(chǎn)量引用的對(duì)象


  本地方法棧中JNI引用的對(duì)象


      更多Java面試題,登錄動(dòng)力節(jié)點(diǎn)IT培訓(xùn)官網(wǎng):http://m.dabaquan.cn/tutorial_baseinterviewquestions/

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 夜夜爱夜夜爽夜夜做夜夜欢 | 国产成社区在线视频观看 | 亚洲精品国产第一区二区图片 | 国产网友自拍视频 | 久久久久久网 | 91尤物在线播放 | 亚洲成a人片在线观看精品 亚洲成a人一区二区三区 | 精品无人乱码区1区2区3区 | 可以免费观看的一级片 | 久久久久夜夜夜精品国产 | 欧美日韩视频精品一区二区 | 91在线中文字幕 | 操久在线 | 久久99久久99小草精品免视看 | 日韩精品一区二区三区国语自制 | 中文字幕日韩一区二区 | 久久九色综合九色99伊人 | 波多野结衣亚洲一区二区三区 | 国产99在线播放 | 热久久久久久久 | 国产欧美日韩综合一区二区三区 | 国产精品麻豆久久99 | 国产高清美女一级毛片久久 | 国产一区成人 | 亚洲精品久久久久午夜福 | 天天天做天天天天爱天天想 | 日本爽快片100色毛片 | 成人短视频在线观看 | 97视频免费观看 | 国产一区二区三区久久精品小说 | 欧美成a| 97精品国产高清在线看入口 | 奇米7777第四色 | 四虎精品影院永久在线播放 | 啪啪短视频 | 中文字幕在线激情日韩一区 | 一级片看看| 欧美日韩一级大片 | 狠狠干天天爽 | 久久99亚洲精品久久频 | 有码一区 |