首页 > 技术文章 > 2020秋招嵌入式面经——地平线、小米、CVTE、大华、绿米

kryo 2019-10-17 10:31 原文

地平线提前批 一面凉

投递简历过程:官网投递9月份之前投的都是提前批,投了北京、上海、南京地区的嵌入式软件研发岗,北京和上海的都被筛掉了,南京的捞了我,hr小姐姐打电话邀约面试。

一面凉:

电话面试,第一次收到面试通知十分痛苦,面试AI芯片独角兽,完全没有一点点准备,知识也没有捡起来,十分紧张,面试官很好,不停开导。

1、自我介绍

2、解释register关键字

3、字节对齐

4、数据库查询左连接和右连接的区别(跪了,数据库全忘了)

5、static关键字在函数中、源文件中、头文件中有什么区别(凉)

6、数据结构和算法了解不,分治法、贪心法(凉)

7、项目介绍

8、你还有什么要问的

总结:面试表现太差,17分钟结束,自己太菜,面试基础很重要,牛客上说地平线嵌入式的面试考的很广。

小米提前批 二面凉:

投递简历过程:官网投递9月份之前投的都是提前批,投了嵌入式工程师,地平线面试完晚上突然接到小米公司的电话,面试官邀约面试。

一面 27min:

牛客网视频面试,心想又完了,还没复习又来面试,而且是世界五百强公司的面试,作为米粉异常痛苦(对自己恨铁不成钢),好在小米的面试官也十分和善。

1、自我介绍

2、项目介绍

3、项目中的总线解释一下

4、线程同步

5、编程题:冒泡排序、链表逆置(面试官说,我考一下你的编程能力吧,要简单的题目还是要难的题目?答:简单的)

6、谈谈你对小米的了解

7、你还有什么想问的

8、工作地点选一个(深圳,选完面试官解释北京负责小米系列,南京负责MIUI,深圳负责红米系列)

二面 30min:

小米深圳的面试官打电话邀约面试

1、C/C++程序 内存分布情况 常量所在的区(没回答好)

2、STM32 GPIO(没有认真复习,细节全记错了,比如开漏输出)

3、什么是倒灌(本来很能理解电流倒灌的原理,因为学习FPGA时了解到线与逻辑会导致倒灌而损坏器件,当时没回想起来,用自己的话表述的,不甘心)

4、深挖项目(没回答好,自己的项目也必须好好复习)

5、问了一下小米的培训机制,导师制,最好实习6个月左右(大佬肯定不用,还有几万的签字费)

总结:小米基本会给很多人面试的机会,只怪自己太菜,无准备之战,必败无疑

广州视源(CVTE)一面凉:

投递简历过程:官网投递,选择笔试场次(20多道选择题,2道编程题),笔试通过后选择面试场次。

一面 60+min:

去面试酒店扫码排队,酒店人超多,一定要提前去

1、自我介绍

2、项目介绍,画出硬件拓扑图

3、解释一下中断 中断处理时间过长(中断下半部) 中断触发方式 中断处理函数注意事项(有参数和返回值吗,为什么)

4、编程题 1)给出寄存器的地址和位宽,读写寄存器 2)字符串处理,大小写转换

5、对嵌入式的了解

6、我们是996,对加班的看法

7、有什么职业规划,什么原因会让你离开公司(巨坑)

总结:面试官的暗语是一面和二面面试官都是我,回去等凉了的消息吧。

浙江大华 一面凉 20min:

网申投递,通过筛选后笔试,笔试通过,面试官发短信让我当天选择时间,感觉自己是被随便捞起来看看,面完第二天收到辞谢信。

1、项目介绍,IIC总线说一下。

2、C语言分哪几区,static修饰的局部变量在哪里?

3、Linux有用过哪些,干了什么事?(我说Debian系列、Centos都用过)

4、NOR Flash 和 NAND Flash 文件系统(忘了,让我补充了一下非嵌入式的文件系统)

5、Linux用户态如何进入内核态?

6、看看你的笔试题,解释一下栈的特点。

7、有什么想问我的?(问了一下 视频会议C嵌入式的工作内容,面试官说有ARM单片机的,也有Linux的驱动开发,也有我做过的服务器和数据库的部署,感觉超级符合)

8、什么时候能够实习,毕设怎么办?

总结:面试表现最好的一次,我说我在学习《Linux设备驱动程序》和《UNIX环境高级编程》,面试官说这两本书要好好看,我想我还是表现太平庸了,大华投的人很多,优秀的人都不缺。

绿米联创 三面 offer:

网申后,宣讲会笔试,笔试内容非常基础,考察对C/C++的基础,C++的全忘了,笔试完当天晚上收到面试邀请。

技术面 约50min:

面试官比较nice,十分和善。

1、复盘笔试题

  1)高内聚低耦合什么意思,为什么要这么做

  2)写一个“标准”的宏,比较两个数的大小(有什么需要改进的,为什么这么改,如果是i++怎么做,不知道,面试官告诉我应该用临时变量)

  3)反转链表的编程题写错了

2、IIC总线时序

3、写出计算机网络 五层模型 每一层对应的协议 解释ICMP DHCP

4、HTTP 从浏览器输入域名的全过程

5、项目架构画一下,项目中的无线模块是怎么回事 因为我投的无线组,问的比较深

6、写个程序判断CPU字节序,写对了(小米的面试官也问过,当时不记得了,巨难受)

7、项目中的难题

8、你知道哪些加密方式,非对称加密?

9、进入Linux内核态,为什么要分为用户态和内核态

10、想搞哪个方向?(我作死,说想搞Linux,后面有了leader加面,因为这个方向是网关组的,当时没意识到面试官是无线组的leader)

11、深圳压力很大,为什么想来深圳?

12、有什么要问的,问了一下绿米产品的IoT安全。

hr面:

0、比较考察个人综合素质,考察你对行业的认识,对公司的了解,临场反应能力等,hr没有给人压力。

leader加面 30min:
1、IIC总线(?)

2、项目中类似于IFTTT的解释了一下

3、给我一个硬件工程师做好的人体感应模块,如何用zigbee对接网关(答的不好)

4、C++多态

5、自动控制原理中的PID

总结:我感觉我什么的可以说一下,但是回答的可能不是很让面试官满意,无论是对知识的理解正确度上、深度上,都差那么一口气,还是要多学,学精学专一点。

秋招总结:

1、基础!!!基础!!!基础!!!

2、不要盲目自信,自己的项目也要通透,能够对答如流。

3、问一答十,准确且全面,不要挤牙膏,不会的问题一定要找个相似的补上,面试官想看到你知识体系,深度和广度。

4、心态一定要调整好,疯狂投递刷题笔试面试,有机会就上,失败了就多多复盘。

5、一定要好好准备,看面经啥的,可惜了提前批(学霸批)大厂独角兽的面试机会,不过对于我一个菜鸟大厂只能是幻想。

附面试代码:

1、字节对齐与大小端

 1 //
 2 //  Deepc.cpp
 3 //  Study  -- C的深入
 4 //
 5 //  Created by Admin-X on 2019/10/6.
 6 //  Copyright © 2019年 Admin-X. All rights reserved.
 7 //
 8 
 9 #include "Deepc.hpp"
10 #include <iostream>
11 using namespace std;
12 #pragma pack(4) //改变对齐字长
13 
14 void byteSize(){    //          4-byte                   8-byte
15     struct fun{         //  Address   offset         Address   offset
16         int a;          //  0x6EFE7C    +0           0x6EFE78    +0
17         double b;       //  0x6EFE80    +4           0x6EFE80    +8
18         char c;         //  0x6EFE88    +8           0x6EFE88    +8
19         char d;         //  0x6EFE89    +1           0x6EFE89    +1
20         int e;          //  0x6EFE8C    +3           0x6EFE8C    +3
21     }F;
22     cout << sizeof(F) << endl;
23     //printf("0x%X\n0x%X\n0x%X\n0x%X\n0x%X\n",&F.a,&F.b,&F.c,&F.d,&F.e);
24     //printf("0x%X\n",&F.k);
25 }
26 
27 void checkCPU()    //检测CPU大小端字节序,小端字节序:低位的地址存储低位的字节 ,大端反之
28 {
29     union w                 //                        Big-endian/Little-endian
30     {                       //(Address)     0x00 0x01 0x02 0x03 // 0x00 0x01 0x02 0x03
31         unsigned int a ;    //(Data)        0x87 0x65 0x43 0x21 // 0x21 0x43 0x65 0x87
32         char b;
33     }c;
34     c.a = 0x87654321;
35     if(c.b == 0x21){
36         printf("little-endian\n");
37     }else{
38         printf("big-endian\n");
39     }
40 }
View Code

 

推荐阅读