今年Java真不好找工作了吗?

程序员cxuan 2023-11-17 08:01

作者:技术王
链接:https://www.zhihu.com/question/612836951/answer/326677357

先介绍下背景

从我的观察和自己面试来看,不好找,而且是越来越不好找,同时,招聘也不好招,尤其今年特别奇怪,我就谈谈今年的情况吧。

年初的时候有个小伙要走人,事情非常突然,当然肯定是找到更好的下一家了,但是我们这边就不好做了,本来团队中是一个萝卜一个坑了,人员冗余你是别想了,总之一句话,少了谁,其他人都会压力倍增,都不会好过。

那么少了一个就得补上啊,上面的意思是不补了,只出不进,然而压力太大了,每个人都忙到晚上十多点,是真的事多,一个人挂好几个任务,我们是云原生的监控平台,平台性质决定了我们肯定是要服务好业务部门的,大家都比书记还忙,同时对接好几件事情,这么说吧,白天你就别想正常干活,终于懂了为什么人家要配秘书了。不过对于这件事,头头还是费了不少脑筋来争取的,最终上面终于松口了,但是必须要非常全面的人才,能独当一面的,行业经验丰富的。

毫无疑问,这件事落在了我们身上,我去找HR小姐姐沟通吧,需要招聘一个后台,然后我把jd都写上了,要求5年以上经验,jvm调优,高并发,微服务,响应式等常见技能吧,当然,由于我们是做监控的,如果有监控相关经验,可以加分,比如做过调用链、拨测、日志中心、主机、容器,告警,异常检测,网络监控等相关监控的,更是我们的香贝贝,于是我把jd发过去了。

第二天,小姐姐反馈我这个jd写的不行,简历一上去,就好几百人投了过来,已经收到上千份简历了,就为了我们这边招聘个人眼睛都花了,其他的工作不用做了吗?她说我说的这些技能,大家都掌握,而且个个说自己精通,让她怎么选?

我说不是有加分项吗?如果有监控相关经验的,会给加分项,你重点看看有没有监控相关经验的不就行了?她说,我哪里知道什么监控相关经验,看了这么多简历都没写这方面的经验,我问他们,他们都说会监控这方面的技能,让我怎么挑选?

我说监控系统的开发确实比较小众,不行就这样吧,挑选几个大厂的,项目经验稍微复杂点的,经验相对丰富一些的,这样好选了吧?

她说,我肯定是这么干的啊,上千份简历,大厂就三四百份,项目经验我也不太懂,但是都写的挺复杂的,经验我是完全按照你的要求来写的,5年以上经验,还有两百多份简历,要不都推给你?

都推给我,我心理肯定是抗拒的,我这边的事情都焦头烂额,我肯定没时间去筛选这些简历,再说,筛选简历我还真不一定有HR的眼力准,毕竟掌握的技能大家都差不多,5年以上经验的,简历也是写的很成熟了,都有亮点。

这里主要是有个难题,我们想要监控系统相关经验的开发,但是又找不到,只能从其他方向的招人,其他方向的都很优秀,人也很多,这个挑选可真是难倒我了。

最后实在没办法,挑选了几个,你可以这么理解吧,随机挑选了10份简历。

那么这几个人,我就都来介绍下面试情况吧。

面试者1

某手机厂商相关经验,经验非常丰富,8年工作经验,做的是金融业务,不过大厂做金融也没啥奇怪的了,让他来面试,主要是看他技术栈是异步编程、异步框架、时序数据库、elastic等方面比较自信,这些东西跟监控的技术还是比较重合的。

我们对这个人的要求,当然是独当一面。但是也得先来点面试题热热身,否则这么多人我怎么挑选?

出了一道大根堆排序,10分钟被粉碎,我挺满意。问jvm调优经验,居然扯到了g1垃圾回收的内存不可观测性,看来确实有过这方面的经历,问为什么要用g1,回答说主要考虑卡顿毛刺小,尤其是很多金融业务响应要求小于50ms,用默认回收器是会有很多问题的,Java在做高响应问题的时候会存在很多诡异的问题,当然,他们用g1能减轻部分这样的问题。同时还扯到了arthas的不准确性,尤其是统计一些小于50ms的请求,arthas也不一定能完全统计准确。我问原因是什么,回答并没有找到什么原因,当然我也是头一次听说。

其他的八股文,如es分词器底层原理?druid自动聚合性能问题?异步框架如何监控?异步框架如果出现线程阻塞这种大麻烦怎么办?也是根据简历上问的,基本上回答的八九层吧。

其他的,问一些工作相关处理能力,需求方的业务如何对接?稳定性保证的一些手段?生产频繁出问题的解决手段?如何对模块的工作进行规划?如何制定okr等等。

这些问题,没有标准答案,但是要有自己的思考和套路在里面,我的目的是想知道他有没有站在一个更高的维度去考虑问题,显然他做到了。

最后问他期望薪资,他反问我们的薪资结构,这一点让我很不舒服,我直接回答了一句不知道,然后他说大概要求年薪60个w以上吧。这个要求当然不过分,放在几年前企业抢着要,估计他前面面试了不少家了吧,估计要求放低了,这个还是挺中规中矩的,比正常略微偏低。

当然,对不起,最后没要。原因后面会提到。

面试者2

这位面试者,找他来,主要是看到他的项目中有javaagent相关经验,这是非常宝贵的经验,虽然不是做调用链这方面的吧,但是原理其实都一样的。也是8年经验,大厂同学,目前待业状态,当然,待业状态的我会重点考虑,原因你懂的。

这位朋友是做云原生方面的,也是to b方向的,这也是看中他的一点,不过他做云原生主要是做cicd方面,根据我对公司cicd的了解,要求对技术的理解还是很深入的。他们用javaagent主要做代码扫描相关,测试覆盖率相关,以及他提到的改造了阿里的ttl的javaagent让我很感兴趣,好了,说说面试情况吧。

上来同样手写一道大根堆算法题,为什么又是这道题?因为其他的我不熟练了,如果选快排序他们肯定准备了,所以只选这道题了。这个同学可能没复习好,算法题磨蹭了半个小时,我说好了没关系,说说你的思路吧,最终他说的思路基本上正确,这一关我也就让他过了。

重头戏是javaagent,所以我也不废话了,直奔主题。问他字节码装配的时机是什么时候,回答说main方法执行之前会注册装配,main方法之后,类从磁盘加载到内存的时候会发生装配这个动作。确实是这样,看来理解比较到位了,我又问如果发现某个类装配不上去是什么原因?他说是因为类的加载发生了在装配器注册之前,就会出现这样的情况,我问什么时候会发生这样情况,他说比如在premain里面就加载了类,或者多个javaagent相互冲突的情况。看来是经验比较丰富了,我问冲突的原因是什么,怎么解决?他说冲突的原因就一个,多个javaagent破坏了类加载的顺序,要么调整javaagent的顺序,要么进行合并?哟?我头一次听说还有javaagent合并的说法,我问怎么合并?回答说就是两个javaagent的代码写到一起,比如我们针对jacoco的代码覆盖率,就跟阿里的ttl相互冲突了,所以我们把ttl整合进了jacoco里面,说到这里,我真是醍醐灌顶,这个合并操作还真可以解决这个问题。

接下来,我问了一些关于ASM和bytebuddy以javaassist等有关字节码编辑框架的问题,当然,他是比较熟悉bytebuddy的,因为他们自己的javaagent里面,直接使用了bytebuddy做了一套动态代理,你可以这么理解吧,就是做了一套spring的自动注入,我问为什么不直接使用spring,回答说,他们公司目前的jdk版本存在很多版本,甚至还有些是jdk7的版本,为了相互兼容,不得不自己用jdk7以及bytebuddy去实现一套依赖注入,我听着好像有点道理,不过具体的原因我也不太明白,没有继续问下去了。

至于八股文,那是必须的,从响应式、大数据、异步编程、数据检测等监控相关的技术栈问了,回答的很一般,估计是刚从大厂毕业没多久,很多技术八股文没准备好。为了给他多一点机会,我还问了会不会go语言,有没有做过数据采集这方面的工作?回答并没有。

还有是他们工作上的cicd的夸机房上传、文件安全性检验、代码热部署、流水线冲突、构建迟钝等等问题,我都问了个遍,这些回答,满分100分的话,最多只能打75分,好像他只熟练javaagent。

最后肯定没要,在我这里就决定了不要了,我连期望薪资都没问他了。

面试者3

某世界500强企业毕业,主要做的项目是iot,物联网确实是非常火爆的一个项目,也是未来的大方向,真不懂这种好方向的人为什么还要转行来我们这边做监控。让他来面试,主要考虑几点:简历确实优秀,经历也多,技术栈匹配程度相比于其他同学高一点,其次工作空档了半年了,估计是很想找到一份工作,现在形式这么差,也不怕他进来后就走人。

6年工作经验,iot方向4年,经历都是大家知道的大厂,简历上还这了从0到1做了这个物联网方面的项目,这一点我最看重,这样的人应该综合能力比较过硬吧。

没得说,大根堆算法伺候好了,不过也是磨磨蹭蹭了半个小时没写出来,好吧,没关系,同样我问问思想,含含糊糊也回答不上来,估计没专门复习过。

那么既然是iot项目,我就不啰嗦了,直接从设备到移动端来看看能不能整蒙你。

我问你们设备有多少?回答同时在线400+的w,那么这个设备量还是可以了,这个接入层是怎么做的?回答是用阿里云的slb,其实用别人的云,在我心理是降分的,所以我又问,为什么用slb,原理是什么?阿里云的slb有什么特点?支支吾吾回答不上来,只回答了一些关于四层负载均衡的原理,我反问不是你从0到1做起来的吗这个项目,你怎么会不清楚?他回答说那是上上家公司,那家公司的设备量没有这家的大。当然,我瞬间明白了。

既然如此,那么我在问接入层后面的应用层,怎么做的?回答说应用也有个接入层,大约100来台机器,每台机器维持5个w左右的tcp长连接,与设备是tcp长连接的。然后指令上报和指令下发都是通过这个连接。

接下来问了一些项目设计的问题,如下发指令的时候,怎么知道哪台设备连接的是哪台机器?回答说使用了etcd这种配置中心保存设备连接到的机器,问为什么用etcd,为什么不用zookeeper,回答etcd是key value模型,性能要好,一致性算法的效率更高,易用性和容易维护等等。

接下来就扯了etcd的原理和zookeeper原理,给了他张a4纸,徒手写了raft协议和zab协议,勉强能过。

简历写说接入层用过netty写,问了netty相关东西,不过我不太熟悉netty,稍微问了下。

综合判断下来,对他们的项目理解还是比较深入,他自己强调综合能力,其实我看综合能力一般,我本来就是看他简历上写综合能力强才让他来面试的。主要是技术点太狭窄,比如八股文方面,除了关系型数据库,其他的一窍不通,比如没有监控和云原生的概念,比如大数据方面直接就跟我说不懂,比如一些监控的原理也没有去了解过,比如linux相关的优化经验也没有等等,这些原因主要是因为他们的项目中基础设施非常简陋。

最后肯定没要。

面试者4

大概面试了七八个人,我就不多说了,我最后说一个我们最终要的吧。

某大厂程序员,7年工作经验,某电商企业毕业员工,说句实在话,对于电商方面的项目及其毕业的学生,我是真看烂了,铺天盖地的秒杀活动,层层限流,动辄高并发高可用,架构设计,微服务,大家都是这么写,所以看到电商方面的项目经验,真的有点审美疲劳了。

但是,为什么我还是会要这个电商小伙呢?主要是这几个原因,首先是技术栈,除了电商必备的什么微服务、什么高并发等,他还知道flume、flink、Hadoop等大数据技术,而且还在他们的电商项目中做过这样的项目,而且他还参与过团队中的一些基础性的建设,比如采集一些主机和DB的数据,主要使用Go语言,如果他的回答能够达到八分以上,我肯定是要了,实在太疲劳了。

首先,大根堆算法走起,他没有让我失望,20分钟左右写出来了,可能有些边界不太准确吧,这个不影响。

首先从项目开始,不上八股文。问你们那边的订单这么多状态,光是退货就好多种状态吧,而且涉及到的系统如此之多,那么一致性是如何保证的,会不会存在订单货退完了钱没返回给用户的情况?如何避免这种情况?回答我相当满意,涉及到多系统、多状态的问题,一致性是个非常鸡肋的问题,不可能所有订单都能保持一致性,所以有一套系统是专门监控业务的,比如目前系统有多少订单是已经完成了款项还没到商家的,比如当前系统多少订单退货完成了款还没有退回给用户的,比如现在多少订单是下单了还没收到付款信息的,每分钟收到付款多少,每分钟下单数量又是多少,库存与订单的数据差异是多少等等,有个非常大的dashboard看板,可以时时刻刻观察,

那么,如何确定出现了不一致性呢?那就要通过不同的角度来监控了,然后根据不同的角度观测到的数据进行比对,如果双方对不上,肯定是出现了不一致的现象。比如对于订单测来看,发起了多少笔退款请求,从退款测来看,又收到多少笔退款请求,两者一对比,就知道是不是一致了。所以业务监控非常重要。虽然我是专业做监控的,我也是仅仅对基础设施进行监控,对业务的这种监控还是第一次这么完善的听说过。看来电商业务是一门比较深的业务了。

问为什么要用到大数据,回答是因为需要给商家做很多数理统计,方便商家做数字化运营,比如流量来源方面,使用了超大规模图数据库 Nebula,通过ETL和flink等计算单元,将流量整合进入到库里面,至于这个库,他们对其中的源码还进行了改造,主要是考虑集群性能方面,做了一些裁剪。我没经历过没具体问了。比如对商品流量来源的特色统计,需要大规模的flink单元计算,统计每个商品的各个维度的流量特性等等。

存储方面呢?使用了elastic、druid、TSDB、hdfs等等技术,算是很高端了,接下来询问很多细节方面的问题,也能正常回答上来。问采集数据主要是采集什么数据,目的是什么,用什么技术。回答主要是采集DB的特性数据,也是为了订单的一致性服务的,如订单入库的数量和服务端发起入库的数量,数据双向对比,使用的技术是Go语言,通过采集mysql端口的方式来解决,因为这种需求比较个性化,所以基础平台部并没有做,只能自己做了。

说到Go语言,我问是否使用过Prometheus,回答使用是基础,对Prometheus的源码研究是比较深入了,问介绍下源码,他从Prometheus的采集数据、数据清理计算、存储、异常检测、可视化、告警策略等多个方面进行了阐述,细节方面也考虑到了,对Go的理解也很深入。

几乎是无懈可击了,然后是问了几个八股文,包括jvm方面、mysql索引优化方面、Linux性能诊断方面,八股文回答大概八分左右吧,还是很不错的。

最后问了下关于对模块的建设经验、架构的定义标准、性能的评判准则、效率的提升手段等等方面,虽然这方面的看法认知还差点意思,但是都有一定的看法,只要以后稍微多往这方面去靠,两三年就能达到一个非常高的水平的,可塑性比较强这个同学。

最后我问了期望薪资,要了年薪70个w,说实话,算比较合理了,但是我们这边估计很难给的到,毕竟才7年经验。主要考虑到是研究生学历,最终公司给出了65个w的年薪,我以为他不会来的,他这种人在市场上是很香的,要是几年前,再吹嘘和包装一下,70个w是绝对没有问题的。

结局

跟公司拉扯了几天,结果他还是65个w的年薪来了,所以你告诉我现在好不好找工作。

还有一点,大家看到了没有,5年经验以下的,我们基本上不会招聘进来,除非你是应届生,我们按照应届生的待遇来招聘,否则是不可能的,但是5年以上的经验,要求又会相对高一些,研究生学历最好,不是企业要求高,而是人真是太多了,不仅仅多,而且都很优秀,还不会漫天要价,你告诉我,现在的难不难?java好不好找工作?

程序员cxuan cxuan 写的文章还不错。会分享计算机底层、计算机网络、操作系统,Java基础、框架、源码等文章。
评论
  • 1,微软下载免费Visual Studio Code2,安装C/C++插件,如果无法直接点击下载, 可以选择手动install from VSIX:ms-vscode.cpptools-1.23.6@win32-x64.vsix3,安装C/C++编译器MniGW (MinGW在 Windows 环境下提供类似于 Unix/Linux 环境下的开发工具,使开发者能够轻松地在 Windows 上编写和编译 C、C++ 等程序.)4,C/C++插件扩展设置中添加Include Path 5,
    黎查 2025-02-28 14:39 140浏览
  • 一、VSM的基本原理震动样品磁强计(Vibrating Sample Magnetometer,简称VSM)是一种灵敏且高效的磁性测量仪器。其基本工作原理是利用震动样品在探测线圈中引起的变化磁场来产生感应电压,这个感应电压与样品的磁矩成正比。因此,通过测量这个感应电压,我们就能够精确地确定样品的磁矩。在VSM中,被测量的样品通常被固定在一个震动头上,并以一定的频率和振幅震动。这种震动在探测线圈中引起了变化的磁通量,从而产生了一个交流电信号。这个信号的幅度和样品的磁矩有着直接的关系。因此,通过仔细
    锦正茂科技 2025-02-28 13:30 100浏览
  • 振动样品磁强计是一种用于测量材料磁性的精密仪器,广泛应用于科研、工业检测等领域。然而,其测量准确度会受到多种因素的影响,下面我们将逐一分析这些因素。一、温度因素温度是影响振动样品磁强计测量准确度的重要因素之一。随着温度的变化,材料的磁性也会发生变化,从而影响测量结果的准确性。因此,在进行磁性测量时,应确保恒温环境,以减少温度波动对测量结果的影响。二、样品制备样品的制备过程同样会影响振动样品磁强计的测量准确度。样品的形状、尺寸和表面处理等因素都会对测量结果产生影响。为了确保测量准确度,应严格按照规
    锦正茂科技 2025-02-28 14:05 134浏览
  •           近日受某专业机构邀请,参加了官方举办的《广东省科技创新条例》宣讲会。在与会之前,作为一名技术工作者一直认为技术的法例都是保密和侵权方面的,而潜意识中感觉法律有束缚创新工作的进行可能。通过一个上午学习新法,对广东省的科技创新有了新的认识。广东是改革的前沿阵地,是科技创新的沃土,企业是创新的主要个体。《广东省科技创新条例》是广东省为促进科技创新、推动高质量发展而制定的地方性法规,主要内容包括: 总则:明确立法目
    广州铁金刚 2025-02-28 10:14 103浏览
  • 更多生命体征指标风靡的背后都只有一个原因:更多人将健康排在人生第一顺位!“AGEs,也就是晚期糖基化终末产物,英文名Advanced Glycation End-products,是存在于我们体内的一种代谢产物” 艾迈斯欧司朗亚太区健康监测高级市场经理王亚琴说道,“相信业内的朋友都会有关注,最近该指标的热度很高,它可以用来评估人的生活方式是否健康。”据悉,AGEs是可穿戴健康监测领域的一个“萌新”指标,近来备受关注。如果站在学术角度来理解它,那么AGEs是在非酶促条件下,蛋白质、氨基酸
    艾迈斯欧司朗 2025-02-27 14:50 400浏览
  • RGB灯光无法同步?细致的动态光效设定反而成为产品客诉来源!随着科技的进步和消费者需求变化,电脑接口设备单一功能性已无法满足市场需求,因此在产品上增加「动态光效」的形式便应运而生,藉此吸引消费者目光。这种RGB灯光效果,不仅能增强电脑周边产品的视觉吸引力,还能为用户提供个性化的体验,展现独特自我风格。如今,笔记本电脑、键盘、鼠标、鼠标垫、耳机、显示器等多种电脑接口设备多数已配备动态光效。这些设备的灯光效果会随着音乐节奏、游戏情节或使用者的设置而变化。想象一个画面,当一名游戏玩家,按下电源开关,整
    百佳泰测试实验室 2025-02-27 14:15 137浏览
  • 在物联网领域中,无线射频技术作为设备间通信的核心手段,已深度渗透工业自动化、智慧城市及智能家居等多元场景。然而,随着物联网设备接入规模的不断扩大,如何降低运维成本,提升通信数据的传输速度和响应时间,实现更广泛、更稳定的覆盖已成为当前亟待解决的系统性难题。SoC无线收发模块-RFM25A12在此背景下,华普微创新推出了一款高性能、远距离与高性价比的Sub-GHz无线SoC收发模块RFM25A12,旨在提升射频性能以满足行业中日益增长与复杂的设备互联需求。值得一提的是,RFM25A12还支持Wi-S
    华普微HOPERF 2025-02-28 09:06 143浏览
  •         近日,广电计量在聚焦离子束(FIB)领域编写的专业著作《聚焦离子束:失效分析》正式出版,填补了国内聚焦离子束领域实践性专业书籍的空白,为该领域的技术发展与知识传播提供了重要助力。         随着芯片技术不断发展,芯片的集成度越来越高,结构也日益复杂。这使得传统的失效分析方法面临巨大挑战。FIB技术的出现,为芯片失效分析带来了新的解决方案。它能够在纳米尺度上对芯片进行精确加工和分析。当芯
    广电计量 2025-02-28 09:15 116浏览
  • 美国加州CEC能效跟DOE能效有什么区别?CEC/DOE是什么关系?美国加州CEC能效跟DOE能效有什么区别?CEC/DOE是什么关系?‌美国加州CEC能效认证与美国DOE能效认证在多个方面存在显著差异‌。认证范围和适用地区‌CEC能效认证‌:仅适用于在加利福尼亚州销售的电器产品。CEC认证的范围包括制冷设备、房间空调、中央空调、便携式空调、加热器、热水器、游泳池加热器、卫浴配件、光源、应急灯具、交通信号模块、灯具、洗碗机、洗衣机、干衣机、烹饪器具、电机和压缩机、变压器、外置电源、消费类电子设备
    张工nx808593 2025-02-27 18:04 120浏览
  • 在2024年的科技征程中,具身智能的发展已成为全球关注的焦点。从实验室到现实应用,这一领域正以前所未有的速度推进,改写着人类与机器的互动边界。这一年,我们见证了具身智能技术的突破与变革,它不仅落地各行各业,带来新的机遇,更在深刻影响着我们的生活方式和思维方式。随着相关技术的飞速发展,具身智能不再仅仅是一个技术概念,更像是一把神奇的钥匙。身后的众多行业,无论愿意与否,都像是被卷入一场伟大变革浪潮中的船只,注定要被这股汹涌的力量重塑航向。01为什么是具身智能?为什么在中国?最近,中国具身智能行业的进
    艾迈斯欧司朗 2025-02-28 15:45 221浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦