我认为三年对于程序员来讲是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,咱们走出校园,迈入社会,成为一名程序员,正式从书本 上的内容迈向真正的企业级开发。咱们知道如何团队协做、如何使用项目管理工具、项目版本如何控制、咱们写的代码如何测试如何在线上运行等等,积累了必定的 开发经验,也对代码有了必定深刻的认识,是一个比较纯粹的Coder的阶段。前端
第二阶段:五年五年又是区分程序员的第二个门槛。有些人在三年里,除了完成工做,在空余时间基本不会研究别的东西,这些人永远就是个Coder,年纪大一些势必被 更年轻的人给顶替;有些人在三年里,除了写代码以外,还热衷于研究各类技术实现细节、看了N多好书、写一些博客、在Github上分享技术,这些人在五年 后必然具有在技术上独当一面的能力而且清楚本身将来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物。java
第三阶段:十年十年又是另外一个门槛了,转行或是继续作一名程序员就在这个节点上。若是在前几年就抱定不转行的思路而且为之努力的话,那么在十年的这个节点上,有些 人必然成长为一名对行业有着深刻认识、对技术有着深刻认识、能从零开始对一个产品进行分析的程序员,这样的人在公司基本担任的都是CTO、技术专家、首席 架构师等最关键的职位,这对于本身绝对是一件荣耀的事,固然老板在经济上也毫不会亏待你。mysql
第一部分总结一下,我认为,随着你工做年限的增加、对生活对生命认识的深刻,应当不断思考三个问题:一、我到底适不适合当一名程序员?nginx
二、我到底应不该该一生以程序员为职业?git
三、我对编程到底持有的是一种什么样的态度,是够用就好呢仍是不断研究?程序员
最终,明确本身的职业规划,对本身的规划负责并为之努力。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