2026-04-04 09:43:30
小米后端开发日常实习一面面经核心内容总结如下:
一、面试基本信息类型系统:Java静态类型,Python动态类型。
性能:Java编译执行,Python解释执行(通常更慢)。
应用场景:Java适合大型后端系统,Python适合脚本/数据分析。
实现方式:继承(父类引用指向子类对象)、接口、方法重写。
核心作用:提高代码可扩展性,降低耦合度。
作用:实现线程同步,保证共享资源访问的原子性。
使用场景:方法或代码块加锁,防止多线程竞争。
作用:保证变量可见性(修改后立即同步到主内存),禁止指令重排序。
与synchronized区别:不保证原子性,仅用于轻量级同步。
Spring:需手动配置依赖和插件,适合复杂项目定制。
Spring Boot:内置依赖和插件,开箱即用,适合快速开发。
底层机制:通过反射读取注解信息,在编译或运行时处理。
常见应用:@Override、@Autowired等。
回收器:如G1(分代回收)、ZGC(低延迟)。
算法:标记-清除、复制、标记-整理。
ID字段:通常用INT UNSIGNED(最大约42亿)或BIGINT(更大范围)。
其他字段:根据数据范围选VARCHAR、TEXT、DATETIME等。
水平分表:按行拆分(如按时间范围)。
垂直分表:按列拆分(如拆分大字段到单独表)。
步骤:检查索引→分析执行计划→优化SQL→调整服务器配置。
条件:使用函数、OR条件、模糊查询前缀不匹配(如%abc)。
原理:索引结构为B+树,失效时需全表扫描。
方法1:使用List的LPUSH/RPOP(需处理空队列阻塞)。
方法2:使用Pub/Sub模式(无持久化,消息易丢失)。
五种基本类型:String、Hash、List、Set、ZSet(有序集合)。
结构:跳表(Skip List)+ 哈希表,支持快速范围查询。
解耦:异步处理任务。
削峰:应对高并发请求。
Kafka:高吞吐、分布式,适合日志处理/大数据场景。
RocketMQ:低延迟、事务支持,适合金融/订单系统。
查看进程:ps -ef | grep <进程名>。
杀死进程:kill -9 <PID>。
CPU/内存占用:top、htop、free -m。
查看MySQL日志:tail -n 10 /var/log/mysql/error.log。
快速查找字段:grep "java" /path/to/file。
边界处理:确保循环条件为left <= right。
中间值计算:避免整数溢出,推荐mid = left + (right - left) / 2。
技术氛围:强调小米在IoT、云服务等领域的创新。
个人匹配度:结合岗位需求,突出自身优势(如Java基础扎实、对分布式系统感兴趣)。
工具:dmesg(查看内核日志)、lscpu(CPU信息)、free -h(内存使用)。
典型步骤:代码上传→依赖安装→编译打包→启动服务(如systemctl start)。
扩展命令:journalctl -u mysql --no-pager -n 10(Systemd系统)。
复习Linux常用命令和系统监控工具。
深入学习Redis高级特性(如集群、持久化)。
刷题巩固算法(如LeetCode中等难度题目)。