高薪直通車丨JavaEE面試經驗分享(新**建)
面試經歷:
1.技術面
談技術,做過些什麼項目,根據你說的項目,面試官選一個他覺得比較有代表性的(根據鄙人經驗來說,這塊最好說,但也最不好說,說不好就思密達了),問有什麼功能,有哪些模塊,你負責該項目的什麼模塊,用了什麼技術。
2.人事面
和人力資源的聊天,比如:爲什麼選我們公司,你有什麼優勢,你有什麼缺點,
這個不好說,主要是看你的人品、性格之類的。
好了,直接發車,快上車上車
1. 說一下AOP與IOC的概念(即spring的核心)
a) IOC:Spring是開源框架,使用框架可以使我們減少工作量,提高工作效率並且它是分層結構,即相對應的層處理對應的業務邏輯,減少代碼的耦合度。而spring的核心是IOC控制反轉和AOP面向切面編程。IOC控制反轉主要強調的是程序之間的關係是由容器控制的,容器控制對象,控制了對外部資源的獲取。而反轉即爲,在傳統的編程中都是由我們創建對象獲取依賴對象,而在IOC中是容器幫我們創建對象並注入依賴對象,正是容器幫我們查找和注入對象,對象是被獲取,所以叫反轉。
Spring支持三種依賴注入方式,分別是屬性(Setter方法)注入,構造注入和接口注入。
在Spring中,那些組成應用的主體及由Spring IOC容器所管理的對象被稱之爲Bean。
Spring的IOC容器通過反射的機制實例化Bean並建立Bean之間的依賴關係。
簡單地講,Bean就是由Spring IOC容器初始化、裝配及被管理的對象。
獲取Bean對象的過程,首先通過Resource加載配置文件並啓動IOC容器,然後通過getBean方法獲取bean對象,就可以調用他的方法。
Spring Bean的作用域:
Singleton:Spring IOC容器中只有一個共享的Bean實例,一般都是Singleton作用域。
Prototype:每一個請求,會產生一個新的Bean實例。
Request:每一次http請求會產生一個新的Bean實例。
b) AOP:面向切面編程,主要是管理系統層的業務,比如日誌,權限,事物等。AOP是將封裝好的對象剖開,找出其中對多個對象產生影響的公共行爲,並將其封裝爲一個可重用的模塊,這個模塊被命名爲切面(aspect),切面將那些與業務邏輯無關,卻被業務模塊共同調用的邏輯提取並封裝起來,減少了系統中的重複代碼,降低了模塊間的耦合度,同時提高了系統的可維護性。
2. 描述一下對象的創建過程
1)裝載:將Java二進制代碼導入jvm中,生成Class文件。
2)連接:
a)校驗:檢查載入Class文件數據的正確性
b)準備:給類的靜態變量分配存儲空間
c)解析:將符號引用轉成直接引用
3):初始化:對類的靜態變量,靜態方法和靜態代碼塊執行初始化工作。
3. Redis數據結構
1)String—字符串(key-value 類型)
2)Hash—字典(hashmap) Redis的哈希結構可以使你像在數據庫中更新一個屬性一樣只修改某一項屬性值
3)List—列表 實現消息隊列
4)Set—集合 利用唯一性
5)Sorted Set—有序集合 可以進行排序 可以實現數據持久化
4. 簡述一下MySql數據庫索引,並且說一下什麼時候使用索引
Mysql的索引是一個數據結構,旨在使數據庫高效的查找數據。
常用的數據結構是B+Tree,每個葉子節點不但存放了索引鍵的相關信息還增加了指向相鄰葉子節點的指針,這樣就形成了帶有順序訪問指針的B+Tree,做這個優化的目的是提高不同區間訪問的性能。
什麼時候使用索引:
1)經常出現在groupby,order by和distinc關鍵字後面的字段
2)經常與其他表進行連接的表,在連接字段上應該建立索引
3)經常出現在Where子句中的字段
4)經常出現用作查詢選擇的字段
5. SpringMVC運行原理
1)客戶端請求提交到DispatcherServlet
2)由DispatcherServlet控制器查詢HandlerMapping,找到並分發到指定的Controller中。
3)Controller調用業務邏輯處理後,返回ModelAndView
4)DispatcherServlet查詢一個或多個ViewResoler視圖解析器,找到ModelAndView指定的視圖
5)視圖負責將結果顯示到客戶端
6. 分佈式Session框架
1)配置服務器,Zookeeper集羣管理服務器可以統一管理所有服務器的配置文件
2)共享這些Session存儲在一個分佈式緩存中,可以隨時寫入和讀取,而且性能要很好,如Memcache,Tair。
3)封裝一個類繼承自HttpSession,將Session存入到這個類中然後再存入分佈式緩存中
4)由於Cookie不能跨域訪問,要實現Session同步,要同步SessionID寫到不同域名下。