首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
Ximhiog
门头沟学院 嵌入式工程师
发布于广东
关注
已关注
取消关注
m
@Hcoco:
面试真题 | 韶音[20240825]
一面 7月8号 hr面 hr面问的都是基本情况,会浅浅的问些项目 1、自我介绍 2、高考排名是多少? 3、是保研吗?保研时有拿到其他学校的offer吗 4、实验室一共多少人?博士占比是多少? 4、意向工作城市?为什么选择深圳? 5、介绍一下第一个项目,有没有遇到过什么问题,怎么解决的 6、有了解过韶音吗,双百计划了不了解? 有一些问题忘记了,自然回答就好,就聊天 二面 7月16日 技术面 1、自我介绍 2、介绍一下你实习期间做的项目,有没有遇到过什么问题,你的收获? 3、RTThread的调度机制 RT-Thread调度机制的原理 RT-Thread是一个源码公开、可配置的实时操作系统(RTOS),其核心架构设计为微内核结构,支持多任务调度、同步、通信等功能。RT-Thread的调度机制是其核心功能之一,它确保了任务(线程)能够按照预定的优先级和规则有序执行。 调度机制原理 任务状态: RT-Thread中的任务(线程)可以处于多种状态,包括就绪态、运行态、挂起态、阻塞态和终止态。调度器根据任务的状态和优先级来决定哪个任务应该获得CPU执行权。 优先级调度: RT-Thread采用基于优先级的抢占式调度算法。每个任务都被赋予一个优先级,优先级数值越小表示优先级越高。调度器总是选择就绪表中优先级最高的任务来执行。 就绪表: 就绪表是RT-Thread中用于管理就绪态任务的数据结构。它通常通过位图(bitmap)和链表结合的方式来实现,以便快速找到最高优先级的任务。 调度时机: 调度器在以下情况下会进行任务调度: 当前任务主动放弃CPU(如调用延时函数、等待同步信号等)。 当前任务的时间片耗尽(如果启用了时间片轮转调度)。 中断服务程序执行完毕,并且有更高优先级的任务就绪。 调度过程: 调度过程主要包括以下几个步骤: 查找就绪表中最高优先级的任务。 将该任务从就绪表中移除,并设置为运行态。 保存当前任务的上下文(如寄存器值、栈指针等)。 恢复最高优先级任务的上下文,使其继续执行。 面试问题及答案 问题1:RT-Thread采用什么类型的调度算法? 答案:RT-Thread采用基于优先级的抢占式调度算法。这意味着,如果有更高优先级的任务就绪,当前运行的低优先级任务会被抢占,CPU的控制权会立即交给高优先级的任务。 问题2:请简述RT-Thread中任务的状态及其转换过程。 答案:RT-Thread中的任务可以处于就绪态、运行态、挂起态、阻塞态和终止态。任务通过调用不同的API函数可以在这些状态之间进行转换。例如,任务启动后首先进入就绪态,等待调度器调度;当获得CPU执行权时,进入运行态;如果需要等待某个事件(如信号量、消息队列等),则进入阻塞态;任务执行完毕后进入终止态。 问题3:RT-Thread中如何避免优先级反转问题? 答案:RT-Thread通过提供优先级继承和优先级天花板等机制来避免优先级反转问题。优先级继承机制允许低优先级任务在持有高优先级任务所需资源时临时提升其优先级至等待该资源的最高优先级任务的优先级;而优先级天花板机制则为每个共享资源设定一个固定的“天花板优先级”,任何访问该资源的任务都必须将其优先级提升到该水平。这些机制有助于确保高优先级任务能够及时获得所需资源并继续执行。 问题4:请描述RT-Thread中任务调度的一个典型场景。 答案:一个典型的任务调度场景是,当系统中有多个任务同时运行时,调度器会根据任务的优先级和状态来决定哪个任务应该获得CPU执行权。例如,假设系统中有一个高优先级的任务A和一个低优先级的任务B。任务A正在执行时,如果任务B获得了一个高优先级任务C所需的资源,并且任务C此时已经就绪但无法执行(因为被任务B持有的资源阻塞),那么在没有优先级继承或天花板机制的情况下就可能发生优先级反转。然而,在RT-Thread中,由于提供了这些机制,可以确保任务C在需要时能够及时获得所需资源并继续执行,从而避免优先级反转的发生。 问题5:RT-Thread中如何配置和修改任务的优先级? 答案: 在RT-Thread中,任务的优先级是在任务创建时通过API函数(如rt_thread_create)的参数来指定的。一旦任务被创建,其优先级通常不会改变,但RT-Thread也提供了API来动态调整任务的优先级。例如,可以使用rt_thread_control函数结合RT_THREAD_CTRL_CHANGE_PRIORITY命令来修改任务的优先级。修改优先级时,需要确保新的优先级在系统支持的范围内(通常是0~255,但具体范围可能根据系统配置有所不同)。 问题6:RT-Thread的时间片轮转调度是如何工作的? 答案: RT-Thread支持时间片轮转调度(Round-Robin Scheduling),这主要用于具有相同优先级的任务之间。当系统中有多个同优先级的任务就绪时,调度器会按照时间片轮转的方式依次分配CPU时间给这些任务。每个任务在获得CPU执行权后会运行一个固定的时间片(这个时间片可以在系统配置中设置),时间片结束后,任务会被放回就绪队列的末尾,调度器会选择下一个同优先级的任务执行。这种方式确保了同优先级的任务能够公平地获得CPU资源。 问题7:RT-Thread中的中断处理对任务调度有何影响? 答案: 在RT-Thread中,中断处理对任务调度有着重要影响。中断服务例程(ISR)的优先级通常高于任务,因此当中断发生时,当前运行的任务会被暂停,CPU控制权交给中断服务例程。如果中断服务例程中调用了调度函数(如rt_schedule),那么在中断退出后,调度器会检查是否有更高优先级的任务就绪,并可能进行任务切换。此外,RT-Thread还提供了中断锁(如rt_enter_critical和rt_exit_critical)来防止中断在临界区内发生,从而保护共享资源的访问。 问题8:RT-Thread的调度器是如何处理不同优先级任务的抢占式调度的? 答案: RT-Thread的调度器通过维护一个优先级就绪队列来实现抢占式调度。该队列根据任务的优先级进行排序,每个优先级对应一个链表,链表中存放了所有该优先级的就绪任务。调度器在每次调度时会检查优先级就绪队列的头部(即最高优先级),并选择该优先级下的第一个任务执行。如果在这个过程中有更高优先级的任务就绪(例如,由于中断服务例程的触发或新任务的创建),调度器会立即打断当前任务的执行,并将CPU控制权交给新就绪的高优先级任务。这种抢占式调度机制确保了系统能够实时响应高优先级任务的需求。 问题9:RT-Thread中如何优化任务调度以提高系统性能? 答案: 在RT-Thread中,优化任务调度以提高系统性能可以从以下几个方面入手: 合理设置任务优先级:根据任务的紧急程度和重要性合理设置优先级,确保关键任务能够得到及时响应。 减少任务上下文切换:通过增加任务的时间片或减少不必要的任务创建和销毁来减少上下文切换的次数,从而降低系统开销。 优化中断处理:减少中断服务例程的执行时间,避免在中断服务例程中进行复杂的计算或等待操作,以减少对任务调度的干扰。 使用合适的同步机制:根据实际需求选择合适的同步机制(如信号量、互斥锁等),避免不必要的资源竞争和优先级反转问题。 优化系统配置:根据硬件资源和应用需求优化系统配置(如调整任务栈大小、修改系统定时器频率等),以提高系统整体性能。 4、有没有做过iic驱动,spi驱动,驱动开发过程中遇到过什么问题 IIC驱动开发经验及问题 IIC驱动开发经验 在嵌入式系统开发中,I2C(Inter-Integrated Circuit)是一种常用的串行通信协议,用于连接低速外设。我曾在项目中负责I2C驱动的开发,主要涉及以下几个步骤: 初始化I2C接口:配置GPIO为I2C功能,并初始化I2C总线相关寄存器,如设置时钟频率、使能I2C接口等。 发送起始信号:主机发送起始信号,即SDA由高电平跳变到低电平时,SCL保持高电平。 发送设备地址和读写位:发送7位的从机地址和1位的读写操作位(0表示写,1表示读)。 等待ACK:主机发送地址后,等待从机发送应答信号(ACK)。 发送数据或接收数据: 写操作:主机发送寄存器地址和数据,每发送一个字节后等待从机ACK。 读操作:主机再次发送起始信号,发送从机地址和读操作位,然后从机发送数据,主机每接收一个字节后发送ACK以继续接收,或发送NACK结束接收。 发送停止信号:数据传输完成后,主机发送停止信号,SDA由低电平跳变到高电平时,SCL保持高电平。 遇到的问题及解决方法 ACK信号未收到: 问题:在发送从机地址或寄存器地址后,未收到预期的ACK信号。 解决方法: 检查从机设备是否上电并正确连接到I2C总线。 检查从机地址是否正确(注意有些设备地址需要左移一位)。 检查总线是否有其他设备干扰或总线电容过大。 时序问题: 问题:由于时钟频率设置不当或时序控制不准确,导致通信失败。 解决方法: 根据从机设备的数据手册设置合适的时钟频率。 使用示波器或逻辑分析仪检查SDA和SCL的时序是否符合要求。 电源供电问题: 问题:外设供电电压不匹配导致设备无法正常工作。 解决方法: 确保外设供电电压符合设备要求,必要时使用外部电源供电。 SPI驱动开发经验及问题 SPI驱动开发经验 SPI(Serial Peripheral Interface)是一种高速、全双工、同步通信总线。在SPI驱动开发中,我主要负责以下几个步骤: 硬件连接:将SPI设备(如传感器、存储器等)与微控制器通过SPI总线连接起来,包括MOSI、MISO、SCLK和CS(或SS)线。 初始化SPI接口:配置GPIO为SPI功能,设置SPI模式(CPOL和CPHA)、时钟频率等参数。 发送和接收数据: 主机通过MOSI线发送数据到从机。 从机通过MISO线返回数据到主机。 主机通过SCLK线控制数据传输的时钟。 使用CS线选中特定的从设备。 中断处理:根据需要配置SPI中断,以提高通信效率。 遇到的问题及解决方法 通信时序问题: 问题:时钟频率、极性和相位设置不当导致通信失败。 解决方法: 根据从机设备的数据手册设置合适的SPI模式(CPOL和CPHA)。 调整时钟频率,确保数据传输的稳定性。 多设备共享问题: 问题:SPI总线上连接多个设备时,如何正确区分和管理这些设备。 解决方法: 使用CS线(片选信号)来区分不同的从设备。 确保在通信过程中,只有被选中的设备响应主机的操作。 功耗问题: 问题:长时间保持SPI总线活动状态会增加系统功耗。 解决方法: 在非通信状态下,将SPI总线置于低功耗模式或关闭SPI接口。 优化数据传输的间隔和频率,减少不必要的通信。 面试问题及答案 面试问题1: 在I2C通信中,如果主机发送从机地址后未收到ACK信号,可能的原因有哪些?如何解决? 答案: 可能的原因包括从机未上电、从机地址错误、总线被其他设备占用或总线电容过大等。解决方法包括检查从机电源、核对从机地址、检查总线连接情况、 2. 在设计IIC或SPI驱动时,如何考虑驱动的可移植性和可扩展性?请举例说明。 答案框架: 可移植性:首先,抽象出硬件相关的操作,如寄存器读写、中断处理等,通过宏定义或接口函数进行封装。其次,使用条件编译或配置文件来适配不同硬件平台的差异。最后,编写清晰的文档,说明驱动依赖的硬件特性和配置要求。 可扩展性:设计时预留接口或回调函数,以便在不修改驱动主体代码的情况下添加新的功能或支持更多的设备。例如,在IIC驱动中,可以设计一个设备注册机制,允许用户动态添加支持的设备类型。 3. 在嵌入式系统中,如何实现高效的电源管理策略以延长电池寿命?请从硬件和软件两个角度阐述。 答案框架: 硬件角度:选择低功耗的处理器和外设,优化电路设计以减少漏电流。使用智能电源管理芯片(PMIC)来动态调整电压和频率,根据系统负载自动切换工作模式(如休眠、待机、活动等)。 软件角度:实现任务调度算法以优化CPU使用率,减少空闲时的功耗。使用中断驱动而非轮询机制来响应外部事件。编写低功耗代码,如避免在空闲循环中执行无用操作,利用硬件休眠模式等。此外,还可以通过软件来管理外设的电源状态,如在不使用时关闭外设电源。 4. 描述一下在嵌入式系统中进行实时操作系统(RTOS)移植的主要步骤和注意事项。 答案框架: 主要步骤: 评估目标平台:了解目标处理器的架构、内存布局、中断系统等特性。 准备开发环境:搭建交叉编译环境,配置必要的工具和库。 修改RTOS源代码:根据目标平台的特性修改RTOS的底层代码,如中断处理、任务调度、时钟管理等。 编写板级支持包(B:为目标平台编写或修改BSP,包括硬件初始化、中断向量表设置等。
点赞 4
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
10-20 11:32
360集团_运维开发工程师(准入职员工)
360集团内推,360集团内推码
360真的超好,也碰到了很好的mentor,小组氛围巨好。实习期间完整的做了两个项目,感谢mentor的信任,愿意把一些实打实的内容让我做,完全没有做一些dirty work,可以说是充实的过了三个月,感觉抵得上在学校一年,后悔没有早点来这里。360对实习生真的巨好,不管是mentor还是能给到的资源,感觉在大厂中也是少见的,我为360打call!!! 在360这样的企业里,管理上非常的扁平化,没有严苛的上下级关系,这一点就非常让人舒服。 同时公司也会给员工很多成长和锻炼的机会,比如说定期的各类型专业知识的培训啊,还有很多接触大项目的机会。只要你肯学习和努力,就一定会有收获。 同事之间的关系也...
360集团公司氛围 344人发布
点赞
评论
收藏
分享
10-17 10:34
上海大学 算法工程师
记录秋招 Offer 选择(从纠结到坚定)
秋招至此我拿到了三个offer,这几天拿到了秋招最快的一个offer。我之前一直陷在纠结里,感觉像站在分岔路口,不知道往哪走才对。也可能是有缘分吧,最后选了收钱吧,不只是因为快,对我而言,是面试的时候认同了公司的理念,直达用户的真实反馈,让我觉得工作更有价值感,也契合我 “通过产品解决实际问题” 的职业选择偏好。去面试时还发现了,公司工位挺宽敞,技术团队用的还是新 MacBook,开发起来特别顺手;和 HR 聊的时候,知道公司有公开的内部转岗通道,要是以后想试试其他业务方向也有机会,刚毕业的我就想多探索下,这点也特别吸引我。还有学长跟我讲,收钱吧术岗能接触到高并发的真实场景,成长特别快;福利也...
双尔:
秋招至此我拿到了三个offer,这几天拿到了秋招最快的一个offer。我之前一直陷在纠结里,感觉像站在分岔路口,不知道往哪走才对。 最终在美团饿了么和京东里面选了美团,毕竟是外卖的老大哥,虽然会比较累,但是一切都是值得的,不说了,我的外卖衣服头盔到了
点赞
评论
收藏
分享
09-17 10:53
四川大学 C++
感觉双九双2是不是快厮杀完了,接下来该我单九的天下了
呜呜呜一个面试没有
牛客91242815...:
会写标书没有任何卵用,鉴定为横向垃圾导师的受害者
点赞
评论
收藏
分享
09-29 16:59
已编辑
门头沟学院 Java
大疆
大疆发offer了,嘿嘿😆此等机缘果然不是我等小辈能沾染的
牛客96609213...:
疯狂背刺,之前还明确设置截止日期,还有笔试,现在一帮人卡在复筛,他反而一边开启扩招,还给扩招的免笔试,真服了,你好歹先把复筛中的给处理了再说
投递大疆等公司10个岗位
点赞
评论
收藏
分享
10-15 18:22
吉首大学张家界学院 Java
专升本简历想找java开发怎么写啊,要带上专科学历吗
项目就网上教学项目改了一下
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
「潜力作者交流2群」开放报名啦!
1.4W
2
...
这个实习生我要给他转正
1.3W
3
...
以Mentor视角,说说我最喜欢什么样的实习生
5047
4
...
27四非本,字节后端实习OC
4599
5
...
双非鼠鼠的秋招精神状态
4415
6
...
没有家庭的托举,我只能靠自己
4047
7
...
如何做好汇报:让努力被看见、让成果更有价值
4047
8
...
收到保底 offer 的那天,我买了全糖
3406
9
...
制造业求职 0 offer 时期的破局之道
3270
10
...
学长,我得休息了,明天要面软*动力
3218
创作者周榜
更多
正在热议
更多
#
你的mentor是什么样的人?
#
4964次浏览
39人参与
#
26届秋招公司红黑榜
#
14468次浏览
49人参与
#
未岚大陆求职进展汇总
#
38280次浏览
114人参与
#
帮我看看,领导说这话什么意思?
#
7225次浏览
31人参与
#
你觉得mentor喜欢什么样的实习生
#
11257次浏览
309人参与
#
怎么给家人解释你的工作?
#
2233次浏览
27人参与
#
平安产险科技校招
#
2461次浏览
0人参与
#
你觉得多少薪资算SSP?
#
112723次浏览
415人参与
#
实习必须要去大厂吗?
#
147139次浏览
1544人参与
#
度小满求职进展汇总
#
10409次浏览
53人参与
#
求职低谷期你是怎么度过的
#
5759次浏览
101人参与
#
没有家庭托举的我是怎么找工作的
#
13530次浏览
168人参与
#
同bg的你秋招战况如何?
#
158952次浏览
927人参与
#
从哪些方向判断这个offer值不值得去?
#
7195次浏览
96人参与
#
校招泡的最久的公司是哪家?
#
5245次浏览
24人参与
#
应届生应该先就业还是先择业
#
142746次浏览
733人参与
#
面试紧张时你会有什么表现?
#
1908次浏览
21人参与
#
你喜欢工作还是上学
#
77683次浏览
860人参与
#
简历无回复,你会继续海投还是优化再投?
#
103670次浏览
819人参与
#
你有哪些缓解焦虑的方法?
#
37251次浏览
835人参与
#
牛客树洞,我想对你说
#
1423次浏览
33人参与
#
职场新人体验
#
98271次浏览
654人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务