嵌入式面试常见问题(七)—各大公司面试题

6、深信服面试

1、简历中写了做过海思项目,问海思项目最大的难点是什么?怎么解决的。(还问了编码的原理,h264
和265的区别,如果sensor默认是720p的,我要怎么得到1080p,应该在哪里修改)
2、野指针产生原因和解决方法
3、指针函数和函数指针的区别?
4、strcpy是安全的吗,那strncpy又一定是安全的吗。手写memcpy实现的时候,需要考虑到什么问题
(需要考虑到如果原地址+拷贝的字节数大于目标地址时,会出现覆盖的问题)
5、说一下函数宏和内联函数
6、说一下什么时候用线程什么时候用进程
7、说一下C++里面虚函数的作用
8、说一下二叉树
9、C++ STL了解过吗,说一下STL各个容器的用法
10、说一下socket的内部原理
11、给出两个字符串,求最长的相同子串
12、给一个字符串,然后把这个字符串逆序
13、链表有几种,每种链表有什么区别
14、数组和链表的区别,分情况讨论一下它们的效率问题
15、说一下快排的思想,它的复杂度是多少,和冒泡排序,选择排序比起来是怎么样的
16、怎么看待加班,能接受出差吗?
17、说一下你的优点和缺点
18、说一下你对这个岗位的理解
19、说一下你未来五年的工作计划
20、你是怎么看待以后嵌入式的发展行情的
21、你觉得作为一个优秀的程序员,应该怎么做
22、说一下linux下,和文件io相关的函数
23、说一下extern关键字
24、说一下内存四区
25、说一下多进程多线程的通信方式,说一下用过哪个。
26、说一下网络编程中,在服务器这边,需要用到哪些函数,这些函数的作用是什么
27、然后问到了char a[0],也就是一个没有元素的数组,面试官把这个结合着结构体来问我,我当时
完全不懂什么意思,然后面试官说应该是我没用过,所有就跳过了。
28、说一下栈和队列的特点,如何判断一个队列是满的或是空的,如何利用栈来实现加减乘除(很经典
的一个问题)
29、有看过malloc源码吗?简单说一下malloc的原理
30、说一下你的四年大学生活

7、浙江大华面试(2)

一面(25分钟):
1、自我介绍

2、简历中写了做过朱友鹏老师的海思音视频项目,所以问了海思项目。
回答:问vi-vpss-venc模块的东西,问这些模块里面的代码有没有深入去了解过,这一块问得比较深,一
直问到底部用到的那些API的功能;
问我项目用了几个线程;有没有用到锁机制;VLC播放器也就是客户端这边,大概是通过怎么样的方式
和过程来连接服务器的;然后详细问了我项目中用链式队列构建环状buffer的点,问我的思路;

3、问我简历上的FTP项目,问遇到过什么难点。问是按照FTP协议的写代码的,还是我自己自定义协议
来写代码的。

4、你是XXX专业的,是怎么学习嵌入式的?

5、二叉树会不会?

我说之前学过,去leetcode上面刷过题,但是没有用过了。而且隔了四五个月了,基本上都忘了。平时
用得比较多的还是链表、栈和队列。

6、linux创建进程和线程的函数是什么,说一下?

回答:我把函数名字和函数的各个参数都详细地说出来了,面试官就没有深问下去了。

7、linux下进程的通信方式;说一下信号量,熟悉哪些信号量,用到哪些函数;说一下共享内存,分别
调用了哪些函数以及这些函数的功能?

8、在CS架构中,服务器是怎么样判断客户端什么时候断开连接(当read函数的返回值位0的时候,说明
对端关闭)

总结:问的问题都会,而且回答得很流畅,没有拖沓,面试难度不大,主要都是细节部分,细到包括系
统函数的参数分别是什么;然后他说他那边觉得我没啥问题了,明确告诉我会有二面,二面会在一个星
期内给通知。

二面(20分钟):

1、问很多简历上的海思项目,问你做的那个构建环状buffer部分,问得很深,几乎是从源码的角度来扣
的。

2、问死锁,怎么生成的,举个例子?

3、数组、链表什么区别?分情况讨论一下它们的效率问题?

4、数据结构学过吗,二叉树学过吗?说一下

5、虚函数解决的是什么问题?析构函数在什么时候需要声明为虚函数?

6、进程的虚拟地址有多少,物理地址和虚拟地址的关系,这两种地址是怎么建立起关系的?

7、多线程多进程的区别?

8、手上有多少offer?

最后面试官说面试通过了,七天内会有hr跟我聊薪资的。

8、海康威视面试

时间:2021.03.23,15分钟

1、TCP的包头有哪些东西?

2、数组和链表的优点?

3、线程和进程的区别?

4、说一下消息队列。

5、说一下红黑树。

6、说一下内核链表的实现。

7、说一下自己的项目中,有哪些是能提现深度思考后得到的,做出来的东西。

8、简历的项目中,那个TFP项目,如果遇到网络突然中断了,中断传输了,应该怎么办?

9、说一下断点传输文件的好处。

10、简历海思项目中,有哪些情况会导致掉帧的情况,说一下。

11、用过RTMP吗?说一下(音视频领域)

回答:海康威视和浙江大华都是中国安防的龙头企业,嵌入式软件岗位偏向于音视频的技术。

9、小米面试(2)

投递岗位:嵌入式软件工程师-BSP方向

面试时间:2021.03.29

岗位描述:

一面(30分钟) :

主要问你简历自己写的东西。

1、做一个英文自我介绍。

2、uboot启动流程?

回答:从uboot如何引导内核启动,kernel启动时怎么挂载根文件系统从头到尾说了一下。

3、面试官说通过了,进入下一轮。

二面(25分钟):
1、驱动下半部分需要做些什么?

2、C语言和C++有什么区别?比如static,malloc和new。

3、C++的三大特征说一下。

4、你C++学的怎么样?

回答:主要用C语言,不太了解C++。

5、问简历中项目实现框架和细节。

补充:

关于嵌入式方向“驱动工程师”和“BSP工程师”的区别,做了一点总结,欢迎补充。
BSP即Board Support Package,板级支持包。它来源于嵌入式操作系统与硬件无关的设计思想,操作
系统被设计为运行在虚拟的硬件平台上。对于具体的硬件平台,与硬件相关的代码都被封装在BSP中,
由BSP向上提供虚拟的硬件平台,BSP与操作系统通过定义好的接口进行交互。BSP是所有与硬件相关的
代码体的集合。

BSP在嵌入式系统中的角色,很相似于在PC系统中的BIOS和驱动程序的地位。BSP就看成BIOS+驱动或者bootloader+驱动。

BSP和驱动的区别:bsp还包括了bootloader,或者bsp是包含了cpu、电源管理这些比驱动更深层次的
硬件支持包。

1、BSP是一般是芯片原厂提供的。驱动是自己写的,比如写IIC协议驱动一个EEPROM,写一些SPI、
USB驱动等。

2、bsp是保证os启动前所作的必须工作,包括初始化工作,引导os启动起来,也包括一些用户的配置信
息。os启动后,可以认为bsp已经不再起作用了,os会调相应的驱动来重新初始化系统。驱动可以认为
是os内核中的一部分。

3、 BSP是嵌入式系统中介于硬件平台和操作系统之间的中间层软件,主要目的是为了屏蔽底层硬件的
多样性,根据操作系统的要求完成对硬件的直接操作,向操作系统提供底层硬件信息并最终启动操作系
统。BSP具有硬件相关性和操作系统相关性的特点,其主要作用包括:

(1)初始化底层硬件,为操作系统提供底层硬件信息;

(2)初始化相关硬件设备,主要是存储设备、通信设备;

(3)检测系统硬件是否正常;

(4)加载操作系统并启动系统运行。

4、BSP也称为硬件抽象层HAL或者中间层。
它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据
BSP层提供的接口开发即可。BSP是相对于操作系统而言的,不同的操作系统有不同定义形式的BSP,要求BSP所实现的功能也有所不同。在嵌入式Linux系统中,主要是初始化底层硬件并引导操作系统;同时,BSP又是和硬件相关的,还要考虑对硬件的初始化操作。这些初始化操作主要是对CPU、内存、中断等相关的寄存器及协处理器进行正确的配置。在不同的开发阶段,因为核心和文件系统所处的位置不同,BSP所要完成的工 作也有所不同;在开发调试阶段,BSP要能够与主机通信并从主机下载核心;在目标产品中,BSP要能够从非易失存储设备中加载核心。

你可能感兴趣的:(嵌入式面试,面试)