【投稿】算能科技|比特大陆嵌入式面经汇总
【嵌入式未来】
嵌入式软件开发最强攻略一篇就够了!《嵌入式软件开发笔试与面试手册》:https://blog.nowcoder.net/zhuanlan/jvN8gj
《嵌入式软件笔试-2023年真题汇总》专栏:https://blog.nowcoder.net/zhuanlan/0oDWVm
以下是算能科技|比特大陆嵌入式面经汇总👇👇👇
一
一开始问我项目细节,问了有10分钟,面试官电脑音频有问题,说话声音全是电流杂音,我实在是忍不住了提醒了一下,结果他说好吧我们来手撕(鬼子),说完这句话我大概知道我凉了
双向链表插入节点:写道一半给我叫停了,让我说说思路就行,你就不能让我思考一下写完吗,然后说了下思路,被吐槽了那个断链的顺序(我确实没想好),然后就挂了,应该是寄了
二
1.介绍web项目,遇到的问题?
我说我使用了同步epoll来模拟异步IO的框架,巴拉巴拉
面试官说实际上epoll是异步的,它是一个异步的通信,又问我异步和同步的区别
2.你的epoll是自己实现的吗?我说调用C库函数
3.能讲讲异步epoll和select,poll的区别吗?
我说了epoll的底层结构体以及内核的拷贝的区别,还没说完,面试官说你说的红黑树和双向链表只是帮助更快的找到指定的文件描述符,实际上epoll更快的原因是更宏观上的。
4.线程间的通信?我说了通过全局通信,需要用到锁
5.互斥和自旋锁区别?
然后问C++的相关知识
6.数据结构上,栈和队列的区别
7.在双向链表中间插入节点需要注意什么?
我说的主要是插入元素导致迭代器失效的问题。
面试官说,我想问的主要是断链这个问题,双向链表是由head和tail节点构成,在这两个节点之间插入节点怎么避免断链?
我才知道原来问的是在空链表插入节点,我说我理解的head是一个dummyhead,所以要让dummyhead指向插入节点,插入节点再指向尾节点。
6.指针和引用的区别?我说了区别
面试官:实际上我想问你引用指向一个局部变量会出现什么问题?我说函数参数传递方面。面试官说实际上,引用指向局部变量的时候,当超出作用域,引用也会变成类似野指针这样的东西
7.引用指向6的内存会发生什么?
我一直没听懂,6是啥?我又问,我没太懂您说的问题,6是指数字6吗?面试官:不是不是,我说的6和delete
我才知道原来说的是new。我说引用指向new的内存,是和内存泄露有关吗?
面试官说,是这个意思,new的时候调用构造函数获得资源,但是引用内存在析构对象的时候不会释放资源。
8.问我对嵌入式工作的理解,想从嵌入式获得什么
三
选择题17题+3道问答题;
选择题,包括操作系统、C、C++、MySQL、逻辑推理、概率论;不过都比较简单;
问答题:题目是编程题,不过无用例和调试,也不知道能不能切去IDE;
1、将数组a、b合并为数组c,并使c有序。题目也没说a、b的是整形还是浮点型,也没说a、b是否有序;
2、给定一个仅含字母的单词字符串,单词间用空格隔开,输出最后一个单词的长度;
3、两数之和;
一面:60min;
问:
意向城市:有北京和深圳,我选深圳;
在linux上手撕括号匹配;(用的是牛客的面试平台,但让我共享屏幕,在linux上写,应该是看一下linux的熟悉程度)
指针(int *p2=&x, int *p1=&p2, *p1=?)
TCP沾包怎么办?
服务端和客户端本来一直处于连接状态,但有需求才发送数据,这时客户端断开连接,服务端怎么处理?
中断里使用线程通信要注意啥?
四
自我介绍
打开搜索框按下回车会发生什么?根据这个问题把http,tcp,ip,mac,dns,arp,路由器,交换机,基本上把网络相关的问题都问了一遍。
https的目的,加密过程,ca证书
静态链接动态链接
写了个反转链表,需要自己定义节点,输入输出
问嵌入式相关。我一点都不懂,就没继续问了。
大端和小端,写个代码判断当前机器是大端还是小端。
反问
我以为做矿机只是跟硬件打交道,面试官说跟我写的那个Webserver也相关,要连接矿池什么的。结束后搜了一下他们的薪资,惊呆我了30min左右
五
一面:
先问一下选择比特大陆还是算能科技,然后工作地点想选择哪里?问简历上的课题项目。这设备是别人做好了吗?控制的逻辑是如何?为什么选择UCOS?用什么编译软件?这RTOS有哪些任务?如何滤波?使用什么sense?项目过程中遇到了什么问题?用什么交互方法?看简历偏向于硬件,软硬件自己如何看?课题主要是做什么?软件开发语言这方面有系统学过吗?或者学校培养的课程?一段代码的编译过程描述一下。预编译有哪些内容?最后看代码然后回答问题,是指针指向问题,然后指针++指向那里。第二题共享屏幕手撕代码,二叉树的前序、中序或后续随便写一个。看我使用c++,问一下为什么不用c?问这个函数(递归)叫什么函数?作用是什么?保存在哪里?然后问写的代码中某个变量,它是存放在堆还是栈中?如果static定义呢会是怎样的?然后问某个变量的作用域,是否会被销毁?第三题,写两个链表的合成,按大小顺序排,自己回答一下解题的思路,问可不可以用c语言实现,不用c++,写了一半,面试官看着思路可以然后就叫停了,可能面试时间也差不多了。之后就是反问环节。
二面:
问简历上的项目,项目由来,为什么要做这个项目,而你负责的哪些部分?可以详细介绍一些吗?中断的处理过程描述一下。你一般使用什么软件进行debug。堆和栈的区别或异同。Linux有了解吗?stm32的启动过程。项目的最大困难是什么?从中学习到了什么?平常有使用到什么调试助手?因外接环境而改变你自己的经历吗?描述一下。你是偏向于长期目标还是短期目标?你对这个岗位的了解是?你了解我们公司吗?你对加班或出差有什么看法?问简历上的竞赛、项目、专利等?之后就是反问环节。
六
比特大陆:一共两面,均为电话面,应聘的是全定制模拟IC实习生岗位,所以面试官都是对着我简历里的模拟IC经历问,简历里写我做过跨导放大器和ADC设计,于是问我放大器选用了什么结构的电流镜搭建,为何要选用这个结构,补偿是怎么做的,仿真时参数是怎样的。 再问ADC的结构,有几个模块,如何实现,仿真的结果如何。 以上为跟此岗位相关的问题,我答上答不上就那么过去了。。因为都是一年前的项目经历了,我都忘得差不多了,准备的也不细致。后来面试官就对着简历里他们感兴趣的项目问问我情况,我就介绍一下,就这样。 一面的感觉比较轻松,聊的比较高兴,二面的话问的技术问题比较多,自己也比较难受,但好在我自己心态稳,没有乱,能想到的都答上了。 结果:面试通过,拿到offer
#算能科技##比特大陆##嵌入式##面试##秋招#