记录下找实习的辛苦历程,淘系3轮技术面+1交叉面+1HR面

1,072 阅读9分钟

昨天 hr 面结束了,来许一波愿,顺便分享下面试题目,后期补上这些问题的答案以及一些想法。

提前交流

我是找的学长内推的,刚开始有一次交流,也不知道算不算一面,主要问了下面的东西:

  1. 说一下 cas,主要应用在哪
  2. 说一下 Java 中的锁,自旋锁会升级成什么?
  3. 项目中的限流是怎么做的
  4. 说一下 Java 是如何加载一个类的?
  5. 什么是双亲委派模式?
  6. TCP 滑动窗口了解吗?
  7. 用的是什么数据库?说一下 mysql 的的事务隔离
  8. InnoDB/MYINSAM 的区别和应用场景
  9. 介绍下 MYSQL 的索引
  10. 进程和线程的定义
  11. 进程调度算法有哪些?
  12. 说一下你对线程池的理解
  13. 用过什么模式(除了 JDK 以外。自己实现的 /除了单例模式外)
  14. 单例模式为什么要有两个 null 判断,一个不可以吗?
  15. 排序(归并排序 /堆排序/快排)
  16. 说一下你对 Spring 的理解,AOP 的原理是什么?
  17. 有什么想问面试官的

一面

然后就是正式的一面了,一面比较细致,上来先做了一道算法题,题目很简单,剑指 offer 里的原题,顺时针打印矩阵,leetcode-cn.com/problems/sh…

下面是问题的记录:

  1. 自我介绍、说一下最近在做什么事?
  2. 可以跟我介绍下卷积神经网络吗?
  3. 可以说一下逻辑回归是什么吗?
  4. 你觉得反向传播和动态规划之间有什么样的联系吗?
  5. 我看你的微信公众号叫「01 二进制」,那你能说一下为什么计算机会使用二进制,而我们人类会使用 10 进制呢?
  6. 计算机是怎么做加法的?那如何用加法代替减法?
  7. 使用过 Linux 吗?可以说下常用的 Linux 命令吗?
  8. 用什么命令可以查询文本中的文字?用什么命令可以查询磁盘存储的容量?
  9. Vim 使用过吗?可以说下有哪些快捷键吗?
  10. 我看你的博客里有一篇博客写到了区块链,你可以说下去中心化对我们的生活有什么影响吗?你觉得区块链有价值吗?
  11. 在区块链的世界中,那些数据怎么样会变得有效?(广播机制、共识机制)
  12. 类比打电话,两个系统的通信我们可以采用哪些方式?(我说了 http)
  13. 说一下 HTTP 和 HTTPS 的区别
  14. HTTPS 中用了什么加密方式,在什么阶段体现的?
  15. 分布式的 CAP 理论了解过吗?
  16. 你了解的一些集群有哪些选举方式?
  17. 公众号里写了很多和 python 有关的文章,那你觉得这两个语言使用起来有什么差异?
  18. 最近有看什么书吗?
  19. HashMap 为什么线程不安全?是否模拟过不安全的场景?
  20. 说一下 Java 的值传递和引用传递
  21. SpringBoot 和 SpringMVC 的区别
  22. 说一下 Spring 中 bean 的加载过程
  23. JVM 的垃圾回收器了解吗?垃圾回收算法有哪些?JDK8 默认的垃圾回收器是什么?
  24. 有什么想跟我沟通的吗?

总的来说这一次的面试体验不是很好,问的东西比较多,而且面试官真的把我的简历挖得很深,就连公众号里的文章他也看了,这点是我没想到的。面试官很 nice,一直都在和我探讨这些问题,气氛也不是很紧张,之后几天就迎来了二面。

二面

不知道为什么,总觉得二面问的问题和一面比起来侧重点是平常学习生活中的,而不是基础知识了。

  1. 自我介绍
  2. 自己做的 app 上线了吗?是自己做的吗?简单说一下
  3. 学校的课程中你觉得哪一门学的最好?(都差不多)
  4. 你学习了挺久的 Java,对于这门语言有什么认识?或者和其他编程语言比起来有什么不一样的地方?
  5. 那你在学习的过程中有什么事情会让你坚持做下去?
  6. 开发这个 app 的动力是什么?
  7. 有参加过什么学科竞赛吗?
  8. 数据结构你觉得你学的怎么样?做一道编程题(用数组模拟一个栈)
  9. 智力题:你雇佣一个工人,他每天工作应该获得一份金条,你有一根金条可以分成 7 份,但你只能对你的金条切 2 刀,请问怎么保证你的工人每天都得到一份金条?
  10. 你有什么想问我的?

三面

到了三面,基础知识问的不如前面几轮了,更多的是项目经验方面的东西,说实话这里也是我欠缺的地方,面试的问题如下:

  1. 介绍一下项目

  2. 项目是否复盘,如果说用户量/数据量/访问量非常大之后,你了解到的可以做哪些改造?

  3. SpringBoot 有深入了解吗?和 Spring Cloud 有什么差别吗?

  4. SpringBoot 核心框架包含什么?SpringCloud 一套微服务的框架中间有什么部分你是比较熟悉的,详细介绍一下。

  5. SpringBoot 容器启动的大致流程(这个不会)

  6. SpringCloud 在 SpringBoot 的基础上扩展了什么?(我提到了注册中心,作用是什么说了下)

  7. 多线程,几种线程的创建方式(thread、runnable、callable),使用的时候有什么场景约束(在什么场景下使用什么方式)

  8. 多线程情况下临界区的资源保护有哪些方式?(比如锁)

  9. 场景编程题(卡了很长时间)

    不考虑高并发/分布式/集群/网络调用等问题,不依赖消息队列/缓存这些东西。希望你可以提供一个医院类,这个类有一个核心的方法给外部调用,这个方法实现如下功能:5 个医生,每个医生可以挂 10 个号,然后医院有 10 个窗口,也就意味着同时只能有 10 个病人挂号,那第 11 个人要挂号的话就不能立刻拿到号,得前面的用户挂完号才可以挂号,病人挂号的时候,医院给病人返回的结果是:1. 如果当前有空余号可用,就取最前的号;2. 如果没有号,就给调用的病人返回没有号的错误。注意:如果有号的话是不能允许返回给病人说没号,如何设计这个类以及这个类中的方法。(附加:如果在分配号的时候偶然出现时间抖动,你该怎么解决)

这一面说实话是我最没有把握的一轮面试,因为自己对于微服务这块确实没有实际操练过,经验很少,源码看的也不多,而且那个场景编程题答的也不是很好,没有很细致的说该怎么实现。

不过这轮面试里,面试官有句话让我印象很深刻,他说作为一个技术人,经验是没有办法衡量的,但是思维可以,我们在日常生活中,应该要善于去使用代码的思维去思考问题。对于一个功能/事物,我可能会想着这个功能可以通过一个消息队列去实现,可以redis去实现,但是这样思考还不够深入,应该在思考的时候就在脑海里构建出伪代码的结构。不然就真的是纸上谈兵。

交叉面

三面结束,慌张了几天之后迎来了交叉面,我看牛客网上的帖子说交叉面基本上就不刷人了,但还是有些担心,可能我运气比较好吧,简单问了我一些问题就结束了,没有太刁难我:

  1. 你可以讲一下做的最有成就感的项目吗?
  2. 这个项目是如何变现,如何带来价值?
  3. 是如何吸引用户的?怎么获取用户增长的数据?
  4. 那如果重新接收这个项目有什么想法吗?
  5. 之后对自己有什么规划吗?
  6. 你对手淘有什么样的认知?(产品很优秀,团队的技术能力也很强)
  7. 还有什么要问的?

hr面

隔了两天接到了hr的电话,前面几轮面试都拖了挺久的,hr这里反倒比较快了,问的问题也很正常:

  1. 有没有帮助他人的案例可以分享一下的吗?

  2. 你是怎么规划你未来的职业方向的呢?

  3. 对于以下案例,你有什么想法?

  4. 商家在我们这进货,为了加快货物的流通,会有赊账,在这个过程中,用户增长非常快,然后需要做一个系统,在这个系统上线的前一周,运营过来说,我们需要加一个子功能,你作为技术,是选择将原版本上线之后再升级,还是说把新系统的功能全部做完了再上线?(我选的第一个) 那按照第一个方法做了,系统也上线了,后期升级的时候你本以为2个星期就可以升级完成,但是你突然发现你可能搞不定,数据上出现了一些问题,产品经理此时也在国外,没办法及时沟通,作为一个技术人员你会怎么办?

  5. 大概什么时候可以实习?实习地点?

总结

在面试期间我也看了很多其他人的面经,对比一下发现自己遇到的面试题难度上比他们要小一些,可能是因为自己也没做过什么太复杂的项目,所以也没深入问了。不过阿里的面试官人很nice,面试的过程也不是单向的询问与回答,对一些问题也会进行探讨。总的来说,除了进度比较慢(将近1个月),其他方面的体验还是很不错,这里许波愿,希望可以收到暑期实习的offer。

最后打波广告,如果我的文章对你有所帮助,不妨搜索一下微信公众号「梁注」,或者扫描下方二维码,后期我会不定时分享互联网上有趣的内容,也可以后台回复「微信」与我交流。