嵌入式面试提纲

news2025/6/9 16:58:52

一、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 等。

面试常问:

  1. 请简述 TCP/IP 模型与 OSI 七层模型的对应关系。

  2. TCP 与 UDP 的区别?各有什么典型应用场景?

  3. 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 匹配最长前缀,选择下一跳。

    • 默认网关、直连网络、三层交换等。

面试常问:

  1. 如何计算某 IP 的网络地址、广播地址?

  2. 什么是 CIDR?为什么要划分子网?

  3. 简述 IP 分片过程及可能带来的问题(性能、重组失败)。


1.3 TCP 核心机制

  • 三次握手(Three‑way Handshake)

    1. 客户端发送 SYN, seq = x

    2. 服务器收到 SYN, 回复 SYN‑ACK, seq = y, ack = x+1

    3. 客户端收到 SYN‑ACK, 回复 ACK, ack = y+1;连接建立

  • 四次挥手(Four‑way Teardown)

    1. 主动关闭方发送 FIN, seq = a

    2. 对端回复 ACK, ack = a+1

    3. 对端发送 FIN, seq = b

    4. 主动关闭方回复 ACK, ack = b+1;连接关闭

  • 流量控制(窗口机制)

    • 发送端发送窗口(rwnd)由接收端根据缓冲区大小告知。

  • 拥塞控制(慢启动、拥塞避免、快速重传、快速恢复)

    • 拥塞窗口(cwnd)从 1 MSS 开始,遇到丢包或超时则触发相应算法。

面试常问:

  1. TCP 三次握手的目的?如果少一次会发生什么?

  2. TCP 四次挥手与三次挥手有什么区别?为什么需要四次?

  3. 怎么理解 TCP 的流量控制与拥塞控制?

  4. 如何粗略计算 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 等。

面试常问:

  1. 为什么 DNS 通常使用 UDP?遇到数据包丢失怎么办?

  2. 简述 ICMP 报文类型(Echo Request/Reply,Destination Unreachable 等)。

  3. 常见的服务器如何处理端口抢占和端口复用?


二、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) 可能 > 各成员大小之和。

面试常问:

  1. struct A { char c; int x; }struct B { int x; char c; } 谁更省空间,为什么?

  2. 如何传递结构体到函数?按值还是按引用?优缺点?

  3. 什么是匿名结构体,什么时候用?


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 等于其最大成员的大小,再加上对齐需要的填充。

面试常问:

  1. 结构体和联合体有什么区别?各自适用场景?

  2. 为什么联合体可节省内存?举例说明。

  3. 如何安全地在联合体里存放二进制数据(如网络协议报文)?


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)。

面试常问:

  1. 枚举常量的底层类型是什么?可以指定底层类型吗?

  2. 枚举 vs #define 的区别?哪种更好?

  3. 如何把枚举转为字符串?有哪些常见技巧?


2.4 单向链表(Linked List)

2.4.1 概念
  • 定义

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2405608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《如何使用MinGW-w64编译OpenCV和opencv_contrib》

《如何使用MinGW-w64编译OpenCV和opencv_contrib》 在Windows环境下使用MinGW编译OpenCV和opencv_contrib是一个常见需求,尤其是对于那些希望使用GCC工具链而非Visual Studio的开发者。下面我将详细介绍这个过程。 准备工作 首先需要安装和准备以下工具和库: MinGW(建议使…

模拟搭建私网访问外网、外网访问服务器服务的实践操作

目录 实验环境 实践要求 一、准备工作 1、准备四台虚拟机,分别标号 2、 防火墙额外添加两块网卡,自定义网络连接模式 3、 关闭虚拟机的图形管理工具 4、关闭防火墙 5、分别配置四台虚拟机的IP地址,此处举一个例子(使用的临…

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…

Spring Boot微服务架构(十一):独立部署是否抛弃了架构优势?

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

(四)Linux性能优化-CPU-软中断

软中断 中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力 由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行 Linux 将中断处理过程分成了两个阶段&a…

QT的工程文件.pro文件

文章目录 QT的工程文件.pro文件QT5中的基本模块Qt CoreQt GUIQt WidgetsQt QMLQt QuickQt NetworkQt SQLQt MultimediaQt ConcurrentQt WebEngineQt TestLib TARGET 可选择的模版CONFIG的配置项 QT的工程文件.pro文件 每一个QT项目都至少有一个.pro文件,用来配置项目…

安科瑞防逆流方案落地内蒙古中高绿能光伏项目,筑牢北疆绿电安全防线

一、项目概况 内蒙古阿拉善中高绿能能源分布式光伏项目,位于内蒙古乌斯太镇,装机容量为7MW,采用自发自用、余电不上网模式。 用户配电站为35kV用户站,采用两路电源单母线分段系统。本项目共设置12台35/0.4kV变压器,在…

在本地电脑中部署阿里 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…

算法-数论

C-小红的数组查询(二)_牛客周赛 Round 95 思路:不难看出a数组是有循环的 d3,p4时,a数组:1、0、3、2、1、0、3、2....... 最小循环节为4,即最多4种不同的数 d4,p6时,a数组:1、5、3、…

SQL导出Excel支持正则脱敏

SQL to Excel Exporter 源码功能特性核心功能性能优化安全特性 快速开始环境要求安装运行 API 使用说明1. 执行SQL并导出Excel2. 下载导出文件3. 获取统计信息4. 清理过期文件 数据脱敏配置支持的脱敏类型脱敏规则配置示例 配置说明应用配置数据库配置 测试运行单元测试运行集成…

【第三十九周】ViLT

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

代码随想录算法训练营第60期第六十天打卡

大家好,今天因为有数学建模比赛的校赛,今天的文章可能会简单一点,望大家原谅,我们昨天主要讲的是并查集的题目,我们复习了并查集的功能,我们昨天的题目其实难度不小,尤其是后面的有向图&#xf…

数据结构——D/串

一、串的定义和基本操作  1. 串的定义   1)串的概念   组成结构: 串是由零个或多个字符组成的有限序列,记为 S′a1a2⋯an′Sa_1a_2\cdots a_nS′a1​a2​⋯an′​&#x…

AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月8日第102弹

从今天开始,咱们还是暂时基于旧的模型进行预测,好了,废话不多说,按照老办法,重点8-9码定位,配合三胆下1或下2,杀1-2个和尾,再杀4-5个和值,可以做到100-300注左右。 (1)定…

【第九篇】 SpringBoot测试补充篇

简介 本文介绍了SpringBoot测试中的五项关键技术:测试类专用属性加载、 测试类专用Bean配置、 表现层测试方法、测试类事务回滚控制、配置文件随机数据设置)。这些技术可以有效隔离测试环境,确保测试数据不影响生产环境,同时提供了…

springcloud SpringAmqp消息队列 简单使用

这期只是针对springBoot/Cloud 在使用SpringAmqp消息队列的时候遇到的坑。 前提 如果没有安装RabbitMQ是无法连接成功的!所以前提是你要安装好RabbitMQ。 docker 安装命令 # 拉取docker镜像 docker pull rabbitmq:management# 创建容器 docker run -id --namera…