小米集团面试题 · 编码实现
小米集团相关面试题,按最终去重题目聚合。
共 2227 道真题 · 当前筛选命中 168 道 · 更新 2026-08-05
筛选题目已选:编码实现
考察点
技术栈
第 141 题请手写实现一个线程安全的双重校验锁单例模式,并说明为什么需要双重校验和volatile关键字。 考察并发编程基础、单例模式的正确实现及对Java内存模型的深入理解第 142 题给定一个字符串 s 和一个整数 k,请实现每隔 k 个字符反转一次字符串,并返回最终结果。 考察字符串处理、循环控制与边界条件处理第 143 题请用BFS实现二叉树的层序遍历。 考察BFS层序遍历的实现能力与边界处理第 144 题请解释ConcurrentHashMap的实现原理,包括JDK1.7与JDK1.8的差异。 考察对ConcurrentHashMap底层实现的深入理解第 145 题请描述实现一个 Spring Boot Starter 的具体流程。 考察对自动配置机制、条件装配和自定义 Starter 开发流程的理解第 146 题请描述如何用 SQL 查询每个部门工资第二高的员工,并说明你的实现思路。 考察 SQL 窗口函数、子查询与排序去重的综合应用第 147 题在实际编码中,每次操作 ThreadLocal 后都会调用 remove 方法吗?谈谈你的做法和理由。 考察对 ThreadLocal 生命周期管理和内存泄漏防范的实际经验第 148 题请介绍 Java 中的基本数据类型,并说明它们之间的区别和注意事项。 考察对 Java 基础数据类型分类、范围及使用注意事项的掌握第 149 题给定一个数组,其中第 i 个元素是第 i 天某支股票的价格。你只能选择某一天买入并在之后的某一天卖出,设计一个算法计算你能获得的最大利润,若无法获得利润则返回 0。请说明你的解法和复杂度。 考察数组遍历、状态记录和贪心算法的理解第 150 题请说明线程的创建方式,并解释 run() 和 start() 方法的区别。 考察线程创建方式及 run 与 start 的核心差异第 151 题如何配置 Spring Cloud Gateway 的路由规则? 考察对 Gateway 配置方式与 YAML 配置语法的掌握第 152 题在 JavaScript 的 forEach 循环中应该怎样安全地删除数组元素? 考察对数组安全遍历与删除方案的掌握第 153 题请实现一个函数,将给定的二进制数据(如字节数组或字符串)进行翻转,并说明其时间复杂度与空间复杂度。 考察二进制数据处理与位操作能力,以及算法复杂度分析第 154 题请用滑动窗口实现一个函数,找出给定字符串中最长不含重复字符的子串的长度,并说明时间与空间复杂度。 考察滑动窗口算法、哈希表去重及复杂度分析第 155 题编写一个函数,比较两个字符串相应位置的ASCII码:从前往后逐个字符比较,遇到第一个不相等的字符时,若前者ASCII码大则返回1,反之返回-1;若所有字符都相等则返回0。 考察字符串逐字符比较的编码实现与边界处理第 156 题请针对 LeetCode 347 题(前 K 个高频元素)给出解题思路,并分析时间复杂度与空间复杂度。 考察算法设计能力、复杂度分析能力及对常见解法的掌握程度第 157 题手写实现一个 Promise.race 方法。 考察对 Promise 机制、异步并发与边界情况的掌握第 158 题请实现求二叉树中任意节点路径的最大和,路径可以从任意节点开始和结束,路径上的节点需连续且每个节点只能使用一次。 考察二叉树递归遍历和路径求和问题的理解与编码实现第 159 题请介绍几种你常用的设计模式,并结合实际项目说明你是如何应用它们的。 考察对常用设计模式的掌握程度及实际落地能力第 160 题如果不使用Spring的三级缓存,如何从编码层面解决循环依赖? 考察不依赖Spring机制的代码级解决方案设计