本人知乎账号同公众号:老胡聊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岁,哪怕遇到挫折,应当正事问题,可以试错,但不能逃避,比如降薪进到小公司,或者在进小公司的前提下转行做测试等,更不能躺平。