秋招结束,我拿到了华为小奖状!

这是一位读者去年投稿的面经。这位读者的学历是 211 本科 + 985 硕士,参加 2024 届秋招,拿到了招银网络金融科技、某证券金融科技、去哪儿、华为等公司的 offer。

最后,他选择了离家近的券商。

下面是正文。

拿到的 Offer 总结

  1. 招银网络金融科技(软开,总包 27w)
  2. 证券金融科技(大数据)
  3. 去哪儿(白菜,22k15薪)
  4. 上海银行(大数据,总包大概 25w)
  5. 华为(14c,22k)

背景介绍

  • 学历:211 本科 + 985 硕士,不算特别顶尖的学历。
  • 专业:非科班,计算机相关专业,有一定编码基础。

准备过程

我在 2021 年 10 月左右正式开始准备后端工作。在此之前,我仅学习了 Java SE 和 MySQL。之后,我开始学习框架、做项目等。

像大多数人一样,我通过观看黑马程序员和尚硅谷的视频慢慢学习,并做了 LeetCode 刷题。(这里建议慎重选择项目,大厂对项目的要求是实际贴合且具有难度。我曾因项目做法不当被饿了么和美团吐槽。大厂的项目实现方式与我们通常的做法不同。)

我做了两个项目,一个是秒杀商城,一个是微服务相关的项目。秒杀商城项目虽然增加了我对框架的理解和能力,但面试时容易被质疑,因为它与实际情况有些脱节。

面试问题分享

以下是一些公司的面试问题,公司的名字用缩写代替。

部分面试题的答案,我给出了对应的文章链接。对于没有给出链接的面试题,可以自行搜索一下答案。

另外,推荐一下 《Java 面试指北》 以及 JavaGuide ,这里面对常见的面试问题均有涉及,知识面非常广,对我的帮助也很大。

WD

  1. 大数据比赛:在大数据场景下如何进行数据清洗?
  2. 什么时候开始学习 Java 开发的?怎么学的?
  3. IoC 的作用,为什么能解耦?
  4. AOP 解决了什么问题,应用场景是?
  5. Spring Boot 相比 Spring 有什么优化?为什么使用 Spring Boot?
  6. 使用过 Spring Cloud 吗?有哪些组件?可以做什么?
  7. Nginx 负载均衡,客户端负载均衡和服务端负载均衡的区别?
  8. 如何设计一个优先级任务线程池?
  9. HashMap 的原理?怎么实现的?
  10. 什么是 SPI?SPI 的原理是什么?

GT

  1. 有用过事务吗?事务的传播属性?
  2. 事务失效的情况(动态代理?)
    • 在方法中捕获异常而没有抛出去。
    • 非事务方法调用事务方法。
    • 事务方法内部调用事务方法。
    • @Transactional 标记的方法不是 public。
    • 抛出的异常与 rollbackFor 指定的异常不匹配。
  3. 消息丢失了怎么办?
  4. 父线程如何传递信息给子线程?
  5. ThreadLocal?
  6. 幂等性,如何避免重复消费?在项目里是怎么做的?如果消息重复了,如何避免库存的重复扣减?
  7. 为什么需要分布式事务?常见分布式事务解决方案有哪些?
  8. 多线程,线程池原理、参数、阻塞队列?
  9. 多线程怎么创建?Future 类如果一直等待返回值的话要怎么处理?

Lazada

  1. 项目遇到的难点?
  2. 库存怎么扣减的?并发场景下怎么实现?
  3. 乐观锁机制的秒杀场景下,SQL 怎么写?库存表是怎么设计的?
  4. 线程池参数怎么设置?需要考虑哪些因素?
  5. 哪些工具用来排查内存泄漏问题?
  6. 标记清除算法是怎么标记垃圾的?如何解决引用的依赖问题?
  7. 什么是乐观锁和悲观锁?Java 中 CAS 是如何实现的?ABA 问题的解决?
  8. 如何检测和避免线程死锁?
  9. LinkedList、ArrayList、HashMap 实现原理?LinkedList、ArrayList 实现插入元素是怎么实现的?
  10. 为什么使用红黑树?有什么优势?红节点和黑节点?
  11. JVM 运行时数据区,垃圾回收机制?

JXJK

  1. 锁升级的机制?
  2. Java 中的锁机制?
  3. Spring Boot 自动注入出现空指针的情况如何排查?
  4. 自动注入失败的情况?空指针报错的情况?
  5. 接口可以定义变量吗?
  6. MySQl 索引失效的场景有哪些?
  7. 索引,如果一个字段只有"男","女","其他",适合拿来作为索引吗?
  8. 如果有两个字段一个有 100000 行一个有 100001 行,如何挑出不同的这个数字?
  9. Redis 的内存淘汰策略?
  10. 除了Redis,你还知道其他分布式缓存方案吗?
  11. 重量级锁加锁过程?重量级锁解锁过程?
  12. 轻量级锁加锁过程?轻量级锁的锁膨胀?
  13. 偏向锁的锁膨胀?
  14. 接口可不可以定义成员变量?

KS

  1. 线程池参数有哪些?
  2. 什么是 CPU 密集型的任务?参数怎么设置?
  3. NIO 和 BIO,IO 多路复用?
  4. Java 的值传递?
  5. Spring、Spring Boot、MyBatis 源码看过吗?
  6. TCP 为什么要三次握手和四次挥手?
  7. HTTPS 是如何保证传输安全的?
  8. 回文链表

MT

  1. 线程有哪些状态?状态之间是如何变化的?
  2. 线程池中线程异常后,销毁还是复用?
  3. Spring 中 Bean 的生命周期是怎样的?
  4. Spring 的 Bean 是线程安全的吗?

AL

  1. 集群和分布式的区别?
  2. 行锁什么时候升级为表锁?

最终选择

最后,我选择了离家近的券商。虽然华为是我心中的意难平,但考虑到我已近三十岁,也没信心一直待下去。唉......