您的位置:首页 > 其它

小米嵌入式面经(转发)

2017-04-06 15:47 148 查看
面试得很广,从硬件、软件、基础知识、简历内容都有涉及。

整个面试持续了将近三个小时,由三位面试官轮流来问,分别偏重硬件、软件、以及综合,但总的来说还是围绕简历和基础知识来问的。

第一位面试官面的比较偏重硬件,分别问了:

1、数据传输的时候如果上下升延双倍速率采集数字信号的话,如果有一个边沿正好采集到数字跳 变时怎么办(我回答是从布局布线、建立保持时间以及FPGA的引脚约束相关方面来回答的);

2、模电中的运放,叫画一个求对数的电路,表示好几年没复习过,完全忘了,面试官表明还是很注重基础的;

3、由于面试得是小米的智能家居相关部门,而面试得这个团队产品上用的操作系统不是linux,而是类似ucos这样的,问了好一些进程间同步及通信的手段,也就是自旋锁、信号量这些东西的原理,还叫自己实现自旋锁;

4、看我FPGA有相关经验,叫用Verilog写了个计数器;

5、单向链表的排序;

6、快速排序;

7、C语言的一些基础知识(volatile、const、static、指针之类的);

第二位面试官稍微偏软一些,问的都是软件相关的问题:

1、实现memcpy(char*dest,char*sor,size_t size);

2、写一个宏OFFSET,已知结构体中一个成员,求出该成员在结构体中的内存偏移量,

#define OFFSET(type,member) ((size_t)&(((type*)0)->member))

3、结构体中的内存分布等;

4、出了一个题,已知有一个硬件计数器控制该计数器有两个寄存器,一个用于设置时钟的初始值,一个用于设置时钟的门限值,当时钟初始值设置好后开始计数,当计数值达到门限值后,便会触发一个函数的执行,让我编写两个函数,分别实现1:在任意时刻能够设置多少时间后触发某个函数的执行;2:在任意时刻能够取消之前设置的执行任务;(解决思路是用链表实现一个最小优先队列,设置任务对应着队列的插入,到时间执行和删除对应着优先队列的结点的删除,触发时跳到相应的函数中就行了);

最后一个面试官由于时间不足了,只问了一个比较发散的问题:

1、假设有一个很大的文件,里面的数据结构如下:

XXX.XXX.XXX.XXX(IP地址) 天气;如192.168.1.1 晴转多云

问怎么用最快的方式找到一个地区的天气状况(IP地址往往与地区有着对应关系)。我回答的思路是在存储文件的时候就将每一条信息对齐(即占用大小一样的地址),然后使用二分法搜寻每一个IP段的位置,移动文件指针即可(O(lgn));

当然,还问了些许关于简历上的项目,总的来说,问的很杂很多,但不会很难;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: