写点什么

毕业三年,从小公司到大厂,先后四面阿里、小米、美团等,终于收到 offer!

发布于: 2021 年 01 月 12 日

在小公司做了 3 年 Java 后,想去大厂发展。所以从去年年底到今年先后面试了阿里、小米、美团、京东等,外卖、订单、商旅面试了好几个部门,终于成功拿下 offer。


总结下来各部门面试的大体思路基本都一致。比如:


  • JVM 参数配置、常用调试工具、分区、类加载,还会问你有需要线上的调试问题吗?遇到死循环 CPU 飙升怎么解决?

  • Java 并发包常用工具用法和原理、会配合集合类一起考,对了还会有 volatile、CAS 原理等。

  • MySQL 也算是必备了,索引存储结构、索引搜索原理、事务的隔离级别和原理,这些真的是逢考必问。当然除了 MySQL,Redis 和 ES 也是面试长文的,大多都是集中到原理。比如 ES 倒排索引、分片原理,Redis 的 zset 原理和使用场景、多路复用、穿透、熔断等等。

  • 框架也是必备的知识点,最常见的就是 AOP 原理,自己怎么实现?Spring Boot 啥原理?框架通常会配合设计模式一起考,比如你最熟悉的设计模式是啥?Spring MVC 里面用了什么设计模式?解决了什么问题?

  • 接下来最重要的就是服务治理了,这里面内容就太多了,Dubbo 也好,Spring Cloud 也罢,总之这个地方最能看得出你真实的工作经验和问题的考虑深度,毕竟没有真正在庞大的系统里面锻炼过真的很难应付这个地方。

  • 没漏掉还有一个最重要的算法,这个就靠平时多练了,LeetCode 中文版上线了,一天一道题,面试必无敌。


说了这么多只有一个重点,就是无论大厂他有没有题库,面试题的大体方向就这么多,你要都掌握了,还担心去大厂?那么重点就来了,怎么复习呢?


Java 基础部分


  • HashMap 和 ConcurrentHashMap 区别

  • ConcurrentHashMap 的数据结构

  • 高并发 HashMap 的环是如何产生的?

  • volatile 作用

  • Atomic 类如何保证原子性(CAS 操作)

  • synchronized 和 Lock 的区别

  • 为什么要使用线程池?

  • 核心线程池 ThreadPoolExecutor 的参数

  • ThreadPoolExecutor 的工作流程

  • 如何控制线程池线程的优先级

  • 线程之间如何通信

  • Boolean 占几个字节

  • jdk1.8/jdk1.7 都分别新增了哪些特性?

  • Exception 和 Error


JVM 部分


  • 运行时数据区域(内存模型)

  • 垃圾回收机制

  • 垃圾回收算法

  • Minor GC 和 Full GC 触发条件

  • GC 中 Stop the world

  • 各垃圾回收器的特点及区别

  • 双亲委派模型

  • JDBC 和双亲委派模型关系


Spring 部分


  • Spring 的 IOC/AOP 的实现

  • 动态代理的实现方式

  • Spring 如何解决循环依赖(三级缓存)

  • Spring 的后置处理器

  • Spring 的 @Transactional 如何实现的?

  • Spring 的事务传播级别

  • BeanFactory 和 ApplicationContext 的联系和区别


Zookeeper 部分


  • CAP 定理

  • ZAB 协议

  • leader 选举算法和流程


Redis 部分


  • Redis 的应用场景

  • Redis 支持的数据类型(必考)

  • zset 跳表的数据结构(必考)

  • Redis 的数据过期策略(必考)

  • Redis 的 LRU 过期策略的具体实现

  • 如何解决 Redis 缓存雪崩,缓存穿透问题

  • Redis 的持久化机制(必考)

  • Redis 的管道 pipeline


Mysql 部分


  • 事务的基本要素

  • 事务隔离级别

  • 如何解决事务的并发问题(脏读,幻读)?

  • MVCC 多版本并发控制?

  • binlog,redolog,undolog 都是什么,起什么作用?

  • InnoDB 的行锁/表锁?

  • myisam 和 innodb 的区别,什么时候选择 myisam?

  • 为什么选择 B+树作为索引结构?

  • 索引 B+树的叶子节点都可以存哪些东西?

  • 查询在什么时候不走(预期中的)索引?

  • sql 如何优化?

  • explain 是如何解析 sql 的?

  • order by 原理


算法部分


  • 算法题:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个(剑指 offer 原题,就是排序改一下比较规则)

  • 对于 LR 来说,LR 如果多了一维冗余特征,其权重和 AUC 会怎样变化(权重变为 1/2, AUC 不会变化)

  • 写出 LR 的损失函数(交叉熵损失函数)

  • 算法题:二叉树转双向链表(中序非递归遍历修改指针)


其他部分


  • 高并发系统的限流如何实现?

  • 高并发秒杀系统的设计

  • 负载均衡如何设计?




首先你需要有一个知识点轮廓,对着这个轮廓不停的扩展、延伸,自己查漏补缺。因为虽然知识点就这么多,但是面试官的提问方式还是千奇百怪的,所以你需要通过知识点做相应的延伸,才能融会贯通。


道理其实大家都知道,但是实施起来就遇到了问题,所以这里我推荐最简单的方式:


实战资料




脑图 + 视频


什么意思呢?具体解释一下,首先你需要有一个全面的知识点脑图,然后遇到不懂的地方就看书,千万不要去看博客,毕竟博客门槛真的太低了,最后要配合一些高质量的视频,用来巩固知识和开拓视野。


脑图已经给你整理好了,可以根据这个图自行进行查漏补缺和规划:



视频呢?也给你整理了,够意思吧。


直播视频包含:


1、多线程状态下,线程管理的方法论


2、数据库并发压力大!告诉你一线大厂怎么玩优化


3、多线程面试必看- Lock 锁实现原理


4、值得深思的 Volatile 多线程面试题


5、分布式事务解决方案实录-分布式难题系列


6、高并发架构限流技术分享


7、全新视角解读 SpringBoot



一键三连+关注,然后添加 VX(tkzl6666)即可免费领取《Java 面试突击版》第四版完整版 PDF






用户头像

添加我的微信:tkzl6666 获取文中资料 2020.09.19 加入

添加我的微信:tkzl6666 获取文中资料

评论 (1 条评论)

发布
用户头像
毕业三年,从小公司到大厂,先后四面阿里、小米、美团等,终于收到 offer!
2021 年 01 月 12 日 16:26
回复
没有更多了
毕业三年,从小公司到大厂,先后四面阿里、小米、美团等,终于收到offer!