共计 2837 个字符,预计需要花费 8 分钟才能阅读完成。
写在后面
很多读者私信问我,本人工作三多年了,随着工作年限的一直增长,感觉本人的技术水平与本人的工作年限重大不符。想跳槽进来换个新环境吧,又感觉本人的能力达不到心仪公司的规范,即便投了简历也没人来告诉本人面试。就这样在原来的公司一天天的混日子,工夫久了,感觉本人废了,就这么恶性循环着。
文章已收录到:
https://github.com/sunshinelyz/technology-binghe
https://gitee.com/binghe001/technology-binghe
如何破局?
首先,如果你认为本人是一个蠢才程序员,那么你能够不依照我说的做,因为你是蠢才,你能够分分钟达到甚至超过 30K。如果你认为本人只是一个普通人,那好,持续往下看,置信会对你有所帮忙的。
咱们该如何突破本人的技术水平和工作年限重大不符的这个僵局呢?
首先,最重要的还是心态 。为什么这么说,因为从事互联网开发工作,程序员的压力其实还是蛮大的,在高强度的日常工作中,就须要咱们以良好的心态来面对本人的工作。其次,就是要学会开释压力,以正确的形式来开释或者缓解本人心中的压力。
其次,就是要害的一点,你要从心底问本人是否对当初的工作感兴趣。 其实,咱们都晓得,只有是做咱们本人感兴趣的事件,就会事倍功半,如果是出于某种原因不得不去做某件事,这样往往会是投入了很大的精力,成果往往还不太好,这就是咱们常说的事倍功半。
常常有小伙伴在微信上私信我:我是学 Java 呢?还是学 Python 呢?哪个吃香啊?哪个好找工作啊?学习大数据怎么样啊?大数据是不是曾经饱和了啊?这一连串的问题,其实,我看到小伙伴们的这些问题,我都不晓得如何答复。为什么呢?其实这些问题,小伙伴们心里应该都分明:只有你足够认真的保持学上来,学什么都可能找到一份好工作。
究其实质, 对于咱们这些搞技术的人来说,年龄的增长其实没有外界说的那么可怕,真正可怕的是你的年龄和你所把握的技术深度没有匹配。如果你的年龄与你的技术深度不匹配时,你是很难找到一个令本人称心的工作的。试想,如果你曾经工作 5、6 年了,你所做的工作连 1、2 年工作教训甚至是应届毕业生都能做时,那公司为啥还要你来做呢?给你养老吗?公司是要盈利的,盈利就意味着要赚钱。怎么赚钱?节省成本就是一种赚钱的形式,那不好意思,你就会被淘汰掉。
所以,在技术这条路线上,你也须要抉择一个本人感兴趣的方向。比方:Java、Python、大数据、云计算、云原生等等。接下来,就是深刻学习了。要晓得: 再牛逼的技术,也抵不过傻逼似的保持。 只有保持,就没有学不会的技术。
在学习的过程中,肯定要明确本人学什么,切记不要见异思迁。不要明天学习 Java,今天又想学习 Python 了。肯定要给本人制订一个指标,并将指标拆分为每天的学习打算。
学些什么?
调整好心态后,咱们再来看看须要学习哪些内容。
夯实根底
首先,就是要夯实本人的根底。比方对汇合类,并发包,IO/NIO,JVM,内存模型,泛型,异样,反射,等有深刻理解,最好是看过源码理解底层的设计。
比方个别面试都会问 ConcurrentHashMap,CopyOnWrite,线程池,CAS,AQS,虚拟机优化等知识点,因为这些对互联网的企业是相对重要的。而且个别人这关都过不了,还发牢骚说这些没什么用,为什么要面试。
这里,我给大家举一个我所经验的我的项目的实在案例。之前,我所在的公司,在做一个高并发电商我的项目时,一名开发同学在我的项目中,因为应用了默认的创立线程池的形式,导致线程池中应用了默认的无界队列,在近程服务异常情况下导致内层飙升。最终通过排查源码定位到问题,将其批改为有界队列,解决了问题。
试想,你要是连线程池都不分明,你怎么去玩?再举一例,因为对 ThreadLocal 了解出错,应用它做线程平安的管制,导致没能实现真的线程平安。此时,你会怎么解决这个问题?
所以,根底很重要,肯定要把根底学扎实。万丈高楼平地起,只有把根底搞扎实了,上层建筑才会更加牢固。
深刻互联网技术常识
对于这一点,咱们须要从底层说起,你起码得深刻理解 MySQL,Redis,MongoDB,Nginx,Tomcat,RPC,JMS、Dubbo、SpringCloud、SpringCloud Alibaba、性能调优、Netty、服务注册发现、服务治理、各种中间件、互联网工程、并发编程、分布式、微服务等等方面的常识。
你要问须要理解到什么水平,这里,我能够给你举几个例子:首先对于 MySQL,你要晓得常见的参数设置,存储引擎怎么去抉择,还须要理解常见的索引引擎,晓得怎么去抉择。晓得怎么去设计表,怎么优化 SQL,怎么依据执行打算去调优。把握如何去做分库分表的设计和优化,个别互联网企业的数据库都是读写拆散,还会垂直与程度拆分,所以这些也须要你多多少少把握。
而后 Redis,Mongodb 都是须要理解原理,须要会调整参数的。
而 Mginx 和 Tomcat 简直都是 JAVA 互联网开发必配的 Web 服务器,这点,可能跟阿里的技术栈抉择有点关系。
至于 RPC 相干的就比拟多了,必须理解各种网络协议,序列化技术,SOA 等等,你要有一个深刻的了解。当初利用比拟广的 RPC 框架,在国内就是 dubbo 了,小伙伴们能够到 Dubbo 的官网进行学习,也能够到 github 下载源码进行学习。
至于其余的嘛,就须要小伙伴们本人去钻研了。总之,把握它们,对你没害处。
造就硬核能力
我这里说的硬核能力,指的就是:编程能力,编程思维,算法能力,架构能力。
这里,我就简略的说下,除了根底局部和互联网技术须要把握的技能外,还有几个是必须要把握的,那就是:编程能力、编程思维、算法能力、架构能力。
编程能力这个我感觉不好去评估,然而拿一个 2000W 用户依据姓名年龄排序这种题目也能信手拈来。问你个 AOP 和 IOC 你起码要清清楚楚,设计模式不说每种都用过,但也能理解个几种吧。对于算法来说,你须要把握根本的算法常识吧。其实,开发一个零碎时,很多中央都须要思考应用算法来实现。有些小伙伴认为本人是做业务开发的,用不到算法,不须要学习算法啊,其实这种思维就是谬误的!!
最初就是架构能力,这种不是说要你设计个多牛逼多高并发的零碎,起码让你做一个秒杀零碎,防重申请的设计能疾速搞定而没有坑吧。
我出版的书籍
- 当当:http://product.dangdang.com/29115124.html
- 京东:https://item.jd.com/10020420941243.html
- 当当:http://product.dangdang.com/29162795.html
- 京东:https://item.jd.com/10024595443614.html
好了,明天就到这儿吧,我是冰河,咱们下期见,前面给大家另外举荐一些书单,如果你也想月薪达到甚至超过 30K,就请在下方留言吧,也能够加我微信【sun_shine_lyz】进行交换,让我晓得你的想法~~