第一階段:三年前端
我認爲三年對於程序員來講是第一個門檻,這個階段將會淘汰掉一批不適合寫代碼的人。這一階段,咱們走出校園,邁入社會,成爲一名程序員,正式從書本 上的內容邁向真正的企業級開發。咱們知道如何團隊協做、如何使用項目管理工具、項目版本如何控制、咱們寫的代碼如何測試如何在線上運行等等,積累了必定的 開發經驗,也對代碼有了必定深刻的認識,是一個比較純粹的Coder的階段。java
第二階段:五年mysql
五年又是區分程序員的第二個門檻。有些人在三年裏,除了完成工做,在空餘時間基本不會研究別的東西,這些人永遠就是個Coder,年紀大一些勢必被 更年輕的人給頂替;有些人在三年裏,除了寫代碼以外,還熱衷於研究各類技術實現細節、看了N多好書、寫一些博客、在Github上分享技術,這些人在五年 後必然具有在技術上獨當一面的能力而且清楚本身將來的發展方向,從一個Coder逐步走向系統分析師或是架構師,成爲項目組中不可或缺的人物。nginx
第三階段:十年git
十年又是另外一個門檻了,轉行或是繼續作一名程序員就在這個節點上。若是在前幾年就抱定不轉行的思路而且爲之努力的話,那麼在十年的這個節點上,有些 人必然成長爲一名對行業有着深刻認識、對技術有着深刻認識、能從零開始對一個產品進行分析的程序員,這樣的人在公司基本擔任的都是CTO、技術專家、首席 架構師等最關鍵的職位,這對於本身絕對是一件榮耀的事,固然老闆在經濟上也毫不會虧待你。程序員
第一部分總結一下,我認爲,隨着你工做年限的增加、對生活對生命認識的深刻,應當不斷思考三個問題:web
一、我到底適不適合當一名程序員?面試
二、我到底應不該該一生以程序員爲職業?redis
三、我對編程到底持有的是一種什麼樣的態度,是夠用就好呢仍是不斷研究?算法
最終,明確本身的職業規劃,對本身的規劃負責併爲之努力。
關於項目經驗
在網上常常看到一些別的朋友有提出項目經驗的問題,依照我面試的感受來講,面試主要看幾點:項目經驗+基本技術+我的潛力(也就是值不值得培養)。
關於項目經驗,我認爲併發編程網的創始人方騰飛老師講的一段話很是好:介紹產品時面試官會考察應聘者的溝通能力和思考能力,咱們大部分狀況都是作產品的一個功能或一個模塊,可是即便是這樣,自 己有沒有把整個系統架構或產品搞清楚,並能介紹清楚,爲何作這個系統?這個系統的價值是什麼?這個系統有哪些功能?優缺點有哪些?若是讓你從新設計這個 系統你會如何設計?
我以爲這就已經足以歸納了。也許你僅僅工做一年,也許你作的是項目中微不足道的模塊,固然這些必定是你的劣勢且沒法改變,可是如何彌補這個劣勢?
從方老師的話中我總結幾點:
一、明確你的項目究竟是作什麼的,有哪些功能。
二、明確你的項目的總體架構,在面試的時候可以清楚地畫給面試官看而且清楚地指出從哪裏調用到哪裏、使用什麼方式調用。
三、明確你的模塊在整個項目中所處的位置及做用。
四、明確你的模塊用到了哪些技術,更好一些的能夠再瞭解一下整個項目用到了哪些技術。
在你沒法改變本身的工做年限、本身的不那麼有說服力的項目經驗的狀況下(這必定是扣分項),能夠經過這種方式來必定程度上地彌補而且增進面試官對你的好感度。
關於專業技能
寫完項目接着寫寫一名3年工做經驗的Java程序員應該具有的技能,這多是Java程序員們比較關心的內容。我這裏要說明一下,如下列舉的內容不是都要會的東西—-可是若是你掌握得越多,最終能獲得的評價、拿到的薪水勢必也越高。
java學習羣669823128
負載均衡(負載均衡算法)
反向代理
服務隔離
服務限流
服務降級(自動優雅降級)
失效轉移
超時重試(代理超時、容器超時、前端超時、中間件超時、數據庫超時、NoSql超時)
回滾機制(上線回滾、數據庫版本回滾、事務回滾)
02 高併發
應用緩存
HTTP 緩存
多級緩存
分佈式緩存
鏈接池
異步併發
03 分佈式事務
二階段提交(強一致)
三階段提交(強一致)
消息中間件(最終一致性),推薦阿里的 RocketMQ。
任務隊列
消息隊列
請求隊列
單體垂直擴容
單體水平擴容
應用拆分
數據庫拆分
數據庫分庫分表
數據異構
分佈式任務
06 網絡安全
SQL 注入
XSS 攻擊
CSRF 攻擊
拒絕服務(DoS,Denial of Service)攻擊
maven的使用入門
maven私服的搭建及部署
maven座標分析/父控設置
git使用入門培訓
git經常使用命令分析和使用
jenkins環境搭建及插件配置
git+jenkins實現自動化構建
redis使用入門
redis經常使用命令及客戶端的使用
redis高可用集羣搭建
mongodb使用入門
mongodb高可用集羣搭建
mongodb經常使用命令及客戶端的使用
zookeeper安裝部署及命令分析
zookeeper客戶端的使用
zookeeper實現原理分析
dubbo的使用入門及配置分析
zookeeper+dubbo實現服務註冊和發現
activeMq-jms規範及使用
activeMq消息分發機制分析
kafka實現原理剖析
kafka的數據傳輸事務性及實踐練習
memcache的原理分析及使用
memcache和redis的橫向對比分析
分佈式接口技術
webservice/RMI/restful的使用
分庫分表的原理及規則講解
數據庫主備及高可用
JVM原理剖析
jvm內存模型及垃圾回收器的分析
nginx性能優化
tomcat性能優化
mysql常見優化手段分析及實踐
nginx使用入門
nginx負載均衡/反向代理實現
太極聚氣之分佈式壓測平臺
氤氳紫氣之分佈式緩存體系
盤龍真訣之分佈式消息系統
金剛之軀之分佈式跟蹤系統
外功輔助之分佈式配置系統
springboot的使用
zookeeper集羣及相關概念分析
zookeeper java api的使用及實踐
分佈式架構的演進過程
分佈式架構的基石-TCP/UDP
分佈式通訊協議-HTTP及RESTful
分佈式通訊協議-webservice詳解
分佈式通訊協議-RMI
分佈式通訊協議-序列化技術
dubbo控制檯及監控中心的安裝部署
dubbo經常使用配置分析
dubbo實戰演練
NIO基本概念及BIO、AIO的對比分析
NIO核心設計思想剖析(Buffer/Channel..)
Netty產生的背景及優缺點分析
Netty實現IM聊天系統
redis的安裝及數據類型分析
Redis客戶端的使用
Redis高可用方案實戰
Redis+Lua腳本實現原子操做
MongoDB高可用部署
MongoDB動態查詢及索引剖析
MongoDB集成spring應用
分庫分表深刻分析
Mysql主從模型配置/Mycat的使用
JMS基本概念和模型
ActiveMQ結合Spring開發
ActiveMQ靜態網絡和動態網絡連接
Kafka的高可用方案及原理分析
什麼是SOA架構/爲何須要SOA
領域驅動設計方法/典型SOA架構設計
spring boot深刻剖析
spring boot+dubbo企業實戰
Docker虛擬化技術(鏡像/倉庫/容器)
Docker整合spring boot
Docker 服務編排
Nginx反向代理、負載均衡
Nginx進程模型分析
Nginx+keepalived高可用方案
spring boot(mvc)
spring boot(REST)
spring boot(驗證)
spring cloud config client
spring cloud config server
spring cloud netflix eureka
spring cloud netflix ribbon
spring cloud hystrix
spring cloud feign
spring cloud stream
spring cloud bus
spring cloud sleuth
kafka高可用集羣及介紹
kafka底層實現原理分析
redis的數據類型分析
redis高可用集羣方案
lua腳本在redis中的應用
MongoDB的基本原理
MongoDB經常使用命令及客戶端使用
手寫基於MongoDB的ORM框架
MongoDB高可用解決方案
分庫分表深刻分析及主從模型
數據庫中間件Mycat介紹
從測試的角度解讀如何衡量性能
瞭解Linux系統
內存模型、運行時數據
垃圾回收、GC日誌
調優實戰
tomcat架構分析
線程模型分析
tomcat調優實戰
Mysql底層存儲分析
面試技巧之SQL執行計劃及優化手段
上面知識詞彙是否在你腦海裏呢?
java學習羣669823128