工作三年的java開發工程師來面試,問技術原理他竟然這樣跟我說

今天面試一個三年的java開發工程師,問工作原理他答不上來。這是當時的面試過程:

問: spring mvc在開發中常用吧?

答:常用。

問:那你能講講它的工作原理嗎?

答:會用就行,瞭解原理幹啥。

微微一笑,再問:那你能說說平時使用了它的哪些註解呢?

答:用的時候百度一下,誰記這個呀。

此時心裏有無數個…

不過對於這段面試體驗,有應聘者覺得現在的面試官特別浮躁,張嘴原理閉嘴高併發,又是大數據又是AI,彷彿不懂就是另類人一般,多問問基礎,招過來是幹活的,不是畫餅的,我就招到過這樣的麪霸,問什麼都對答如流,入職後,發現真沒辦法做業務。

現在很多公司都這樣,只喜歡會吹牛的,口才好的,能說會道的,如果你性格內向不善言辭,就算技術再牛,也會被面試官在嘲笑中pass掉。

 

但是一個常用的東西都不記得,那說明能力是有夠差的,而且基本原理不清楚,說明平時不注重技術的深度,只是滿足業務的開發,這種人慎用。來看看程序員同行怎麼說:

 

1,主要要看你招進這個人是要幹嘛?並且現在你是否缺人幹活。如果主要是幹項目,那有大的項目經驗很重要,你招他又不是研究中間件或者什麼高深的算法,一羣人來面試,很理解面試官抱着選擇優秀員工的想法,但最後終歸是要落地的,面試官也應該多方面去看待和思考。

2,面試造火箭,工作擰螺絲調侃一下就行了,真的瞧不起原理就過分了。

瞭解原理只是第一步,有三個好處,1.匹配框架規則,避免低性能代碼。2.排查bug。3.讀懂設計思想,爲架構做積累。

例如讀懂kafka原理,學到用多分區思想提高吞吐量,讀懂mq原理,學到用確認機制保證可靠性。我認爲一個架構師,設計架構不應該是幾個主流框架的排列組合,而是框架設計思維的組合,這是真正的精髓。

 


但是,我也理解平時的時候,程序員都比較忙,沒什麼時間去進行完整的學習,所以,我在這裏也給大家整理了一份文檔,大家來看一下

目錄:

這個PDF的內容涵蓋:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux等技術棧,文末獲取免費領取方式

 

JVM

  1. 線程
  2. JVM內存區域
  3. JVM運行時內存
  4. 垃圾回收與算法
  5. JAVA 四種引用類型
  6. GC分代收集算法 VS 分區收集算法
  7. GC垃圾收集器
  8. JAVA IO/NIO
  9. JVM 類加載機制

 

JAVA集合

  1. 接口繼承關係和實現
  2. List
  3. ArrayList(數組)
  4. Vector(數組實現、線程同步)
  5. LinkList(鏈表)
  6. Set
  7. HashSet(Hash表)
  8. TreeSet(二叉樹)

 

JAVA多線程併發

  1. JAVA併發知識庫
  2. JAVA線程實現/創建方式
  3. 4種線程池
  4. 線程生命週期(狀態)
  5. 終止線程4種方式
  6. sleep與wait 區別
  7. start與run區別
  8. JAVA後臺線程
  9. JAVA鎖
  10. 線程基本方法4.1.11. 線程上下文切換
  11. 同步鎖與死鎖
  12. 線程池原理
  13. JAVA阻塞隊列原理
  14. CyclicBarrier、CountDownLatch、Semaphore的用法
  15. volatile關鍵字的作用(變量可見性、禁止重排序)
  16. 如何在兩個線程之間共享數據

 

JAVA基礎

  1. JAVA異常分類及處理
  2. JAVA反射
  3. JAVA註解
  4. JAVA內部類
  5. JAVA泛型
  6. JAVA序列化(創建可複用的Java對象)
  7. JAVA複製

 

Spring 原理

  1. Spring 特點
  2. Spring 核心組件
  3. Spring 常用模塊
  4. Spring 主要包
  5. Spring 常用註解
  6. Spring第三方結合
  7. Spring IOC原理
  8. Spring APO原理
  9. Spring MVC原理
  10. Spring Boot原理
  11. JPA原理
  12. Mybatis緩存
  13. Tomcat架構

 

微服務

  1. 服務註冊發現
  2. API 網關
  3. 配置中心
  4. 事件調度(kafka)
  5. 服務跟蹤(starter-sleuth)
  6. 服務熔斷(Hystrix)
  7. Hystrix斷路器機制
  8. API管理

 

Netty 與RPC

  1. Netty 原理
  2. Netty 高性能
  3. Netty RPC實現
  4. 關鍵技術
  5. 核心流程
  6. 消息編解碼
  7. 通訊過程
  8. RMI實現方式

 

分佈式緩存

  1. 緩存雪崩
  2. 緩存穿透
  3. 緩存預熱
  4. 緩存更新
  5. 緩存降級

 

Zookeeper

  1. Zookeeper概念
  2. Zookeeper角色
  3. Zookeeper工作原理(原子廣播)
  4. Znode有四種形式的目錄節點

 

Kafka

  1. Kafka概念
  2. Kafka數據存儲設計
  3. partition的數據文件(offset,MessageSize,data)
  4. 數據文件分段segment(順序讀寫、分段命令、二分查找)
  5. 數據文件索引(分段索引、稀疏存儲)
  6. 生產者設計
  7. 負載均衡(partition會均衡分佈到不同broker上)
  8. 批量發送
  9. 壓縮(GZIP或Snappy)
  10. 消費者設計

 

RabbitMQ

  1. RabbitMQ概念
  2. RabbitMQ架構
  3. Exchange 類型

 

算法

  1. 一致性算法
  2. Java算法
  3. 數據結構
  4. 加密算法

 

看完上面的內容,相信大家已經有了清晰的目標與方向,接下來就是查找學習資料了,我們爲大家準備了一套體系化的架構師學習資料包以及BAT面試資料,供大家參考,學習資料包內容及領取方法如下

部分資料展示:

 

需要這份資料的,點贊+關注

關注公衆號:Java架構師聯盟,每日更新技術好文,謝謝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章