这是一位读者去年投稿的面经。这位读者的学历是 211 本科 + 985 硕士,参加 2024 届秋招,拿到了招银网络金融科技、某证券金融科技、去哪儿、华为等公司的 offer。
最后,他选择了离家近的券商。
下面是正文。
拿到的 Offer 总结
- 招银网络金融科技(软开,总包 27w)
- 证券金融科技(大数据)
- 去哪儿(白菜,22k15薪)
- 上海银行(大数据,总包大概 25w)
- 华为(14c,22k)
背景介绍
- 学历:211 本科 + 985 硕士,不算特别顶尖的学历。
- 专业:非科班,计算机相关专业,有一定编码基础。
准备过程
我在 2021 年 10 月左右正式开始准备后端工作。在此之前,我仅学习了 Java SE 和 MySQL。之后,我开始学习框架、做项目等。
像大多数人一样,我通过观看黑马程序员和尚硅谷的视频慢慢学习,并做了 LeetCode 刷题。(这里建议慎重选择项目,大厂对项目的要求是实际贴合且具有难度。我曾因项目做法不当被饿了么和美团吐槽。大厂的项目实现方式与我们通常的做法不同。)
我做了两个项目,一个是秒杀商城,一个是微服务相关的项目。秒杀商城项目虽然增加了我对框架的理解和能力,但面试时容易被质疑,因为它与实际情况有些脱节。
面试问题分享
以下是一些公司的面试问题,公司的名字用缩写代替。
部分面试题的答案,我给出了对应的文章链接。对于没有给出链接的面试题,可以自行搜索一下答案。
另外,推荐一下 《Java 面试指北》 以及 JavaGuide ,这里面对常见的面试问题均有涉及,知识面非常广,对我的帮助也很大。
WD
- 大数据比赛:在大数据场景下如何进行数据清洗?
- 什么时候开始学习 Java 开发的?怎么学的?
- IoC 的作用,为什么能解耦?
- AOP 解决了什么问题,应用场景是?
- Spring Boot 相比 Spring 有什么优化?为什么使用 Spring Boot?
- 使用过 Spring Cloud 吗?有哪些组件?可以做什么?
- Nginx 负载均衡,客户端负载均衡和服务端负载均衡的区别?
- 如何设计一个优先级任务线程池?
- HashMap 的原理?怎么实现的?
- 什么是 SPI?SPI 的原理是什么?
GT
- 有用过事务吗?事务的传播属性?
- 事务失效的情况(动态代理?)
- 在方法中捕获异常而没有抛出去。
- 非事务方法调用事务方法。
- 事务方法内部调用事务方法。
@Transactional
标记的方法不是 public。- 抛出的异常与
rollbackFor
指定的异常不匹配。
- 消息丢失了怎么办?
- 父线程如何传递信息给子线程?
- ThreadLocal?
- 幂等性,如何避免重复消费?在项目里是怎么做的?如果消息重复了,如何避免库存的重复扣减?
- 为什么需要分布式事务?常见分布式事务解决方案有哪些?
- 多线程,线程池原理、参数、阻塞队列?
- 多线程怎么创建?Future 类如果一直等待返回值的话要怎么处理?
Lazada
- 项目遇到的难点?
- 库存怎么扣减的?并发场景下怎么实现?
- 乐观锁机制的秒杀场景下,SQL 怎么写?库存表是怎么设计的?
- 线程池参数怎么设置?需要考虑哪些因素?
- 哪些工具用来排查内存泄漏问题?
- 标记清除算法是怎么标记垃圾的?如何解决引用的依赖问题?
- 什么是乐观锁和悲观锁?Java 中 CAS 是如何实现的?ABA 问题的解决?
- 如何检测和避免线程死锁?
- LinkedList、ArrayList、HashMap 实现原理?LinkedList、ArrayList 实现插入元素是怎么实现的?
- 为什么使用红黑树?有什么优势?红节点和黑节点?
- JVM 运行时数据区,垃圾回收机制?
JXJK
- 锁升级的机制?
- Java 中的锁机制?
- Spring Boot 自动注入出现空指针的情况如何排查?
- 自动注入失败的情况?空指针报错的情况?
- 接口可以定义变量吗?
- MySQl 索引失效的场景有哪些?
- 索引,如果一个字段只有"男","女","其他",适合拿来作为索引吗?
- 如果有两个字段一个有 100000 行一个有 100001 行,如何挑出不同的这个数字?
- Redis 的内存淘汰策略?
- 除了Redis,你还知道其他分布式缓存方案吗?
- 重量级锁加锁过程?重量级锁解锁过程?
- 轻量级锁加锁过程?轻量级锁的锁膨胀?
- 偏向锁的锁膨胀?
- 接口可不可以定义成员变量?
KS
- 线程池参数有哪些?
- 什么是 CPU 密集型的任务?参数怎么设置?
- NIO 和 BIO,IO 多路复用?
- Java 的值传递?
- Spring、Spring Boot、MyBatis 源码看过吗?
- TCP 为什么要三次握手和四次挥手?
- HTTPS 是如何保证传输安全的?
- 回文链表
MT
- 线程有哪些状态?状态之间是如何变化的?
- 线程池中线程异常后,销毁还是复用?
- Spring 中 Bean 的生命周期是怎样的?
- Spring 的 Bean 是线程安全的吗?
AL
- 集群和分布式的区别?
- 行锁什么时候升级为表锁?
最终选择
最后,我选择了离家近的券商。虽然华为是我心中的意难平,但考虑到我已近三十岁,也没信心一直待下去。唉......