近期面試了一位JAVA開發7年的程式設計師,一問三不知!還反懟我!

2020-10-23 16:01:02

最近看了很多簡歷,很多候選人年限不小,但是做的都是一些非常傳統的專案,想著也不能通過簡歷就直接否定一個人,何況現在大環境越來 越難,大家找工作也不容易,於是就打算見一見。

在溝通中發現,由於年限不小,他們的定位基本都是高階及以上,畢竟,年限擺在那裡,面箇中級也不體面。

面試時我打算聊點基礎的,先開啟一下話題,結果發現對於一些開發中很基本的問題,比如:
 

  • Git的分支你們是怎麼管理的?
  • 介面保證冪等性是基本的要求,那麼冪等性你們是怎麼做的?
  • 你們有用@Transactional來控制事務是吧,那麼能不能說出一些事務不生效的場景?


上面幾個問題沒有一個是「造火箭」的,結果發現,這些很基本的問題,他們普遍都答得很模糊,或者支支吾吾。其中,一個候選人的反問,令我印象特別深刻,他說:

上面的問題我雖然都不懂,但是我都工作六年了,如果我不能勝任工作,那你告訴我,我這5年經驗是怎麼來的?
再說了,做Java開發,說到底,還不是產品輸出原型,對著原型進行資料庫建表,然後CRUD嗎?
遇到問題網上搜尋一下,再不行就群裡問一下,我又不找什麼中介軟體的團隊,Java開發,不都是這樣嗎,還能有什麼別的花樣?

聽完我沉思了良久,做為一個高階開發,如果連Git分支如何管理都沒思考過,冪等性名詞的含義都解釋不清,事務註解打上就完事,連生不生效的場景都不知道,只會對著產品原型CRUD,測試不提bug,程式碼都不想覆盤多看一眼,試問誰又願意和這樣的「高階大佬」一起幹活?
 



其實我想了一下,他之所以有這樣的想法,很大程度取決於他的經歷,長年在傳統行業,或者「小作坊」,平時就兩三個Java開發,大家都是「難兄難弟」的水平。讓他認為,Java開發,就是對著原型CRUD,年限上去了,就是高階開發。

思維一旦形成,就很難改變。但是,網際網路是個瞬息萬變的行業。

從BAT等各種大廠的應屆生招聘薪水就可以看得出,現在應屆生的水平越來越6,如果還以為大家都是一樣的,都是對著原型CRUD,有問題就把報錯資訊網上一搜,群裡一丟等回覆這種方式,遲早給淘汰。即使不做中介軟體開發,基本的原理、原始碼還是要了解的!
下面這是小編為大家整理的阿里最全2020Java面試題:JVM與效能優化+Redis+設計模式+分散式

面試:如果不準備充分的面試,完全是浪費時間,更是對自己的不負責。
今天給大家分享下我整理的Java架構面試專題及答案,其中大部分都是大企業面試常問的面試題,可以對照這查漏補缺,當然了,這裡所列的肯定不可能覆蓋全部方式,不過也希望能對即將找工作的朋友起到一些幫助!
Java面試的重點:
資料結構與演演算法,JVM記憶體結構、垃圾回收器、回收演演算法、GC、並行程式設計相關(多執行緒、執行緒池等)、NIO/BIO、效能優化、設計模式、Spring框架:分散式相關:Redis快取、一致Hash演演算法、分散式儲存、負載均衡等,微服務以及Docker容器等。在這由於文字很多,我總結了java面試所涉及到的常問範圍及常問面試題分享給大家,戳這即可獲取到!


Java面試的重點:
資料結構與演演算法,JVM記憶體結構、垃圾回收器、回收演演算法、GC、並行程式設計相關(多執行緒、執行緒池等)、NIO/BIO、效能優化、設計模式、Spring框架:分散式相關:Redis快取、一致Hash演演算法、分散式儲存、負載均衡等,微服務以及Docker容器等。在這由於文字很多,我總結了java面試所涉及到的常問範圍及常問面試題分享給大家
部分面試常問的面試專題
一、JVM與效能優化

  1. 描述一下 JVM 載入 Class 檔案的原理機制?
  2. 什麼是類載入器?
  3. 類載入器有哪些?
  4. 什麼是tomcat類載入機制?
  5. 類載入器雙親委派模型機制?
  6. Java 記憶體分配?
  7. Java 堆的結構是什麼樣子的?
  8. 簡述各個版本記憶體區域的變化?
  9. 說說各個區域的作用?
  10. Java 中會存在記憶體漏失嗎,簡述一下?
  11. Java 類載入過程?
  12. 什麼是GC? 為什麼要有 GC?
  13. 簡述一下Java 垃圾回收機制?
  14. 如何判斷一個物件是否存活?
  15. 垃圾回收的優點和原理,並考慮 2 種回收機制?基本原理是什麼?
  16. 深拷貝和淺拷貝?
  17. 什麼是分散式垃圾回收(DGC)?它是如何工作的?
  18. 在 Java 中,物件什麼時候可以被垃圾回收?
  19. 簡述Minor GC 和 Major GC?
  20. Java 中垃圾收集的方法有哪些?
  21. 講講你理解的效能評價及測試指標?
  22. 常用的效能優化方式有哪些?
  23. 說說分散式快取和一致性雜湊?
  24. 什麼是GC調優?

二、Redis

  1. redis資料結構有哪些?
  2. Redis快取穿透,快取雪崩?
  3. 如何使用Redis來實現分散式鎖?
  4. Redis的並行競爭問題如何解決?
  5. Redis持久化的幾種方式,優缺點是什麼,怎麼實現的?
  6. Redis的快取失效策略?
  7. Redis叢集,高可用,原理?
  8. Redis快取分片?
  9. Redis的資料淘汰策略?
  10. redis佇列應用場景?
  11. 分散式使用場景(儲存session)?

三、網路程式設計

  1. TCP建立連線和斷開連線的過程?
  2. HTTP協定的互動流程• HTTP和HTTPS的差異,SSL的互動流程?
  3. TCP的滑動視窗協定有什麼用?
  4. HTTP協定都有哪些方法?
  5. Socket互動的基本流程?
  6. 講講tcp協定(建連過程,慢啟動,滑動視窗,七層模型)?
  7. webservice協定(wsdl/soap格式,與restt辦議的區別)?
  8. 說說Netty執行緒模型,什麼是零拷貝?
  9. TCP三次握手、四次揮手?
  10. DNS解析過程?
  11. TCP如何保證資料的可靠傳輸的?

四、設計模式與重構

  1. 說說幾個常見的設計模式(23種設計模式)?
  2. 設計一個工廠的包的時候會遵循哪些原則?
  3. 列舉一個使用了 Visitor/ Decorator模式的開源專案/庫?
  4. 如何實現一個單例?
  5. 代理模式(動態代理)?
  6. 單例模式(懶漢模式,惡漢模式,並行初始化如何解決, volatile與lock的使用)?
  7. JDK原始碼裡面都有些什麼讓你印象深刻的設計模式使用,舉例看看?

五、分散式

  1. 什麼是CAP定理?
  2. 說說CAP理論和BASE理論?
  3. 什麼是最終一致性?最終一致性實現方式?
  4. 什麼是一致性Hash?
  5. 講講分散式事務?
  6. 如何實現分散式鎖?
  7. 如何實現分散式 Session?
  8. 如何保證訊息的一致性?
  9. 負載均衡的理解?
  10. 正向代理和反向代理?
  11. CDN實現原理?
  12. 怎麼提升系統的QPS和吞吐?
  13. Dubbo的底層實現原理和機制?
  14. 描述一個服務從釋出到被消費的詳細過程?
  15. 分散式系統怎麼做服務治理?
  16. 訊息中介軟體如何解決訊息丟失問題?
  17. Dubbo的服務請求失敗怎麼處理?
  18. 對分散式事務的理解?
  19. 如何實現負載均衡,有哪些演演算法可以實現?
  20. Zookeeper的用途,選舉的原理是什麼?
  21. 講講資料的垂直拆分水平拆分?
  22. zookeeper原理和適用場景?
  23. zookeeper watch機制?
  24. redis/zk節點宕機如何處理?
  25. 分散式叢集下如何做到唯一序列號?
  26. 用過哪些MQ,怎麼用的,和其他mq比較有什麼優缺點,MQ的連線是執行緒安全的嗎?
  27. MQ系統的資料如何保證不丟失?
  28. 列舉出能想到的資料庫分庫分表策略?

最後
針對於上面的面試題我總結出了網際網路公司java程式設計師面試涉及到的絕大部分面試題及答案做成了檔案和架構視訊資料免費分享給大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分散式、高並行等架構技術資料),希望能幫助到您面試前的複習且找到一個好的工作,也節省大家在網上搜尋資料的時間來學習。合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間「來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!分享架構資料,戳這即可獲取到!


kafka:


spring原理:


Netty:


獲取方式:資料整理不易,點贊+關注後,戳這即可獲取到!