面试中更多会考核相关技能的项目经验——再论程序员该如何准备面试

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

面试题是理论方面的,而面试着重考核技术的应用,而一些包含值钱技术的项目,顶了天也是学习项目。可以是通过理论和值钱的学习项目了解技术,然后一定要想办法把这些技术嵌入到你当前项目里,比如你看会了redis,同时你项目里,也做过,并排查过此类问题,两者结合准备面试说辞,这才能让值钱技术帮到你。

5 面试时,博文出书等加分项有多少帮助?

还是这句话,优先看项目经验,并且优先看大厂的项目经验。如果博文和你的书,和当前职位的相关性不大,哪怕在技术过关的前提下,最多帮你挣得一个“比较上进,学习能力强”的评价,如果技术不过关,这些帮不到你,甚至有些比较苛责的面试官还会认为你不务正业。如果博文和书确实能证明你技术的深度,那或许帮助会大些,但前提还是“能结合开发和解决过的问题,讲清楚相关技术的用法和细节”。不过这里说句大家可能不爱听的话,一些公司或项目比较着急要人,或者面试下来的候选人能力都半斤八两,那么如果有候选人有加分项,确实有帮助,但候选人更应该结合当前项目,在技术上下功夫。

和面试相关的问题还有很多,不过如果大家想明白“相关项目经验”的重要性,很多问题其实都会迎刃而解。

3 再回顾看下,为什么你都简历没面试机会

这里先不说过面试,先说如何得到面试机会,因为一方面收到的简历中,很多没面试价值,另一方面,不少候选人投再多的简历,也会石沉大海。

为什么简历没面试机会?原因说白了很简单:职位介绍上要求的技术,在简历上看不到有相关项目经验,或者相关经验年限不足。

比如有些简历上,大书特书项目业务,而看不出项目用到的技术,或者列出的技术和职位要求不匹配,或者筛选的人要费很大功夫才能总结出该位候选人的技术以及使用年限。

你简历投出去以后,如果让对方一眼就看出你技术项目经验第一很匹配,第二年限足够,至少你有面试机会。所以简历无需花哨,可以遵循如下的原则。

1 通读每份职位介绍,定制化简历,开篇总纲性给出所要求技术的使用年限,最大可能匹配。

2 介绍项目时,无需过多写业务功能,多写相关技术的使用技巧,比如分库分表怎么用的,redis用在业务里怎么用的。对于初级开发,尽可能写上调优等亮点。

3 如果可以,多写开发代码以外的技能,比如部署,测试,监控,压测方面的实践技能。

上述第2和第3点需要嵌入项目,如下给出段范例,在xx系统里,我用到了mycat,redis等技术,其中mycat是针对xx业务的xx表进行分库分表,分库字段是xxx,redis是缓存xx模块发来的数据,超时时间是xx,而且针对xx业务的长sql,我们用到了执行计划来调优。此外,在这个项目里,我参与了部署和压测等工作,在压测中,根据xx模块发来的请求,我们第一优化了jvm性能,第二用redis缓存了结果,从而实现了tps xx的效果。

从中大家感受下“技术结合业务”的写法,然后可以展开,这样一写,能清晰地让面试官感觉你在项目里用过,姑且不论实际面试效果,你至少有机会面试。

4 再论如何甄别非商业项目经验,你如何写商业项目经验

其实很多候选人也知道商业项目年限的重要性,所以会把一些学习项目改编成商业项目,甚至还会无中生有,而一些培训班辅导就业的老师还会帮助学员“增加”项目经验。

有些项目编造得比较离谱,比如候选人在比较短的时间内,以比较少的人手完成了一个电商、财务或xx管理系统的项目,而且其中包含的技术都很值钱,分布式的,云的都有。

这类项目比较好甄别,毕竟现在很多是有现成产品的,你再开发违背了商业价值,或者里面提到的技术或者和候选人年限不匹配,或者过于高大上,或者大多是没上线。此类项目的甄别方式,我在从面试官甄别项目经验的角度,说说如何在简历中写项目经验(java后端方向)这篇博文里有详细介绍。

比较难甄别的是真中有假的项目,比如某初级开发最近1年的项目经验只有增删改查,但培训班老师让他把学到的分布式组件技术嵌入到这个项目里。说真的吧,公司项目都有,还真是商业项目,说假的吧,毕竟你没用过,你实际简历上项目经验是由学习项目和商业项目嫁接而成。这种情况下,候选人如果面试时说得很好,真能过关,但论理这种做法毕竟不能算“诚信”。

其实如果候选人写简历不上心,真的商业项目还真会被当成学习项目或编造的项目。如下给出些描述商业项目的技巧。

1 如果从名字上看,会让人误解,比如xx管理系统,xx电商,那么就写上客户方是谁,做了多久,现在上线后的网址是什么。

2 写点商业项目里独有的要素,比如junit单元测试,代码质量管理方式,用到maven,sonar等,这些学习项目大多不会写。

3 写上部署,压测之类的经验,一方面这是亮点,另一方面学习项目一定不会有。

简历上体现这三点,一般就不会被误认为是学习项目,面试时,你再举例说出项目里你解决过的实际问题,比如通过日志或监控发现问题,再说下如何解决的,这样能进一步让面试官感觉这个是商业项目。

5 商业项目里,再简单的技术也能挖掘出亮点

我在面试初级和高级开发时,很多候选人没有主动展示技术亮点的意愿,当我主动问及项目亮点时,不少人只是说些业务方面的。换句话说,我需要很吃力,才能挖掘到候选人的技术亮点,而这本该是候选人的义务。可能会有候选人认为面试官不能慧眼识珠,或者感叹给到的工资很低,但如果你一方面在面试中只展示增删改查,另一方面大谈特谈非技术方面的亮点,或者给出的亮点非常不值钱,那么这就怨不得面试官了。其实,只要是个商业项目,一定能挖掘出很多亮点。

1 项目管理方面,Maven, jira, Jenkins部署,Junit单元化测试,甚至docker, k8s,这些点其实面试时没法深入问,你只要说明了,就能证实一定的项目管理和部署能力,而且这和工作年限无关,哪怕才2年经验的人同样可以展示。

2 项目监控或业务埋点,比如CAT,Zabbix,再不济可以是监控log里exception,error关键字,以此引申出通过检查日志分析并排查问题的能力,面试中,借此还能引导到JVM调优,数据库性能优化和分布式组件方面的问题。

3 Java核心这块就不说了,稍微看些资料,就能挖掘出异常处理规范,快速失效,线程并发,HashMap等问题,而且这块还可以结合底层代码讲。

4 数据库性能优化方面,可以结合索引和执行计划,如果可以再带出MyCAT。

对于初级开发而言,如果能充分展示上述方面的能力,一般的公司应该没问题,小公司就更不说了,如果再能展示分布式组件方面的能力,估计挑战下大厂也没问题。但本文的主题是结合项目展示技能,下面再给出些“技术结合项目业务”的说辞。

1 集合方面,我们项目在遍历Arraylist等对象时,需要考虑快速失效的问题,因为在测试过程中发现过此类问题,然后展开。

2 数据库方面,我们项目会对慢sql进行监控,发现后会结合索引和执行计划调优,比如在订单模块里,一个sql过慢,发现是因为表关联太多,经过调整表结构后,此类问题就解决了。

3 我们项目上线后,用zabbix监控内存,一旦发现过量,则会用dump观察镜像,并根据日志排查问题,发现过的内存问题有,在订单模块里,过量使用ThreadLocal没释放,或者是用了大量的ArrayList没clear。

4 我们项目里,由于需要从网络接口多次获得数据,所以用redis缓存数据,在实践过程中,会适当地设置超时时间,而且会用xx策略设置缓存主键,以防缓存被击穿。

从中能看到,这些说辞结合了业务,比起单纯地讲理论要好很多,你这样一说,就能让面试官确信你确实有过实战经验,如果你说得好,甚至还能让面试感觉你还有实际的排查问题解决问题的能力。而且,上述说辞都是很基本的,成本也不高,大多数项目都会用到。相比很多候选人无视这些亮点,只展示增删改查的能力,你结合项目再多挖掘些,面试官一定会认为你比别人强。

6 以一组提问方面为例,分析如何在面试中准备值钱技术

这里就以之前提到的数据库方面的问题,分析如何结合项目准备值钱技术。

1 基础层面,用过哪些数据库,多少经验?Jdbc里preparedstatment的用法,以及索引的概念等。

这部分通过背题可以通过,问题不大。

2 调优层面,索引,执行计划的技巧,比如哪些sql用不到索引,并问在项目里建过哪些索引,执行计划要看哪些要素。

先全面了解索引,执行计划等概念,了解的时候需要涉及底层。然后观察当前项目的的慢sql,看解决这些慢sql时,是怎么用到索引的,在看执行计划时,是根据哪些要素分析痛点,比如是因为没走索引还是走全表扫描,据此准备若干个例子。面试时一旦被问到,先说索引数据结构,复合索引,执行计划观察要点等理论知识,再结合你准备好的实际问题,说下如何在项目里用的。

3 排查问题层面,请结合实例,给出监控慢sql的做法,并讲下用执行计划等分析和解决慢sql的方法。

准备下观察日志,观察监控的说辞,比如讲,在项目里,是用linux的xx工具监控慢sql,或者cat监控如何配置,如何报警。再结合若干线上案例,讲下引发慢sql的原因,以及你是如何通过观察日志分析问题,最后通过什么方法解决的,解决的方法无非也是建索引,引入redis等。

4 如果是资深开发和架构师岗,再问mycat, redis集群方面的问题,比如如何部署,分库规则,缓存时间等,也要求讲述分析排查和解决实际问题的经验。

这块首先需要讲配置,比如分库规则如何配,redis超时时间怎么配,集群如何用zk管理的,讲的时候结合项目。同时也可以根据常见的问题,比如kafka消息重复消费,或者mycat遇到没分库规则的sql,说下你是怎么解决的。

或许面试官未必会照着上述思路来提问,但面试官一定会核实你的技术是否有项目经验,所以大家同样可以围绕“基础知识”、“结合项目的调优技能”、“如何监控和发现问题”以及“解决线上问题用到的技能”这些方面准备面试说辞,面试时一一展开,刚才也说了,再简单的项目也能挖掘不少值钱点,你就照着这个思路准备,一定能挖掘到不少亮点。至于该准备哪些方面的亮点?在最近面了不少java开发,据此来说下我的感受:哪怕事先只准备1小时,成功概率也能大大提升和已经提到过的如何准备Java面试?如何把面试官的提问引导到自己准备好的范围内?博文里,已经有了足量的说明。

最后

既已说到spring cloud alibaba,那对于整个微服务架构,如果想要进一步地向上提升自己,到底应该掌握哪些核心技能呢?

就个人而言,对于整个微服务架构,像RPC、Dubbo、Spring Boot、Spring Cloud Alibaba、Docker、kubernetes、Spring Cloud Netflix、Service Mesh等这些都是最最核心的知识,架构师必经之路!下图,是自绘的微服务架构路线体系大纲,如果有还不知道自己该掌握些啥技术的朋友,可根据小编手绘的大纲进行一个参考。

image

如果觉得图片不够清晰,也可来找小编分享原件的xmind文档!

且除此份微服务体系大纲外,我也有整理与其每个专题核心知识点对应的最强学习笔记:

  • 出神入化——SpringCloudAlibaba.pdf

  • SpringCloud微服务架构笔记(一).pdf

  • SpringCloud微服务架构笔记(二).pdf

  • SpringCloud微服务架构笔记(三).pdf

  • SpringCloud微服务架构笔记(四).pdf

  • Dubbo框架RPC实现原理.pdf

  • Dubbo最新全面深度解读.pdf

  • Spring Boot学习教程.pdf

  • SpringBoo核心宝典.pdf

  • 第一本Docker书-完整版.pdf

  • 使用SpringCloud和Docker实战微服务.pdf

  • K8S(kubernetes)学习指南.pdf

image

另外,如果不知道从何下手开始学习呢,小编这边也有对每个微服务的核心知识点手绘了其对应的知识架构体系大纲,不过全是导出的xmind文件,全部的源文件也都在此!

image

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-d4xDLsnp-1713557447078)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值