java架构师_前谷歌高级Java架构师分享工作8年经验(如何成为一名架构师)
很多工作一定年限的程序員感覺自己到了瓶頸不知道怎么去突破,其實這個時候就要沖破傳說中的架構師。
架構師是個很神秘人物,那么架構師的技術一般在什么程度呢?怎樣才能被稱為架構師?
技術深度
- 有沒有看過JDK源碼,看過的類實現原理是什么。
- HTTP協議
- TCP協議
- 一致性Hash算法
- JVM如何加載字節碼文件
- 類加載器如何卸載字節碼
- IO和NIO的區別,NIO優點
- Java線程池的實現原理,keepAliveTime等參數的作用。
- HTTP連接池實現原理
- 數據庫連接池實現原理
- 數據庫的實現原理
技術框架
- 看過哪些開源框架的源碼
- 為什么要用Redis,Redis有哪些優缺點?Redis如何實現擴容?
- Netty是如何使用線程池的,為什么這么使用
- 為什么要使用Spring,Spring的優缺點有哪些
- Spring的IOC容器初始化流程
- Spring的IOC容器實現原理,為什么可以通過byName和ByType找到Bean
- Spring AOP實現原理
- 消息中間件是如何實現的,技術難點有哪些
系統架構
- 如何搭建一個高可用系統
- 哪些設計模式可以增加系統的可擴展性
- 介紹設計模式,如模板模式,命令模式,策略模式,適配器模式、橋接模式、裝飾模式,觀察者模式,狀態式,訪問者模式。
- 抽象能力,怎么提高研發效率。
- 什么是高內聚低耦合,請舉例子如何實現
- 什么情況用接口,什么情況用消息
- 如果AB兩個系統互相依賴,如何解除依賴
- 如何寫一篇設計文檔,目錄是什么
- 什么場景應該拆分系統,什么場景應該合并系統
- 系統和模塊的區別,分別在什么場景下使用
分布式系統
- 分布式事務,兩階段提交。
- 如何實現分布式鎖
- 如何實現分布式Session
- 如何保證消息的一致性
- 負載均衡
- 正向代理(客戶端代理)和反向代理(服務器端代理)
- CDN實現原理
- 怎么提升系統的QPS和吞吐量
實戰能力
- 有沒有處理過線上問題?出現內存泄露,CPU利用率標高,應用無響應時如何處理的。
- 開發中有沒有遇到什么技術問題?如何解決的
- 如果有幾十億的白名單,每天白天需要高并發查詢,晚上需要更新一次,如何設計這個功能。
- 新浪微博是如何實現把微博推給訂閱者
- Google是如何在一秒內把搜索結果返回給用戶的。
- 12306網站的訂票系統如何實現,如何保證不會票不被超賣。
- 如何實現一個秒殺系統,保證只有幾位用戶能買到某件商品。
軟能力
- 如何學習一項新技術,比如如何學習Java的,重點學習什么
- 有關注哪些新的技術
- 工作任務非常多非常雜時如何處理
- 項目出現延遲如何處理
- 和同事的設計思路不一樣怎么處理
- 如何保證開發質量
- 職業規劃是什么?短期,長期目標是什么
- 團隊的規劃是什么
- 能介紹下從工作到現在自己的成長在那里
總結一下:
- 表示層:spring mvc 3.1 + annotation
- 控制層:spring 3.1
- 持久層:hibernate 3.6 +jdbcTemplate
- 后臺列表控件:displaytag 1.2
- Ajax框架: DWR 3
- JS框架 : Jquery
- 緩存機制:spring 3.1 cache + ehcache/memcached
- 靜態化機制: Freemarker靜態化/spring mvc偽靜態化
- 頁面技術: EL + JSTL +JSP
- 安全框架 spring security
- 搜索引擎: Lucene
- 中文分詞:IKAnalyzer
- 模板引擎: apache tiles 2.22
- Linux、nginx、php、mysql,幾乎是標配
- 部署視圖所需:
- 數據庫: mysql
- Web 服務器: windows 下用apache, linux 下用ngnix
- 應用服務器: Tomcat Jboss,tomcat,weblogic
想成為架構師不是懂了一大堆技術就可以了,這些是解決問題的基礎、是工具,不懂這些怎么去提解決方案呢?這是成為架構師的必要條件。
架構師還要針對業務特點、系統的性能要求提出能解決問題成本最低的設計方案才合格,人家一個幾百人用戶的系統,訪問量不大,數據量小,你給人家上集群、上分布式存儲、上高端服務器為了架構而架構,這是最扯淡的,架構師的作用就是第一滿足業務需求,第二最低的硬件網絡成本和技術維護成本。
架構師還要根據業務發展階段,提前預見發展到下一個階段系統架構的解決方案,并且設計當前架構時將架構的升級擴展考慮進去,做到易于升級;否則等系統瓶頸來了,出問題了再去出方案,或現有架構無法擴展直接扔掉重做,或擴展麻煩問題一大堆,這會對企業造成損失。
成為架構師需要時間的積累的,不但要知其然還要知其所以然。平時的一點一滴你感覺不到特別用處,但某天你會發現所有東西都沒有白學的。
據不完全統計,截至目前(2017.07)為止,中國Java程序員的數量已經超過了1000萬。而且,隨著IT培訓業的持續發展和大量的應屆畢業生進入社會,Java程序員面臨的競爭壓力越來越大。那么,作為一名Java程序員,怎樣努力才能快速成長為一名高級的程序員或者架構師,或者說一名優秀的高級工程師或架構師應該有怎樣的技術知識體系,這不僅是一個剛剛踏入職場的初級程序員,也是工作三五年之后開始迷茫的老程序員,都必須要面對和想明白的問題。為了幫助大家少走彎路,我們總結出一個Java程序員的工作2-5年成長路線圖。
作為一名合格的架構師,必須懂各種網絡產品及特性,懂各種中間件,能夠知道坑在哪兒,深諳各種技術方案的優缺點,懂整合各種資源并達到最優…了解各種技術及應用場景,有足夠的工作經驗解決集成中遇到的各種奇葩問題。
?我特意整理了一下,有很多問題不是靠幾句話能講清楚,所以干脆找朋友錄制了一些視頻,希望能幫助這個階段的Java程序員。很多問題其實答案很簡單,但是背后的思考和邏輯不簡單,要做到知其然還要知其所以然。如果想學習Java工程化、高性能及分布式、高性能、深入淺出。性能調優、Spring,MyBatis,Netty源碼分析的朋友可以關注我,私信回復“架構資料”獲取架構進階學習資料。
總結
以上是生活随笔為你收集整理的java架构师_前谷歌高级Java架构师分享工作8年经验(如何成为一名架构师)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: adobe flash player p
- 下一篇: 充电桩用什么写软件_充电桩云平台是什么?