1 幸存者偏差,其实有不少简历甚至无法到达面试官的手上
面试前我拿到手的简历,一般看上去都行,其实有不少简历已经被过滤掉了,我本人也做过筛选简历的工作,在我之前的博文里也分析过哪些简历可以帮你争取到面试机会,这里就再啰嗦下,讲下哪些面试得不到面试机会。
1 无法证明自己在相关技术上有足量的工作或项目年限。比如某岗位需要3年Java开发经验,你简历上虽然给了一大堆项目描述,但无法总结性地写明你有3年Java开发经验,那估计面试机会。
2 虽然年限够,但简历上看不出本岗位需要的技术,比如本岗位需要spring cloud外带netty和dubbo,你简历上项目描述很花哨,前端有vuejs后端用ssm,还有jvm调优经验,但关键技术没,那估计也没面试机会。
3 简历上有明显的缺陷或矛盾点,比如最近半年没工作,学历不够,或非计算机相关专业且技能描述过于简单,或项目时间和之前工作过的公司时间对不上。
其实我个人感觉,那么能力再一般,至少能用简历得到小公司的面试机会,只要你的简历符合如下的条件。
1 对于社招而言,学校,专业,学历其实重要性并大,一些小厂或者外派岗位甚至更关注项目经验,但你要写清楚有足量的相关技术项目经验(比如java),且要进一步用公司和项目经历证明这点。
2 写清楚你熟悉职位介绍上的技术,这同样是态度问题,你就仔细阅读每份职位介绍,然后针对性地完善项目介绍。
3 对于一些负面因素,一定要加上说明,比如你最近半年没工作,或最近跳槽太频繁,你可以给出客观理由,不是你主观上不稳定或能力差,是有其它客观因素,比如换城市发展,或者考研。
2 甄别项目经历的要点和发问方式
作为面试官,拿到简历后会通读其中的公司经历和项目介绍,以此来甄别真实的商业项目经验,哪些点比较可疑呢?
1 比如要招个Java开发,如果候选人有培训班经历,需要确认之前的经验是否和Java相关,一般情况下,候选人之前是没做Java,这样候选人的相关工作经历年限就达不到面试要求了。
2 小公司但做大项目,比如公司规模也就几十号人,但用半年做了一个电商系统,而且里面分布式技术都用全了,那么这种项目需要重点甄别。
3 简历上最近的项目描述,候选人一般比较上心,此外还要看一年前或两年前的项目描述,看其中的技术是否有矛盾,比如有候选人两年前用的技术和最近项目用的技术都一样,估计是复制粘贴的,这就露馅了。
上述甄别的目的是,确认相关技术或经历的年限,排查自编或学习的项目经历年限,比如公司给的工资是针对3年项目经验的,如果你用虚假经历来顶替,那么一方面不利于项目组,另一方面就不利于其它候选人。
这些疑点是需要在技术提问前确认好的,也就是说,如果疑点被确认属实,就说明候选人相关技术年限不达标,就没有继续面试的必要了,那么怎么确认?
如果本项目组或其它项目组需要初级开发,而候选人简历上确实有疑点,一般我会明说,你xx项目看上去像学习项目,你和我说实话,如果你告诉我这些项目是真实项目,那就我按高级开发的真实项目面了,如果你告诉我是学习项目,那么我就用初级开发的标准面(或让其它项目组的面试官面),可能初级开发的工资会少,但问题相对简单。这样大多数候选人会说实话,这样两厢方便。
如果没有初级开发岗,对于这些疑点项目,我会围绕如下的点来发问。
1 确认项目人数,项目周期和客户方,以及项目现在是否已经上线。对于编造或学习项目,一般项目都不会上线。
2 询问项目打包编译和部署的方式,一般的项目都用maven或gradle打包,或者用ant也算了,一般部署在linux上,出于可用性方面的考虑,会同时会部署在多台机器上。如果项目真实做过,候选人多少也能说出些,但如果是学习项目,那么回答就五花八门了,我甚至听说过部署在windows机器上的。
3 询问项目的管理方式,比如用什么工具来管理版本(比如git或svn等),代码review是怎么做的?用什么工具来管理bug(比如jira等),用什么工具画uml图,怎么做单元测试?(比如junit)开发代码时需要注意哪些规范。这些也是真实做过项目才能知道。
4 问你项目里怎么输出日志,你怎么通过日志来排查问题。一般上线后,日志都打在linux上,但如果是学习项目,则只能在windows上看日志了。
5 一般真实项目至少会配两套环境,一套测试用,一套上线用,而学习项目(甚至培训班项目)只会用一套。所以我也会对应地问,你项目是怎么搭建这两套环境,这两套环境里配置文件是怎么区分的?
通过上述方式我还真甄别出不少学习或虚假项目。其实我知道,上述甄别方式的作用有限,比如有候选人最近一个项目是真实的,但之前项目是自编的或学习项目,他完全可以用最近一个项目的说辞套在前一个项目里,这就需要用如下的甄别说辞的发问方式了。写到这里,我不敢庆幸,更不敢幸灾乐祸,只有叹息,职责使然,不敢拿公司的信任做人情。
3 值钱技术“嫁接”到真实项目上的甄别之道
其实在我之前的博文聊聊我当年在培训学校做开发的经历里已经提到,“半真半假”的项目经历最难甄别,这话怎么讲呢?
候选人的公司是真实的,项目也是真实的,但候选人用了这个真实的“壳”加入了虚假的技术。比如候选人在最近的项目里明明只做了最基本的增删改查,但结合项目背景和业务应用添加了从视频课里掌握的分布式组件、性能调优以及JVM调优的说辞。甚至可以这样说,有一部分程序员就在本身项目经验不足的情况下,靠这种技巧升级到资深开发或架构师。
作为面试官,当看到候选人在简历上有分布式之类的值钱经验时,就需要考核这些经验是真的从项目里积累的,还是只掌握了理论经验。如果候选人在简历中还有有“培训班”、“小公司”和“转行”之类的要素,更要重点考核,如下给出具体的甄别之道。
第一问技术的使用背景,比如分布式用在高并发,分库分表和数据库调优用在大批量数据,就请候选人告诉我,你的业务里,哪些点需要用到这些值钱技术。有些候选人值钱技术只是从网络教学视频上学的,没项目实践经验,这个一问就能问出来。
第二问技术的最基本的用法,比如Redis缓存,就问如何以Hash表方式读取数据,对于Dubbo,怎么设置超时时间,Kafka里怎么设置消息重发,这些问题不求难,只要是用过就一定能知道,但不少候选人如果连这个都说不上,后面我就不会再问了。
如果能回答好第二层问题,那么至少说明候选人用过,接下来会是第三层的问题,问项目里解决过哪些实际问题,再具体些,用到分布式等技术总是要解决高并发等问题,我就问,你项目的并发量是多少?为了应对这个并发量,你项目里用到哪些组件,这些组件是如何构成集群,如何部署在linux上的?
以Redis举例,根据上述三层提问的方式,我一般会问如下的问题。
1 你项目业务的并发量是多少?结合一个业务场景,告诉我,你们项目用到了哪些Redis数据结构?这是问技术的使用毕竟
2 你们项目里,Redis对象的缓存时间一般设多少?(一般项目都会设,否则对象会堆积在内存里,从而导致OOM)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
结尾
这不止是一份面试清单,更是一种”被期望的责任“,因为有无数个待面试者,希望从这篇文章中,找出通往期望公司的”钥匙“,所以上面每道选题都是结合我自身的经验于千万个面试题中经过艰辛的两周,一个题一个题筛选出来再次对好答案和格式做出来的,面试的答案也是再三斟酌,深怕误人子弟是小,影响他人仕途才是大过,也希望您能把这篇文章分享给更多的朋友,让他帮助更多的人,帮助他人,快乐自己,最后,感谢您的阅读。
由于细节内容实在太多啦,在这里我花了两周的时间把这些答案整理成一份文档了,在这里只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
GC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**