物联网面试准备

volatile的作用

volatile关键字用于告诉编译器,该变量可能会在程序的执行过程中被意外更改,因此编译器不应该对该变量进行优化或者缓存。
这样可以确保每次访问该变量时都会从内存中读取最新的值,而不是使用缓存中的旧值。

在多线程编程中,volatile关键字还可以用于确保不同线程之间对变量的可见性,即一个线程对变量的修改会立即对其他线程可见。

但需要注意的是,volatile并不能保证线程安全,因此在多线程环境下还需要使用其它机制来保证线程安全性。

const与define的区别

const是C++中引入的关键字,用于定义常量变量。const声明的常量在编译时确定,一旦赋值后就不能更改。

#define是C和C++中的预处理指令,用于定义宏常量。在编译前会对#define定义的宏进行简单的文本替换。

const是类型安全的,可以指定常量的数据类型,而define是简单的文本替换,没有类型检查。

const是在编译时处理,有作用域,可以避免一些错误,而define是在预处理阶段处理,只是简单的文本替换。

const可以定义常量变量,而#define定义的是宏常量。

const在C++中推荐使用,define在C中比较常见。

static的作用

局部静态变量:在函数内部定义的static变量在整个程序执行期间都存在,仅限制作用域,值在多次函数调用之间是同步的。

全局静态变量:全局范围内定义的static变量仅在其定义的文件中可见,有助于隐藏实现细节和避免命名冲突。

静态函数:使用static修饰的函数也仅在其定义的文件中可见,有助于封装函数逻辑。

空指针和野指针的区别

空指针是指被明确赋值为NULL的指针,它不指向任何有意义的内存地址。
当试图访问空指针所指向的内容时,程序会抛出异常,这有助于及早发现并处理潜在的错误,确保内存管理的安全性。

野指针是指向不可用内存地址的指针,通常由于未初始化指针或释放指针空间后指针未置为NULL产生。
使用野指针访问内存可能导致不可预测的连续后果,如程序崩溃、数据损坏,甚至被黑客利用来植入病毒。

访问野指针会发生什么情况

  1. 程序崩溃:由于野指针指向的内存地址可能被其它程序或系统回收,或者根本不存在,因此访问这些地址可能会导致程序崩溃。
  2. 数据损坏:如果野指针指向的内存区域恰好被其它变量或数组结构所使用,那么对该区域的访问可能会导致这些变量或数组结构的数据被意外修改,进而引发数据损坏或不一致。
  3. 安全漏洞:某些情况下,黑客可能利用野指针将恶意代码或病毒放入随机内存地址中。当程序通过野指针访问这些地址时,恶意代码可能会被激活,导致系统安全受到威胁。

访问空指针会发生什么情况

  1. 空指针异常:在多数编程语言中,尝试访问空指针所指向的内容会引发一个空指针异常。这是一种运行时错误,程序会因此中断执行,并可能输出错误信息。
  2. 程序崩溃:某些情况下,当空指针异常发生时,程序可能会直接崩溃,而不是给出任何错误信息。这通常发生在未对空指针异常进行适当处理的代码中。

单工/半双工/全双工

  • 单工通信:数据只能一个方向传输(广播)
  • 半双工通信:数据可以沿两个方向传输,但需要分时进行
  • 全双工通信:数据可同时进行双向传输

同步/异步

  • 同步:共用同一时钟信号
  • 异步:没有时钟信号,通过在数据信号中加入起始位和停止位等一些同步信号

SPI、IIC、UART的接口协议

在这里插入图片描述

什么是串口

串行通信接口:按位发送和接收的接口。
如:RS-232/422/485等。

RS-232接口(DB9)
在这里插入图片描述

RS-232电平与COMS/TTL电平

在这里插入图片描述

CMOS/TTL电平不能与RS-232电平直接交换信息

在这里插入图片描述

STM32串口与电脑USB通信

在这里插入图片描述

SPI、IIC、UART的接口协议

  • IIC是双向同步串行总线,只需两根线就能实现数据发送和接收。支持多个设备连接在同一条总线上,通过设备地址来区分不同的设备。
  • SPI是一种同步串行数据接口,主要用于微控制器与外围设备之间的通信。通常由一个主设备控制一个或多个从设备,通过片选信号来选择与主设备通信的从设备。
  • UART是一种异步串行通信协议,用于实现简单的数据交换。主要由发送和接收两条线组成,通信速度相对较慢,但实现简单。

IIC:理论上可以连接多个设备,具体数量取决于地址分配和总线驱动能力。但实际应用中,由于地址冲突和总线电容等问题,通常建议连接的设备数量不要过多。

SPI:设备数量取决于可用的片选数量。每增加一个从设备,就需要增加一条片选线,因此SPI设备数量相对有限。

C语言里未初始化的全局变量放在哪里

未初始化的全局变量,会被放在程序的数据段的BSS段中,在BSS段中,这些变量会被初始化为0或者空值(取决于变量的类型)。

已初始化的全局变量会存储在数据段的.data段中,在data段中,已初始化的全局变量会被赋予特定的初始值。

需要传一个大文件,要采用哪种协议?

传输大文件时,一种常用的协议是TFP文件传输协议。
FTP是我们日常中经常用来在网络上传输文件的协议,它特别支持大文件的传输,同时也有一定的可靠性和安全性。

如果对传输过程中的安全性有更高的要求,比如不希望文件在传输过程中被窃取或篡改,那么可以考虑使用SFTP或FTPS等加密协议。这些协议在FTP的基础上增加了数据加密的功能,确保文件在传输过程中得到更好的保护。

在选择传输协议时,可以根据实际需要来权衡,看是否需要加密功能,以及传输速度和稳定性等其他因素。每种协议都有其特点和适应场景,所以最好根据实际情况进行选择。

多线程情况下,第一个线程使用资源

另一个线程能不能继续使用,为什么?

这个取决于资源的共享方式和线程之间的同步机制。通过互斥锁可以确保在同一时刻只有一个线程可以访问共享资源,其它线程需要等待当前线程释放锁才能访问资源。

二分查找

二分法使用的前提是数组已经是有序序列,原理是折半查找,每次把表分成两半,因为已经排序,所以只需要和中间数比较就能确定在哪一半,然后不断分成两半,直到匹配,或者没有数字,表示查找失败。

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

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

相关文章

Arduino IDE 2.3.2找不到端口解决方法

Arduino IDE 2.3.2找不到端口解决方法 问题描述 Arduino IDE 2.3.2 软件找不到端口(端口显示灰色),Arduino开发板连接电脑后,设备管理器能够看到端口信息,Arduino IDE软件中看不到端口。 设备管理器中能够看到端口信息 Arduino IDE中端口显…

植物大战僵尸杂交版(最新版)

杂交版1.0文件链接 链接:https://pan.baidu.com/s/1Ew6iTg0_d_Ut8N9_18KGLw 提取码:yspa 杂交版2.0文件链接 链接:https://pan.baidu.com/s/1tuchowb4C_oNT6EpqSvr_w?pwdy2fz 提取码:y2fz

HTML静态网页成品作业(HTML+CSS)—— 香奈儿香水介绍网页(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有1个页面。 二、作品演示 三、代…

上位机图像处理和嵌入式模块部署(f407 mcu中tf卡模拟u盘)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 在f407开发板上面,本身是有一个usb接口的。这个usb接口也不仅仅是作为电源使用的,它还可以用来做很多的事情。一方面&#…

计算机网络错题答案汇总

王道学习 第1章 计算机网络体系结构 1.1 1.2

vue配置代理服务器解决跨域方法

一.vue配置代理服务器解决跨域方法一 过程如图: 1.在配置文件中设置代理服务器的地址 //vue.config.js module.exports{pages:{index:{// 入口entry:src/main.js,},},lintOnSave:false, //关闭语法检测// 开启代理服务器devServer:{proxy:http://localhost:8000//…

Java基础教程:算术运算符快速掌握

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

操作系统之银行家算法

目录 前言 银行家算法 定义 举例 策略 思路 结束语 前言 今天是坚持写博客的第16天,已经超过半个月了,希望可以继续坚持,不断积累与回顾,夯实基础知识体系的基础。我们今天来讲讲操作系统当中的另一个重要知识点——银行家…

vue2组件传参方法

一、父传子 1、$refs方法 <template><div class"father"><h1>我是父亲</h1><button click"getHeight">获取身高</button><ChildView ref"childRef"></ChildView></div> </template&…

第4章:车辆的横向优化控制

4.1 车辆动力学模型 注1&#xff1a;运动学模型和动力学模型最大的不同点在于 运动学模型是在我们不考虑车辆的受力情况下建立的&#xff08;回顾我们推导出运动学模型的过程&#xff0c;我们没有使用到任何车辆所受的外力作为公式中的已知量&#xff0c;而是直接通过 “ 车速…

云计算-云基础设施的配置 (Provisioning Cloud Infrastructure)

AWS CloudFormation (AWS CloudFormation) 它是一项服务&#xff0c;允许我们自动建模和配置所需的AWS资源。可以使用模板来实现这一目的。这个模板基本上是用JSON或YAML格式编写的。AWS CloudFormation会根据模板描述的内容来实施资源的配置和管理。我们可以成组配置和管理一组…

华为交换机的基本配置

实验拓扑&#xff1a; 实验目的&#xff1a;认识二层交换机和二层交换技术的工作原理&#xff1b;认识三层交换和三层交换技术。 三层功能简而言之就是了具有路由的功能&#xff0c;设备可以充当网关和路由器。 实验要求&#xff1a;公司的两个部门用vlan进行划分&#xff0c…

vs中.\ 与 ..\ 区别

100编程书屋_孔夫子旧书网 在 Visual Studio 中&#xff0c;. 和 .. 是表示相对路径的两个特殊符号。 . 表示当前目录&#xff0c;例如&#xff1a;.\file.txt 表示当前目录下的文件 "file.txt"。 .. 表示上一级目录&#xff0c;例如&#xff1a;..\file.txt 表示上…

喵星人必备!福派斯三文鱼猫粮,营养满分!

猫粮品牌&#xff1a;福派斯三文鱼猫粮测评体验 在快节奏的都市生活中&#xff0c;我们的宠物猫也需要适应当下的生活环境&#xff0c;并保持健康和活力。作为一名合格的铲屎官&#xff0c;我们总是关心如何为猫咪提供既健康又美味的饮食。今天&#xff0c;我有幸为大家带来一…

QT 如何在 QListWidget 的选项中插入自定义组件

有时我们需要 QListWidget 完成更复杂的操作&#xff0c;而不仅限于添加文本或者图标&#xff0c;那么就会使用到 setItemWidget 函数&#xff0c;但是这也会伴生一个问题&#xff0c;插入自定义组件后&#xff0c;QListWidget 对选项点击事件的获取会收到阻塞&#xff0c;因…

Docker安装启动Mysql

1、安装Docker&#xff08;省略&#xff09; 网上教程很多 2、下载Mysql5.7版本 docker pull mysql:5.7 3、查看镜像是够下载成功 docker images 4、启动镜像&#xff0c;生成容器 docker run --name mysql5.7 -p 13306:3306 -e MYSQL_ROOT_PASSWORD123456 -d mysql:5.7 5…

内网-2(代理)

一、代理概述 1、代理服务器(proxy server)&#xff1a;代理网络用户去取得网络信息&#xff0c;介于浏览器与web服务器之间的一条服务器。 注&#xff1a;为了方便&#xff0c;以下用B来代表浏览器的主机&#xff0c;S来代表服务器的主机。 2、正向代理和反向代理 正向代…

PolarCTF 2024夏季个人挑战赛 个人WP

【WEB】审计 直接给源码&#xff0c;php特性 秒了&#xff0c;有个特殊的东西 0e215962017&#xff0c;他md5后的值是本身 【WEB】扫扫看 敏感目录flag.php 【WEB】debudao 查看网页源码&#xff08;里面的flag是错的&#xff09; 查看网络 【WEB】ExX? 开题 扫一下&#…

法国工程师数电练习题——有限状态机

1. 有限状态机 1.1 问题背景描述 给定的有限状态机由其状态图表示&#xff0c;具有两个输入E1和E2以及一个输出S。状态机为下图。请为以下输入序列绘制这个Moore机的时序图&#xff1a; 1) 在t50纳秒时&#xff0c;E1E211 2) 在t150纳秒时&#xff0c;E1E200 …

1.盒模型及其应用(溢出、外边距塌陷)

一、盒模型 盒模型详解-CSDN博客 CSS学习笔记3&#xff1a;CSS三大特性、盒子模型-CSDN博客 1.盒模型组成 &#xff08;1&#xff09;padding padding和border都会撑大盒子&#xff0c;margin不会. 如果没有指定盒子的width/height&#xff0c;那么padding不会撑大盒子。 &am…