Java程序员以其薪资待遇,就业选择方向多,大有发展前途,梦想成为Java程序员的也越来越多,真正开始付诸行动学Java的人也越来越多。
但是有的Java程序员是早已从低端发展到中级、高级java程序员。
而有的Java程序员还是在低端,在低端的程序员赢如何提升自身能力,争取更好的待遇呢?
说来说去就是技术或者能力,下面我们先来说说技能。
关于专业技能:
我这里要说明一下,以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价、拿到的薪水势必也越高。
算法:常用排序算法,二分查找,链表相关,数组相关,字符串相关,树相关等
常见序列化协议及其优缺点
memcached内存原理,为什么是基于块的存储
搭建一个rpc需要准备什么
如果线上服务器频繁地出现full gc ,如何去排查
如果某一时刻线上机器突然量变得很大,服务扛不住了,怎么解决
LUR算法的实现
LinkedHashMap实现LRU
定义栈的数据结构,请在该类型中实现一个能够找到栈最小元素的min函数
海量数据处理的解决思路
reactor模型的演变
阻塞、非阻塞、同步、异步区别
Collection的子接口
jvm调优相关
zookeeper相关,节点类型,如何实现服务发现和服务注册
nginx负载均衡相关,让你去实现负载均衡,该怎么实现
linux命令,awk、cat、sort、cut、grep、uniq、wc、top等
压力测试相关,怎么分析,单接口压测和多情况下的压测
你觉得你的有点是什么,你的缺点是什么
spring mvc的实现原理
netty底层实现,IO模型,ChannelPipeline的实现和原理
缓存的设计和优化
缓存和数据库一致性同步解决方案
你所在项目的系统架构,谈谈整体实现
消息队列的使用场景
ActiveMQ、RabbitMQ、Kafka的区别
第二. 积累行业背景;
行业背景非常重要;工作 5 年后必须确定自己的行业背景,比如一直从事电信行业,一直从事银行项目,一直从事 ERP 行业等等。
一个程序员不可能是一直写代码的,就是写代码也要知道业务逻辑,满足什么需求;俗话说隔行如隔山,每个行业的业务都不一样,甚至差别很大,比如你一直从事流媒体的研究,让你跳槽到一家银行项目,完了,一切从头学吧,以前的行业经验都用不上了;而且,一个公司公司招人,就是希望找到那些很容易上手,不需要培训业务很久的程序员;频繁跳槽的朋友,一定要注意这点;
一直在一个行业呆久了,就可以成为这个行业的专家;我们可以经常看到,一个项目组的某个 leader,代码写的一般,但是却可以跟客户流畅的沟通,控制着新需求的提出,bug 的修正等等;而客户也很愿意跟他打交道,因为那些老的项目只有他能维护,他甚至熟悉系统的每一张表结构——- 可想在这个行业呆的时间有多久啦。
第三. 合理的职业规划
下面我用一张通俗易懂的图给大家解释下程序员是怎么晋升的:
所以说如果想从一个普普通通的程序员变成首席技术官,还是有很多步要走的不过为了能尽快的实现这一目标,我们还是要好好规划一下的。
每晚晚上八点到十点半,阿里大牛直播授课Java工程化、高性能及分布式、性能调优、Spring,MyBatis,Netty源码分析等知识点讲解。有需要的朋友可以加入我们的Java架构/分布式/高性能群:697579751
最后是我整理出的一个系统学习的图谱:
分布式专题
微服务架构
性能优化
双十一电商项目实战