写在前面
小米的面试算是简单,相对实用一些。更多的是考察项目和动手能力,设计能力。
一面
项目
架构设计...
你一天的工作安排和内容
接到一个需求后,你是如何开展工作的
项目管理的那一套,需求分析、概要设计、KO、详细设计、coding、测试、UAT验收、上线。
技术
redis原理:String类型和SDS的动态扩容和惰性回收
mq的原理
线程池的原理
jvm里CMS
算法题
忘了当时写的什么了
部门介绍
...
二面
项目
技术
jvm:cms和G1的区别
类加载过程
加载 验证 准备 解析 初始化
验证的时候 final的 赋值 static的初始化 = 0
初始化时候 static = 100
mq知识
redis渐进式rehash
这个问题我比较熟悉,先说明为什么这样设计,在讲明白这个过程如何操作的,最后说明在这个过程有增删改查等操作的情况
数据库:可重复读如何解决幻读,锁覆盖、索引
算法题
有序数组,找到绝对值最小的那个数
解题思路
1、因为有序,比如升序,第一个值如果是正数,则为最小
2、第一个数如果为负数,可以直接中中间的数字,然后和左右对比一下看是否绝对值最小
三面
项目
多个项目都有详细的质疑
技术
redis集群有几种?主从、哨兵、分片;缓存击穿的处理方法

mysql问题
select count(1), country from Table where name = 'lisi' and age>10 and age<20 group by country;
给 name age country 加联合索引
select count(1), country from Table where name in ('zhangsan',"lisi") and age>10 and age<20 group by country;
没有很好的方案
先给name加, 在给 age 加
或者给name age加联合索引
线程同步问题
class A
static sync m1;
sync m2;
sync m3;
new a1 ;
new a2;
a1.m1, a1.m2 不互斥
a1.m2,a1.m3 互斥
这道题答错了
算法题
class Node {
Node right;
Node left;
int val;
}
9
10 13
12 15 18
20
打印从左向右看到的效果 9,10,12,20
其他
未来规划
部门人员架构组成
四面
一直追问项目
让设计一个电商平台的积分系统,这个自我感觉回答的较好一些,后续有机会公开出来大家讨论一下。
HR
直接开门见山,问我有没有拿到其他公司的offer?告诉我小米给的职级和薪资。解释清楚了复杂的股票方案等。