禾赛科技-一面
1. 第二段实习的通信链路为什么用UDP不用TCP实际遇到过丢帧吗我们项目选用 UDP主要是业务传输 IMU、图像这类实时传感器数据对时延和抖动要求高。TCP 的重传、拥塞控制会带来不确定延迟而且旧帧重传回来已经失效。UDP 无连接开销小、延迟稳定还支持组播。可靠性我们在应用层自己实现序号、校验。 实际遇到过丢帧大多是接收缓冲区不足、瞬时流量超限、UDP 大包 IP 分片导致。处理方式限制单包大小调大网卡缓冲区接收线程高优先级传感器流丢帧不重传关键指令上层做可选重传。2. 描述I2C帧格式地址是几位如何识别读写两根线都拉低是什么情况如何解决出现这种情况多吗怎么判断连没连上I2C 由 SDA、SCL 两根线。帧顺序起始 S → 从机地址字节 → ACK → 数据 ACK → 停止 P。 常用 7 位从地址字节最低位是读写位0 写 1 读。 两根线同时拉低是 I2C 总线死锁一般是通信中途异常从机钳住 SDA 无法释放。解决方法用 bit-bang 方式输出 9 个时钟脉冲让从机释放总线再发停止信号也可以复位从机。正常稳定业务场景死锁不常发生断电或者程序跑飞时容易触发。 判断设备是否连接主机发送起始信号发送从机写地址等待 ACK收到 ACK 代表设备在线NACK 代表不存在或者接线故障。3. FreeRTOS任务调度机制时间片轮转的任务切换通过什么方式实现调度通过什么触发pendsv由什么触发为什么需要pendsvFreeRTOS 是抢占式优先级调度同优先级开启时间片轮转。时间片轮转依靠 SysTick 定时器中断时间片到期触发切换。调度触发来源SysTick 中断、外部中断或者任务调用 vTaskDelay、taskYIELD、队列信号量 API。PendSV 通过置位 NVIC 的 PendSV pending 标记触发portYIELD 函数会置位它。PendSV 优先级最低用来延迟执行上下文切换保证所有中断处理完成之后才做任务切换避免在中断嵌套过程中切换上下文防止系统异常。4. 任务有几个状态运行态到就绪态的切换条件FreeRTOS 任务四个状态运行、就绪、阻塞、挂起。 运行态转到就绪态两种情况同优先级时间片耗尽SysTick 中断触发轮转时间片到当前任务被切走放回就绪队列。高优先级任务就绪抢占当前任务低优先级正在跑高优先级任务就绪抢占 CPU旧任务回到就绪。任务调用taskYIELD()主动放弃 CPU任务在代码里主动调用taskYIELD()自愿交出 CPU。5. 创建任务需要提供哪些内容返回什么动态创建还是静态创建栈在哪里1. 创建任务需要提供哪些参数xTaskCreate函数原型BaseType_t xTaskCreate( TaskFunction_t pxTaskCode, // 1. 任务函数入口 const char * const pcName, // 2. 任务名字调试用字符串 const configSTACK_DEPTH_TYPE usStackDepth, //3. 栈深度单位word不是byte void * const pvParameters, //4. 传给任务函数的入参 UBaseType_t uxPriority, //5. 任务优先级 TaskHandle_t * const pxCreatedTask//6. 任务句柄输出可以传NULL不保存 );需要提供内容任务函数指针任务入口返回 void参数 void*任务名称字符串任务栈深度以word为单位不是字节任务函数参数任务优先级任务句柄指针用来接收句柄不需要就填 NULL2. 返回什么返回值类型BaseType_tpdPASS任务创建成功pdFALSE创建失败最常见堆内存不足栈申请失败注意任务句柄是输出参数不是返回值用来后续操作任务vTaskDelete、vTaskSuspend 等。3. 动态创建还是静态创建xTaskCreate动态创建任务控制块 TCB 任务栈都从 FreeRTOS 堆pvPortMalloc动态分配。删除任务时内存会在空闲任务里自动回收。xTaskCreateStatic静态创建需要用户预先定义好静态数组任务栈数组 静态 TCB 结构体内存放在全局 / 静态区不使用堆。 优点没有 malloc内存确定适合高可靠、不能动态内存的场景缺点内存必须提前预留删除后需要手动管理不能自动释放。4. 栈在哪里✅ 动态创建 (xTaskCreate)任务栈是pvPortMalloc从FreeRTOS 堆中申请出来的一块内存。注意不是 MCU 的 C 语言栈每个 FreeRTOS 任务拥有独立私有栈。✅ 静态创建 (xTaskCreateStatic)任务栈是你定义的全局静态数组放在 MCU 的RAM.bss/.data 段编译时就固定分配。系统栈主栈 MSP中断使用的栈属于内核不属于任何任务任务运行时使用各自任务栈 PSP。一句话总结面试背诵版xTaskCreate需要传入任务函数、任务名、栈深度、入参、优先级、句柄指针返回 pdPASS 成功 /pdFALSE 失败属于动态创建TCB 和任务栈从 FreeRTOS 堆分配静态版本 xTaskCreateStatic 由用户提供静态内存。每个任务有独立私有栈动态任务栈在 FreeRTOS 堆静态任务栈在全局静态 RAM中断使用 MSP 主栈。6. 消息队列、信号量、互斥锁分别的作用锁和信号量的差异1. 消息队列 Queue作用任务间传递数据带内容实现任务通信可以存放完整数据拷贝数据不是传地址也可传地址支持多任务读、多任务写读写阻塞等待超时典型场景传感器采集任务把数据发给显示任务、串口收发数据。特点有实体数据先进先出 FIFO队列里可以存多条消息。2. 信号量 Semaphore分二值信号量、计数信号量作用事件通知、资源计数只传递 “事件有没有发生”不带数据二值信号量只有 0/1。多用于事件通知。 例中断收到数据释放信号量唤醒任务去处理。计数信号量0~N。用于多个同类资源管理。 例3 个串口最多 3 个任务同时使用资源数 3。特点只传递状态不带数据信号量计数值。3. 互斥锁 Mutex互斥信号量作用保护临界资源实现独占访问防止多个任务同时修改共享资源本质是特殊二值信号量拥有所有权谁拿到锁只有谁才能释放锁自带优先级继承用来缓解优先级反转问题典型场景多个任务读写同一个全局变量、操作同一个硬件外设。特点用于排他访问资源不是事件通知。二、互斥锁 vs 普通信号量核心差异面试高频所有权互斥锁有所有权谁获取只能谁释放。别的任务不能随便释放。二值信号量无所有权任务 A 获取任务 B 也可以直接释放。优先级继承互斥锁自带优先级继承缓解优先级反转。普通二值信号量没有优先级继承存在优先级反转风险。用途定位互斥锁保护临界区独占资源访问。二值信号量事件通知中断通知任务。计数互斥锁只能 0/1不能计数。计数信号量计数值可以大于 1。递归递归互斥锁支持同一个任务多次获取需要多次释放普通信号量不支持递归获取。一句话背诵差异 互斥锁有所有权、带优先级继承用于资源互斥保护只能持有者释放普通信号量无所有权任意任务可释放多用于事件通知没有优先级继承。一句话总述背诵版消息队列用于任务间传递数据信号量用于事件通知或统计可用资源数量互斥锁用于共享资源的独占保护。互斥锁拥有所有权自带优先级继承只能持有者释放普通信号量没有所有权任意任务都可以释放没有优先级继承多用于事件通知。7. 建立TCP连接时三次握手的过程在建立之前有其他连接需要建立吗三次握手后状态机进入什么状态8. 如何根据IP获取MAC地址9. 手撕面试官给了一段指针相关的代码问输出

相关新闻

短命名中间层项目设计指南:从适配执行层到高可用架构实践

短命名中间层项目设计指南:从适配执行层到高可用架构实践

1. 从“rea”这个标题说起:一个被低估的通用缩写第一次看到“rea”这个标题的时候,我脑子里蹦出来的第一反应是——这大概率又是一个被缩写玩坏的项目名。在技术圈混久了你会发现,越是短到只有三个字母的标题,背后藏的东西往往越不…

2026/10/11 8:41:36 阅读更多 →
AI生成流程图导出全攻略:从Mermaid代码到PNG/SVG/PDF

AI生成流程图导出全攻略:从Mermaid代码到PNG/SVG/PDF

前阵子帮朋友调试需求,发现一个特别普遍的情况:大家都在用ChatGPT和Gemini画流程图,对话里图也出来得很漂亮,但真要拿去写文档、做汇报,全都卡在"导出"这一步。要么不知道点哪里把图存到本地,要么…

2026/10/11 8:40:36 阅读更多 →
C#项目GitHub托管实战:从版本管理到CI自动构建全流程

C#项目GitHub托管实战:从版本管理到CI自动构建全流程

最近带几个新人做C#项目,发现一个特别普遍的尴尬:代码在本地写得好好的,一说到"传到GitHub上",大家就卡住了。有的是不知道GitHub到底能帮C#项目做什么,有的是命令敲到一半报错就慌了,还有的干脆…

2026/10/11 8:40:36 阅读更多 →

最新新闻

深度学习OCR系统实战:基于PyTorch的CRNN+CTC文字识别

深度学习OCR系统实战:基于PyTorch的CRNN+CTC文字识别

简介:基于深度学习的文字识别系统完整项目包,面向毕业设计、课程设计与期末大作业场景,适合需要快速搭建OCR系统的计算机相关专业学生。项目采用CNN与RNN结合实现文字检测与识别,覆盖图像预处理、模型训练、后端接口与移动端展示全…

2026/10/11 10:25:10 阅读更多 →
使用 claude-howto 的 blog-draft 技能与草稿模板,系统化产出高质量技术博客

使用 claude-howto 的 blog-draft 技能与草稿模板,系统化产出高质量技术博客

教程文档 【免费下载链接】claude-howto A visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value. 项目地址: https://gitcode.com/GitHub_Trending/cl/claude-howto 点…

2026/10/11 10:25:10 阅读更多 →
Excel自动评分:用LOOKUP和IF函数实现体育成绩折算自动化

Excel自动评分:用LOOKUP和IF函数实现体育成绩折算自动化

简介:这份资源是一份面向体育教师及学校教务人员的Excel实用教程文档,聚焦体育测试成绩换算这一高频痛点,帮助读者用公式与函数替代人工比对,降低错漏率。文档围绕学生成绩空表搭建、跳远与跳绳评分标准表制作、LOOKUP近似匹配与I…

2026/10/11 10:25:10 阅读更多 →
Legendary OSINT 海事篇:AIS 船舶追踪工具全景对比

Legendary OSINT 海事篇:AIS 船舶追踪工具全景对比

Legendary OSINT 海事篇:AIS 船舶追踪工具全景对比 【免费下载链接】Legendary_OSINT A list of OSINT tools & resources for (fraud-)investigators, CTI-analysts, KYC, AML and more. 项目地址: https://gitcode.com/GitHub_Trending/le/Legendary_OSINT…

2026/10/11 10:25:10 阅读更多 →
ProxCenter热迁移深度解析:VDDK+nbdkit实现虚拟机零停机迁移的原理与调优

ProxCenter热迁移深度解析:VDDK+nbdkit实现虚拟机零停机迁移的原理与调优

【免费下载链接】proxcenter-ui ProxCenter is an alternative to VMware vCenter for Proxmox environments. It provides a modern, intuitive web interface to manage multiple Proxmox VE clusters and Proxmox Backup Server instances from a single pane of glass. 项目…

2026/10/11 10:25:10 阅读更多 →
2025年AI IDE实战测评榜:从个人开发到企业部署的完整选型攻略(TaoToken统一API接入篇)

2025年AI IDE实战测评榜:从个人开发到企业部署的完整选型攻略(TaoToken统一API接入篇)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:24:10 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →