很多工作一定年限的程序員感覺(jué)自己到了瓶頸不知道怎么去突破,其實(shí)這個(gè)時(shí)候就要沖破傳說(shuō)中的架構(gòu)師。
架構(gòu)師是個(gè)很神秘人物,那么架構(gòu)師的技術(shù)一般在什么程度呢?怎樣才能被稱(chēng)為架構(gòu)師?
技術(shù)深度
有沒(méi)有看過(guò)JDK源碼,看過(guò)的類(lèi)實(shí)現(xiàn)原理是什么。
HTTP協(xié)議
TCP協(xié)議
一致性Hash算法
JVM如何加載字節(jié)碼文件
類(lèi)加載器如何卸載字節(jié)碼
IO和NIO的區(qū)別,NIO優(yōu)點(diǎn)
Java線(xiàn)程池的實(shí)現(xiàn)原理,keepAliveTime等參數(shù)的作用。
HTTP連接池實(shí)現(xiàn)原理
數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn)原理
數(shù)據(jù)庫(kù)的實(shí)現(xiàn)原理
技術(shù)框架
看過(guò)哪些開(kāi)源框架的源碼
為什么要用Redis,Redis有哪些優(yōu)缺點(diǎn)?Redis如何實(shí)現(xiàn)擴(kuò)容?
Netty是如何使用線(xiàn)程池的,為什么這么使用
為什么要使用Spring,Spring的優(yōu)缺點(diǎn)有哪些
Spring的IOC容器初始化流程
Spring的IOC容器實(shí)現(xiàn)原理,為什么可以通過(guò)byName和ByType找到Bean
SpringAOP實(shí)現(xiàn)原理
消息中間件是如何實(shí)現(xiàn)的,技術(shù)難點(diǎn)有哪些
系統(tǒng)架構(gòu)
如何搭建一個(gè)高可用系統(tǒng)
哪些設(shè)計(jì)模式可以增加系統(tǒng)的可擴(kuò)展性
介紹設(shè)計(jì)模式,如模板模式,命令模式,策略模式,適配器模式、橋接模式、裝飾模式,觀察者模式,狀態(tài)式,訪問(wèn)者模式。
抽象能力,怎么提高研發(fā)效率。
什么是高內(nèi)聚低耦合,請(qǐng)舉例子如何實(shí)現(xiàn)
什么情況用接口,什么情況用消息
如果AB兩個(gè)系統(tǒng)互相依賴(lài),如何解除依賴(lài)
如何寫(xiě)一篇設(shè)計(jì)文檔,目錄是什么
什么場(chǎng)景應(yīng)該拆分系統(tǒng),什么場(chǎng)景應(yīng)該合并系統(tǒng)
系統(tǒng)和模塊的區(qū)別,分別在什么場(chǎng)景下使用
分布式系統(tǒng)
分布式事務(wù),兩階段提交。
如何實(shí)現(xiàn)分布式鎖
如何實(shí)現(xiàn)分布式Session
如何保證消息的一致性
負(fù)載均衡
正向代理(客戶(hù)端代理)和反向代理(服務(wù)器端代理)
CDN實(shí)現(xiàn)原理
怎么提升系統(tǒng)的QPS和吞吐量
實(shí)戰(zhàn)能力
有沒(méi)有處理過(guò)線(xiàn)上問(wèn)題?出現(xiàn)內(nèi)存泄露,CPU利用率標(biāo)高,應(yīng)用無(wú)響應(yīng)時(shí)如何處理的。
開(kāi)發(fā)中有沒(méi)有遇到什么技術(shù)問(wèn)題?如何解決的
如果有幾十億的白名單,每天白天需要高并發(fā)查詢(xún),晚上需要更新一次,如何設(shè)計(jì)這個(gè)功能。
新浪微博是如何實(shí)現(xiàn)把微博推給訂閱者
Google是如何在一秒內(nèi)把搜索結(jié)果返回給用戶(hù)的。
12306網(wǎng)站的訂票系統(tǒng)如何實(shí)現(xiàn),如何保證不會(huì)票不被超賣(mài)。
如何實(shí)現(xiàn)一個(gè)秒殺系統(tǒng),保證只有幾位用戶(hù)能買(mǎi)到某件商品。
軟能力
如何學(xué)習(xí)一項(xiàng)新技術(shù),比如如何學(xué)習(xí)Java的,重點(diǎn)學(xué)習(xí)什么
有關(guān)注哪些新的技術(shù)
工作任務(wù)非常多非常雜時(shí)如何處理
項(xiàng)目出現(xiàn)延遲如何處理
和同事的設(shè)計(jì)思路不一樣怎么處理
如何保證開(kāi)發(fā)質(zhì)量
職業(yè)規(guī)劃是什么?短期,長(zhǎng)期目標(biāo)是什么
團(tuán)隊(duì)的規(guī)劃是什么
能介紹下從工作到現(xiàn)在自己的成長(zhǎng)在那里
總結(jié)一下:
表示層:springmvc3.1+annotation
控制層:spring3.1
持久層:hibernate3.6+jdbcTemplate
后臺(tái)列表控件:displaytag1.2
Ajax框架:DWR3
JS框架:Jquery
緩存機(jī)制:spring3.1cache+ehcache/memcached
靜態(tài)化機(jī)制:Freemarker靜態(tài)化/springmvc偽靜態(tài)化
頁(yè)面技術(shù):EL+JSTL+JSP
安全框架springsecurity
搜索引擎:Lucene
中文分詞:IKAnalyzer
模板引擎:apachetiles2.22
Linux、nginx、php、mysql,幾乎是標(biāo)配
部署視圖所需:
數(shù)據(jù)庫(kù):mysql
Web服務(wù)器:windows下用apache,linux下用ngnix
應(yīng)用服務(wù)器:TomcatJboss,tomcat,weblogic
想成為架構(gòu)師不是懂了一大堆技術(shù)就可以了,這些是解決問(wèn)題的基礎(chǔ)、是工具,不懂這些怎么去提解決方案呢?這是成為架構(gòu)師的必要條件。
架構(gòu)師還要針對(duì)業(yè)務(wù)特點(diǎn)、系統(tǒng)的性能要求提出能解決問(wèn)題成本最低的設(shè)計(jì)方案才合格,人家一個(gè)幾百人用戶(hù)的系統(tǒng),訪問(wèn)量不大,數(shù)據(jù)量小,你給人家上集群、上分布式存儲(chǔ)、上高端服務(wù)器為了架構(gòu)而架構(gòu),這是最扯淡的,架構(gòu)師的作用就是第一滿(mǎn)足業(yè)務(wù)需求,第二最低的硬件網(wǎng)絡(luò)成本和技術(shù)維護(hù)成本。
架構(gòu)師還要根據(jù)業(yè)務(wù)發(fā)展階段,提前預(yù)見(jiàn)發(fā)展到下一個(gè)階段系統(tǒng)架構(gòu)的解決方案,并且設(shè)計(jì)當(dāng)前架構(gòu)時(shí)將架構(gòu)的升級(jí)擴(kuò)展考慮進(jìn)去,做到易于升級(jí);否則等系統(tǒng)瓶頸來(lái)了,出問(wèn)題了再去出方案,或現(xiàn)有架構(gòu)無(wú)法擴(kuò)展直接扔掉重做,或擴(kuò)展麻煩問(wèn)題一大堆,這會(huì)對(duì)企業(yè)造成損失。
成為架構(gòu)師需要時(shí)間的積累的,不但要知其然還要知其所以然。平時(shí)的一點(diǎn)一滴你感覺(jué)不到特別用處,但某天你會(huì)發(fā)現(xiàn)所有東西都沒(méi)有白學(xué)的。