嵌入式软件C/C++(技术面试题)

一,网络

1,TCP窗口机制

TCP(传输控制协议)是一种可靠的、面向连接的传输层协议。其中的窗口机制是TCP协议中的一项重要功能,用于控制数据在发送和接收之间的流程。

TCP窗口机制是利用滑动窗口的方式来进行拥塞控制和流量控制的一种算法。它通过维护一个动态的发送窗口大小来适应网络吞吐量和延迟变化,有效地利用带宽资源。TCP发送方根据接收方给出的窗口大小来确定能够向对方发送多少个字节的数据,而接收方则根据自身处理能力和缓存空间来确定窗口大小。

TCP窗口机制的基本原理是,在建立TCP连接时,发送方和接收方都会设置自己的初始窗口大小。发送方每发送一个报文段后,会等待接收方的确认,如果接收方成功接收到报文段并发出确认,发送方就可以将发送窗口右移,并发送更多的数据;如果接收方的窗口满了或者网络拥塞导致报文丢失,发送窗口会被重新设定为较小的值,以降低发送速率。

通过 TCP窗口机制,TCP协议可以实现拥塞控制和流量控制,避免网络拥塞和数据丢失。同时,窗口机制还能根据真实的网络条件动态调整发送窗口大小,从而保证网络通信的效率与可靠性。

2,字节

字节是计算机中存储和传输数据的基本单位。它通常由8个二进制位组成,表示为一个8位的二进制数。在计算机中,所有的数据都以字节的形式存储和处理。字节可以用来表示数字、字符、图像、音频和视频等各种不同类型的数据。

3,select、poll、epoll的区别

select:

1. 一个进程最多只能监听1024个文件描述符 (千级别)

2. select被唤醒之后需要重新轮询一遍驱动的poll函数,效率比较低(消耗CPU资源);

3. select每次会清空表,每次都需要拷贝用户空间的表到内核空间,效率低(一个进行0~4G,0~3G是用户态,3G~4G是内核态,拷贝是非常耗时的);

poll

1. 优化文件描述符个数的限制;(根据poll函数第一个函数的参数来定,如果监听的事件为1个,则结构体数组的大小为1,如果想监听100个,那么这个结构体数组的大小就为100,由程序员自己来决定)

2. poll被唤醒之后需要重新轮询一遍驱动的poll函数,效率比较低

3. poll不需要重新构造文件描述符表,只需要从用户空间向内核空间拷贝一次数据即可

epoll:(本世纪最好用的io多路复用机制)

1. 监听的最大的文件描述符没有个数限制(理论上,取决与你自己的系统)

2. epoll当有事件产生被唤醒之后,文件描述符主动调用callback函数直接拿到唤醒的文件描述符,将文件描述符拷贝到用户空间即可不需要轮询,效率高。

3. epoll不需要重新构造文件描述符表,只需要从用户空间向内核空间拷贝一次数据即可

4,广播和组播的区别

主体不同

1、组播:为了减少在广播中涉及的不必要的开销,可以只向特定的一部分接收方(可以是域内也可以是域间)发送流量。

2、广播:指将报文发送到网络中的所有可能的接收者。

原理不同

1、组播:在通信中参与或感兴趣的主机需要处理相关的分组,流量只会被承载于它将被使用的链路上,并且只有任意组播数据报的一个副本被承载于这样的链路上。

2、广播:路由器简单地将它接收到的任何广播报文副本转发到除该报文到达的接口以外的每个接口。

特点不同

1、组播:通过发送方指明接收方,或是通过接收方独立地指明就可以完成这项工作。然后网络只负责向预期的或感兴趣的收件方发送流量。

2、广播:通过将地址中的主机部分全部置1形成的,特殊地质255.255.255.255对应于本地网络广播。

二,C

1,在 1G 内存的计算机中能否 malloc(1.2G) ?为什么?
答:是有可能申请 1.2G 的内存的。
解析:回答这个问题前需要知道 malloc 的作用和原理,应用程序通过 malloc 函数可以向程序的虚拟空间
申请一块虚拟地址空间,与物理内存没有直接关系,得到的是在虚拟地址空间中的地址,之后程序运行
所提供的物理内存是由操作系统完成的。
2, static 的用法(定义和用途)
1 )用 static 修饰局部变量:使其变为静态存储方式 ( 静态数据区 ) ,那么这个局部变量在函数执行完成之
后不会被释放,而是继续保留在内存中。
2 )用 static 修饰全局变量:使其只在本文件内部有效,而其他文件不可连接或引用该变量。
3 )用 static 修饰函数:对函数的连接方式产生影响,使得函数只在本文件内部有效,对其他文件是不可
见的(这一点在大工程中很重要很重要,避免很多麻烦,很常见)。这样的函数又叫作静态函数。使用
静态函数的好处是,不用担心与其他文件的同名函数产生干扰,另外也是对函数本身的一种保护机制。

三,相关题

下面关于线性表的叙述中,错误的是哪一个()
正确答案: B 你的答案: 空 (错误)
线性表采用顺序存储,必须占用一片连续的存储单元
线性表采用顺序存储,便于进行插入和删除操作
线性表采用链接存储,不必占用一片连续的存储单元
线性表采用链接存储,便于插入和删除操作
下面所述步骤中,不是创建进程所必须的步骤是?
正确答案: A 你的答案: 空 (错误)
由调度程序为进程分配CPU
建立一个进程控制块
为进程分配内存
将进程控制块链入就绪队列
下面的排序算法中,初始数据集的排列顺序对算法的性能无影响的是
正确答案: B 你的答案: 空 (错误)
插入排序
堆 排 序
冒泡排序
快速排序
以下关于 Cache 的叙述中,正确的是()
正确答案: B 你的答案: 空 (错误)
CPU 中的 Cache 容量应大于 CPU 之外的 Cache 容量
Cache 的设计思想是在合理成本下提高命中率
Cache 的设计目标是容量尽可能与主存容量相等
在容量确定的情况下,替换算法的时间复杂度是影响 Cache 命中率的关键因素
运行在多核处理器上的Linux 环境中,若临界区非常短,且不允许线程上下文切换的
情况下,使用下列哪种机制满足上述需求并且性能最好?
正确答案: A 你的答案: 空 (错误)
SpinLock
Mutex
Semaphore
Condition variable
int listen(SOCKET s, int backlog);该函数中第二个参数的含义是?
正确答案: C 你的答案: 空 (错误)
是否打开 log 信息
是否打开后台 log 信息
后台等待连接队列的最大限制值
后台等待连接队列的最小限制值
无意义
以下数据结构属于非线性数据结构的是
正确答案: C 你的答案: 空 (错误)
队列
线性表
二叉树

Unix 系统中,哪些可以用于进程间的通信?()
正确答案: A B C D 你的答案: 空 (错误)
Socket
共享内存
消息队列
信号量
关于多线程和多进程编程,下面描述正确的是():
正确答案: A C D 你的答案: 空 (错误)
多进程里,子进程可获得父进程的所有堆和栈的数据;而线程会与同进程的其他线
程共享数据,拥有自己的栈空间
线程因为有自己的独立栈空间且共享数据,所有执行的开销相对较大,同时不利于
资源管理和保护
线程的通信速度更快,切换更快,因为他们在同一地址空间内
线程使用公共变量/内存时需要使用同步机制,因为他们在同一地址空间内
因多线程里,每个子进程有自己的地址空间,因此相互之间通信时,线程不如进程
灵活和方便
流量劫持是网络安全中常见的安全威胁,下列哪些情况可能会造成流量劫持?()
正确答案: A B C 你的答案: 空 (错误)
MAC 地址欺骗
DNS 劫持
伪造的 DHCP 服务器
使用 https 协议

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

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

相关文章

基于Python的Locust 性能测试指北(万字长文详解)

目录 Locust 我们为什么选择locust Locust的核心部件 Locust内部运行调用链路 locust 实践 检查点(断言) 权重比例 参数化 Tag 集合点 分布式 docker 运行locust 高性能 FastHttpUser 测试gRPC等其他协议 其他 资料获取方法 Locust Locu…

Squeeze-and-Excitation Networks阅读笔记一

文章目录 Abstract1 INTRODUCTION Abstract 卷积算子(convolution operator)是卷积神经网络(cnn)的核心组成部分,它使网络能够通过融合每层局部接受域内的空间和通道信息来构建信息特征。广泛的先前研究已经调查了这种…

VC9、VC10、VC11等等各对应什么版本的Visual Studio,以及含义

文章目录 1、_MSC_VER 定义编译器的版本2、示例 1、_MSC_VER 定义编译器的版本 MS VC 15.0 _MSC_VER 1910 (Visual Studio 2017) MS VC 14.0 _MSC_VER 1900 (Visual Studio 2015) MS VC 12.0 _MSC_VER 1800 (VisualStudio 2013) MS VC 11.0 _MSC_VER 1700 (VisualStudio…

Crescent QuickPak Crack

Crescent QuickPak Crack Crescent QuickPak是一个32位ActiveX组件的综合集合,用于使用Visual Basic开发应用程序,这将减少开发时间并提高生产力。Crescent QuickPak包含Internet功能,用于打开、读取和解析IIS日志文件,将日志文件…

K8s operator从0到1实战

Operator基础知识 Kubernetes Operator是一种用于管理和扩展Kubernetes应用程序的模式和工具。它们是一种自定义的Kubernetes控制器,可以根据特定的应用程序需求和业务逻辑扩展Kubernetes功能。 Kubernetes Operator基于Kubernetes的控制器模式,通过自…

Stephen Wolfram:嵌入的概念

The Concept of Embeddings 嵌入的概念 Neural nets—at least as they’re currently set up—are fundamentally based on numbers. So if we’re going to to use them to work on something like text we’ll need a way to represent our text with numbers. And certain…

PAT乙题1011

答案 #include<iostream> #include<cstdio> using namespace std; typedef long long int ll; int main() {int n,cnt1;cin >> n;while (n--){ll a, b, c; cin >> a >> b >> c;printf("Case #%d: ", cnt);a b > c ? puts(…

FPGA优质开源项目 – PCIE通信

本文介绍一个FPGA开源项目&#xff1a;PCIE通信。该工程围绕Vivado软件中提供的PCIE通信IP核XDMA IP建立。Xilinx提供了XDMA的开源驱动程序&#xff0c;可在Windows系统或者Linux系统下使用&#xff0c;因此采用XDMA IP进行PCIE通信是比较简单直接的。 本文主要介绍一下XDMA I…

复习之selinux的管理

一、什么是selinux? SELinux&#xff0c;Security Enhanced Linux 的缩写&#xff0c;也就是安全强化的 Linux&#xff0c;是由美国国家安全局&#xff08;NSA&#xff09;联合其他安全机构&#xff08;比如 SCC 公司&#xff09;共同开发的&#xff0c;旨在增强传统 Linux 操…

针对java程序员的了解细节操作系统与进程

一、&#x1f49b; 操作系统&#xff08;浅浅概念&#xff09;&#xff1a;是用来搞管理软件的 1.对下,要管理各种硬件设备 2.对上,要给应用程序提供一个稳定的运行环境 二、&#x1f499; 进程&#xff1a;正在运行的程序&#xff0c;假如程序没有运行就不叫程序&#xff0c;…

质检工具(FindBugs、CheckStyle、Junit、Jmeter、Apifox)

1、Findbugs IDEA软件中可以装该插件,2018版本以前主要搜索FindBugs-IDEA 、2018版本以后主要搜索 SpotBugs。 1.1、FindBugs-IDEA安装及使用流程: 1.2、SpotBugs安装及使用流程: 2、Checkstyle IDEA软件中可以装该插件,所有版本的插件一致:CheckStyle 2.1、安装流程…

-bash: ./startup.sh: Permission denied解决

今天在Linux上启动Tomcat&#xff0c;结果弹出&#xff1a;-bash: ./startup.sh: Permission denied 的提示。 这是因为用户没有权限&#xff0c;而导致无法执行。用命令chmod 修改一下bin目录下的.sh权限就可以了。 在Tomcat的bin目录下 &#xff0c;输入命令行 &#xff1a;c…

IEEE SystemVerilog Chapter13 : Tasks and functions (subroutines)

13.2 Overview 任务和函数提供了从描述中的几个不同位置执行通用过程的能力。它们还提供了一种将大型过程分解为小型过程的方法&#xff0c;以便更容易地阅读和调试源代码描述。本小节讨论了任务和函数之间的区别&#xff0c;描述了如何定义和调用任务和函数&#xff0c;并给出…

echarts lineStyle 宽度(width)和颜色(color)动态处理

假如&#xff0c;我们想要在飞线图中根据后台返回数据的不同来动态显示飞线的颜色&#xff0c;我们该怎么设置呢&#xff1f;我们要控制颜色&#xff0c;自然就需要设置color&#xff0c;另外根据ECharts的API介绍&#xff0c;color是支持Function函数的。下面&#xff0c;我们…

通过C语言设计的推箱子(控制台终端)

一、项目介绍 推箱子游戏是一款经典的益智小游戏&#xff0c;玩家需要控制主角角色将几个木箱按照要求推到指定位置。在控制台终端中&#xff0c;可以使用字符来表示不同的游戏元素&#xff0c;例如 ‘#’ 表示墙壁&#xff0c; ’ ’ 表示空地&#xff0c; ‘$’ 表示木箱&am…

14-4_Qt 5.9 C++开发指南_QUdpSocket实现 UDP 通信_UDP组播

文章目录 1. UDP组播的特性2. UDP 组播实例程序的功能3. 组播功能的程序实现4. 源码4.1 可视化UI设计4.2 mainwindow.h4.3 mainwindow.cpp 1. UDP组播的特性 下图简单表示了组播的原理。UDP 组播是主机之间“一对一组”的通信模式&#xff0c;当多个客户端加入由一个组播地址定…

FPGA优质开源项目 - UDP RGMII千兆以太网

本文介绍一个FPGA开源项目&#xff1a;UDP RGMII千兆以太网通信。该项目在我之前的工作中主要是用于FPGA和电脑端之间进行图像数据传输。本文简要介绍一下该项目的千兆以太网通信方案、以太网IP核的使用以及Vivado工程源代码结构。 Vivado 的 Tri Mode Ethernet MAC IP核需要付…

接口自动化测试Mock Get和Post请求

Mock可以模拟一个http接口的后台响应&#xff0c;可以模拟request&#xff0c;response 下载 moco-runner-0.11.0-standalone.jar 下载链接: https://pan.baidu.com/s/1bmFzvJPRnDlQ-cmuJ_3iRg 提取码: kpjv 确保安装了jdk,cmd下可以运行java -version 一、模拟不带参的get请求…

数据结构:双向链表的实现(C实现)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》 文章目录 前言 一、实现思路1.节点的结构(ListNode)2.新节点的创建(BuyListNode)3.头结点的创建(ListCreate)4.双向链表的销毁(ListDestroy)5.双向链表的打印(ListPrint)6.双向链表的尾插(ListPu…

6.5.tensorRT高级(1)-alphapose模型导出、编译到推理(无封装)

目录 前言1. alphapose导出2. alphapose推理3. 讨论总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习 tensorRT 高级-alphap…