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

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

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

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

技術深度linux

  • 有沒有看過JDK源碼,看過的類實現原理是什麼。nginx

  • HTTP協議程序員

  • TCP協議web

  • 一致性Hash算法算法

  • JVM如何加載字節碼文件spring

  • 類加載器如何卸載字節碼sql

  • 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

想成爲架構師不是懂了一大堆技術就能夠了,這些是解決問題的基礎、是工具,不懂這些怎麼去提解決方案呢?這是成爲架構師的必要條件。

架構師還要針對業務特色、系統的性能要求提出能解決問題成本最低的設計方案才合格,人家一個幾百人用戶的系統,訪問量不大,數據量小,你給人家上集羣、上分佈式存儲、上高端服務器爲了架構而架構,這是最扯淡的,架構師的做用就是第一知足業務需求,第二最低的硬件網絡成本和技術維護成本。

架構師還要根據業務發展階段,提早預見發展到下一個階段系統架構的解決方案,而且設計當前架構時將架構的升級擴展考慮進去,作到易於升級;不然等系統瓶頸來了,出問題了再去出方案,或現有架構沒法擴展直接扔掉重作,或擴展麻煩問題一大堆,這會對企業形成損失。

下面是總結出的一個腦圖:

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

源碼分析

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

分佈式架構

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

微服務架構

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

相關文章
相關標籤/搜索