前言
由于个人发展的原因和工作上的变动,产生了想出来看看机会的想法。经过了一段时间的准备,6月底出来面试,8月成功上岸,按照自己的习惯,将这次面试过程中的一些经验总结、心得体会记录下来,自己留个记录,也希望可以帮助到一些同学。整理了一下自己遇到的面试题,需要的同学可以文中自取
另外,在四年前第一次跳槽的时候也将当时的心得体会记录了下来,如果大家想看的话我也可以抽时间写一写,
个人情况
坐标广州,16年本科毕业于普通一本,毕业后就职于一家传统电信公司,18年后就职于美团点评。
面试情况
相比于 18年,由于有了美团的背景,在简历这关顺利了很多,不得不感叹大厂背景真香 。
本着尽量少请假的原因,所以面试的公司比较少,只面了 3 家:阿里、网易、拼多多。
3 家公司都走完了面试流程,最后拿到了阿里和拼多多的 offer,自己还是比较满意的。
至于网易挂掉的原因,具体原因不是很清楚,面试发挥的还行,BOSS 面的时候可以看出对我还是比较满意,但最终没有收到 offer。
如果对于这三家公司的面试流程有问题的,可以在留言,能解答的我会第一时间解答。
4 年经验应该具备哪些技能
首先,简单的聊一下我认为的 4 年经验左右、优秀的 Java 程序员应该具备的技能有哪些,按“专业技能”和“项目”两块,包括但不限于以下内容。
专业节能方面
- 基础:JDK 常用类的原理、源码、使用场景。
- 设计模式:常用几种的原理、使用场景,单例、动态代理、模板、责任链等。
- 数据结构:数组、链表、栈、队列、树。
- 网络:TCP、HTTP、HTTPS、负载均衡算法。
- 框架:Spring IoC 原理、Spring AOP 原理和使用、Spring 常用的扩展点、MyBatis 的核心流程。
- 中间件:常用中间件的核心原理与最佳实践,并对其中的 1 到 2 个有深入的学习,Redis、Kafka(RocketMQ、RabbitMQ)、Dubbo、Zookeeper。
- 数据库(MySQL):索引原理、隔离级别、锁机制、分库分表、慢 SQL 定位及优化、线上问题解决。
- Netty:NIO 原理、核心组件、I/O 多路复用(epoll)、零拷贝。
- JVM:运行时数据区、垃圾回收算法、垃圾回收器(CMS、G1)、常用配置参数、线上问题定位及解决。
- 稳定性保障:隔离、限流、熔断、降级等。
- Linux:基本命令的使用、快速定位和排查问题。
- 分布式理论:CAP、BASE、2PC、3PC、TCC。
项目方面
- 能独立完成一个复杂模块的需求分析、方案设计和最终落地实现。
- 能不断思考,寻找更优的设计和解决方案,积极优化慢 SQL、慢服务。
- 具备排查问题的能力,遇到线上问题能及时定位和修复上线,例如:数据库死锁、服务器宕机、服务器 Full GC 频繁等。
- 具备难题攻关的能力,能不断解决项目遇到的挑战,能给予初级工程师技术上的指导。
- 初步具备带领团队(1-3人左右)的能力,能合理分配需求,做好进度把控、风险评估、Code Review。
严格来说,要完全做到上面这些有点难,我自己也并不具备,但是,我们可以将其视为目标,不断去努力。
面试常见形式
大厂面试通常是“连环炮”的形式,举个