当前位置: 首页 > article >正文

嵌入式常见的面试题1

在嵌入式 Linux 应用层使用 TCP socket 发送数据时write()/send()返回成功是否意味着数据已送达对端如何确保对端应用层确实收到了数据考察点TCP 协议栈缓冲区机制、可靠传输的误解、应用层确认协议。参考答案write()成功仅表示数据已从用户空间拷贝到内核 TCP 发送缓冲区且缓冲区剩余空间足够容纳此次写入。它绝不代表数据已发出网卡。数据已被对端 ACK。对端应用已调用read()取走数据。确保应用层收到的方法应用层 ACK 协议接收方在成功处理完业务数据后主动发回一个确认消息例如自定义的 ACK 包。发送方必须等待此 ACK 才能认为传输完成。结合shutdown()与SO_LINGER在关闭连接前调用shutdown(sockfd, SHUT_WR)发送 FIN并配合setsockopt(..., SO_LINGER, ...)设置超时确保对端关闭了连接暗示其应用已close()但这仍不等同于业务处理完成。心跳与超时重传对于需要高可靠性的场景如工业控制设计请求-响应模式发送方带序列号接收方按序确认超时未收到 ACK 则重传。在一个裸机嵌入式设备上如何实现一个简单有效的 TCP 粘包/拆包处理逻辑考察点TCP 流式传输特性理解、嵌入式协议栈内存管理。参考答案原因TCP 是流协议没有消息边界多次发送的小包可能合并到一个 TCP 段中粘包或一个长包被 IP 分片、TCP 分段。常用解决策略裸机环境定长消息规定每个数据包固定长度如 128 字节不足补零。解析时从流中逐个切分。缺点浪费带宽。分隔符协议在消息末尾添加特殊字节如\r\n或0x00。接收方在 lwIP 的recv回调中遍历缓冲区寻找分隔符。注意裸机环境下避免使用strstr等动态内存操作应直接基于环形缓冲区状态机扫描。头部定长 长度字段最常见定义包头结构如下textstruct pkt_hdr { uint16_t magic; // 可选帧头校验 uint16_t len; // 后续负载长度 };接收处理逻辑状态机初始为WAIT_HEADER累积到头部长度后解析len转入WAIT_PAYLOAD。累积到len字节后校验通过则交给应用处理指针回退并重新进入WAIT_HEADER。lwIP 特有注意tcp_recv回调可能一次收到多个 TCP 段必须循环调用pbuf_copy_partial()或直接遍历pbuf链表将数据拷入内部环形缓冲区再触发状态机解析避免在回调中长时间阻塞导致协议栈丢包。嵌入式设备通过 4G 模块联网使用 MQTT 协议与云端通信。若设备发送一个 PUBLISH 报文QoS1后在未收到 PUBACK 之前网络断开了重连后应如何处理未确认的消息考察点MQTT 协议状态机、会话保持机制。参考答案关键依赖CONNECT报文中的Clean Session标志。若Clean Session 0持久会话服务端会为客户端保存未确认的 QoS 1/2 消息。客户端重连时只要使用相同的Client ID服务端会在CONNACK中返回Session Present 1。随后服务端会立即重发之前未确认的 PUBLISH 报文给客户端客户端应能按原Packet ID处理并响应 PUBACK。若Clean Session 1大多数物联网低功耗设备的默认选择会话状态不保留服务端在连接断开后丢弃所有未确认消息。客户端必须自行负责重传机制在应用层实现本地存储队列如 SPI Flash 或文件系统。每条 PUBLISH 消息在收到 PUBACK 前保留在队列中标记为“未确认”。网络恢复并重连 MQTT 后遍历队列中所有“未确认”消息按顺序重新 PUBLISH使用新的Packet ID。在 Linux 系统中编写一个基于 UDP 的客户端程序如何检测到对端服务已经崩溃对端主机未关闭 socket而是整机掉电考察点UDP 无连接特性与异常检测的工程方法。参考答案UDP 原生缺陷UDP 没有连接状态sendto()通常成功只要 ARP 表有记录不会因对端崩溃而报错。检测策略ICMP 错误报文监听被动方式若对端主机崩溃当本机继续发送 UDP 数据时若路径上的路由器或最终主机ARP 失败返回ICMP Port Unreachable或ICMP Host Unreachable这些错误会被内核记录在 socket 的错误队列中。应用层可通过recvmsg()配合MSG_ERRQUEUE标志获取挂起的错误从而得知目的不可达。缺点如果停止发送数据将永远得不到通知。应用层心跳协议主动方式客户端定期发送“心跳请求”UDP 包对端必须回复“心跳应答”。若连续 N 次心跳未收到应答判定对端失联。这是工程上最可靠的方法。SO_KEEPALIVE无效性TCP 的SO_KEEPALIVE选项对 UDP 无效不可混淆。

相关文章:

嵌入式常见的面试题1

在嵌入式 Linux 应用层,使用 TCP socket 发送数据时,write()/send() 返回成功是否意味着数据已送达对端?如何确保对端应用层确实收到了数据?考察点:TCP 协议栈缓冲区机制、可靠传输的误解、应用层确认协议。参考答案&a…...

深度解析:ComfyUI-Manager节点冲突检测的5种技术解决方案与架构设计

深度解析:ComfyUI-Manager节点冲突检测的5种技术解决方案与架构设计 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable …...

2026移动应用质量监控Bugly:全平台异常定位与统一管理实践

2026移动应用质量监控Bugly:全平台异常定位与统一管理实践 在移动应用开发进入多端融合与高频迭代的背景下,复杂运行环境使崩溃、性能劣化等问题更易隐蔽扩散,企业诉求已从被动修复转向主动、统一的质量管控。Bugly作为腾讯推出的专业应用质量…...

Omni-Vision Sanctuary前端交互设计:基于Web的实时图像生成演示系统

Omni-Vision Sanctuary前端交互设计:基于Web的实时图像生成演示系统 1. 项目背景与核心价值 想象一下这样的场景:设计师需要快速生成产品概念图,营销团队等待社交媒体配图,而开发人员正在调试AI模型的参数。传统工作流程中&…...

Windows任务栏美化终极指南:TranslucentTB让你的桌面秒变高级感

Windows任务栏美化终极指南:TranslucentTB让你的桌面秒变高级感 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 还在忍受Wind…...

154W,确实可以封神了!!

去年DeepSeek爆火,生成式AI和大模型技术呈现爆发式增长,也让算法工程师重新成了炙手可热的岗位,岗位薪资远超很多运维、嵌入式、前后端岗位,在程序员中稳居前列。AI的快速发展也给很多程序员带来更多的机会,很多公司都…...

为什么AI时代真正稀缺的不是代码, 而是 Idea. 我因此做了一个“发现+判断”的项目

最近做项目的时候, 我越来越强烈地感觉到一件事: 现在真正卡住很多人的, 可能已经不是“怎么做”, 而是“到底做什么”。 以前做一个产品, 最大门槛通常是执行。 不会写前端, 不会搭后端, 不会部署, 不会把整个闭环跑起来。那个时候, 真正稀缺的是开发能力。 但这两年情况已…...

终极免费学术论文获取指南:如何用Unpaywall一键解锁付费墙

终极免费学术论文获取指南:如何用Unpaywall一键解锁付费墙 【免费下载链接】unpaywall-extension Firefox/Chrome extension that gives you a link to a free PDF when you view scholarly articles 项目地址: https://gitcode.com/gh_mirrors/un/unpaywall-exte…...

局域网视频软件BeeWorks Meet

对于必须在内网进行高清视频沟通的场景,BeeWorks Meet 是一款定位清晰、功能全面的私有化视频会议解决方案。它最大的特点在于,能将所有会议数据都安全地保留在企业内部网络,让企业对自己的核心会议内容拥有完全的自主权。📌 BeeW…...

电商客服+导购智能体的设计与开发投

这个代码的核心功能是:基于输入词的长度动态选择反义词示例,并调用大模型生成反义词,体现了 “动态少样本提示(Dynamic Few-Shot Prompting)” 与 “上下文长度感知的示例选择” 的能力。 from langchain.prompts impo…...

寻音捉影·侠客行行业落地:教育机构快速提取在线课程中所有‘课后习题’出现时刻

寻音捉影侠客行行业落地:教育机构快速提取在线课程中所有‘课后习题’出现时刻 1. 教育机构的音频处理痛点 在线教育机构每天产生大量课程录音,老师们经常需要在长达数小时的音频中找到特定内容。最常见的一个需求就是定位所有"课后习题"出现…...

如何重新激活微信网页版:wechat-need-web插件实战指南

如何重新激活微信网页版:wechat-need-web插件实战指南 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 微信网页版无法登录是许多用户在办公…...

别再为离线推送角标烦恼了!手把手教你搞定uniPush2.0的badgeClass配置(附正确路径查找方法)

深度解析uniPush2.0角标配置:从原理到实战避坑指南 在移动应用开发中,推送功能的重要性不言而喻。而推送消息的角标显示,作为用户体验的关键细节,却常常成为开发者头疼的问题。特别是当应用需要适配不同厂商设备时,角标…...

bootstrap怎么修改折叠面板(Accordion)的边框颜色

Accordion默认边框颜色来自.accordion-item的border-color,继承自Sass变量$border-color或$accordion-border-color,作用于border-top和border-bottom。Accordion 默认边框颜色从哪来bootstrap 的 accordion 边框颜色默认由 .accordion-item 的 border-c…...

网盘直链解析技术:如何绕过客户端限制实现高速下载

网盘直链解析技术:如何绕过客户端限制实现高速下载 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 你是否曾因网盘客户端下载限速而苦恼?是否在无法安装客户端的环境中…...

企业级语音识别方案:Qwen3-ASR-1.7B部署与集成实战解析

企业级语音识别方案:Qwen3-ASR-1.7B部署与集成实战解析 1. 企业级语音识别需求与方案选型 在数字化转型浪潮中,语音识别技术已成为企业提升运营效率的关键工具。Qwen3-ASR-1.7B作为阿里通义千问推出的中等规模语音识别模型,凭借17亿参数的精…...

如何掌握RePKG:Wallpaper Engine资源逆向工程的终极工具指南

如何掌握RePKG:Wallpaper Engine资源逆向工程的终极工具指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg RePKG是一款专为Wallpaper Engine设计的开源命令行工具&…...

你花了几个月搭的 RAG 知识库,可能从一开始方向就错了:Karpathy 的 LLM Wiki 模式全解析

知识管理这个概念比计算机还早。 1945 年,Vannevar Bush 在《Atlantic Monthly》上发了篇文章叫《As We May Think》,提出了一个叫 Memex 的概念——一台可以装载所有书籍和记录,并能把各种材料串连起来的机器。 这大概就是"个人知识库&…...

Windows用户必看:3分钟免费获取macOS风格鼠标指针完整指南

Windows用户必看:3分钟免费获取macOS风格鼠标指针完整指南 【免费下载链接】macOS-cursors-for-Windows Tested in Windows 10 & 11, 4K (125%, 150%, 200%). With 2 versions, 2 types and 3 different sizes! 项目地址: https://gitcode.com/gh_mirrors/ma/…...

Python如何在异步中运行同步代码_使用loop.run_in_executor处理计算

async函数中不可直接调用同步CPU密集型代码,因其会阻塞事件循环导致异步失效;应使用run_in_executor配合线程池或进程池执行,注意参数传递、异常处理与资源清理。为什么不能直接在 async 函数里调用同步 CPU 密集型代码因为 async 函数运行在…...

5个技巧,让Qwen-Image-2512-SDNQ帮你生成电商级产品图

5个技巧,让Qwen-Image-2512-SDNQ帮你生成电商级产品图 1. 为什么选择Qwen-Image-2512-SDNQ生成产品图 在电商运营中,高质量的产品图片直接影响转化率。传统摄影需要专业设备、场地和后期处理,成本高且周期长。Qwen-Image-2512-SDNQ模型通过…...

ug nx软件安装的几种错误报警

安装路径包含中文或特殊字符NX软件安装路径中若包含中文、空格或特殊符号(如#、&等),可能导致安装失败或功能异常。建议将安装路径修改为纯英文且无空格的目录,例如D:\Siemens\NX。系统环境变量配置错误安装过程中需正确配置系…...

花了几百万办完一场AI大会后,想跟你分享这6个感悟。

AIFUT结束了。两天,四场,1500多人,几十位嘉宾,从早上9点到下午6点,线上观众有将近200万,展区还是有几千人前来体验。然后就这么过完了,结束的晚上,我跟伙伴们在聚餐,办庆…...

26年前端面试新时代,问了几个AI题没人会怎么给offer???

当“你会不会用Copilot”成了第一题,全场沉默的那三秒,我看到了普通前端的末日。上周,朋友圈被一位36岁老哥的帖子刷屏了。他说自己已经摸清了“前端AI”面试的拷打套路,从被问到卡壳,到能跟面试官聊AI工程化的落地细节…...

PTP时间同步:从报文结构到协议实现

1. PTP协议基础:从时钟同步到报文分类 想象一下,你正在组织一场跨洲视频会议,纽约、伦敦、东京的同事需要同时看到演示文档翻页。如果三地电脑时钟误差超过1秒,就会出现有人提前看到下一页的尴尬场景。这就是**精确时间协议&#…...

淘宝算法升级背后:主图视觉标准重构与 AI 工具降本增效全复盘

最近与淘宝做搜索流量的高手深度复盘之后,大家普遍发现一个扎心的事实:以前那种“大红大绿、卖点堆满”的暴力主图,在现在的淘宝算法面前几乎失效了 现在的淘宝正处于一个“视觉大调头”的阶段。如果还在用两年前的套路做图,你会…...

5步实现Elsevier期刊审稿状态自动化追踪:告别手动刷新的终极方案

5步实现Elsevier期刊审稿状态自动化追踪:告别手动刷新的终极方案 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 你是否每天焦虑地刷新Elsevier投稿系统,只为查看审稿进度?Elsevi…...

XUnity.AutoTranslator:如何为Unity游戏实现免费实时翻译的完整指南

XUnity.AutoTranslator:如何为Unity游戏实现免费实时翻译的完整指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而无法享受优秀的Unity游戏?XUnity.Aut…...

Jupyter Notebook配置避坑指南:为什么改了路径还是报错?

Jupyter Notebook路径配置终极排障手册:从原理到实战 第一次打开Jupyter Notebook时,那个熟悉的C盘用户目录是否让你感到束手束脚?许多开发者都遇到过这样的困境:明明按照教程修改了配置文件,重启后却依然报错或路径未…...

C#怎么实现RSA非对称加密 C#如何用RSA算法进行公钥加密私钥解密和数字签名【安全】

应使用 RSA.Create() 创建 RSA 实例,避免过时的 RSACryptoServiceProvider;密钥导出用 ExportPkcs8PrivateKey/ExportSubjectPublicKeyInfo;加密须用 OAEP-SHA256 且校验明文长度;签名用 SignData/VerifyData 并指定 SHA256 和 PK…...