黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 9月份21道最新Java面試題剖析

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

更新時間:2019-09-02 15:05:53 來源:動力節點 瀏覽2647次

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


  1、Map的底層結構?(HashMap)


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


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

image.png

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


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


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


  評注:老題目了,如果有時間,再去了解一下,解決HashMap線程安全的各種方法,以及原理!此題只能大概回答一下結構的變化,因為其中的實現代碼都變了,細說可以說很久,估計面試官也沒時間聽!


  回答:


  jdk1.7中采用Segment+HashEntry的方式進行實現,結構如下:

image.png

  Segment數組的意義就是將一個大的table分割成多個小的table來進行加鎖,而每一個Segment元素存儲的是HashEntry數組+鏈表,這個和HashMap的數據存儲結構一樣


  而jdk1.8中則


  去除Segment+HashEntry+Unsafe的實現,


  改為Synchronized+CAS+Node+Unsafe的實現


  其結構圖如下:

image.png

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


  另外,將原先table數組+單向鏈表的數據結構,變更為table數組+單向鏈表+紅黑樹的結構,在hash碰撞過多的情況下會將鏈表轉化成紅黑樹。


  3、項目MySQL的數據量和并發量有多大?


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


  關于容量:單表行數超過500萬行或者單表容量超過2GB,此時就要答分庫分表的中間件了!那后面題目的走向就變為mycat、sharing-jdbc等分庫分表中間件的底層原理了!


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


  介于面試者還是一個應屆生,我斗膽猜測面試者是這么答的


  回答:數據量估計就三四百萬吧,并發量就五六百左右!


  4、你對數據庫了解多少?


  評注:因為你答的數據量和并發量不大,因此中間件這塊沒啥好問的。因此,題目走向變為數據庫底層!另外,此題為引導題,面試官在給你機會引向你最擅長的方面!


  回答:了解常見數據庫調優方法,索引優化等!


  5、你說下數據庫的索引實現和非主鍵的二級索引


  評注:這個問題是根據上面,你的回答而問出來的!記得引向自己最擅長的數據庫基礎知識!默認是回答mysql數據庫的


  回答:


  從數據結構角度:


  B-Tree索引,數據結構就是一顆B+樹。


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


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


  至于非主鍵的二級索引,這個實際上問的就是非聚簇索引!非聚簇索引本身就是一顆B+樹,其根節點指向聚簇索引的B+樹。


  6、項目用的是SpringBoot,你能說下SpringBoot與Spring的區別嗎?


  評注:基礎題,會springboot的,基本都答的上來。就算沒準備過,當場思考下都可以回答的出來!也是屬于引導題!


  回答:


  SpringBoot可以建立獨立的Spring應用程序;


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


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


  可以自動配置Spring;


  提供了一些現有的功能,如量度工具,表單數據驗證以及一些外部配置這樣的一些第三方功能;


  提供的POM可以簡化Maven的配置


  7、SpringBoot的自動配置是怎么做的?


  評注:此題也是根據你的第七問,進一步提問而得出。


  回答:


  先答為什么需要自動配置?


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


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


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


  其實還能再繼續答@EnableAutoConfiguration注解的工作原理!不過篇幅太長,答到上面那個地步就夠了!


  8、MyBatis定義的接口,怎么找到實現的?


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


  博主內心活動:"現在校招的都這么牛逼了么!"


  回答:一共五步


  1.Mapper接口在初始SqlSessionFactory注冊的。


  2.Mapper接口注冊在了名為MapperRegistry類的HashMap中,key=Mapperclassvalue=創建當前Mapper的工廠。


  3.Mapper注冊之后,可以從SqlSession中get


  4.SqlSession.getMapper運用了JDK動態代理,產生了目標Mapper接口的代理對象。


  5.動態代理的代理類是MapperProxy,這里邊最終完成了增刪改查方法的調用。


  9、Java內存結構


  評注:基礎題,這個應該學JAVA的都會吧!送分題!如果博主沒理解錯應該是在問JVM的內存結構!


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


  方法區存儲類信息、常量、靜態變量等數據,是線程共享的區域,為與Java堆區分,方法區還有一個別名Non-Heap(非堆);棧又分為java虛擬機棧和本地方法棧主要用于方法的執行。


  10、對象是否可GC?


  評注:這個問題就是在問,JVM如何判斷對象是否需要被回收!不用答引用計數法,答可達性分析算法就行。


  回答:


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


  如圖:

image.png

  上圖中o3,o4對象沒有任何GCRoots可達到,所有這兩個對象不可用了,需要被GC回收


  Java可作為GCRoots的對象包括下面幾種:


  虛擬機棧中引用的對象


  方法區中類靜態屬性引用的對象


  方法區中產量引用的對象


  本地方法棧中JNI引用的對象


      更多Java面試題,登錄動力節點IT培訓官網:http://www.ilovecolors.com.cn/tutorial_baseinterviewquestions/

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 老司机精品99在线播放 | m男亚洲一区中文字幕 | 在厨房被强行侵犯中文字幕 | 天天做天天爱夜夜爽女人爽宅 | 色综合久久五月 | 久综合网 | 老司机午夜精品视频你懂的 | 日韩高清网站 | 国产无遮挡裸体免费视频在线观看 | 9久热这里只有精品视频在线观看 | 青春草在线视频 | 国产乱人乱精一区二区视频密 | 欧美人禽 | 搞黄视频免费 | 国产亚洲女在线精品 | 国产97色在线 | 亚洲 | 一级做a爰片久久毛片唾 | 在线播放你懂的 | 欧美色成人tv在线播放 | 久草6| 中文字幕免费在线观看 | 黄色一级视频网站 | 色的视频在线观看免费播放 | 黄色搞基网站 | 国产第一页久久亚洲欧美国产 | 黄片1234 | 国产色综合久久无码有码 | 亚洲无线一二三四区手机 | 日韩深夜| 最近韩国日本免费免费版 | 精品国产日韩亚洲一区二区 | 国产级a爱做片免费观看 | 亚洲美女一级片 | 国产精品视频第一页 | 午夜在线视频网站 | 欧美午夜视频一区二区三区 | 三级黄色片免费 | 一区二区三区国产 | 波多野结衣视频免费 | 亚洲一级大黄大色毛片 | 91青草久久久久久清纯 |