首页 > 其他分享 >毕业三年,月薪30K,我想跟你聊聊!

毕业三年,月薪30K,我想跟你聊聊!

时间:2023-10-23 10:33:06浏览次数:48  
标签:需要 小伙伴 自己 月薪 算法 30K 线程 聊聊 编程

大家好,我是冰河~~

很多读者私信问我,自己工作三年多了,随着工作年限的不断增长,感觉自己的技术水平与自己的工作年限严重不符。想跳槽出去换个新环境吧,又感觉自己的能力达不到心仪公司的标准,即使投了简历也没人来通知自己面试。就这样在原来的公司一天天的混日子,时间久了,感觉自己废了,就这么恶性循环着。

这可能是你职业生涯中最具含金量的一次点击,点击【项目实战】查看详情,与冰河一起研发基于大厂真正核心技术的硬核项目。

如何破局?

首先,如果你认为自己是一个天才程序员,那么你可以不按照我说的做,因为你是天才,你可以分分钟达到甚至超过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 都是需要了解原理,需要会调整参数的。

而 Nginx 和 Tomcat 几乎都是 JAVA 互联网开发必配的Web服务器,这点,可能跟阿里的技术栈选择有点关系。

至于RPC相关的就比较多了,必须了解各种网络协议,序列化技术,SOA 等等,你要有一个深入的理解。现在应用比较广的 RPC 框架,在国内就是 dubbo 了,小伙伴们可以到Dubbo的官网进行学习,也可以到github下载源码进行学习。

至于其他的嘛,就需要小伙伴们自己去研究了。总之,掌握它们,对你没坏处。

培养硬核能力

我这里说的硬核能力,指的就是:编程能力,编程思想,算法能力,架构能力。

这里,我就简单的说下,除了基础部分和互联网技术需要掌握的技能外,还有几个是必须要掌握的,那就是:编程能力、编程思想、算法能力、架构能力。

编程能力这个我觉得不好去评价,但是拿一个 2000W + 用户根据姓名年龄排序这种题目也能信手拈来。问你个 AOP 和 IOC 你起码要清清楚楚,设计模式不说每种都用过,但也能了解个几种吧。对于算法来说,你需要掌握基本的算法知识吧。其实,开发一个系统时,很多地方都需要考虑使用算法来实现。有些小伙伴认为自己是做业务开发的,用不到算法,不需要学习算法啊,其实这种思想就是错误的!!

最后就是架构能力,这种不是说要你设计个多牛逼多高并发的系统,起码让你做一个秒杀系统,防重请求的设计能快速搞定而没有坑吧。

最后的最后,记住一句话:再牛逼的技术,也抵不过傻逼似的坚持。 只要坚持,就没有学不会的技术。

好了,今天就到这儿吧,我是冰河,我们下期见~~

标签:需要,小伙伴,自己,月薪,算法,30K,线程,聊聊,编程
From: https://www.cnblogs.com/binghe001/p/17781825.html

相关文章

  • 架构师日记-聊聊开发必掌握的那些实践技能 | 京东云技术团队
    一引言尽管软件开发一直致力于追求高效、可读性强、易于维护的特性,但这些特性却像是一个不可能三角,相互交织,此消彼长。就像底层语言(如汇编和C语言)能够保持高效的运行性能,但在可读性和维护性方面却存在短板和劣势;而高级语言(如Java和Python)在可读性和可维护性方面表现出色,但在执行......
  • 聊聊基于Alink库的特征工程方法
    示例代码及相关内容来源于《Alink权威指南(Java版)》独热编码OneHotEncoder是用于将类别型特征转换为独热编码的类。独热编码是一种常用的特征编码方式,特别适用于处理类别型特征,将其转换为数值型特征。对于每个类别型特征,OneHotEncoder将其编码成一个长度为类别数量的向量。......
  • 聊聊 RXJS
    一什么是rxjs?RxJS(ReactiveExtensionsforJavaScript)是一个用于响应式编程的JavaScript库。它通过使用可观察对象(Observables)和操作符(Operators)来处理异步和事件驱动的代码。什么是响应式编程?程序的输入可以被当成一个数据流,例如excel表格的累加。响应式编程世界里知名度......
  • 月薪过二万的Java面试
    (文章目录)......
  • 聊聊企业级消息推送的架构设计(001)
    最近有小伙伴拿到了一线互联网企业如阿里、网易、有赞、希音、百度、网易、滴滴的面试资格,遇到一几个很重要的面试题:企业级消息通知系统有哪些需求?如何满足?企业级消息通知系统,该如何做架构设计?所以,这里今天给大家做一下系统化、体系化的梳理,使得大家可以充分展示一下大家雄厚......
  • 聊聊Maven的依赖传递、依赖管理、依赖作用域
    1.依赖传递在Maven中,依赖是会传递的,假如在业务项目中引入了spring-boot-starter-web依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> <version>2.7.4</version></depe......
  • 聊聊JDK19特性之虚拟线程 | 京东云技术团队
    1.前言在读《深入理解JVM虚拟机》这本书前两章的时候整理了JDK从1.0到最新版本发展史,其中记录了JDK这么多年来演进过程中的一些趣闻及引人注目的一些特性,在调研JDK19新增特性的时候了解到了虚拟线程这个概念,于是对虚拟线程进行学习整理内容如下。2.虚拟线程介绍?虚拟线程(VirtualTh......
  • 聊聊前端算法复杂度
    算法复杂度前端开发一般:重时间轻空间什么是复杂度程序执行时需要的计算量和内存空间(和代码简洁度无关)复杂度是数量级,不是具体的数字一般针对一个具体的算法,而非一个完整的系统时间复杂度程序执行时需要的计算量(cpu)O(1)一次就够"可数的",和输入量无关,无论输入量......
  • 聊聊基于Alink库的主成分分析(PCA)
    概述主成分分析(PrincipalComponentAnalysis,PCA)是一种常用的数据降维和特征提取技术,用于将高维数据转换为低维的特征空间。其目标是通过线性变换将原始特征转化为一组新的互相无关的变量,这些新变量称为主成分,它们按照方差递减的顺序排列,以保留尽可能多的原始数据信息。主成分分......
  • 聊聊基于Alink库的随机森林模型
    概述随机森林(RandomForest)是一种集成学习(EnsembleLearning)方法,通过构建多个决策树并汇总其预测结果来完成分类或回归任务。每棵决策树的构建过程中都引入了随机性,包括数据采样和特征选择的随机性。随机森林的基本原理可以概括如下:随机抽样训练集:随机森林通过有放回抽样(Boots......