更新時間:2020-02-18 11:09:07 來源:動力節點 瀏覽3284次
項目MySQL的數據量和并發量有多大?
評注:此題為走向題,你的回答不同,后面問題走向就變了。
關于容量:單表行數超過500萬行或者單表容量超過2GB,此時就要答分庫分表的中間件了!那后面題目的走向就變為mycat、sharing-jdbc等分庫分表中間件的底層原理了!
關于并發量:如果并發數過1200,此時就要答利用MQ或者redis等中間件,作為補償措施,而不能直接操作數據庫。那后面的題目走向就是redis、mq的原理了!
介于面試者還是一個應屆生,我斗膽猜測面試者是這么答的
回答:數據量估計就三四百萬吧,并發量就五六百左右!
你對數據庫了解多少?
評注:因為你答的數據量和并發量不大,因此中間件這塊沒啥好問的。因此,題目走向變為數據庫底層!另外,此題為引導題,面試官在給你機會引向你最擅長的方面
回答:了解常見數據庫調優方法,索引優化等!
你說下數據庫的索引實現和非主鍵的二級索引
評注:這個問題是根據上面,你的回答而問出來的!記得引向自己最擅長的數據庫基礎知識!默認是回答mysql數據庫的
回答:
從數據結構角度:
B-Tree索引,數據結構就是一顆B+樹。
Hash索引,Hash索引比較的是進行Hash運算之后的Hash值,所以它只能用于等值的過濾,不能用于基于范圍的過濾。基本不用!
R-Tree索引,僅支持geometry數據類型,也基本不用!
至于非主鍵的二級索引,這個實際上問的就是非聚簇索引!非聚簇索引本身就是一顆B+樹,其根節點指向聚簇索引的B+樹。
項目用的是SpringBoot,你能說下SpringBoot與Spring的區別嗎?
評注:基礎題,會springboot的,基本都答的上來。就算沒準備過,當場思考下都可以回答的出來!也是屬于引導題!
回答:
SpringBoot可以建立獨立的Spring應用程序;
內嵌了如Tomcat,Jetty和Undertow這樣的容器,也就是說可以直接跑起來,用不著再做部署工作了。
無需再像Spring那樣搞一堆繁瑣的xml文件的配置;
可以自動配置Spring;
提供了一些現有的功能,如量度工具,表單數據驗證以及一些外部配置這樣的一些第三方功能;
提供的POM可以簡化Maven的配置
SpringBoot的自動配置是怎么做的?
評注:此題也是根據你的第七問,進一步提問而得出。
回答:
先答為什么需要自動配置?
顧名思義,自動配置的意義是利用這種模式代替了配置XML繁瑣模式。以前使用SpringMVC,需要進行配置組件掃描、調度器、視圖解析器等,使用SpringBoot自動配置后,只需要添加MVC組件即可自動配置所需要的Bean。所有自動配置的實現都在spring-boot-autoconfigure依賴中,包括SpringMVC、Data和其它框架的自動配置。
接著答spring-boot-autoconfigure依賴的工作原理?
spring-boot-autoconfigure依賴的工作原理很簡單,通過@EnableAutoConfiguration核心注解初始化,并掃描ClassPath目錄中自動配置類對應依賴。比如工程中有木有添加Thymeleaf的Starter組件依賴。如果有,就按按一定規則獲取默認配置并自動初始化所需要的Bean。
其實還能再繼續答@EnableAutoConfiguration注解的工作原理!不過篇幅太長,答到上面那個地步就夠了!
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,這里邊最終完成了增刪改查方法的調用。
Java內存結構
評注:基礎題,這個應該學JAVA的都會吧!送分題!如果博主沒理解錯應該是在問JVM的內存結構!
回答:JVM內存結構主要有三大塊:堆內存、方法區和棧。堆內存是JVM中最大的一塊由年輕代和老年代組成,而年輕代內存又被分成三部分,Eden空間、FromSurvivor空間、ToSurvivor空間,默認情況下年輕代按照8:1:1的比例來分配;
方法區存儲類信息、常量、靜態變量等數據,是線程共享的區域,為與Java堆區分,方法區還有一個別名Non-Heap(非堆);棧又分為java虛擬機棧和本地方法棧主要用于方法的執行。
MinorGC和FullGC
評注:基礎題,會JVM調優的,基本都會!我只是奇怪,怎么沒問MajorGC呢?我們還是把MajorGC也給答了吧!
回答:
堆內存是JVM中最大的一塊由年輕代和老年代組成。
那么,從年輕代空間(包括Eden和Survivor區域)回收內存被稱為MinorGC。
MajorGC是清理老年代。
FullGC是清理整個堆空間—包括年輕代和老年代。
12、垃圾回收算法
評注:基礎題,博主斗膽猜測,應該是在問垃圾回收算法有哪些。面試官應該沒有耐心去聽你一個個去背算法概念!
回答:
標記-清除算法、標記整理算法、復制算法、分代收集算法
以上就是動力節點Java培訓機構小編介紹的“最新阿里高級java面試題解析”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
相關推薦
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習