首页 简历|笔试面试

面试官喜欢什么样的求职者?(完结)

  • 25年9月4日 发布
  • 6.26MB 共17页
面试官喜欢什么样的求职者?(完结)面试官喜欢什么样的求职者?(完结)面试官喜欢什么样的求职者?(完结)面试官喜欢什么样的求职者?(完结)面试官喜欢什么样的求职者?(完结)

面试官喜欢什么样的求职者?(完结)

做了很多年的 Java 技术面试官,还真遇到几个能和我谈笑风生的求职者。

• 第一点,很重要,简历上写的项目不管是商业的还是自学的,千万不要随意造假、过

度包装。面试官都是身经百炼的,火眼金睛,很少看走眼,比如说我,哈哈哈。但是

作为求职者,多多少少还是要美化一下自己的项目经历的,毕竟人不可貌相,简历却

可以。

• 第二点,也很重要,面试官不在乎你以前做过哪些项目,在乎的是你在做过的项目中

贡献了什么。不要只停留在你会用 Spring Boot,你会用消息中间件的层面。

• 第三点,最重要,简历上项目一定是有价值的,比如说你自己造了个 RPC,你自己手

写了个高性能的连接池,你为某个知名的开源项目贡献了多少多少代码等等。

下面来具体分析一些面试场景。

1)校招生

不要只会背八股文,写算法题,现在的八股文那叫一个铺天盖地啊,到处都在教算法。

可如果你因此忽略了项目经历的重要性,那可能就得不偿失了。毕竟能说会背的校招生实

在是太多了,但真正能打能作战的不多。

因为实战经验是很难教会的,只能你亲身去尝试。

你能背会 Spring 的 AOP 和 IoC,不见得交给你一个博客平台定时发布博客的功能你能做

的出来。

我强烈推荐大家参与一些开源项目,用代码证明自己的经历与实力,简单粗暴。有一句俗

话不是说得好嘛:

Talk is cheap, show me the code.

翻译成中文就是,“废话少说,放码过来”。

现在有许多开源活动,目标参与群体主要就是大学生,例如 GSOC(Google Summer of

Code),还有国内新起的 CSOC(China Summer of Code)等,这些比赛是官方出钱(例

如 Google),培养广大学生开源积极性,与此同时推进开源项目进展的。

有好多都是大家耳熟能详的项目,比如 RocketMQ,Dubbo 等,国内的这个活动因为刚开

不久少一点,但依然有 20+ 社区。GSOC 因为规模大,活动年份久,已经有 200+ 个知名

成熟项目了,里面绝对有你了解,甚至整天在用的库。

1651923690360-de819723-09b9-4a20-869b-dd55e120b24b.png

GSOC 项目多而且整个流程非常规范,参与者都是来自世界各地的学生,大家交流可以通

过电报,Email 等手段。而且不仅有软件方面,我去年在逛社区的时候就发现了 Arduino

项目,其中任务之一是为 Arduino 标准库贡献指定功能的轮子,一旦发布通过,就可以让

全世界的上位机运行你的代码了,想一想是不是很酷。

1651923691015-5d1cc131-fdc5-476c-ba3e-58a180329b4d.png

我的一个读者,2022 年春招刚刚拿到了字节跳动的 SSP,互联网新人顶薪。

1651923690410-cfb959a0-2b92-4e5d-bf98-419314e698e0.png

他去年由于时间较晚,参加的是国内的,整个时间周期是每年中下旬,大概 6-9 月,持续

三个月。GSOC 的话 2 月底就报名了,想参加的同学一定要提前准备。

1651923690447-7f75a090-1f72-4d3a-b936-2359c3833d39.png

你只需要定期贡献,在报名时写一份 Proposal,说明自己曾经的贡献、实力以及参加的

决心即可,这个 Proposal 类似简历。不但有名师指导,开源经历,还有钱拿 。

据我所知,GSOC 现在结项后可以拿到 13K RMB 左右,前两年可以拿到 18K。国内的

CSOC 是 12K,至少 21 年是,分两次,中期报告和结项报告,各一半。税后到手 10K+,

作为大学生的你们可退税,不出意外到时候就是 12K。感兴趣的同学可以去了解下,官网

我放在下面了。

CSOC 官网,https://summer-ospp.ac.cn/

想强调的是,没有想象的难,原因是:

• 你往往只是负责某模块中的 Feature,贡献并不需要完全理解整个项目。

• 开发过程中,大家都很热情往往很活跃,贡献并不是你想象的埋头各干各的,如果真

是这样的话,开源这两个字也就失去了它的灵魂了。

所以,大胆卖出第一步才是最重要的。

在参与开源时,不仅可以锻炼你的项目/工程经验,也可以在实际场景中熟练应用并理解

Git 等软件,这与工作中是没有任何区别的,你会经历回滚,合并提交等等操作,也可能

会帮别人 code review。

1651923690420-7e251542-4cfd-4b22-93d6-a0487312acb2.png

在这样的高强度合作开发下,你就不仅仅只会 add,commit,push 了…

注:部分开源项目的经历来源于我读者的投稿,原文链接:https://mp.weixin.qq.com/s/

IhUeuxvjwjL1YbaniFIJtg

2)社招生

社招生的面试要求相对来说比校招生更高一些,就我个人以往的面试体验来说。

如果你面试的是一家小公司,或者初创团队,你是可以在项目经历上写你有从前端到后端

开发的经验,一肩挑过的求职者在小公司小作坊是很受欢迎的。

毕竟小公司的精力和财力都有限,大部分项目可能都是一肩挑,从前端,到后端,到测

试,包括需求文档啊,产品交付啊。

如果你只会某一项技术,或者专注于某一个领域,基本上是行不通的。

这种同样适用于,你之前在一线城市,想安享晚年回到了二三线城市,这种能力是必须

的。

但假如你面试的是一家大厂,那情况就完全不同了。

你就是个螺丝钉,你就必须在某个领域钻得非常深,而不是面面俱到。

你说你会高并发,那到底你的业务量有多少,你解决过什么性能瓶颈,吞吐量你提高了多

少?

你说你会 Spring,Spring 的源码你看过吗?

你说你做过电商系统,电商系统中常见的 9 大坑:库存超卖、重复下单、物流单 ABA…

都是怎么解决的?

举个例子,如果避免重复下单?

用户快速点了两次 “提交订单” 按钮,浏览器会向后端发送两条创建订单的请求,最终会

创建两条一模一样的订单。

解决方案:

解决方案就是采用幂等机制,多次请求和一次请求产生的效果是一样的。

方案一:

利用数据库自身特性 “主键唯一约束”,在插入订单记录时,带上主键值,如果订单重复,

记录插入会失败。

操作过程:

• 引入一个服务,用于生成一个“全局唯一的订单号”

• 进入创建订单页面时,前端请求该服务,预生成订单 ID

• 提交订单时,请求参数除了业务参数外,还要带上这个预生成订单 ID

方案二:

前端通过 js 脚本控制,无法解决用户刷新提交的请求。另外也无法解决恶意提交。

不建议采用该方案,如果想用,也只是作为一个补充方案。

方案三:

前后约定附加参数校验。

当用户点击购买按钮时,渲染下单页面,展示商品、收货地址、运费、价格等信息,同时

页面会埋上 Token 信息,用户提交订单时,后端业务逻辑会校验 token,有且匹配才认为

是合理请求。

注意:同一个 Token 只能用一次,用完后立马失效掉。

<font style="color:rgb(18, 18, 18);"><form action="/add-name-v2"

method="post"> </font>

<font style="color:rgb(18, 18, 18);">{% csrf_token %} </font>

<font style="color:rgb(18, 18, 18);"><input type="text" name="name">

</font>

<font style="color:rgb(18, 18, 18);"><input type="submit" value="提交"> </font>

<font style="color:rgb(18, 18, 18);"></form> </font>

再比如,如何解决库存超卖的问题?

常见的库存扣减方式有:

• 下单减库存:即当买家下单后,在商品的总库存中减去买家购买数量。下单减库存是

最简单的减库存方式,也是控制最精确的一种,下单时直接通过数据库的事务机制控

制商品库存,这样一定不会出现超卖的情况。但是你要知道,有些人下完单可能并不

会付款。

• 付款减库存:即买家下单后,并不立即减库存,而是等到有用户付款后才真正减库

存,否则库存一直保留给其他买家。但因为付款时才减库存,如果并发比较高,有可

能出现买家下单后付不了款的情况,因为可能商品已经被其他人买走了。

• 预扣库存:这种方式相对复杂一些,买家下单后,库存为其保留一定的时间(如 30

分钟),超过这个时间,库存将会自动释放,释放后其他买家就可以继续购买。在买

家付款前,系统会校验该订单的库存是否还有保留:如果没有保留,则再次尝试预

扣;如果库存不足(也就是预扣失败)则不允许继续付款;如果预扣成功,则完成付

款并实际地减去库存。

至于采用哪一种减库存方式更多是业务层面的考虑,减库存最核心的是大并发请求时保证

数据库中的库存字段值不能为负数。

方案一:

通常在扣减库存的场景下使用行级锁,通过数据库引擎本身对记录加锁的控制,保证数据

库的更新的安全性,并且通过 where 语句的条件,保证库存不会被减到 0 以下,也就是

能够有效的控制超卖的场景。

<font style="color:rgb(18, 18, 18);">update ... set amount = amount - 1 where id

= $id and amount - 1 >=0 </font>

方案二:

设置数据库的字段数据为无符号整数,这样减后库存字段值小于零时 SQL 语句会报错。

再比如说,商家发货,物流单更新 ABA 问题

举个例子:

商家发货,填写运单号,开始填了 123,后来发现填错了,然后又修改为 456。

此时,如果就为某种特殊场景埋下错误伏笔,具体我们来看下

1651923691470-c6d9ef7e-b598-4c9d-bc5d-4b88a2132457.png

过程:

• 开始「请求 A」发货,调订单服务接口,更新运单号 123

• 但是响应有点慢,超时了

• 此时,商家发现运单号填错了,发起了「请求 B」,更新运单号为 456 ,订单服务也

响应成功了

• 这时,「请求 A」触发了重试,再次调用订单服务,更新运单号 123,订单服务也响

应成功了

• 订单服务最后保存的 运单号 是 123

是不是犯错了!!!!

那么有什么好的解决方案吗?

很多人可能会说,不重试不就可以了,要知道重试机制 是高可用服务的重要保障手段,

很多重试是框架自动发起的。

理想的解决方案:

数据库表引入一个额外字段 version,每次更新时,判断表中的版本号与请求参数携带的

版本号是否一致

<font style="color:rgb(18, 18, 18);">update order set logistics_num =

#{logistics_num} , version = #{version} + 1 where order_id= 1111 and version =

#{version} </font>

• 一致:才触发更新

• 不一致:说明这期间执行过数据更新,可能会引发错误,拒绝执行。

以上这部分内容,来自读者微观技术 的投稿,原文链

接:https://mp.weixin.qq.com/s/_7ZWqn5yPQcVRzOxiwkkmw

简单总结一下:

针对不同的求职者,面试官也有自己套路和打法。

但其实考察的重点,还是你在业务中解决了哪些技术难点,怎么实现的?

针对求职者来说,我的建议是,多去参与真实的项目,如果参与不了,就去 GitHub 上或

者码云上找一些比较优质的开源项目,搞清楚项目的架构和业务流程,对于不懂的问题,

可以问开源作者,加他联系方式,开源项目上一般都会留。

或者在技术群里讨论。

或者自己展开去调查。

推荐几个我认为不错的开源项目吧:

1)mall

https://github.com/macrozheng/mall

1651923691656-f4777443-803a-4365-9198-14d8d23bff5c.png

经常在 GitHub 趋势榜单上霸占着自己的位置,可以说参与的人数非常多。

1651923692632-10019314-aa9c-4a1d-bdc4-fab2d57f5266.png

Mall 的一套打法非常齐全。

2)vhr

https://github.com/lenve/vhr

1651923692647-38713d1c-9c6e-49dd-ad27-65edbf843ee6.png

我和作者很熟,还霸占了一个贡献者的名单。

1651923692921-0bfab160-ee4d-463f-9fe0-a5d572ecfc7b.png

配套文章也非常的全面。

3)codingmore

https://github.com/itwanger/coding-more

1651923693604-7836e2c7-d489-4996-9c2d-e516d67ad96d.png

虽然刚开始开源,star 还比较少,但我是有信心把这个开源项目做好的。

1651923694181-06409d70-1832-44ff-bdbc-5128e0ca2e36.png

配套的文章我也写了不少。

4)miaosha

https://github.com/qiurunze123/miaosha

1651923694894-1669e9bc-5602-4adc-9b89-147a7347193f.png

不仅有实战,还提供了很多经典高并发问题的解决思路。

1651923695674-652f7194-3185-4dd0-8973-25b01a55b8e5.png

好了,就推荐这么多吧,针对项目经历这一关来说,想要和面试官谈笑风生,最好在这些

方面着重发力。

• 项目中用了哪些技术,掌握程度如何,有没有比较有挑战性的。大厂注重原理,小厂

注重广度。

• 项目中解决了哪些难题,毕竟公司招你不是为了给你发工资,而是让你挣钱的,项目

开发中肯定会遇到各种各样的问题,你该怎么解决?

• 你得学会表达,不要紧张,紧张的话,就多面面,总结经验,反正面试又不要钱,但

表达得好,面试官很可能给你开个大 offer

开通会员 本次下载免费

所有资料全部免费下载! 推荐用户付费下载获取返佣积分! 积分可以兑换商品!
一键复制 下载文档 联系客服