0
点赞
收藏
分享

微信扫一扫

记一次互联网寒冬下的阿里面试总结

白衣蓝剑冰魄 2022-04-13 阅读 42

引言

离3月13日第一轮电话面试,到今日,一过去差不多一个月的时间,有确切的面试结果。中间每一轮面试,我都会将相关的问题进行记录,以及回答要点。

简单总结下面试的安排和时间情况,我一共面试了6轮,分别是:

  1. 3月13日,上午9点半,一面,电话技术面试,时间为40分钟;
  2. 3月13日,上午10点20分,二面,算法在线评测;
  3. 3月17日,中午12点半,三面,电话技术面试+项目,时间大概是45分钟;
  4. 3月21日,晚上7点,四面,视频技术面试+项目,时间1个小时左右;
  5. 3月23日,晚上7点30,五面,视频技术面试+项目,时间是30分钟;
  6. 3月25日,上午10点,第六面,视频HR面,时间是一个小时。

邮件视频面试通知如下:

其中第一轮和第三轮是电话面试,邀约是通过电话口头沟通的,暂无邮件通知。

第一轮面试和算法评测

第一轮面试是周日,邀约的时间是10点,本来打算早起再梳理一下知识点,没想到电话在9点半左右就打进来了,然后就开始了面试。面试主要的要点在于平常使用到的知识点,特别是简历上体现出的技术栈、所做项目的核心流程和要点、基本的基础知识等。主要问题如下:

  1. 说说项目,库存是如何管理和同步的?库内操作的核心流程有哪些?
  2. redis的使用,什么情况下要用?如何实现分布式锁?
  3. JVM的相关知识,什么可以作为GCRoot?有哪些回收算法?CMS和G1相比有哪些差异?
  4. mysql的索引知识,为什么要用B+树?平常怎么设计表的?怎么分库分表?
  5. 你用过哪些消息中间件?顺序消费问题,消息丢失问题,集群问题的解决方案?
  6. 什么情况下会产生死锁?怎么避免?
  7. DDD领域驱动设计,什么场景下使用?有什么优势?

第一面还是比较轻松的,因为大部分问题都很基础,也有比较通用的解决方案。这一面是非常基础的筛选,只要平常有所积累,大部分问题都能回答出来。面完之后,面试官说让我查收一下邮件,简单的做一下算法评测。我的算法是基于冒泡方法实现一个字符串排序,问题是so easy,但题目很有迷惑性,因为字符串是用数字展示的,稍不注意就会写错。

第三轮电话面试

第三轮电话面试是在中午12点半进行的,所以吃完午饭就赶紧找了个安静的地方,我是在天台上面的,当时还下着雨,在一个小屋檐下完成的面试。主要问题如下:

  1. 说下库存管理,智能分仓后调拨的问题?波次主要解决什么问题?超大件物品的出库流程和普通的商品一样吗?你们有冷冻仓吗,怎么做管理的?包材推荐问题?
  2. 如何实现一个阻塞队列?采用什么数据结构和通知机制?
  3. redis事务和管道有什么区别,string结构的底层存储是什么格式?为什么要这样做?线程模型是什么?select和epoll有什么区别?redis是基于select还是epoll的?
  4. rocketMq高可用是什么机制保证的?支持选举吗?哪个版本支持的?
  5. 讲讲dubbo服务依赖启动失败怎么处理?怎么解决循环引用的问题?
  6. hashMap的扩容机制?我初始容量是1000,就是1000吗?JDK7和8的实现有什么不同?为什么超过8就要转换成红黑树?而不是7或者9?

项目还是聊得比较久的,涉及到的业务几乎都有涉及。可能是中午时间有限,我背诵的自我介绍模板在说到一半的时候,就被打断,直接问项目。这个面试官说话语速很快,业务上的问题问得还是比较深入的,已经不单单涉及技术层面的问题,需要对产品设计也有个思考。比如说问到一个问题,说分仓后调拨单目的地相隔较远,如何保证时效。当时我没回答出来,说是运营层面的问题,但后面再去思考的时候,发现这种场景其实现实中也有遇到过,就是用户端会提示跨区调货延迟送达。技术层面上的问题问的比第一面更为深入,需要对常见的底层源码和实现机制有所了解。这一面其实聊得很好,最后面试官说我觉得你很不错,会尽快安排下一轮面试。

第四轮视频面试

果然,在第三轮面完后的第二天上午,就收到了第四轮的电话邀约,当天正好是周五,中间刚好隔了一个周末,最后协定了一个下周一的时间,也让自己总结一下面试的情况,对后面的面试能有更加多的时间去准备。周一晚上,下班后就往家里赶,直接开好视频等面试官上线。主要问题如下:

  1. 项目介绍,库存的管理;
  2. DDD思想的设计,什么是领域事件?划分值对象、实体、聚合根的依据是什么?你们是怎么落地DDD的?
  3. 介绍volatile关键字的原理?AQS?
  4. new object 占多少个字节?
  5. 快速排序和希尔排序有什么区别?
  6. 线上CPU100%排查过程,使用的命令?
  7. 分布式事务问题,有哪些?怎么处理的?缓存一致性协议保证?
  8. 给你1亿的数据,怎么去重?
  9. redis的zset数据结构是如何实现的?为什么要用跳表而不用B树?
  10. 你遇到最大的生产事件是什么?怎么解决的?问题原因是什么?后续怎么规避?

总体聊下来也还不错,最后的1亿数据去重,我简要的回答出了基于位图,但具体怎么编码实现,没有回答出来。其它问题都还行,最后我直接问他对我来说有什么评价,我说都面了4轮了,对我有什么建议。他回答也很直接,说整体问题不大,库存的问题再好好想想,后面是P9面你,这些问题肯定会涉及到,让我好好准备。听到这里还是很开心的,因为等于直接告诉你通过了。

第五轮视频面试

果然,第二天上午就接到了技术的终面邀约,是一个非常稳重的声音,跟我约了下面试的时间。他还加了我微信。我提前进入面试间等待面试官上线。主要的问题果然是集中在库存上,主要问题如下:

  1. DDD相关的知识,怎么做服务划分?服务划分的依据合理吗?怎么验证?
  2. 库存分库分表后怎么保证一致性问题?你们sharding-key是什么?有什么缺陷?你会怎么改进?
  3. 服务治理问题,限流和熔断的机制原理是什么?

整体聊下来,主要问题都是我在说,因为问题本身很少,我每次回答之前,我都会简要的重复下问题,这也给思考一点时间。然后我分了要点去说,第一,xxx;第二,xxx;最后,效果如何。最后面试官是让我反问,我主要问了下主要的业务,基于仓储方向,大促的单据管理,自动化程度如何,时效性的保障。

第六轮视频面试

第五轮完成后,因为加了微信,第二天上午直接微信告知技术终面通过,等约HR面。微信还提醒了我,说要诚信第一,思考突破,自我反思。然后HR面的前一晚,我把HR可能会问的问题,在网络渠道上,都作了汇总和总结,包括口语化的语言组织。果然,面试的时候,问题几乎都包含在了准备的问题当中,回答起来还是很轻松愉快的。问题要点如下:

  1. 自我介绍和说说最近几份工作的情况,为什么离职?
  2. 说说你职业生涯最重要的转折点是什么时候,学到了什么,为什么要做这样的选择?
  3. 说说你对服务划分的理解,为什么需要分布式?
  4. 说说你的职业规划是什么,希望达到什么样的水平?你离开平台是因为什么限制?在新的平台就一定能实现你的规划吗?
  5. 说说你在同事直接的印象是什么,举例说明?
  6. 说说你最佩服你领导的是什么?
  7. 你有过跟你领导争论的时候吗?是什么原因?怎么解决的?
  8. 你职业生涯上遇到过什么挫折?怎么解决的?
  9. 你在你小组里面是什么水平?处于什么地位?
  10. 1你还聊过哪些公司?什么岗位?进度怎么样?
  11. 新的业务你怎么迅速熟悉?迅速上手?
  12. 你最近看了什么书籍,技术上的或生活上的?有什么体会?平常有什么兴趣爱好?
  13. 你什么时候能离职?时间怎么安排?
  14. 你还有什么想要了解的和想问的?

举报

相关推荐

0 条评论