新闻详情

新闻详情

首页 / 资讯中心 / 详情

2024小米秋招软件笔试复盘:操作系统、TCP与嵌入式考点全解析

发布时间:2026/9/1 17:18:58来源:尧图网络
2024小米秋招软件笔试复盘:操作系统、TCP与嵌入式考点全解析
1. 笔试整体感受比想象中更实在先说结论2024年秋招小米集团软件开发岗第一批笔试整体风格可以用两个字概括——实在。不玩虚的不搞偏题怪题大部分题目都能在常规复习范围内找到影子但想拿高分光靠背八股文远远不够。我是在收到笔试通知之后才开始认真准备小米的。和往年一样小米的秋招笔试用的是牛客网平台软件开发岗的试卷包含两个大部分第一部分是客观选择题涵盖数据结构、算法、操作系统、计算机网络、数据库、编程语言基础等方向第二部分是编程题一般是两道难度分布比较明显一道中等偏下、一道中等偏上。全程大约90到120分钟时间不算宽裕尤其是编程题如果你在编辑器里反复调试很容易挤占选择题的时间。这里先给后续参加笔试的同学提个醒小米的笔试系统支持本地IDE写代码再粘贴提交但是不支持跳出页面查资料切屏次数多了会被警告严重了直接交卷。所以平时必须养成不依赖补全、不依赖搜索的习惯笔试环境说到底就是裸写环境。我自己的习惯是刷题时开一个无补全的纯文本编辑器强迫自己在没有智能提示的情况下写完整代码这样到考场上才不会手生。从岗位方向上来说小米的软件开发岗是一个比较大的类目笔试时并不会严格区分Java、C、嵌入式、客户端等方向所有方向的候选人共用一套试卷。但这不代表考察点是均匀的——从今年的试卷来看C/C和操作系统底层相关的内容占比明显偏高这一点和互联网大厂偏Java/Go生态的考察风格有一些差异。如果你投递的是嵌入式方向或者底层系统方向这部分内容更是重点中的重点。整场测试下来我的一个明显体感是小米笔试的难度分布呈两头小、中间大的状态。极难的偏题几乎没有送分题也少绝大多数题目都属于复习过就能做、但做的时候会犹豫的区间。也就是说这张卷子真正考的不是谁会得多而是谁在有限时间内更少犯错。分数差距往往不在会不会而在稳不稳。2. 选择题核心考点复盘操作系统和网络是分水岭2.1 操作系统进程、内存、调度一个都不少选择题部分大约有40道左右操作系统相关题目大概占了8到10道属于绝对的主力。今年考察比较密集的包括进程和线程的区别与联系、死锁的四个必要条件互斥、持有并等待、非剥夺、循环等待、银行家算法判断安全序列、页面置换算法LRU、FIFO、Clock的缺页次数计算、进程间通信方式管道、消息队列、共享内存、信号量的适用场景。其中有两道题值得单独拿出来说。第一道是关于共享内存和消息队列的对比。题目问你哪种进程间通信方式不需要经过内核缓冲区拷贝数据答案是共享内存。共享内存之所以效率高本质上是多个进程通过映射同一块物理内存区域来交换数据省去了用户态和内核态之间的复制过程。但这里有个坑——共享内存自身不提供同步机制需要配合信号量使用否则会出现数据竞争。选项里如果出现共享内存自带互斥访问这种表述那一定是错的。这道题精准考察了知道共享内存快和明白为什么快、以及代价是什么的区别。第二道是页面置换算法的缺页次数计算。给了一个长度为12的页面访问序列物理块数为3让你分别计算FIFO和LRU的缺页次数。这道题没有捷径只能老老实实画表。需要注意的是题目里给出的访问序列中如果存在连续重复的页面号只算一次访问不要重复计数。很多人在这种题目上丢分不是因为不会而是因为粗心把重复的访问序列多算了一次。2.2 计算机网络三次握手和TCP状态机是常客网络部分的考察重量级排在操作系统之后大概5到7道题。核心集中在TCP/IP协议栈TCP三次握手、四次挥手的状态迁移、拥塞控制慢启动、拥塞避免、快速重传、快速恢复、HTTP与HTTPS的区别、DNS解析流程、IP地址与子网划分。这里有一个高频考点值得展开——TCP的TIME_WAIT状态。题目问主动关闭连接的一方在发送最后一个ACK之后进入什么状态答案是TIME_WAIT并且要等待2MSLMaximum Segment Lifetime报文最大生存时间后才进入CLOSED。为什么要等这么久两个原因一是确保最后一个ACK能到达对方如果丢了可以让对方重传FIN二是让本连接产生的所有报文在网络中自然消失避免干扰后续使用相同四元组的新连接。这道题几乎年年考但每次都有不少人在主动方还是被动方进入TIME_WAIT上搞混。子网划分的题目今年也出了一道比较有迷惑性的给定IP和子网掩码求网络地址和可用主机数。这部分的坑在于题目给的IP可能是一个看起来是网络地址但其实不能分配给主机的地址。比如某个子网掩码下主机位全0是网络地址、全1是广播地址这两个都不能用计算可用主机数时要记得减2。2.3 数据库与语言基础细节题里藏着区分度数据库大概3到4道题主要集中在索引原理B树为什么适合作为索引结构、事务的ACID特性、常见的SQL语句GROUP BY HAVING的用法、内连接外连接的区别。语言基础部分根据你选的岗位方向会有细微差别但默认以C/C为主。今年考到了构造函数和析构函数的调用顺序、虚函数和虚函数表的底层机制、指针和引用的区别、内存对齐的计算。这里特别提醒一下内存对齐这道题几乎每年都会出现计算公式要熟每个成员的偏移量必须是其自身对齐数的整数倍结构体的总大小必须是最大大对齐数的整数倍。举个例子struct Test { char a; // 1字节 int b; // 4字节 char c; // 1字节 };在默认4字节对齐的编译环境下这个结构体的大小是多少不是1416而是12。因为char a从偏移0开始占1字节int b从偏移4开始对齐到4的倍数char c从偏移8开始占1字节结构体最终大小要补齐到4的倍数所以是12。如果把int b放到最前面大小就变成8这就是一个典型的优化技巧把大类型成员往前提可以减小结构体体积。2.4 隐藏在选择题里的底层追问今年还有一个值得注意的动向部分选择题的选项开始偷换概念。比如问你进程和线程的区别正确选项是进程是资源分配的基本单位线程是CPU调度的基本单位但干扰项会写成线程是资源分配的基本单位或者进程是CPU调度的基本单位。这种题本质上考察的是概念的精确性而不是大概理解。如果你复习的时候只是看了个眼熟没有把定义里的限定词记牢很容易在两个看起来都对但只能选一个的选项里纠结。我的建议是复习基础知识时以教科书或经典课程的定义为准比如《深入理解计算机系统》《现代操作系统》里面的表述不要以网上各类速成笔记为准。速成笔记往往为了简化会省略限定词省略掉的恰恰就是考点。3. 嵌入式方向的差异化内容小米笔试的隐藏彩蛋3.1 为什么小米笔试会倾斜嵌入式内容如果你投递的软件开发岗隶属于小米的某个硬件部门比如手机部、IOT平台部、汽车部或者简历里写了嵌入式方向的项目经历笔试时会遇到几道嵌入式相关的题目。这些题目虽然在整张卷子里占比不高大约3到5道但区分度非常大——因为非嵌入式方向的同学往往完全没有准备过这部分内容而嵌入式方向的同学如果答对了会和其他候选人拉开明显差距。而且从近两年的趋势来看小米的很多软件岗位实际上都在做端侧开发、系统底层优化、驱动适配、RTOS上应用开发这一类工作。不是说互联网大厂那套Web后端技术不重要而是小米的业务结构决定了它对软硬结合的人才需求更大。作为候选人提前在笔试中展现出自己具备嵌入式基础知识相当于给自己的简历加了一道印象分。3.2 嵌入式常考题目类型第一类是C语言与硬件的结合考察。比如 volatile 关键字的作用——这个在嵌入式笔试里几乎是必考题。volatile告诉编译器这个变量的值可能在程序控制流之外被改变比如被中断服务函数修改、被硬件寄存器映射修改所以编译器不能对它进行优化缓存每次使用必须从内存中重新读取。一个常见选择题是以下哪种场景必须使用 volatile选项包括中断服务函数中修改的全局变量、多线程共享的普通变量、const 修饰的只读变量、局部循环变量。正确答案是中断服务函数中修改的全局变量。多线程共享变量需要的是原子操作和锁volatile不解决原子性问题。第二类是寄存器操作与位运算。题目通常会给你一个寄存器地址和一个需要设置的位段让你写出对应的C语言代码。比如将地址0x40021000处的寄存器的第3位到第5位设置为二进制的101保持其他位不变。标准写法是#define REG (*(volatile unsigned int *)0x40021000) REG (REG ~(0x7 3)) | (0x5 3);这道题考察的是三个能力一是用指针操作绝对地址的能力二是嵌入式开发中读-改-写的标准操作模式三是对位掩码的熟练度。其中读-改-写这个点很重要因为直接对寄存器赋值会覆盖掉其他位原本的状态如果其他位控制着中断使能或者时钟分频就会诱发很难排查的Bug。第三类是中断与实时系统的概念题。比如中断服务函数ISR里能不能调用printf不能因为printf是非可重入函数而且底层会涉及锁和I/O操作在中断上下文里调用轻则效率极低重则死锁。正确的做法是中断里只做标记或搬运数据具体处理放在主循环或任务中。再比如FreeRTOS里什么函数可以在中断服务函数里调用答案是以FromISR结尾的API比如xQueueSendFromISR、xSemaphoreGiveFromISR。第四类是编译链接的底层问题。比如什么是链接脚本、什么是段text段、data段、bss段、为什么MCU程序里要设置栈顶地址。这些概念性的东西不会出特别深但能筛掉一批完全没有嵌入式经验的人。我考前刚好复习过链接脚本相关的内容遇到stack/heap大小配置的题目时能快速对齐思路。3.3 嵌入式候选人的额外准备建议如果你明确投递的是嵌入式软件开发方向建议在笔试前专门抽出几天做嵌入式专项复习不要和通用的软件开发复习混在一起。重点复习方向如下C语言进阶指针与数组的关系、结构体与联合体、位域、static/const/volatile/extern/register的具体语义以及声明与定义的区别。硬件基础GPIO、UART、I2C、SPI各自的特点和适用场景中断触发方式上升沿、下降沿、电平触发定时器原理。RTOS基础任务状态机、任务优先级与调度策略、信号量/互斥量/队列/事件标志组的使用场景、优先级反转问题及其解决方案优先级继承。编译与调试编译预处理、链接过程、map文件的分析方法、内存泄漏与栈溢出的排查手段。只要把上面这些点过一遍笔试里遇到的嵌入式题目基本不会超出范围。4. 编程题全解析两道题的分工非常明确4.1 第一题难度适中考察读题模拟细节小米笔试的编程题第一题通常是一道模拟题或简单算法题难度与LeetCode中等偏下题目相当主要是保证认真准备过的人能稳稳拿分。2024年这场的第一题核心是一个字符串处理状态记录的问题题干很长包含了很多背景描述但翻译成算法语言后其实很直接给定一个操作序列模拟某个状态的变化过程途中按条件输出特定值。这类题目的最大陷阱在读题上。题干一旦超过200字很多人就开始慌了读题速度加快结果漏掉了关键信息。比如今年这道题里有一句话是当状态值大于等于100时清零并记录一次进位如果没注意大于等于这个边界而只记了大于100那么测试用例里的边界值就会把你卡死。我的建议是不管多紧张第一遍读题必须逐字逐句读完并在草稿纸上写下关键约束条件。尤其是大于/大于等于小于/小于等于整数/正整数可重复/不可重复这些边界界定直接在草稿纸上用笔画圈。第一题的代码量通常在50行以内实现难度不大实际写起来常见的坑反而是容器操作的边界问题。比如C里使用vector在遍历过程中push_back会导致迭代器失效使用unordered_map时对不存在的key做operator[]会插入一个默认值可能改变容器大小从而影响后续逻辑。建议答题时尽量用最熟悉的数据结构不要为了秀技巧去用不常用的结构。如果时间允许写完后建议用题目给的示例手动走一遍代码逻辑确认每一步都符合预期。很多错误靠读代码是读不出来的必须走代码。4.2 第二题区分度所在算法硬实力的试金石第二题明显上了一个台阶。2024年这场考的是一个带有状态约束的图论问题本质是最短路径的变种但在遍历过程中引入了额外的决策维度。核心思路是用Dijkstra或者动态规划关键在于对状态的建模。举个例子类似题目是给定一个网格每个格子有一个数值你可以向上/下/左/右移动但移动时携带的能量值会变化要求找到从起点到终点的最短路径。这种题目如果只用dist[i][j]记录最短距离很可能会错过一条路程更长但更省资源的路径因为有些资源消耗不可逆。正确的做法是把额外约束维度加进状态里设置一个二维的visited数组甚至三维数组坐标资源剩余量然后用priority_queue做带权BFS。实际笔试时如果第二题没有完整思路我的策略是先写暴力解法拿部分分。小米的OJ一般不会只给0分或者AC两个结果通常存在部分通过的比例。一个正确的暴力解法至少能拿到30%到60%的分数好过空着不写。暴力解的核心是把问题完全模拟出来比如用DFS枚举所有路径找到符合条件的解。即便超时也能保证结果正确从而拿到部分分。然后在这个基础上再看有没有剪枝空间或者能否将暴力解法平滑迁移到记忆化搜索或DP解法上。这里我要多强调一句笔试不是竞赛不是只有AC和TLE两种结局部分分是真实存在的。很多人第二题看完觉得难就直接放弃跑去反复检查第一题这其实是浪费了得分机会。只要暴力思路清晰哪怕只通过了20%的用例也比你交白卷强得多。4.3 编程题环境适应与代码风格小米笔试的OJ对语言的限制比较宽松C、Java、Python、Go基本都支持。但从时间效率角度C和Java的模板代码最成熟因为它们在不依赖第三方库的情况下能轻松处理容器和算法调用。Python要小心运行超时尤其是涉及大数组遍历的题目。另外提交代码时要注意输入输出格式。今年笔试里有一道题的输入是多组测试用例但题干里并没有明确写多组数据处理到文件结束只是示例输入里给了两行。这种情况下很多对牛客笔试不熟的同学会只读一组数据结果连示例都跑不过。我个人的习惯是凡是在牛客上做题默认按多组输入处理除非能确认只有一组。在代码开头写上while (cin n) 或 while (scanf(...) ! EOF) 这种循环读取结构最多浪费几行代码但能避免最惨烈的输出错误。还有一个细节正式笔试的OJ对输出格式的要求很严格不允许有多余的空格和换行。如果你在本地调试时习惯了用printf(result %d\n, ans)提交时必须清理掉额外的输出字符。有些同学题目思路是对的最后因为输出格式不对导致Accepted变成Presentation Error那就很可惜了。5. 复盘与经验这场笔试真正筛选的是什么5.1 时间分配策略复盘回看整场笔试我认为最关键的时间分配节点是阶段时间预算策略选择题前40题50-60分钟单题不超过1.5分钟超过则标记后跳过编程题第一题20-25分钟读题5分钟实现15分钟验证5分钟编程题第二题30-40分钟读题10分钟思路10分钟实现20分钟检查与剩余题10分钟重点检查填空与最初跳过的选择题这个节奏是我踩过一次坑之后总结出来的。之前参加另一家公司的笔试我在一道选择题上死磕了10分钟结果编程题只剩40分钟两道题都来不及写出完整解法血亏。经过那一次之后我给自己定了一条铁律选择题超过2分钟没头绪先空着最后再说。为什么因为选择题的容错率其实比编程题低。两道编程题你只要完整做出一道加上选择题对个七八成总分就已经很好看了。但如果你在选择题上耗时过多编程题连暴力解法都没写那就是双重失血。笔试的核心逻辑永远是先把确定能拿的分全部拿到再去挑战不确定的分。5.2 有效刷题与无效刷题的差别今年这批笔试题目整体难度不高但区分度依然存在。我身边有同学刷了300多道LeetCode笔试成绩却不理想原因在于他刷题的方式太舒适了——打开LeetCode看到题目在脑子里想一遍想不出来就看题解看完题懈觉得哦原来是这样然后点下一题。这种行为本质上最大的作用就是心理安慰。有效的刷题方式应该是关掉题解和评论区独立写完整道题提交通过才算会。每周至少一次限时模拟完全按照笔试的规则来不查资料、不开补全、一次答题机会。每道题做完之后花5分钟总结这题考的是什么数据结构核心思想是什么我下次怎么一眼识别这类题简单说刷题不是看过多少而是独立做对多少。5.3 关于笔试通过率和后续流程的观察小米集团秋招的整体流程是网申 → 笔试 → 面试通常2到3轮→ 发放Offer。笔试通过率没有官方数据但从周围同学的反馈看只要认真准备过笔试刷人的比例并没有想象中那么夸张。真正的淘汰高峰出现在面试环节尤其是技术面中对项目深度的追问。所以如果你笔试通过只是拿到了一个入场券后续面试问的东西会更深入。比如你在简历上写了熟悉某种数据库面试官会追问MVCC机制、索引下推、redo log和binlog的两阶段提交写了消息队列会追问如何保证顺序消费、如何处理消息积压。笔试只是资格赛面试才是加分赛。不过反过来理解如果笔试挂了连展示项目的机会都没有所以笔试这一关务必求稳。5.4 面向后续批次同学的备考清单如果你准备投递小米下一批次的笔试围绕本次复盘我整理了一份可以直接照做的备考清单数据结构与算法数组、链表、栈、队列、哈希表、二叉树、图的遍历、动态规划入门、贪心算法、常见排序。重点练习模拟题和带约束的搜索题。操作系统进程线程、死锁、内存管理、虚拟内存、页面置换算法、进程同步与互斥。计算机网络TCP/UDP、TCP状态机、HTTP/HTTPS、DNS、IP地址规划。数据库索引、事务隔离级别、ACID、SQL复杂查询、B树原理。C/C基础指针、引用、内存管理、堆栈区别、编译链接过程、虚函数机制、内存对齐、volatile和const的深层语义。嵌入式方向补充针对硬件部门岗位寄存器操作、中断机制、RTOS核心概念、链接脚本基本概念。把这份清单上的点全部过一遍再用LeetCode的热门100题练手最后做两三套模拟卷控制时间节奏笔试基本就稳了。6. 写在最后我个人的几个实战体会说几个这次笔试下来最真实的感受吧。第一个体会是小米的笔试题风里有一种内部人出题的味道题目里经常藏着一些和实际业务相关的背景。比如涉及设备状态管理的模拟题、涉及端侧数据同步的编程题都隐约能感觉到出题人做过实际的嵌入式或者系统开发工作。这意味着如果你能结合自己的项目经验来理解题干很多题目会比死看算法模板的人更容易抓到要点。我在做那道状态模拟题时几乎是下意识地映射到了之前做过的一个物联网网关设备的状态机设计上思路一下就通了。第二个体会是笔试前一天的复习重点应该是查漏而不是题海。笔试前一周可以密集刷题但最后一天应该回归基础笔记把容易混淆的概念再过一遍。比如TCP的TIME_WAIT是主动关闭方进入的流量控制和拥塞控制的区别B树的叶子节点存储什么B树和B树的区别等等。这些考点属于看了就会、不看就错的类型临时抱佛脚的价值特别高。相反如果前一天还在拼了命地刷难题不仅收益低还会因为睡眠不足导致考试时头脑发昏。第三个体会是笔试时不要受周围人影响。牛客平台可以看到自己的实时排名有些同学看到别人提交速度很快自己就慌了以为别人都会做其实很多人的第一次提交只是交个暴力解保底。按照自己的节奏来选择题稳扎稳打编程题先保部分分再优化这个策略永远不会错。最后想说一句秋招是一场长跑笔试只是其中一棒。无论这一场考得好与坏都别太早高兴或灰心后面的面试才是决定能否拿到Offer的关键。我的建议是笔试结束后趁热打铁把考场上没做出来的题重新做一遍因为那才是为你量身定制的、最有价值的练习题。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

9月1日起正式实施!两项3D打印国家标准来了 2026/9/1 17:46:11

9月1日起正式实施!两项3D打印国家标准来了

2026年9月1日起,两项3D打印(增材制造)领域国家标准正式实施,分别为《增材制造 激光粉末床熔融铝合金及其复合材料制件技术规范》(GB/T 47195—2026)和《增材制造 数据接口规范》(GB/T 47196—20…

阅读更多 →
上市、退市、被收购后,这两家粘结剂喷射3D打印公司终合并 2026/9/1 17:46:11

上市、退市、被收购后,这两家粘结剂喷射3D打印公司终合并

ExOne voxeljet:合并后,仍叫ExOne。从8月13日起,他们就是一家公司了——法律上、纸面上、方方面面都是。ExOne GmbH和voxeljet GmbH已经在德国商业注册处合并为同一个法人实体,统一以ExOne GmbH的名义运营,总部设在Ge…

阅读更多 →
怎么判断云渲染公司专业度?5个能力评估维度参考 2026/9/1 17:46:11

怎么判断云渲染公司专业度?5个能力评估维度参考

云渲染公司专业度核心评估维度云渲染服务的专业度直接影响渲染效率、出图质量与项目交付时效,不同规模与场景的用户在选型时,可统一参考5个核心评估维度的判断标准,结合自身需求调整权重优先级。目前行业通用的评估框架总权重为100%&#xff…

阅读更多 →
2026年AI 学术工具哪家质量好,从功能与使用体验看科研工具选择 2026/9/1 17:46:11

2026年AI 学术工具哪家质量好,从功能与使用体验看科研工具选择

摘要:科研工作者日常会面对文献检索、论文撰写等大量重复性工作,AI 学术工具可以减轻科研负担。本文围绕沁言学术以及多款主流 AI 学术工具,从功能、使用体验展开梳理,帮助不同身份科研人员结合自身需求挑选适配的科研辅助工具。一…

阅读更多 →
Facebook BM 连坐封户频发,靠谱资源渠道如何甄别 2026 2026/9/1 17:46:11

Facebook BM 连坐封户频发,靠谱资源渠道如何甄别 2026

在 Meta 广告投放体系当中,BM 商务管理平台是跨境卖家管理广告账户、主页、像素数据的核心载体,矩阵化投放离不开稳定合规的 BM 资源。2026 年 Meta 风控规则持续收紧,BM 资产出现连坐封禁的概率大幅提升,不少跨境从业者踩坑劣质第…

阅读更多 →
Codex定时任务实战:用CLI实现无人值守的代码评审与日报自动生成 2026/9/1 17:43:11

Codex定时任务实战:用CLI实现无人值守的代码评审与日报自动生成

从“问一句答一句”到“挂一个定时任务自动跑”,这是 AI 编程工具从玩具变成生产力的关键一步。Codex 最容易被忽略的能力,不是对话框里的智能问答,而是它可以通过 CLI 在无人值守的环境里持续干活。这篇文章不讲那些花哨的交互式玩法&#x…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞