嵌入式QTGit面试题

自己在秋招过程中遇到的QT和嵌入式和Git相关的面试题,因为比较少就一起放了

QT

connect第5个参数是什么?

Qt::AutoConnection: 默认值,使用这个值则连接类型会在信号发送时决定。
如果接收者和发送者在同一个线程,则自动使Qt::DirectConnection类型。
如果接收者和发送者不在一个线程,自动使用Qt::QueuedConnection类型。
Qt::DirectConnection:槽函数会在信号发送的时候直接被调用,槽函数运行于信号发送者所在线程。效果看上去就像是直接在信号发送位置调用了槽函数。这个在多线程环境下比较危险,可能会造成奔溃。
Qt::QueuedConnection:槽函数在控制回到接收者所在线程的事件循环时被调用,槽函数运行于信号接收者所在线程。发送信号之后,槽函数不会立刻被调用,等到接收者的当前函数执行完,进入事件循环之后,槽函数才会被调用。多线程环境下一般用这个。
Qt::BlockingQueuedConnection:槽函数的调用时机与Qt::QueuedConnection一致,不过发送完信号后发送者所在线程会阻塞,直到槽函数运行完。接收者和发送者绝对不能在一个线程,否则程序会死锁。在多线程间需要同步的场合可能需要这个。
Qt::UniqueConnection:这个flag可以通过按位或(|)与以上四个结合在一起使用。当这个flag设置时,当某个信号和槽已经连接时,再进行重复的连接就会失败。也就是避免了重复连接

qss

一般在HTML中我们把样式表叫做CSS,在Qt中我们称之为QSS。QSS和CSS并不完全等同,语法完全类似,定义上存在一些差别。

什么是QSS

QSS是Qt程序界面中用来设置控件的背景图片、大小、字体颜色、字体类型、按钮状态变化等属性,用于美化UI界面。实现界面和程序的分离,快速切换皮肤。
QSS最大的优点就是简单便捷,我们可以通过它快速实现应用程序的外观界面。

QT中的信号与槽机制

用于处理事件和通信的机制,一个对象的变化可以触发另一个对象的响应

// 例子:定义一个信号 signals:
void mySignal();
// 例子:定义一个槽函数public slots: 
void mySlot();
// 例子:建立连接
QObject::connect(senderObject, SIGNAL(mySignal()), receiverObject, SLOT(mySlot()));// 例子:发射信号
emit mySignal();//例子:自动连接
connect(senderObject, &SenderClass::mySignal, receiverObject, &ReceiverClass::mySlot);

connect连接了信号与槽之间的关系,当信号被发射时,与其对应的槽函数被调用

界面的布局怎么调整

layout布局管理器
水平布局
垂直布局
网格布局
表单布局

弹簧填充空白区域

QT里面的MVC

MVC是Model-View-Controller的缩写,是一种源自Smalltalk的设计模式,在构建用户界面时经常使用。Model是应用程序对象,View是屏幕显示,Controller定义用户界面对用户输入的反应。

嵌入式

串口通讯是什么?

通过总线在一个时间点连续发送一位数据的方法。如同弓箭手频繁射出弓箭一般,嗖、嗖、嗖……
大白话:就是串口通信时所使用的协议传输方式。

串口通信协议

系统间协议

用于通信两个不同设备的系统间协议。就像计算机与微控制器套件之间的通信一样。通过内部总线系统进行通信。

UART协议
  1. UART代表通用异步发送器和接收器。UART协议是具有两个有线协议的串口通信。数据电缆信号线标记为Rx和Tx。串口通信通常用于发送和接收信号。它被传输并与串口通信接收数据,而没有类脉冲。UART接收数据字节并按顺序发送各个位。
  2. USAT协议在嵌入式系统中,通常作为 MCU 的外设; 一般来说,由芯片引脚直接引出的一般是 TTL 电平;而中间接有转换芯片的可能就是RS232电平。详情可查看:串行通讯的标准
  3. UART是半双工协议。半双工意味着具有传输和接收数据的功能,但不能同时进行。大多数控制器在电路板上都有硬件UART。它使用一条数据线来发送和接收数据。它具有一个起始位、一个8位数据和一个停止位,表示8位数据传输一个人的信号是从高到低。例如:电子邮件、短信、对讲机,工业物联网传输设备串口服务器。

image.png

USART协议

USART代表通用的同步和异步发送器和接收器。它是两线协议的串口通信。数据电缆信号线标记为Rx和TX。该协议用于逐字节发送和接收数据以及时钟脉冲。这是一种全双工协议,意味着同时以不同的板速发送和接收数据。不同的设备通过此协议与微控制器通信。例如电信。
image.png

USB协议

USB代表通用串行总线。同样,它是两线协议的串行通信。数据电缆信号线标记为D +和D-。此协议用于与系统外围设备进行通信.USB协议用于向主机和外围设备串行发送和接收数据.USB通信需要基于系统功能的驱动程序软件.USB设备可以在其上传输数据主机上没有任何请求的总线。现在,当今大多数设备都在使用这种技术与USB协议进行通信。像计算机一样使用USB与ARM控制器通信。USB以不同的模式传输数据。第一个是10 kbps至100 kbps的慢速模式;第二个是全速模式500kbps至10mbps,高速模式25mbps至400Mbps。USB最大电缆长度为4米。
例如:鼠标、键盘、集线器、开关、笔式驱动器。
image.png

内部系统协议

内部系统协议用于通信电路板上的两个设备。在使用这些系统内协议时,我们将不使用系统内协议而扩展微控制器的外围设备。使用系统内协议会增加电路复杂度和功耗。使用系统内协议,电路复杂度和功耗降低,成本降低,并且访问数据非常安全。

I2C协议

I2C代表内部集成电路。I2C只需两条线即可将所有外设连接到微控制器。I2C只需两条线SDA(串行数据线)和SCL(串行时钟线)即可在设备之间传输信息。它是从属通信协议的主控。每个从站都有一个唯一的地址。主设备发送目标从设备的地址和读/写标志。该地址与该设备打开的任何从设备匹配,其余从设备处于禁用模式。一旦地址匹配,在主机和该从机之间进行通信,并发送和接收数据。发送器发送8位数据,接收器回复1位确认。通讯完成后,主站发出停止条件。
其最初目的是提供一种将CPU连接到外围设备芯片的简便方法。嵌入式系统中的外围设备通常作为内存映射设备连接到微控制器。I2C仅需要两条线即可将所有外设连接到微控制器。这些称为SDA和SCL的有源线都是双向的。SDA线是串行数据线,而SCA线是串行时钟线。
image.png
为什么在I2C SCL和SDA线路中使用上拉电阻。
SDA和SCL线均为漏极开路驱动器。
它可以将输出驱动为低电平,将其驱动为高电平。
为了使线路能够变高,您必须提供上拉电阻

SPI协议

SPI代表串行外设接口。有时SPI协议也称为4线协议。它需要四线MOSI,MISO,SS和SCLK.SPI协议用于通信主设备和从设备。主机首先使用频率配置时钟。然后,主机通过拉片选按钮选择特定的从设备进行通信。选择该特定设备并开始主机与该特定从机之间的通信。主机一次仅选择一个从机。它是一种全双工通信协议。在位传输的情况下,不限于8位字。
image.png

CAN协议

CAN代表控制器局域网。它是一个串行通信协议。它需要两条线CAN高(H +)和CAN低(H-)。用于车载网络。它基于面向消息的传输协议。
1970年代是汽车制造商开始引入新功能的时代,例如防抱死制动,空调,齿轮控制,中央操作门锁等。这些功能确保了额外的接线和复杂的设计,从而增加了成本和风险。为了克服这些问题,Robert Bosch在1980年代引入了CAN协议。此串行通信协议在1993年进一步标准化为ISO11898。正是CAN协议完全改变了高级传感器之间的通信。
CAN协议常用于汽车、飞机和医疗系统中的电子网络。常见产品有Can转以太网设备USR-CANET200
image.png

嵌入式软件远程在线升级,你的方法是什么?

1)软件升级服务器发送升级指令,嵌入式设备收到回复
2)服务器收到设备的回复,发送升级包
3)设备进行解析安装升级

git

git常用命令

  1. $ git init # 初始化仓库
  2. $ git commit # 提交到远程仓库(默认的master分支) 用的蛮多的
  3. $ git push -f -u origin 远程分支 # 强制提交到远程分支
  4. $ git pull <远程主机名><远程分支名>:<本地分支名># 取回远程仓库的变换,并与本地分支合并

提交代码的流程

克隆项目代码
1)git clone:整个代码库克隆到本地
2)git branch:查看分支
3) git checkout -b :基于开发分支检出自己分支
本地写自己的代码
3)git add:添加到暂存区
4)git commit:提交到本地
5)git pull:拉取一下最新的改动
6)git merge:合并到本地开发分支
7) git push:推送到远程仓库

以后开始工作前:git pull 原创最新代码

其它
1)git delete 删除分支
2)git rebase:合并分支的方式,干净线性的提交历史,在公共分支上应避免使用
git merge:保留详细的分支历史,根据团队习惯使用
3)git diff:比较工作树和暂存区的差异:
4) git revert:通过创建一个新的提交来撤销之前的提交
5)git reset:撤销到某个提交,但要小心使用,可能会改变项目历史

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

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

相关文章

【机器学习】决策树算法理论:算法原理、信息熵、信息增益、预剪枝、后剪枝、算法选择

1. 决策树概念 通过不断的划分条件来进行分类&#xff0c;决策树最关键的是找出那些对结果影响最大的条件&#xff0c;放到前面。 我举个列子来帮助大家理解&#xff0c;我现在给我女儿介绍了一个相亲对象&#xff0c;她根据下面这张决策树图来进行选择。比如年龄是女儿择偶更…

【如何学习Python自动化测试】—— 自动化测试环境搭建

1、 自动化测试环境搭建 1.1 为什么选择 Python 什么是python&#xff0c;引用python官方的说法就是“一种解释型的、面向对象、带有励志语义的高级程序设计语言”&#xff0c;对于很多测试人员来说&#xff0c;这段话包含了很多术语&#xff0c;而测试人员大多是希望利用编程…

和鲸科技创始人范向伟受邀出席“凌云出海,来中东吧”2023华为云上海路演活动

11月9日&#xff0c;华为云“凌云出海&#xff0c;来中东吧”系列路演活动第二场在上海正式开启。聚焦“创业全球化”&#xff0c;本次活动由华为云携手阿布扎比投资办公室&#xff08;ADIO&#xff09;举办&#xff0c;旨在与渴望出海发展的优秀创业者们共探出海中东新商机。 …

Vue3-watchEffect函数

Vue3-watchEffect函数 功能&#xff1a;watchEffect 函数在一开始时就会执行一次&#xff0c;而当中的回调函数的属性发生变化&#xff0c;那么watchEffect 就会再执行一次&#xff0c;主要作用还是在于监视回调函数每次的变化。 // App.vue <template><h2>计数…

一个美观且功能丰富的 .NET 控制台应用程序开源库

推荐一个美观且功能丰富的 .NET 控制台应用程序开源库&#xff0c;从此告别黑漆漆的界面。 01 项目简介 Spectre.Console 是一个开源的 .NET 库&#xff0c;用于创建美观、功能丰富的控制台&#xff08;命令行&#xff09;应用程序。它提供了一组易于使用的 API&#xff0c;…

阿里云崩了,总结我们从云上搬到线下经历了什么

我们做钢铁行业云的时候&#xff0c;也曾购买过某讯的云服务器。当时某讯做活动&#xff0c;头3年比较便宜&#xff0c;大概买了40台左右云服务器。 但是&#xff0c;3年期间使用云服务器的经历&#xff0c;体验并不好&#xff1a;1.我们云服务器的密码都是随机生成的&#xff…

多视图聚类的论文阅读

当聚类的方式使用的是某一类预定义好的相似性度量时&#xff0c; 会出现如下情况&#xff1a; 数据聚类方面取得了成功&#xff0c;但它们通常依赖于预定义的相似性度量&#xff0c;而这些度量受原始方法的影响:当输入维数相对较高时&#xff0c;往往是无效的。 1. Deep Mult…

解决Requests中使用httpbin服务器问题:自定义URL的实现与验证

问题背景 在使用Python的Requests模块进行单元测试时&#xff0c;可能会遇到无法使用本地运行的httpbin服务器进行测试的问题。这是因为测试脚本允许通过环境变量HTTPBIN_URL指定用于测试的本地httpbin实例&#xff0c;但在某些测试用例中&#xff0c;URL是硬编码为httpbin.or…

Linux 系统目录结构

Linux 系统目录结构 登录系统后&#xff0c;在当前命令窗口下输入命令&#xff1a; ls / 你会看到如下图所示: 以下是对这些目录的解释&#xff1a; /bin&#xff1a; bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 /boot&#xff1a; 这里存放…

PbootCMS 应用快速迁移至浪潮信息 KeyarchOS 云服务器

本文我们以 PbootCMS 应用为例&#xff0c;详细介绍如何使用 X2Keyarch 迁移工具将其从 CentOS 系统迁移到浪潮信息 KeyarchOS 系统。 背景介绍 众所周知&#xff0c;CentOS 是最流行的红帽克隆版&#xff0c;因为免费&#xff0c;所以它的安装量甚至比红帽本身要大得多。本来…

在Rust编程中使用泛型

1.摘要 Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义, 这样它们就可以用于多种不同的具体数据类型。下面的内容将涉及泛型定义函数、结构体、枚举和方法, 还将讨论泛型如何影响代码性能。 2.在函数定义中使用泛型 当使用泛型定义函数时&#xff0c;本来在函…

Aerial for Mac: 沉浸在高清鸟瞰的世界,让你的屏幕焕发新生

你是否已经厌倦了那些平淡无奇的屏保程序&#xff1f;是否希望你的Mac屏幕能更生动、更有趣&#xff1f;如果你对此抱有强烈的期待&#xff0c;那么Aerial for Mac绝对会是你期待已久的解决方案。 Aerial for Mac是一款独具特色的高清屏保程序&#xff0c;它以鸟瞰的视角带你领…

【Android】带下划线的TextView

序言 我们有时候需要一个类似这样的显示&#xff0c;上面是文字&#xff0c;下面是一条线 这样的显示效果是TextView实现不了的&#xff0c;需要我们自己进行修改一下。 实现 创建一个UnderlineTextView&#xff0c;继承系统的TextView class UnderlineTextView(mContext…

安装 eslint 配置指南 及 遇到的一些问题记录

前端eslint配置指南 背景 当前前端项目风格混乱&#xff0c;每个人有自己的开发习惯&#xff0c;有自己的格式化习惯&#xff0c;不便于项目的风格统一&#xff0c;不利于代码维护有的项目eslint没有用起来&#xff0c;没有起到规范代码的作用&#xff0c;导致出现一些基础代码…

MySQL-事务

什么是事务 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 事务的特性 (ACID) 原子性(Atomicity)&#xff1a;事务是不…

C_11微机原理

一、单项选择题&#xff08;本大题共 15 小题&#xff0c;每小题 3分&#xff0c;共45分。在每小题给出的四个备选项中&#xff0c;选出一个正确的答案。&#xff09; .EXE 文件产生在&#xff08;&#xff09;之后。 A.汇编 B. 编辑 C.用软件转换 D.连接 2,十进制-61的8位二进…

MybatisPlus学习

一.快速入门 1.相关数据库创建 CREATE TABLE USER(id BIGINT(20) NOT NULL COMMENT 主键ID,NAME VARCHAR(30) NULL DEFAULT NULL COMMENT 姓名,age INT(11) NULL DEFAULT NULL COMMENT 年龄,email VARCHAR(50) NULL DEFAULT NULL COMMENT 邮箱,PRIMARY KEY (id));​​INSERT I…

《洛谷深入浅出基础篇》——P3405 citis and state ——哈希表

上链接&#xff1a;P3405 [USACO16DEC] Cities and States S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3405 上题干&#xff1a; 题目描述 Farmer John 有若干头奶牛。为了训练奶牛们的智力&#xff0c;Farmer John 在谷仓的墙上放了一…

Spring对事务的实现

Spring对事务的支持 事务概述事务的四个处理过程事务的四个特性 引入事务场景Spring实现事务的两种方式声明式事务之注解实现方式 事务概述 在一个业务流程当中&#xff0c;通常需要多条DML&#xff08;insert delete update&#xff09;语句共同联合才能完成&#xff0c;这多…

若依启动步骤

1.创建数据库 2.启动redis 3.改后端的数据库连接配置 4.配置redis redis的地址&#xff1a;cmd中ipconfig命令查看 6.启动后端&#xff1a;如下 7.启动前端ruoyi-ui中 先运行npm install&#xff0c;再npm run dev。项目就启动成功了。 用户名&#xff1a;admin 密码&#x…