一面
- 自我介紹
- 項目中的監(jiān)控:那個監(jiān)控指標常見的有哪些?
- 微服務(wù)涉及到的技術(shù)以及需要注意的問題有哪些?
- 注冊中心你了解了哪些?
- consul 的可靠性你了解嗎?
- consul 的機制你有沒有具體深入過?有沒有和其他的注冊中心對比過?
- 項目用 Spring 比較多,有沒有了解 Spring 的原理?AOP 和 IOC 的原理
- Spring Boot除了自動配置,相比傳統(tǒng)的 Spring 有什么其他的區(qū)別?
- Spring Cloud 有了解多少?
- Spring Bean 的生命周期
- HashMap 和 hashTable 區(qū)別?
- Object 的 hashcode 方法重寫了,equals 方法要不要改?
- Hashmap 線程不安全的出現(xiàn)場景
- 線上服務(wù) CPU 很高該怎么做?有哪些措施可以找到問題
- JDK 中有哪幾個線程池?順帶把線程池講了個遍
- 應盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描
- SQL 索引的順序,字段的順序
- 查看 SQL 是不是使用了索引?(有什么工具)
- TCP 和 UDP 的區(qū)別?TCP 數(shù)據(jù)傳輸過程中怎么做到可靠的?
- 說下你知道的排序算法吧
- 查找一個數(shù)組的中位數(shù)?
二面
你有什么問題想問我的嗎?(常規(guī)問詢)
- 自我介紹、工作經(jīng)歷、技術(shù)棧
- 項目中你學到了什么技術(shù)?
- 微服務(wù)劃分的粒度?
- 微服務(wù)的高可用怎么保證的?
- 負載均衡與反向代理,隔離,限流,降級,超時與重試,回滾,壓力測試與應急預案
- 常用的負載均衡,該怎么用,你能說下嗎?
(技術(shù)問)
- http重定向
- DNS負載均衡
- 反向代理負載均衡
- IP負載均衡(LVS-NAT)
- 直接路由(LVS-DR)
- IP隧道(LVS-TUN)
- 網(wǎng)關(guān)能夠為后端服務(wù)帶來哪些好處?
- Spring Bean 的生命周期
- xml 中配置的 init、destroy 方法怎么可以做到調(diào)用具體的方法?反射的機制
- Object 類中的方法
- 對象比較是否相同
- hashmap put 方法存放的時候怎么判斷是否是重復的
- Object toString 方法常用的地方,為什么要重寫該方法
- Set 和 List 區(qū)別?
- ArrayList 和 LinkedList 區(qū)別
- 如果存取相同的數(shù)據(jù),ArrayList 和 LinkedList 誰占用空間更大?
- Set 存的順序是有序的嗎?
- 常見 Set 的實現(xiàn)有哪些?
- TreeSet 對存入對數(shù)據(jù)有什么要求呢?
- HashSet 的底層實現(xiàn)呢?
- TreeSet 底層源碼有看過嗎?
- HashSet 是不是線程安全的?為什么不是線程安全的?
- Java 中有哪些線程安全的 Map?
- HashTable 你了解過嗎?
- 如何保證線程安全問題?
- synchronized、lock
- volatile 的原子性問題?為什么 i++ 這種不支持原子性?從計算機原理的設(shè)計來講下不能保證原子性的原因happens before 原理
- cas 操作
- lock 和 synchronized 的區(qū)別?
- 公平鎖和非公平鎖
- Java 讀寫鎖
- 讀寫鎖設(shè)計主要解決什么問題?
- 你項目除了寫 Java 代碼,還有前端代碼,那你知道前端有哪些框架嗎?
- MySQL 分頁查詢語句
- MySQL 事務(wù)特性和隔離級別
二、事務(wù)的并發(fā)問題
- 不可重復讀會出現(xiàn)在什么場景?
- sql having 的使用場景
- 前端瀏覽器地址的一個 http 請求到后端整個流程是怎么樣?
- http 默認端口,https 默認端口
- DNS 你知道是干嘛的嗎?
- 你們開發(fā)用的 ide 是啥?你能說下 idea 的常用幾個快捷鍵吧?
- 代碼版本管理你們用的是啥?
- git rebase 和 merge 有什么區(qū)別?
你們公司加班多嗎?(題外話)
舉例回答:
項目用 Spring 比較多,有沒有了解 Spring 的原理?AOP 和 IOC 的原理
答:(1). IoC(Inversion of Control)是指容器控制程序?qū)ο笾g的關(guān)系,而不是傳統(tǒng)實現(xiàn)中,由程序代碼直接操控??刂茩?quán)由應用代碼中轉(zhuǎn)到了外部容器,控制權(quán)的轉(zhuǎn)移是所謂反轉(zhuǎn)。 對于Spring而言,就是由Spring來控制對象的生命周期和對象之間的關(guān)系;IoC還有另外一個名字——“依賴注入(Dependency Injection)”。從名字上理解,所謂依賴注入,即組件之間的依賴關(guān)系由容器在運行期決定,即由容器動態(tài)地將某種依賴關(guān)系注入到組件之中。
(2). 在Spring的工作方式中,所有的類都會在spring容器中登記,告訴spring這是個什么東西,你需要什么東西,然后spring會在系統(tǒng)運行到適當?shù)臅r候,把你要的東西主動給你,同時也把你交給其他需要你的東西。所有的類的創(chuàng)建、銷毀都由 spring來控制,也就是說控制對象生存周期的不再是引用它的對象,而是spring。對于某個具體的對象而言,以前是它控制其他對象,現(xiàn)在是所有對象都被spring控制,所以這叫控制反轉(zhuǎn)。
(3). 在系統(tǒng)運行中,動態(tài)的向某個對象提供它所需要的其他對象。
(4). 依賴注入的思想是通過反射機制實現(xiàn)的,在實例化一個類時,它通過反射調(diào)用類中set方法將事先保存在HashMap中的類屬性注入到類中。 總而言之,在傳統(tǒng)的對象創(chuàng)建方式中,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實例,而在Spring中創(chuàng)建被調(diào)用者的工作由Spring來完成,然后注入調(diào)用者,即所謂的依賴注入or控制反轉(zhuǎn)。 注入方式有兩種:依賴注入和設(shè)置注入; IoC的優(yōu)點:降低了組件之間的耦合,降低了業(yè)務(wù)對象之間替換的復雜性,使之能夠靈活的管理對象。
AOP(Aspect Oriented Programming)
(1). AOP面向方面編程基于IoC,是對OOP的有益補充;
(2). AOP利用一種稱為“橫切”的技術(shù),剖解開封裝的對象內(nèi)部,并將那些影響了 多個類的公共行為封裝到一個可重用模塊,并將其名為“Aspect”,即方面。所謂“方面”,簡單地說,就是將那些與業(yè)務(wù)無關(guān),卻為業(yè)務(wù)模塊所共同調(diào)用的 邏輯或責任封裝起來,比如日志記錄,便于減少系統(tǒng)的重復代碼,降低模塊間的耦合度,并有利于未來的可操作性和可維護性。
(3). AOP代表的是一個橫向的關(guān) 系,將“對象”比作一個空心的圓柱體,其中封裝的是對象的屬性和行為;則面向方面編程的方法,就是將這個圓柱體以切面形式剖開,選擇性的提供業(yè)務(wù)邏輯。而 剖開的切面,也就是所謂的“方面”了。然后它又以巧奪天功的妙手將這些剖開的切面復原,不留痕跡,但完成了效果。
(4). 實現(xiàn)AOP的技術(shù),主要分為兩大類:一是采用動態(tài)代理技術(shù),利用截取消息的方式,對該消息進行裝飾,以取代原有對象行為的執(zhí)行;二是采用靜態(tài)織入的方式,引入特定的語法創(chuàng)建“方面”,從而使得編譯器可以在編譯期間織入有關(guān)“方面”的代碼。
(5). Spring實現(xiàn)AOP:JDK動態(tài)代理和CGLIB代理 JDK動態(tài)代理:其代理對象必須是某個接口的實現(xiàn),它是通過在運行期間創(chuàng)建一個接口的實現(xiàn)類來完成對目標對象的代理;其核心的兩個類是InvocationHandler和Proxy。 CGLIB代理:實現(xiàn)原理類似于JDK動態(tài)代理,只是它在運行期間生成的代理對象是針對目標類擴展的子類。CGLIB是高效的代碼生成包,底層是依靠ASM(開源的java字節(jié)碼編輯類庫)操作字節(jié)碼實現(xiàn)的,性能比JDK強;需要引入包asm.jar和cglib.jar。 使用AspectJ注入式切面和@AspectJ注解驅(qū)動的切面實際上底層也是通過動態(tài)代理實現(xiàn)的。
(6). AOP使用場景:
- Authentication 權(quán)限檢查
- Caching 緩存
- Context passing 內(nèi)容傳遞
- Error handling 錯誤處理
- Lazy loading延遲加載
- Debugging 調(diào)試
- logging, tracing, profiling and monitoring日志記錄,跟蹤,優(yōu)化,校準
- Performance optimization性能優(yōu)化,效率檢查
- Persistence 持久化
- Resource pooling資源池
- Synchronization同步
- Transactions 事務(wù)管理
另外Filter的實現(xiàn)和struts2的攔截器的實現(xiàn)都是AOP思想的體現(xiàn)。
美團面試場景以及面試答案(文檔總結(jié))
總結(jié)
對于面試還是要好好準備的,尤其是有些問題還是很容易挖坑的,例如你為什么離開現(xiàn)在的公司(你當然不應該抱怨現(xiàn)在的公司有哪些不好的地方,更多的應該表明自己想要尋找更好的發(fā)展機會,自己的一些現(xiàn)實因素,比如對于我而言是現(xiàn)在應聘的公司離自己的家更近,又或者是自己工作到達了迷茫期,想跳出迷茫期等等)
Java面試精選題、架構(gòu)實戰(zhàn)文檔
整理不易,覺得有幫助的朋友可以幫忙點贊分享支持一下小編~文章來源:http://www.zghlxwxcb.cn/news/detail-842653.html
你的支持,我的動力;祝各位前程似錦,offer不斷!
想跳出迷茫期等等)
[外鏈圖片轉(zhuǎn)存中…(img-sOS7Gw2Q-1710688175349)]
Java面試精選題、架構(gòu)實戰(zhàn)文檔
整理不易,覺得有幫助的朋友可以幫忙點贊分享支持一下小編~
你的支持,我的動力;祝各位前程似錦,offer不斷!
需要更多Java資料的小伙伴可以幫忙點贊+關(guān)注,點擊傳送門,即可免費領(lǐng)取!文章來源地址http://www.zghlxwxcb.cn/news/detail-842653.html
到了這里,關(guān)于全靠這份Java知識點PDF大全,Java開發(fā)者必須收藏的8個開源庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!