Java 码农失业,有没有其他出路?

server/2024/12/22 23:59:06/

本人知乎账号同公众号:老胡聊Java,欢迎留言并咨询

如果是本科学历,30岁失业,真不用慌,别盲目转行,也别盲目继续在小公司之间跳,可以找机会进大中公司。如果是35岁,本文给出的方法还应该依然有效,如果超过40,抱歉本人就不知道了。

在展开写具体的方法前,本人想给出如下的观点。

1 这个年纪,本科毕业,就算25岁入行,好歹能有5年经验,这个年限的经验,其实足以达到面试大公司的要求。

2 而且做到30岁,哪怕有些资深技术在项目里没用过,但好歹见过,或者通过短时间的准备,能通过面试让别人感觉你熟悉这个。

3 30岁,如果依然用增删改查+业务这套去面试,绝对无法和年轻人竞争,或者勉强以此进了公司,但公司只能给出面向24,25岁的薪资,这何苦呢?

4 这个年纪找java工作,应该从项目发版、解决实际问题、用过分布式组件微服务组件和性能调优等方面证明自己的能力。

这个年龄应该去哪些公司呢?

1 业内知名公司,比如说出名来大家都知道。

2 外企国企互联网公司或规模较大公司,前三者好理解,什么叫规模较大公司?人数规模至少在500以上,或者是办公地点至少占据一栋楼。如果办公场地只占据一栋楼里的多个楼层,除非是业内有名或者有其它优势,否则大龄程序员尽量别考虑。

3 或者有些大公司,暂时无法以正式员工身份进去,那么可以先以外派身份进去。比如证券、保险或外企或互联网或其它大公司的外派员工,过几年有可能转成正式员工,如果无法转,在33岁左右,凭此大公司经历,好歹还有机会再进一步。

4 有一些小而美的公司也别忽视,这些里面更多的是规模较小的外企办事处,比如某医疗外企在上海有办事处,人数不多,但技术福利什么都行,这些也可以考虑。

5 还有一种,操作起来难度较大,但也是有可能。比如某人之前都是在做Java,但积累了一些AI技能,但一定得证明之前在项目里做过AI,解决过相关问题,然后可以准备下面试,进个好公司。

上述这些公司,以3,4年工作经验,要进去可能会有些勉强,但到了30岁,要工作年限有年限,也有足够多的项目来承载所用过的资深技能,也知道面试时该用哪些技能证明自己,所以真没必要再去找小公司。

有些小公司除了增删改查的业务,真无法再提供什么了,或者说,不少小公司的所谓管理岗,做久了出去面试,也没什么竞争力。

下文具体说说,30岁的Java程序员,在面试中该如何准备资深技能。

1 项目运维和部署方面,证明自己参与过发版,用过容器,再进一步可以说自己有过线上扩容和搭建过组件的经验。

比如用过jenkins+docker,再进一步甚至可以说用过k8s,相关说辞是,从git上拉下代码,然后写dockerfile命令,然后再部署到服务器再启动,这块其实是devops的技能。

再进一步,可以说自己参与过发布,知道灰度发布的步骤,在服务器上配置过生产环境的参数,参与过数据迁移,搭建过redis或kakfa等组件,甚至搭建过集群。

或者是,在生产环境或测试环境上搭建过监控组件,比如cat或zabbix,在生产环境上参与过扩容,或者有阿里云等组件的使用经验。

要证明相关经验其实不麻烦,就说细节,比如用过jenkins部署过项目,那就说jenkins里配置pipelines的命令,在jenkins拉取git或打包的命令,你把这些命令、细节和流程说清楚了,面试官不由得不信,说难听点,你就用过jenkins,没用过docker,那么现取学些dockerfile的细节,说自己用过dockerfile管理过容器,这也是有可能的。

大家别小看这些技术,上述技术其实真和架构有关,比如开发一个项目,写增删改查由是其次,但如何把项目部署到线上,这块技能相当值钱。

2 别老想着高并发,也别脱离业务说组件,更别单背高并发组件方面的面试题,就从用过组件开始准备起。

这块什么意思呢?不少大龄Java开发也知道高并发的重要性,但面试中只去准备redis,dubbo等组件的面试题,比如是底层结构。但如果这样的话,面试时面试官一句话就能把你打回原形:你有没有相关组件的项目实践经验?

这块怎么准备呢?哪怕项目没高并发需求,比如是一般业务项目,总会有Redis,Kafka组件的使用场景,这时你就说,为什么要用这些组件,从语法和配置方面说这些组件是怎么用的?用了以后解决哪些业务问题?说好以后再穿插讲些,你看过dubbo等方面的底层源码,知道一些细节。

微服务方面可以是,我们的项目有高可用的需求,或者我们项目有多个业务模块,同时要有多个team开发,所以一个team开发一个业务模块时,是单独部署,所以用微服务,总之先从需求方面站住脚。然后再说nacos怎么用,gateway怎么用,openfeign怎么用。

这块想说的是,架构不是空中楼阁,一定有业务需求,或者不这样做不行。比如限于多组同时开发的模式,或者有数据库性能要求,所以要用组件。而且架构大概率是从引入组件开始说起。你如果第一步能说组件怎么用,解决过哪些实际问题,当然可能依然无法去挑战架构的岗位,但好歹摆脱了只会增删改查的困境。

3 说好你用过redis等组件以后,你想办法说下你搭建过这些组件的环境。

当然可能在生产环境上轮不到你搭建,你可以说,在测试环境上搭建过Redis,搭建过Kafka,或者是搭建过Nacos等组件。

这些搭建组件的步骤,说穿无非是下载个包,到linux上解开,然后做相关配置,再启动一下。面试时如果要说细节,可以说些命令和配置。

这里请注意,别说太多太全,比如一个业务项目里,用个redis+kafka应该就差不多了,用微服务组件,一般也根据情况用其中的一个或多个。这里的操作要点是,通过业务和细节证明你用过组件,这里一定的切合项目的业务。在此基础上你包装个业务说再用过dubbo等个别组件,问题不大,但如果你项目没分布式事务的需求,你说用过seata,这就可能穿帮了。

4 更重要的是,说出些你解决过的线上问题。

比如你解决过OOM问题,解决过Redis缓存穿透问题,解决过Kakfa消息堆积问题,或者在用docker或k8s时,之前因配置不对导致无法部署,后来你调整参数解决了此类问题。

再进一步,你可以说,你们项目有监控,监控发现了数据库慢查询问题,或者是内存OOM问题,然后你参与解决。或者是,你们项目用jmeter做压力测试,压测中,你解决过各种性能问题。

这方面的素材太多了,本人在写的一本Java面试书里也准备了不少素材,而本人之前的文章里,也给出解决数据库性能问题和内存OOM问题的说辞。

优化 MySQL 数据库性能的方法有哪些?9 赞同 · 1 评论回答​编辑

面试Java岗老喜欢盯着JVM问,有那么多项目要调优吗?10 赞同 · 0 评论回答​编辑

根据本人的面试经验以及面试辅导的经验,其实不少Java开发,如果之前是在小公司的话,项目里一般是用增删改查技术为主,但如果在面试中适当准备些解决过的问题说辞,面成不面成这谁也说不准,但如果能证明自己用过分布式组件,外带解决过实际问题,好歹比别人只说增删改查强。

5 再说投简历,如果是30岁以上,但简历上无法体现出资深技能,那确实无法和年轻人竞争。

简历上该怎么写呢?在之前的项目里,本人有基于jenkins,docker和k8s的项目部署经验,有用过redis,kafka ...等组件的经验,有通过压测解决过性能问题的经验,有过在生产环境或测试环境上,搭建和配置组件以及集群的经验,有过云开发云维护的经验。

此外,本人解决过数据库性能问题,内存OOM问题和组件层面的问题,在此过程中看过一些组件的源码。当然如果可以,再可以写上,有高并发大数据开发的经验,并发量xxx,数据量xxx。或者是,本人有大公司项目的开发经验。

总之,大龄程序员,多少得拿出些值钱技能,而且得尽量想办法进些好公司,反过来说,如果依然用增删改查这套,可能哪怕是勉强进个小公司,但真和一些小年轻没什么差别了。

最后再给出些30岁乃至更大年龄,找到好公司的案例,以鼓舞大龄程序员。

1 本人在30岁之龄,以正式员工身份,进到一家知名外企,在这之前的公司,人数不到30。

2 本人的两个朋友,一个是27,一个是32,进到一家知名外企,之前的公司,说出来大家一定不知道,而且在之前,依然是做增删改查。

3 本人在外企和互联网公司做技术面试官,通过本人技术面试的求职者不少,其中不乏过30岁的人。而且不少人从简历上看,之前依然是小公司。顺带说下,有些大公司的java开发岗,如果着急要人,可能会降低要求。如果这个岗位是vendor(外派岗),要求可能真会更低。

4 本人知道的外企或互联网公司的程序员,其中不少,真可能是之前在小公司,然后找对渠道得到面试机会,然后进外企或互联网公司,而且论能力,虽然不算差,但其实也均是平均水平。

所以到了30岁,哪怕遇到挫折,应当正事问题,可以试错,但不能逃避,比如降薪进到小公司,或者在进小公司的前提下转行做测试等,更不能躺平。


http://www.ppmy.cn/server/33324.html

相关文章

C语言--函数递归与迭代

递归在书写的时候,有两个必要条件: 1.递归存在限制条件,但凡满足这个限制条件时,递归便不再继续 2.每次递归调用之后越来越接近这个限制条件 递归的思想: 把大事化小事 递归其实就是函数自己调用自己 //int main…

java-Spring-mvc-(请求和响应)

目录 📌HTTP协议 超文本传输协议 请求 Request 响应 Response 🎨请求方法 GET请求 POST请求 📌HTTP协议 超文本传输协议 HTTP协议是浏览器与服务器通讯的应用层协议,规定了浏览器与服务器之间的交互规则以及交互数据的格式…

探索图像边缘:使用Python进行轮廓检测

图像处理是计算机视觉的一个重要领域,它涉及到图像的分析和修改,以达到某些目标,如特征提取、图像增强或对象识别。边缘检测是图像处理中一个基础而关键的步骤,它有助于获取图像中对象的轮廓。在本技术博客中,我们将介…

二、VLAN原理和配置

vlan不是协议,是一个技术,虚拟局域网技术,基于802.1q协议。 vlan(虚拟局域网),将一个物理的局域网在逻辑上划分成多个广播域的技术。 目录 1.冲突域和广播域 概念 范围 2.以太网帧格式 3.以太网帧封装…

QT防止自研软件被复制的基本操作(二)

参考一 自研软件为了防止被人任意复制传播,需要设置注册使用模式。基本原理:通过计算机的特异性编号,加上自己的编码,使用加密算法算出一个生成码。 一、计算机的特异性编号 硬盘的编号:最后一块硬盘的编号就行&#…

Redis 实战之压缩列表

Redis 实战 - 压缩列表 压缩列表的构成压缩列表节点的构成previous_entry_lengthencodingcontent 连锁更新总结 压缩列表的构成 压缩列表是 Redis 为了节约内存而开发的, 由一系列特殊编码的连续内存块组成的顺序型(sequential)数据结构。 …

Ubuntu下中文输入法安装

在Ubuntu 22.04系统中安装中文输入法,通常推荐使用Fcitx 5,这是一个功能强大的输入法平台。以下是安装和配置中文输入法的步骤: 1. 安装Fcitx 5: 打开终端,输入以下命令来安装Fcitx 5及其中文输入插件和前端界面&…

教程推荐:手机应用自动化

手机应用程序的自动化通常涉及使用专门设计的自动化框架和工具。对于Android和iOS平台,以下是一些常用的自动化工具: Android: Espresso: Espresso是谷歌官方支持的自动化测试框架。它适用于写UI测试来模拟用户对Android应用的交云。Espresso工作在应用…