阿里 嵌入式面经一面

我先说一下,我这个是嵌入式应用层的开发。

早上在公司接到的阿里的面试,他问我什么时候有时间,我直接坦白了我在实习了,白天不行,问问可不可以安排在晚上,他答应了,安排的晚上八点,我面试完就煮了碗面吃了就开始整理,害怕等久了我就忘了。

首先说一下整体感受,面试官人挺好的,我整个面试过程也特别自信。我感觉面试官对我印象应该还行,当然,其实我也不是他问的所有东西都知道,只是我了解的不够就明说,了解的就多说些,以前面的时候多少有些紧张,现在想通了,反正也就这样,大不了面不过嘛,又不是多大个损失。可能因为我是面试老油条了,面试一点都不慌。

我还是强调一下,现在是提前批,很多大公司提前批招人就招的差不多了,所以,还是建议大家多投简历,越往后越难。

1.自我介绍

2.你刚刚在自我介绍中提到你对于网络编程和环境编程比较了解,能说说你指的网络编程是什么吗?

回答:socket编程,自己也做过一些小实验,实现了B/S通信。

3.具体讲一讲socket编程的步骤。

我是从客户端讲到服务端的,因为我面的是应用层,他对这个问得比较细。

4.你刚刚讲的是一个客户端和一个服务端的连接,有考虑过多个客户端和一个服务端连接的情况吗?

我回答了多进程的实现方式,没有问select和epoll,但还是建议大家还是去看看epoll和select,因为我面的华飞智能,他们主要是多线程和多进程开发比较多。

5.你有了解过多线程的开发吗?

我只是了解多线程的开发,但没有了解过怎么实现,但我认为,多线程和多进程的实现是类似的

6.那你说说多线程的开发?

首先调用pthread_creat()的时候传入一个函数名,在线程成功创建之后会执行这个函数。可以在函数中实现我们想要并发执行的功能。

7.在多进程和多线程编程中,一般用哪些方式来控制进程和线程对资源的访问。

一般常用互斥锁,自旋锁和信号量(还有条件变量等其他方式,多了解几个)

8.你使用过什么方式呢?

我使用过信号量,信号量相当于一个计数器,有进程访问的时候计数器减一,当进程访问完毕之后计数器加一。

9.在你使用多进程编程的时候,一般用什么方式创建进程呢?fork()还是vfork()?

这里我回答的fork()函数,vfork()没用过,不敢讲,然后问我fork()返回0的时候是哪个进程,这个肯定是子进程。

解释一下:Fork()的返回值是返回子进程的进程号,因为子进程刚创建他没有孩子,所以返回0;

10.你对C++有了解吗?

有了解过C++的智能指针和面向对象的一些特性,但没做过实际的项目,平时用C用得比较多。

11.你有了解过内存分配吗?说一下堆和栈分别储存哪些数据

讲真的,我见过问堆和栈的区别的,也见过问代码中的全局变量和局部变量以及静态变量存储区域的,第一次遇到这么问的。

我回答的是,栈主要可以存储局部变量,函数参数。堆应该是可以存储任何数据的,堆空间是程序员申请的,想往里面存储什么都可以,但是用完之后需要释放空间,当然C++智能指针不用释放,它会自动释放。

我不知道这个回答对不对,反正按我的理解就这么回答。

手撕做了一个环形接收器

12.最后反问阶段

我就像往常一样,问面试官对新人的培养啥的,公司晋升制度之类的,说实话,我想不出来其他问题。

嵌入式软件工程师面试完全指南

面经一共32篇文章,12w+字数,包含全部最新的面试必问考点,4.7w+同学学习,3200+订阅,非常适合在找工作面经薄弱的同学,3500+订阅还会涨价到39.9,提前订阅提前享受,持续更新中。

原帖链接:https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM

全部评论

相关推荐

码客明:我教你个方法,你和你室友沟通一下告知他这个事情。然后就说导员问我就说,室友已经和导员提前沟通了。最后被查到你就说室友和我说了他已经和你沟通好了我没想到他是骗我的呀!把责任都甩给你室友,当然你出去实习的室友也肯定愿意承担这个责任。
点赞 评论 收藏
分享
bg华科本硕,无实习,项目是组里的横向,偏伺服控制。求职方向是嵌入式软件开发。技术栈包括ARM裸机开发、FPGA、硬件设计和一点Linux系统(自学了一点网上的教程,无成熟项目经历)。暑期实习2月底开始投递,到5月底结束所有面试。投了30家左右,进面的8家。下面是本人的面试记录(按时间顺序):1.CVTE嵌入式软件开发(一面挂)。第一次面试就是线下面,先做了一个SPI驱动开发的AI coding笔试,IDE类似cursor,当时不太熟悉,没发挥好。然后是技术面,因为本人项目偏裸机,面试官不太感兴趣(估计需要Linux项目经历),还问了几个AI coding的问题就结束了。主要原因还是经验不足加方向不匹配。2.OPPO系统工程师(已oc)。投递的时候看到有RTOS开发的方向,结果面完之后发现主要还是安卓系统优化相关的,方向不是特别匹配,但还是面试通过了。流程一共3面,技术面、主管面和hr面。技术面主要问的项目,无八股。主要关注解决项目的思维以及和在团队中如何互相沟通配合等等。主管面比较关注综合素质,会有一些临场反应的问题,个人觉得保持理性,从技术人员角度回答即可。HR面相对轻松,一方面是看你对岗位和公司的了解,还有就是过往的背景等等。整体流程推进非常快,面试官也很nice,是本人第一个拿的offer,减轻了非常大的压力。3.字节移动os开发(二面挂)。压力最大的面试,HR说一共三轮术面,每轮都有手撕。一面是基础的八股,包括SPI、I2C通信,C语言和操作系统的基础知识。手撕是leetcode902. 最大为 N 的数字组合,ACM模式。八股回答的挺好,但是手撕只做对一部分,最后还是过了。二面开始拷打项目,问的问题特别细,涉及具体的技术指标以及设计的依据等等。手撕是leetcode25.K个一组翻转链表。项目拷打有点力不从心,手撕也没做出来,挂了。4.蚂蚁嵌入式开发(一面挂)。蚂蚁笔试是一个完全不相关的AI coding,我做的是用ai实现一个文本交互的视频剪辑软件,有基础要求和加分项,做了一个半小时最后只实现了基本要求,没想到过了。一面开始面试官先介绍了本部门主要业务,然后问项目,最后围绕部门业务相关的技术点展开,包括FreeRTOS、MQTT等等,MQTT我不太熟,挂了。5.小米汽车嵌入式软件(已oc)。两轮技术面,过程和蚂蚁比较像,也是介绍部门业务、聊项目和问一些业务相关技术,包括CAN、以太网外设驱动、RTOS等等。一面有手撕,leetcode21.合并两个有序链表,但是可以只说思路,比较简单。时间要求三个月以上所以拒了。6.华为嵌入式软件(已oc)。今年华为两轮面试要求双机位,事先准备了一个落地手机支架。技术面主要问项目,不是很深,少量八股。手撕是leetcode122.买卖股票的最佳时机Ⅱ,比较简单,还有两道C/C++的选择题。主管面主要聊对技术的理解和解决问题的思维等等,比较综合。不得不说华子的流程还是太久了,面完之后还得审批泡池子,等了一个月才发offer。7.海康威视固件开发(已oc)。一轮技术面,一轮hr面,面试整体难度不大,少量八股。hr面纯聊天,问题基本和技术不相关。发offer时发现被调岗到了系统全栈开发,好像是做ARM+FPGA相关的。8.禾赛科技(实习时间不满足)。投了两个月才电话约面,可能是人数有缺口,hr说只有一轮面试。一面问了挺多八股,包括I2C、SPI协议,Linux进程调度以及C语言等等,而且一般都会深挖(比如问SPI怎么减少引脚数等等)。有手撕,是leetcode2.两数相加,还有C语言的语法题。面完之后hr立刻打电话说通过了,问能不能实习三个月。最后只能拒绝。总结:最后也是拿到了想要的offer,去了华子。经验积累对求职还是非常重要的,还有就是对项目、技术理解的深度以及临场的发挥。希望大家都可以拿到自己心仪的offer。
查看24道真题和解析
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-28 11:22
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务