前谷歌高級Java架構師分享工做8年經驗(如何成爲一名架構師)

不少工做必定年限的程序員感受本身到了瓶頸不知道怎麼去突破,其實這個時候就要衝破傳說中的架構師。php

架構師是個很神祕人物,那麼架構師的技術通常在什麼程度呢?怎樣才能被稱爲架構師?mysql

技術深度linux

  • 有沒有看過JDK源碼,看過的類實現原理是什麼。
  • HTTP協議
  • TCP協議
  • 一致性Hash算法
  • JVM如何加載字節碼文件
  • 類加載器如何卸載字節碼
  • IO和NIO的區別,NIO優勢
  • Java線程池的實現原理,keepAliveTime等參數的做用。
  • HTTP鏈接池實現原理
  • 數據庫鏈接池實現原理
  • 數據庫的實現原理

技術框架nginx

  • 看過哪些開源框架的源碼
  • 爲何要用Redis,Redis有哪些優缺點?Redis如何實現擴容?
  • Netty是如何使用線程池的,爲何這麼使用
  • 爲何要使用Spring,Spring的優缺點有哪些
  • Spring的IOC容器初始化流程
  • Spring的IOC容器實現原理,爲何能夠經過byName和ByType找到Bean
  • Spring AOP實現原理
  • 消息中間件是如何實現的,技術難點有哪些

系統架構程序員

  • 如何搭建一個高可用系統
  • 哪些設計模式能夠增長系統的可擴展性
  • 介紹設計模式,如模板模式,命令模式,策略模式,適配器模式、橋接模式、裝飾模式,觀察者模式,狀態式,訪問者模式。
  • 抽象能力,怎麼提升研發效率。
  • 什麼是高內聚低耦合,請舉例子如何實現
  • 什麼狀況用接口,什麼狀況用消息
  • 若是AB兩個系統互相依賴,如何解除依賴
  • 如何寫一篇設計文檔,目錄是什麼
  • 什麼場景應該拆分系統,什麼場景應該合併系統
  • 系統和模塊的區別,分別在什麼場景下使用

分佈式系統web

  • 分佈式事務,兩階段提交。
  • 如何實現分佈式鎖
  • 如何實現分佈式Session
  • 如何保證消息的一致性
  • 負載均衡
  • 正向代理(客戶端代理)和反向代理(服務器端代理)
  • CDN實現原理
  • 怎麼提高系統的QPS和吞吐量

實戰能力算法

  • 有沒有處理過線上問題?出現內存泄露,CPU利用率標高,應用無響應時如何處理的。
  • 開發中有沒有遇到什麼技術問題?如何解決的
  • 若是有幾十億的白名單,天天白天須要高併發查詢,晚上須要更新一次,如何設計這個功能。
  • 新浪微博是如何實現把微博推給訂閱者
  • Google是如何在一秒內把搜索結果返回給用戶的。
  • 12306網站的訂票系統如何實現,如何保證不會票不被超賣。
  • 如何實現一個秒殺系統,保證只有幾位用戶能買到某件商品。

軟能力spring

  • 如何學習一項新技術,好比如何學習Java的,重點學習什麼
  • 有關注哪些新的技術
  • 工做任務很是多很是雜時如何處理
  • 項目出現延遲如何處理
  • 和同事的設計思路不同怎麼處理
  • 如何保證開發質量
  • 職業規劃是什麼?短時間,長期目標是什麼
  • 團隊的規劃是什麼
  • 能介紹下從工做到如今本身的成長在那裏

總結一下:sql

  • 表示層: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年成長路線圖。

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

做爲一名合格的架構師,必須懂各類網絡產品及特性,懂各類中間件,可以知道坑在哪兒,深諳各類技術方案的優缺點,懂整合各類資源並達到最優…瞭解各類技術及應用場景,有足夠的工做經驗解決集成中遇到的各類奇葩問題。

我特地整理了一下,有不少問題不是靠幾句話能講清楚,因此乾脆找朋友錄製了一些視頻,但願能幫助這個階段的Java程序員。不少問題其實答案很簡單,可是背後的思考和邏輯不簡單,要作到知其然還要知其因此然。若是想學習Java工程化、高性能及分佈式、高性能、深刻淺出。性能調優、Spring,MyBatis,Netty源碼分析的朋友能夠加入Java高級互聯網架構:793042903獲取架構進階學習資料。
相關文章
相關標籤/搜索