業餘草分享Java高級工程師,面試總結

面試以前以爲本身在原來公司相同工做經驗的同事當中,不管是業務能力仍是技術能力都還能夠,也對本身解決問題的能力有必定的自信,剛開始面試的時候,一度出現了尷尬,明明知道的東西,就是說不出來,也不知道從哪裏說,本身以爲就應該是那樣啊,怎麼說,並且一度對本身的能力產生了懷疑;html

最後發現是不常常總結,不善於總結,雖然也記筆記,但比較散亂,不繫統,甚至丟失;因此開始寫博客,以爲這應該是一個好的開端吧;mysql

一、 JVM結構原理、GC工做機制詳解面試

答:具體參照:JVM結構、GC工做機制詳解     ,說到GC,記住兩點:一、GC是負責回收全部無任何引用對象的內存空間。 注意:垃圾回收回收的是無任何引用的對象佔據的內存空間而不是對象自己,二、GC回收機制的兩種算法,a、引用計數法  b、可達性分析算法(  這裏的可達性,你們能夠看基礎2 Java對象的什麼週期),至於更詳細的GC算法介紹,你們能夠參考:Java GC機制算法redis

二、Java對象的生命週期算法

答:建立階段 、 應用階段 、不可見階段 、不可達階段 、收集階段 、終結階段、 對象空間從新分配階段等等,具體參照:Java 對象的生命週期sql

三、Map或者HashMap的存儲原理數據庫

答:HashMap是由數組+鏈表的一個結構組成,具體參照:HashMap的實現原理編程

四、當數據表中A、B字段作了組合索引,那麼單獨使用A或單獨使用B會有索引效果嗎?(使用like查詢如何有索引效果)設計模式

答:看A、B兩字段作組合索引的時候,誰在前面,誰在後面,若是A在前,那麼單獨使用A會有索引效果,單獨使用B則沒有,反之亦然。同理,使用like模糊查詢時,若是隻是使用前面%,那麼有索引效果,若是使用雙%號匹配,那麼則無索引效果數組

五、數據庫存儲日期格式時,如何考慮時區轉換問題?

答:使用TimeStamp ,  緣由參照:Java編程中遇到的時區轉換問題

六、Java Object類中有哪些方法?

答:Object有哪些方法

七、HTTP協議,GET和POST 的區別

答:淺談HTTP中GET和POST的區別

4、線程、設計模式、緩存方面

一、SimpleDataFormat是非線程安全的,如何更好的使用而避免風險呢

答:關於SimpleDateFormat安全的時間格式化線程安全問題

二、如何看待設計模式,並簡單說說你對觀察者模式的理解

答:一、設計模式有神馬用     二、觀察者模式類圖及實現

三、集羣環境中,session如何實現共享

答:一、Java集羣之session共享    二、session多服務器共享方案,還有一種方案就是使用一個固定的服務器專門保持session,其餘服務器共享

四、分佈式、集羣環境中,緩存如何刷新,如何保持同步?

答:A、緩存如何刷新? 一、定時刷新  二、主動刷新覆蓋   ,每一個緩存框架都有自帶的刷新機制,或者說緩存失效機制,就拿Redis和 Ehcache舉例, 他們都有自帶的過時機制,另外主動刷新覆蓋時,只需獲取對應的key進行數據的覆蓋便可

B、緩存如何保持同步?  這個redis有自帶的集羣同步機制,即複製功能,具體參考:基於Redis分佈式緩存實現      ,Ehcache也有分佈式緩存同步的配置,只須要配置不一樣服務器地址便可,參照:Ehcache分佈式緩存同步

五、一條sql執行過長的時間,你如何優化,從哪些方面?

答:一、查看sql是否涉及多表的聯表或者子查詢,若是有,看是否能進行業務拆分,相關字段冗餘或者合併成臨時表(業務和算法的優化)
二、涉及鏈表的查詢,是否能進行分表查詢,單表查詢以後的結果進行字段整合
三、若是以上兩種都不能操做,非要鏈表查詢,那麼考慮對相對應的查詢條件作索引。加快查詢速度
四、針對數量大的表進行歷史表分離(如交易流水錶)
五、數據庫主從分離,讀寫分離,下降讀寫針對同一表同時的壓力,至於主從同步,mysql有自帶的binlog實現 主從同步

六、explain分析sql語句,查看執行計劃,分析索引是否用上,分析掃描行數等等

七、查看mysql執行日誌,看看是否有其餘方面的問題

我的理解:從根本上來講,查詢慢是佔用mysql內存比較多,那麼能夠從這方面去酌手考慮

5、設計方案相關

面試還會問到一些關於設計方案相關的問題,好比

一、你的接口服務數據被人截包了,你如何防止數據惡意提交?

答:咱們能夠在接口傳輸參數裏面設置一個業務編號,這個編號用來區分是否重複提交。這樣即便數據被抓包了,對方也沒法區分每一個字段你的含義,這時,這個業務編號的做用就來了

二、假設服務器常常宕機,你從哪些方面去排查問題?

答:這個就留個各位看官補充了,可評論回覆

     面試技巧就補充這些,後面若是記得什麼在補充,若是有其餘小夥伴有其餘建議,也能夠在評論回覆,其餘面試問題還包括算法、數據結構、http協議等等,這些等待你們本身去補充學習了,Spring的原理,Spring mvc的原理問的也挺多的,你們有時間能夠看看以前的面試總結——高級JAVA工程(一)和面試總結——高級JAVA工程師(二)   。

總而言之該看的仍是得看,還學的仍是得學。再次強調,基礎很重要!面試技巧一樣很重要,仍是那句話:祝願各位看官都能找到心儀的工做吧~~

    另外,奉勸你們不要頻繁跳槽,這些知識點能提高當然好,不要盲目跳槽,找工做很累的,並且沒有哪家公司喜歡頻繁跳槽的員工。

若有疑問,歡迎關注微信公衆號「業餘草」!

相關文章
相關標籤/搜索