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

学习分享,共勉

这里是小编拿到的学习资源,其中包括“中高级Java开发面试高频考点题笔记300道.pdf”和“Java核心知识体系笔记.pdf”文件分享,内容丰富,囊括了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。同时还有Java进阶学习的知识笔记脑图(内含大量学习笔记)!

资料整理不易,读者朋友可以转发分享下!

Java核心知识体系笔记.pdf

记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经

中高级Java开发面试高频考点题笔记300道.pdf

记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经

架构进阶面试专题及架构学习笔记脑图

记一次蚂蚁金服Java研发岗的面试经历,分享下我的复习笔记面经

Java架构进阶学习视频分享

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

这对候选人提升技术一定有帮助,但不能算作商业项目经验,如果有些初级岗,或者是校招,有此类项目总比没有强,如过已经工作过,那么抱歉,此类项目对候选人帮助不大。

4 网上的面试题,以及基于分布式等高大上值钱的项目有用吗?

面试题是理论方面的,而面试着重考核技术的应用,而一些包含值钱技术的项目,顶了天也是学习项目。可以是通过理论和值钱的学习项目了解技术,然后一定要想办法把这些技术嵌入到你当前项目里,比如你看会了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集群方面的问题,比如如何部署,分库规则,缓存时间等,也要求讲述分析排查和解决实际问题的经验。

结语

小编也是很有感触,如果一直都是在中小公司,没有接触过大型的互联网架构设计的话,只靠自己看书去提升可能一辈子都很难达到高级架构师的技术和认知高度。向厉害的人去学习是最有效减少时间摸索、精力浪费的方式。

我们选择的这个行业就一直要持续的学习,又很吃青春饭。

虽然大家可能经常见到说程序员年薪几十万,但这样的人毕竟不是大部份,要么是有名校光环,要么是在阿里华为这样的大企业。年龄一大,更有可能被裁。

送给每一位想学习Java小伙伴,用来提升自己。

在这里插入图片描述

本文到这里就结束了,喜欢的朋友可以帮忙点赞和评论一下,感谢支持!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

一下,感谢支持!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 26
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值