一面
1.反射你有了解嗎榄檬?講一下你的理解?
答:反射是java的特征之一嘀粱,它允許運行中的Java程序獲取自身的信息嚣镜,并且可以操作類或?qū)ο蟮膬?nèi)部屬性爬迟。三種方式來獲取Class對象:a.使用Class類的forName靜態(tài)方法。b.直接獲取某一個對象的Class菊匿。c.調(diào)用某個對象的getClass方法付呕。
2.Java內(nèi)存模型你知道嗎?
答:一共分為方法區(qū)跌捆、堆徽职、虛擬機棧、本地方法棧佩厚、程序計數(shù)器五個
1).方法區(qū)為線程共享區(qū)域主要存儲虛擬機加載的類信息姆钉、常量、靜態(tài)變量
2).堆區(qū)為線程共享區(qū)域存對象
3).虛擬機棧線程私有區(qū)域用于存局部變量表、操作數(shù)棧潮瓶、動態(tài)鏈接等
4).本地方法棧線程私有區(qū)域與虛擬機棧類似陶冷,只不過本地方法棧為虛擬機使用到的Native方法服務(wù)
5)程序計數(shù)器線程私有區(qū)域是字節(jié)碼的行號指示器
3.StringBuilder/StringBuffer?
答:StringBuilder是非線程安全的毯辅,StringBuffer是線程安全的埃叭,大部分情況下StringBuilder的速度是快于StringBuffer的,StringBuilder的append方法是帶synchronized鎖的悉罕。
4.AOP和IOC你知道多少?
答:IOC是依賴注入立镶,采用工廠模式壁袄。AOP是面向切面編程,采用代理模式媚媒。
5.類加載過程嗜逻?
答:加載、驗證缭召、準備栈顷、解析、初始化
6.注解是什么嵌巷?談?wù)勀愕睦斫猓?/b>
答:Java注解是附加在代碼上的一些元信息萄凤,用于一些工具在編譯、運行時進行解析和使用搪哪,起到說明靡努、配置的功能。
7.new一個對象的過程晓折?
答:如果該對象所屬的類是第一次使用那么還需要將類進行加載惑朦,然后在堆內(nèi)存開辟空間,并為對象分配首地址漓概,初始化成員屬性漾月,構(gòu)造代碼塊的初始化,對象構(gòu)造函數(shù)的初始化胃珍,將堆內(nèi)存的地址賦值給棧里的引用梁肿。
二面
1.談?wù)劸€程安全,你的理解堂鲜?
答:多線程同時操作同一個共享變量不會產(chǎn)生不可預(yù)期的結(jié)果即為線程安全栈雳。
2.aop用過嗎,怎么用缔莲?
答:創(chuàng)建切面哥纫、目標類、定義目標方法,編寫配置類啟動AOP代理功能蛀骇。
3.HashMap你知道多少厌秒?ConcurrentHashMap呢?
答:HashMap的結(jié)構(gòu)擅憔、put鸵闪、get方法、resize方法暑诸、擴容為原來的兩倍蚌讼、hash的實現(xiàn)、一些屬性值等等
4.線程池知道嗎个榕?
答:講下4種線程池及使用場景篡石,講下參數(shù),講下拒絕策略西采。
5.如何實現(xiàn)定時任務(wù)凰萨?
答:while循環(huán)設(shè)置線程的休眠時間,timer類設(shè)置delay械馆,ScheduledExecutorService三種方式
6.spring MVC執(zhí)行流程胖眷?
答:1.用戶發(fā)送請求到前端控制器DispatcherServlet
2.然后DispatcherServlet請求處理器映射器查找Handler
3.HanderMapping向Dispatcher返回Handler
4.HandlerMapping調(diào)用處理器適配器HandlerAdapter去執(zhí)行Handler
5.處理器適配器去執(zhí)行Handler
6.Handler執(zhí)行完給處理器適配器返回ModelAndView
7.處理器適配器給DispatcherServlet返回ModelAndView
8.DispatcherServlet請求視圖解析器View resolver進行視圖解析
9.視圖解析器向DispatcherServlet返回view
10.DispatcherServlet進行視圖的渲染
11.DispatcherServlet向用戶響應(yīng)結(jié)果