华为嵌入式社招面经分享

先介绍一下基本情况:本人2018年本科毕业,在原公司工作了差不多一年,受疫情影响,打算跳槽,然后就开始投简历。后面收到华为的面试通知,都是线上面试,下面给大家分享一下面试的过程。[投的是嵌入式工程师岗]

一面:
1、先是围绕着我的简历做了自我介绍,关键叙述了一下我所做的几个项目节点,以及当前所负责的工作。
2、之后面试官就围绕着简历中所写的内容,抽一两个项目来问具体的技术细节。
3、着重问了tcp/ip的原理,状态位等在具体传输过程中的改变,还有一个OTA升级项目的细节问题。
4、然后是一个手撕代码的环节,限时30分钟,题目是一个数组排序的问题。

二面
1、刚开始也是一个自我介绍,这次除了介绍简历上的内容,并且还说了一下我的优劣势。
2、然后面试问的问题就比较深入了,问了Tcp的拥塞机制,还有重传,以及窗口大小是如何制定的等等。[滑动窗口问题我回答了传输时是如何确定的。]
3、然后又问我那这个窗口是如何创建的。[我说了是握手是定义的,然后补充确实不是很清楚]
4、接下来又问了ARM的中断管理,有几种中断状态。
5、之后面试官让我设计一个OTA升级程序,可以不重启就升级。
6、然后还是手撕代码环节,题目是五子棋判赢,输入期盘2维数组,输出白赢黑赢还是都没赢,依然是30分钟。并让我解释了一下思路。
7、最后问我有没有想到什么算法[我就说了下遍历邻接节点。]


综面(最终面)
1、一上来先进行了一次自我介绍,为了给主考官多留下一些印象,这次加入了一些我上学时候为什么会学习计算机科学的事情,以及职业生涯的计划。
2、之后面试官又问了我那个问题,设计一个不用重启的升级方案。
3、然后问了一些我原公司的事。
4、“你还有什么要问我的吗?”[我问了能否有机会转入华为正式员工的问题]

感觉基本上凉凉。#华为##社招##面经##嵌入式工程师#
全部评论
你这样就凉了 我们更没有戏了
1 回复 分享
发布于 2020-06-11 15:53
感谢分享,楼主之前是做什么嵌入式产品的
点赞 回复 分享
发布于 2020-05-06 20:15
这不回答的挺好嘛,咋凉凉了
点赞 回复 分享
发布于 2020-05-24 01:59
这都凉了,我还活不活了。
点赞 回复 分享
发布于 2021-06-07 17:32
能问一下,不用重启的方案思路是什么呢
点赞 回复 分享
发布于 2022-05-12 10:15

相关推荐

不愿透露姓名的神秘牛友
昨天 22:11
臻驱科技 嵌入式软件开发 (20+n)*15 大专
点赞 评论 收藏
分享
3.内存管理&编程题(20道) 3.1由gcc编译的C语言程序占用的内存分为哪几个部分?栈区(stack)存放函数的参数、局部变量。堆区(heap)提供程序员动态申请的内存空间。全局(静态)区(static)存放全局变量和静态变量,初始化不为0的全局变量和静态变量、const型常量在一块区域(.data段),未初始化的、初始化为0的全局变量和静态变量在相邻的另一块区域(.bss段)。程序代码区存放函数体的二进制代码和字符串常量。3.2小端:一个数据的低位字节数据存储在低地址   大端:一个数据的高位字节数据存储在低地址   例如:int a=0x12345678;  //a首地址为0x200,大端存储格式如下:如何判读一个系统的大小端存储模式?(1)方法一:int *强制类型转换为char *,用"[]"解引用 void checkCpuMode(void)  {      int c = 0x12345678;      char *p = (char *)&c;      if(p[0] == 0x12)          printf("Big endian.");      else if(p[0] == 0x78)          printf("Little endian.");      else          printf("Uncertain.");  }  (2)方法二:int *强制类型转换为char *,用"*"解引用 void checkCpuMode(void)  {      int c = 0x12345678;      char *p = (char *)&c;      if(*p == 0x12)          printf("Big endian.");      else if(*p == 0x78)          printf("Little endian.");      else          printf("Uncertain.");  }  (3)方法三:包含short跟char的共用体 void checkCpuMode(void)  {      union Data      {          short a;          char b[sizeof(short)];      }data;      data.a = 0x1234;        if(data.b[0] == 0x12)          printf("Big endian.");      else if(data.b[0] == 0x34)          printf("Little endian.");      else          printf("uncertain.");  }  3.3全局变量和局部变量的区别?(1)全局变量储存在静态区,进入main函数之前就被创建,生命周期为整个源程序。 (2)局部变量在栈中分配,在函数被调用时才被创建,在函数退出时销毁,生命周期为函数内。 3.4以下程序中,主函数能否成功申请到内存空间?#include  #include  #include  void getmemory(char *p)  {      p = (char *)malloc(100);      strcpy(p, "hello world");  }  int main()  {      char *str = NULL;      getmemory(str);      printf("%s", str);      free(str);      return 0;  }  答案:不能。 解读:getmemory(str)没能改变str的值,因为传递给子函数的只是str的复制值NULL,main函数中的str一直都是 NULL。正确的getmemory()如下: ①传递的是二重指针,即str的指针void getmemory(char **p)   {      *p = (char *)malloc(100);      strcpy(*p, "hello world");  }  ②传递的是指针别名,即str的别名,C++中void getmemory(char * &p)   {      p = (char *)malloc(100);      strcpy(p, "hello world");  }  以上内容摘自专刊《嵌入式岗位笔试面试真题讲解》,该专刊不仅有真题讲解,还有经验分享,不清楚嵌入式该学什么的同学,想找嵌入式实习/正式工作的同学,都可以来看看:                  https://blog.nowcoder.net/zhuanlan/v0ELPM嵌入式公司推荐:   华为       、    小米         、     OPPO       、VIVO、     CVTE         、     大疆       、insta360影石、美的  、   TCL  、小米    、经纬恒润     、小鹏、 图森未来    、   百度    、滴滴、蔚来、理想、     联发科、 紫光展锐    、全志、   寒武纪    、晶晨半导体   、汇顶、华为     、 中兴    、浪潮    、TP-LINK、    讯飞、商汤、海康威视    、浙江   大华    、360。qi
查看4道真题和解析
点赞 评论 收藏
分享
评论
5
39
分享
牛客网
牛客企业服务