1. 程式人生 > >架構師能力

架構師能力

技術深度

有沒有看過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

其實能否成為架構師跟機遇有很大關係,比如一個程式設計師,以上都做到了,但是公司並沒有給他這個機會去做,一個真正架構的機會。因為之前的架構師不離職他就沒有機會,這就是現實!