嵌入式面试提纲
一、TCP/IP 协议
1.1 TCP/IP 五层模型概述
-
链路层(Link Layer)
-
包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责把数据帧(Frame)在相邻节点间传输。
-
-
网络层(Internet Layer)
-
最典型的是 IP 协议 (IPv4/IPv6)。负责 路由选路、分片与重组。
-
其他:ICMP(Ping、目的不可达等)、ARP/ND (地址解析协议/邻居发现)。
-
-
传输层(Transport Layer)
-
TCP(Transmission Control Protocol):面向连接、可靠传输、有序到达、流量控制与拥塞控制。
-
UDP(User Datagram Protocol):无连接、不保证可靠性、低开销。
-
-
会话层、表示层(合并在“应用层”讨论)
-
应用层(Application Layer)
-
HTTP/HTTPS、FTP、SMTP/POP3、DNS、Telnet、SSH 等。
-
面试常问:
请简述 TCP/IP 模型与 OSI 七层模型的对应关系。
TCP 与 UDP 的区别?各有什么典型应用场景?
DNS 查询过程是怎样的?(迭代查询 vs 递归查询)
1.2 IP 协议要点
-
IP 地址与子网掩码
-
IPv4:32 位,常见写法
192.168.1.10/24
(子网掩码 255.255.255.0)。 -
IPv6:128 位,常见压缩写法
fe80::1ff:fe23:4567:890a/64
。
-
-
分片与重组
-
当数据包超过链路层最大传输单元(MTU)时,IP 层会分片。目的主机负责重组。
-
-
路由选择
-
路由表:根据目的 IP 匹配最长前缀,选择下一跳。
-
默认网关、直连网络、三层交换等。
-
面试常问:
如何计算某 IP 的网络地址、广播地址?
什么是 CIDR?为什么要划分子网?
简述 IP 分片过程及可能带来的问题(性能、重组失败)。
1.3 TCP 核心机制
-
三次握手(Three‑way Handshake)
-
客户端发送 SYN, seq = x
-
服务器收到 SYN, 回复 SYN‑ACK, seq = y, ack = x+1
-
客户端收到 SYN‑ACK, 回复 ACK, ack = y+1;连接建立
-
-
四次挥手(Four‑way Teardown)
-
主动关闭方发送 FIN, seq = a
-
对端回复 ACK, ack = a+1
-
对端发送 FIN, seq = b
-
主动关闭方回复 ACK, ack = b+1;连接关闭
-
-
流量控制(窗口机制):
-
发送端发送窗口(rwnd)由接收端根据缓冲区大小告知。
-
-
拥塞控制(慢启动、拥塞避免、快速重传、快速恢复):
-
拥塞窗口(cwnd)从 1 MSS 开始,遇到丢包或超时则触发相应算法。
-
面试常问:
TCP 三次握手的目的?如果少一次会发生什么?
TCP 四次挥手与三次挥手有什么区别?为什么需要四次?
怎么理解 TCP 的流量控制与拥塞控制?
如何粗略计算 RTT?什么是滑动窗口?
1.4 UDP 与其他协议
-
UDP(User Datagram Protocol)
-
“不可靠”传输:不保证到达、不保证顺序。
-
头部开销小,仅 8 字节:
源端口(2B) | 目标端口(2B) | 长度(2B) | 校验和(2B)
。 -
常见应用:DNS 查询、VoIP、视频流、DHCP。
-
-
ICMP(Internet Control Message Protocol)
-
用于网络诊断(ping)、不可达报告、TTL 超时等。
-
-
常见端口号
-
HTTP:80,HTTPS:443,DNS:53,SSH:22,FTP:21,SMTP:25,POP3:110,IMAP:143 等。
-
面试常问:
为什么 DNS 通常使用 UDP?遇到数据包丢失怎么办?
简述 ICMP 报文类型(Echo Request/Reply,Destination Unreachable 等)。
常见的服务器如何处理端口抢占和端口复用?
二、C 语言基础
以下内容面向零基础读者,从最基本的概念开始,一步步推进到链表、环形队列和指针的“进阶姿势”。
2.1 结构体(struct
)
2.1.1 概念
-
定义:把多个不同类型的变量组合成一个“整体”,类似现实世界中“一个学生有姓名、年龄、成绩”。
-
语法:
struct Student {char name[32];int age;float score; };
-
用法:
struct Student s1; strcpy(s1.name, "Alice"); s1.age = 20; s1.score = 92.5f; printf("Name=%s, Age=%d, Score=%.1f\n", s1.name, s1.age, s1.score);
-
内存对齐:
-
结构体成员通常按自然对齐方式存放,字段之间可能插入“填充字节(Padding)”以保证访问效率。
-
sizeof(struct)
可能 > 各成员大小之和。
-
面试常问:
struct A { char c; int x; }
与struct B { int x; char c; }
谁更省空间,为什么?如何传递结构体到函数?按值还是按引用?优缺点?
什么是匿名结构体,什么时候用?
2.2 联合体(union
)
2.2.1 概念
-
定义:联合体的所有成员 共用同一块内存,只要给其中一个成员赋值,就修改了这块内存。
-
语法:
union Data {int i;float f;char str[20]; };
-
用法:
union Data d; d.i = 100; printf("d.i=%d, d.f=%f\n", d.i, d.f); // f 与 i 共享内存,值不确定
-
大小:
-
联合体的
sizeof
等于其最大成员的大小,再加上对齐需要的填充。
-
面试常问:
结构体和联合体有什么区别?各自适用场景?
为什么联合体可节省内存?举例说明。
如何安全地在联合体里存放二进制数据(如网络协议报文)?
2.3 枚举(enum
)
2.3.1 概念
-
定义:枚举是一组具名整型常量的集合,让代码更易读。
-
语法:
enum Weekday { MON = 1, TUE, WED, THU, FRI, SAT, SUN };
-
如果不显式赋值,默认从 0 开始自动 +1。
-
-
用法:
enum Weekday today = WED; if (today == WED) { printf("It's Wednesday\n"); }
-
底层本质:枚举常量本质是整型 (C 默认
int
)。
面试常问:
枚举常量的底层类型是什么?可以指定底层类型吗?
枚举 vs
#define
的区别?哪种更好?如何把枚举转为字符串?有哪些常见技巧?
2.4 单向链表(Linked List)
2.4.1 概念
-
定义
相关文章:
嵌入式面试提纲
一、TCP/IP 协议 1.1 TCP/IP 五层模型概述 链路层(Link Layer) 包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责把数据帧(Frame)在相邻节点间传输。 网络层(Internet Layer) 最典型的是 IP 协议 (IPv4/IPv6)。负责 路由选路、分片与重组。 其他:ICMP(Ping、目的不可达等)…...
算法工程师认知水平要求总结
要成为一名合格的算法工程师或算法科学家,需要达到的认知水平不仅包括扎实的技术功底,更涵盖系统性思维、问题抽象能力和工程实践智慧。以下是关键维度的认知能力要求: 一、理论基础认知深度 数学根基 概率统计:深刻理解贝叶斯推断…...

《如何使用MinGW-w64编译OpenCV和opencv_contrib》
《如何使用MinGW-w64编译OpenCV和opencv_contrib》 在Windows环境下使用MinGW编译OpenCV和opencv_contrib是一个常见需求,尤其是对于那些希望使用GCC工具链而非Visual Studio的开发者。下面我将详细介绍这个过程。 准备工作 首先需要安装和准备以下工具和库: MinGW(建议使…...
数据库、数据仓库、数据中台、数据湖相关概念
文章目录 序言1数据库,数据仓库,数据中台,数据湖-概念对比释义1.1概念产生的时间顺序1.2在使用功能方面对比1.3在使用工具方面对比 2数据仓库2.1数据仓库的发展阶段2.2 数据仓库的设计2.3数据仓库常用工具,方法2.3.1分析型数据库和…...

模拟搭建私网访问外网、外网访问服务器服务的实践操作
目录 实验环境 实践要求 一、准备工作 1、准备四台虚拟机,分别标号 2、 防火墙额外添加两块网卡,自定义网络连接模式 3、 关闭虚拟机的图形管理工具 4、关闭防火墙 5、分别配置四台虚拟机的IP地址,此处举一个例子(使用的临…...
【RAG召回】BM25算法示例
rank-bm25 功能示例 本篇将通过多个示例,快速展示 rank-bm25 库的核心功能。不使用jieba。 准备工作 首先,确保您已经安装了 rank-bm25。 pip install rank-bm25接下来,我们定义一个通用的中文语料库和分词函数。这里我们使用简单的单字切…...

vue中Echarts的使用
文章目录 Echarts概述什么是EchartsEcharts的好处 Vue中Echarts的使用Echarts的安装Echarts的引入 Echarts概述 什么是Echarts Apache ECharts:一个基于 JavaScript 的开源可视化图表库。 其官网如下:https://echarts.apache.org/zh/index.html Echar…...

【C++项目】负载均衡在线OJ系统-1
文章目录 前言项目结果演示技术栈:结构与总体思路compiler编译功能-common/util.hpp 拼接编译临时文件-common/log.hpp 开放式日志-common/util.hpp 获取时间戳方法-秒级-common/util.hpp 文件是否存在-compile_server/compiler.hpp 编译功能编写(重要&a…...
Linux环境-通过命令查看zookeeper注册的服务
假设前置条件如下: 1.root权限用户名:zookeeper 2.zookeeper所在服务器地址:168.7.3.254(非真实ip) 3.zookeeper的bin文件路径:/opt/zookeeper/bin 4.确保zookeeper注册中心已启动 查看注册中心服务如下&a…...

Spring Boot微服务架构(十一):独立部署是否抛弃了架构优势?
Spring Boot 的独立部署(即打包为可执行 JAR/WAR 文件)本身并不会直接丧失架构优势,但其是否体现架构价值取决于具体应用场景和设计选择。以下是关键分析: 一、独立部署与架构优势的关系 内嵌容器的优势保留 Spring Boot 独立部署…...

(四)Linux性能优化-CPU-软中断
软中断 中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力 由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行 Linux 将中断处理过程分成了两个阶段&a…...
SCADA|RESTful学习,Apipost通过GET获取KingSCADA实时数据
哈喽,你好啊,我是雷工! 以前记录过一篇《安装APIPost工具,了解RESTful》的笔记。 最近涉及到SCADA程序和MES对接,这种信息化的对接,常常要用到RESTful。 好像还有什么Webservices,我是听的一头雾水。 根本听不懂啊,于是加班补补课,先了解下RESTful。 01 RESTful传…...
【CSS-7】深入解析CSS伪类:从基础到高级应用
CSS伪类是前端开发中不可或缺的强大工具,它们允许我们根据文档树之外的信息或简单选择器无法表达的状态来样式化元素。本文将全面探讨CSS伪类的各种类型、使用场景和最佳实践。 1. 伪类基础概念 1.1 什么是伪类? 伪类(Pseudo-class&#x…...

QT的工程文件.pro文件
文章目录 QT的工程文件.pro文件QT5中的基本模块Qt CoreQt GUIQt WidgetsQt QMLQt QuickQt NetworkQt SQLQt MultimediaQt ConcurrentQt WebEngineQt TestLib TARGET 可选择的模版CONFIG的配置项 QT的工程文件.pro文件 每一个QT项目都至少有一个.pro文件,用来配置项目…...
用 DeepSeek 高效完成数据分析与挖掘
一、DeepSeek 是什么? DeepSeek 是由深度求索推出的智能助手(当前版本 DeepSeek-R1),具备强大的自然语言理解、代码生成与数据分析能力。它支持 128K超长上下文,可处理复杂数据文档,并直接生成可运行的 Python 数据分析代码,是数据工作者的“AI副驾驶”。 二、DeepSeek…...

安科瑞防逆流方案落地内蒙古中高绿能光伏项目,筑牢北疆绿电安全防线
一、项目概况 内蒙古阿拉善中高绿能能源分布式光伏项目,位于内蒙古乌斯太镇,装机容量为7MW,采用自发自用、余电不上网模式。 用户配电站为35kV用户站,采用两路电源单母线分段系统。本项目共设置12台35/0.4kV变压器,在…...
stress 服务器压力测试的工具学习
一、stress 工具介绍 tress 是一种工具,可以对符合 POSIX 标准的操作系统施加可配置数量的 CPU、内存、I/O 或磁盘压力,并报告其检测到的任何错误。 stress 不是一个基准测试。它是由系统管理员用来评估其系统扩展性的工具,由内核程序员用来…...

在本地电脑中部署阿里 Qwen3 大模型及连接到 Elasticsearch
在今天的文章中,我将参考文章 “使用 Elastic 和 LM Studio 的 Herding Llama 3.1” 来部署 Qwen3 大模型。据测评,这是一个非常不错的大模型。我们今天尝试使用 LM Studio 来对它进行部署,并详细描述如何结合 Elasticsearch 来对它进行使用。…...

八股---7.JVM
1. JVM组成 1.1 JVM由哪些部分组成?运行流程? 难易程度:☆☆☆ 出现频率:☆☆☆☆ Java Virtual Machine:Java 虚拟机,Java程序的运行环境(java二进制字节码的运行环境)好处:一次编写,到处运行;自动内存管理,垃圾回收机制程序运行之前,需要先通过编译器将…...

C++性能优化指南
思维导图(转载) https://www.processon.com/view/5e5b3fc5e4b03627650b1f42 第 1 章 优化概述 1.1 优化是软件开发的一部分 优化更像是一门实验科学。 1.2 优化是高效的 1.3 优化是没有问题的 **90/10 规则:**程序中只有 10% 的代码…...

数据集-目标检测系列- 猴子 数据集 monkey >> DataBall
贵在坚持! * 相关项目 1)数据集可视化项目:gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview 2)数据集训练、推理相关项目:GitHub - XIAN-HHappy/ultralytics-yolo-webui: ultralytics-yo…...
【RAG召回】bge实现向量相似度索引
sentence-transformers 是一个非常强大的 Python 框架,它可以将句子或段落转换成高质量、高信息密度的数字向量(称为“嵌入”或 Embeddings)。它厉害的地方在于,语义上相似的句子,其向量在空间中的距离也更近。 这使得…...

算法-数论
C-小红的数组查询(二)_牛客周赛 Round 95 思路:不难看出a数组是有循环的 d3,p4时,a数组:1、0、3、2、1、0、3、2....... 最小循环节为4,即最多4种不同的数 d4,p6时,a数组:1、5、3、…...
原型对象(Prototype)详解
原型对象(Prototype)详解 一、核心概念 本质:每个 JavaScript 对象(除 null 外)都有的内置属性作用:实现对象间的属性/方法继承(原型继承)存储位置:[[Prototype]] 内部属性(通过 __proto__ 或 Object.getPrototypeOf() 访问)二、关键特性图示 对象实例 (obj)│├─…...
MongoDB账号密码笔记
先连接数据库,新增用户密码 admin用户密码 use admin db.createUser({ user: "admin", pwd: "yourStrongPassword", roles: [ { role: "root", db: "admin" } ] })用户数据库用户密码 use myappdb db.createUser({ user: &…...

SQL导出Excel支持正则脱敏
SQL to Excel Exporter 源码功能特性核心功能性能优化安全特性 快速开始环境要求安装运行 API 使用说明1. 执行SQL并导出Excel2. 下载导出文件3. 获取统计信息4. 清理过期文件 数据脱敏配置支持的脱敏类型脱敏规则配置示例 配置说明应用配置数据库配置 测试运行单元测试运行集成…...
05.查询表
查询表 字段显示可以使用别名: col1 AS alias1, col2 AS alias2, … WHERE子句:指明过滤条件以实现“选择"的功能: 过滤条件: 布尔型表达式算术操作符:,-,*,/,%比较操作符:,<>(相等或都为空),<>,!(非标准SQL),>,>,<,<范围查询: BETWEEN min_num …...
基于深度强化学习的智能机器人导航系统
前言 随着人工智能技术的飞速发展,机器人在日常生活和工业生产中的应用越来越广泛。其中,机器人导航技术是实现机器人自主移动的关键。传统的导航方法依赖于预设的地图和路径规划算法,但在复杂的动态环境中,这些方法往往难以适应。…...

【第三十九周】ViLT
ViLT 摘要Abstract文章信息介绍提取视觉特征的方式的演变模态融合的两种方式四种不同的 VLP 模型Q&A 方法模型结构目标函数Whole Word Masking(WWM) 实验结果总结 摘要 本篇博客介绍了ViLT(Vision-and-Language Transformer)…...

代码随想录算法训练营第60期第六十天打卡
大家好,今天因为有数学建模比赛的校赛,今天的文章可能会简单一点,望大家原谅,我们昨天主要讲的是并查集的题目,我们复习了并查集的功能,我们昨天的题目其实难度不小,尤其是后面的有向图…...