小米Java二面面经

144 阅读4分钟

面经来源声明

想通过这个小米Java二面面经,结合我最近面试的一些经验,对准备秋招的同学提供一些复习与简历准备上的思路。欢迎一起沟通,一起上岸!

题目

1、实习项目介绍

2、springboot和springcloud的区别

3、HashMap的实现原理

4、Spring中的AOP

5、一张表的数据量非常大时访问速度变慢,怎么解决

6、MySQL的隔离级别

7、分布式锁实现的几种方式

8、redis宕机问题怎么解决

9、场景题:抢红包,100个人同时抢红包,但只能有20人抢到

知识点分类与分析

1、项目经验: 实习项目介绍

如果简历上写了,一般面试的时候是必问的,所以写在简历上的东西就相当于开卷考试,好好准备简历上写了的东西,引导面试官往你准备的东西上去提问

2、Java 基础 / 集合:3. HashMap 的实现原理。

集合是Java出现率极高的面试题,HashMap知识点也有很多可以挖掘的东西,所以面试官比较喜欢问这个。

如果准备的好,建议在简历上写看过HashMap源码或者熟悉集合原理,这样更容易吸引面试官发起相关提问

3、Spring 体系:2. Spring Boot vs Spring Cloud;4. Spring AOP

Spring 系列题目感觉比较偏应用,所以面试官这些问题判断候选人对实际项目开发的掌控程度。面试官很可能深入问底层实现原理。提前准备能展示对项目架构的整体把控能力。

  • Spring Boot 和 Spring Cloud 的区别与适用场景,Spring AOP 的实现原理(代理模式、切点、通知等)。

4、数据库 / 性能优化:5. 大表访问变慢如何解决;6. MySQL 的隔离级别

  • MySQL 的隔离级别:这一题很明显的八股文了,只要看过几次基本没什么问题。这里给的建议是准备面试的时候把时间线拉长一点,一个知识点尽可能多花点时间,这样看完就不会忘记。 (答案:读未提交、读已提交、可重复读、串行化)
  • 大表访问变慢如何解决:这个问题在八股文中不太比较少见,只能通过多看面试题、场景题,结合自身项目经验来回答。这里给几个解题思路( 分库分表、索引优化、缓存方案、SQL 优化、归档历史数据等 )

5、分布式系统 / 中间件:7. 分布式锁实现方式;8. Redis 宕机如何解决

先后问了分布式锁和Redis宕机的解决方案,可以看出是回答分布式锁的实现方案中提到了Redis,所以面试官接着问了Redis的题目。

  • 分布式锁的解决方案: (基于数据库、Redis、Zookeeper),重点是正确性(互斥、可重入、超时、容错)。
  • Redis 宕机的高可用解决方案:主从、哨兵、Cluster、持久化、双写一致性、降级方案。

6、并发与场景设计:9. 抢红包并发场景

场景题,第一,面试官讲题目的时候一定要仔细听,记住题目的细节。如果有什么细节没听清楚,可以主动提出让面试官再讲一次题目,不要觉得会给面试官留下不专注的印象,总比题目没听清楚好。

第二,主动提出需要一定思考的时间,比如直接简单复述一下题目,然后说给我几分钟思考一下。

面试官并不着急这几分钟的时间,除非面试官主动限制了思考时间。否则一定要给自己思考的时间,只有充分思考,才能更好的回答问题呀。

最后

建议大家在复习时结合自己的项目经验,既要扎实基础知识,也要形成对实际场景的解决方案思维。
最后,记住面试是双向选择的过程,不必畏惧,每一次面试都是一次总结与成长的机会。只要准备充分、思路清晰,技术和自信心都会成为你最大的底气。 一起上岸!