面试问题记录一 --- C++(Qt方向)
以下是我于2023年6~7月间换工作时遇到的面试题目,有需要的小伙伴可以参考下。约100个题目。
1 C和C++的区别
1) 文件区别:C源文件后缀 .c;C++源文件后缀 .cpp
2) 返回值: C默认返回int型;C++ 若无返回值,必须指定为void
3) 参数列表:C默认接收多个参数;C++默认为void,不接收任何参数
4) 缺省参数:C不支持给函数参数指定默认值;C++支持
5) C++支持函数重载,C不支持
(而C++支持重载的依仗就在于C++的名字修饰与C不同,例如在C++中函数int fun(int ,int)经过名字修饰之后变为_fun_int_int ,而C是_fun,一般是这样的,所以C++才会支持不同的参数调用不同的函数;)
6) C指针;C++多了引用
7) C是面向过程的,C++是面向对象的。
8) 结构:C中的struct和C++的类,C++的类是C所没有的,但是C中的struct是可以在C++中正常使用的,并且C++对struct进行了进一步的扩展,C语言结构只有成员变量没有成员方法,C++结构有自己的成员变量和成员函数。使struct在C++中可以和class一样当做类使用,struct的成员默认访问修饰符是public,而class默认的是private;
9) 动态管理内存:C是使用malloc/free函数,C++除此之外还有new/delete关键字
10) C++全部变量的默认链接属性是外链接,而C是内连接;
11) C中用const修饰的变量不可以用在定义数组时的大小,但是C++用const修饰的变量可以(如果不进行&,解引用的操作的话,是存放
2 C++特性
继承(保持已有类的特征而构造新类的过程就是继承)
封装(将数据和操作数据的方法绑定在一起)
多态(调用成员函数时,会根据函数调用对象的类型来执行不同的函数)
3 对虚函数是如何实现的多态?
派生类重写父类的虚函数,并且用父类指针或引用去指向派生类的对象。那么在程序运行时就可以实现动态绑定,即实现多态。
4 当以类的对象作为函数参数时,引用、指针和对象它们有什么区别?
作为函数参数时,使用对象指针会产生副本,会带来时间和空间的消耗;
使用对象引用不会产生副本,也不会带来时间和空间的消耗;
引用和指针的相同点: 1. 都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。
引用和指针的区别: 1. 指针是一个实体,而引用仅是个别名; 2. 引用使用时无需解引用(*),指针需要解引用; 3. 引用只能在定义时被初始化一次,之后不可变;指针可变; 4. 引用不能为空,指针可以为空
5.说一下虚继承
虚继承是为了解决多重继承而出现的。让某个类做出声明,承诺愿意共享它的基类. 其中,这个被共享的基类就称为虚基类(VirtualBase Class),本例中的 A 就是一个虚基类。在这种机制下,不论虚基类在继承体系中出现了多少次,在派生类中都只包含一份虚基类的成员。
6.C++有几种继承方式,详细说一下
三种,共有,私有,保护.
不同的继承方式决定了基类成员在派生类中的访问权限
1) public:
基类中的public和protected成员在派生类中仍然保持原有属性;
基类中的private成员在派生类中不能使用。
2) protected
基类中的public和protected成员在派生类中为protected属性;
基类中的private成员在派生类中不能使用;
3) private
基类中的public和protectd成员在派生类中为private属性;
基类中的private成员在派生类中不能使用
7.C和C++类型转换了解不,详细说下
一隐式类型转换
二者都有,包括赋值语句转换、初始化时的转换、表达式中的转换、传参时的转换。
C中
C++中
二强制类型转换
C中,只有(int)这种形式的强制类型转换运算符
C++中,有4个专用的强制类型转换运算符:
dynamic_cast:用于转换类类型
const_cast:用于去除const变量的const属性
static_cast:用于基本类型以及类类型的上下转换
reinterpret_cast:用于执行底层的重新解释类型转换
8.线程有几种同步方式,你在工作中用到哪些?Qt提供了几种同步方式?
线程同步是指同一进程中的多个线程互相协调工作从而达到一致性。
C++线程同步的四种方法:
1) 互斥量
2) 信号量
3) 读写锁
4) 条件变量
9.Qt中,说一下创建线程方式
1)继承QThread
2) 使用moveToThread
3)使用QtConcurrent
4) 使用线程池
11.数组和指针各自有什么优缺点?
1、从空间分配来说:数组是静态分配,指针是动态分配。
2、从访问效率来说:数组是直接访问,指针是间接访问,数组效率要高一点。
3、从安全性来说:数组容易造成越界,而指针会出现野指针造成的内存泄漏。相比之下数组更为安全一点。
4、从函数形参来说:越界传指针用指针的指针,传两位及以上数组用的是数组指针。
5、从处理对象来说:指针偏向于计算机地址的处理,而数组偏向于值的处理。
6、从空间连续性来说:指针分配空间不一定是连续的,而数组对一个的空间一定是里连续的。
1、指针可以直接对硬件进行操作访问,
2、数组的静态分配是比较占内存的,动态分配更为灵活,解决了空间分配利用率的问题。
3、指针访问更为灵活,相较于数组,但是由于它过于灵活,往往不注意就会造成内存泄漏。
16.C和C++中struct
17 C++中的struct和class的区别
1)默认的访问控制属性不同:
struct是public 的,class 是 private 的。
2)继承关系中的默认防控属性不同:
struct是public 的,class 是 private 的。
3)class这个关键字还可用于定义模板参数,strcut不行
18.析构函数可以成为虚函数吗?为什么要用virtual关键修饰析构函数?不修饰行吗?
C++中基类采用virtual虚析构函数是为了防止内存泄漏。
具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。假设基类中采用的是非虚析构函数,当删除基类指针指向的派生类对象时就不会触发动态绑定,因而只会调用基类的析构函数,而不会调用派生类的析构函数。那么在这种情况下,派生类中申请的空间就得不到释放从而产生内存泄漏。所以,为了防止这种情况的发生,C++中基类的析构函数应采用virtual虚析构函数。
19.虚函数怎么实现的?
每个虚函数都会有一个与之对应的虚函数表,该虚函数表的实质是一个指针数组,存放的是每一个对象的虚函数入口地址。对于一个派生类来说,他会继承基类的虚函数表同时增加自己的虚函数入口地址,如果派生类重写了基类的虚函数的话,那么继承过来的虚函数入口地址将被派生类的重写虚函数入口地址替代。那么在程序运行时会发生动态绑定,将父类指针绑定到实例化的对象实现多态。
20.重写、重载、覆盖
重写:如派生类对基类中的虚函数进行重新定义,是在不同作用域的;
重载:在同一作用域内写一个函数名相同,但参数列表不同的函数叫做重载。
(重载的函数应该是形参的数量或形参的类型上有所不同,不允许两个函数除了返回类型外其他所有要素都相同)
重定义:也叫作隐藏,子类重新定义父类中具有的相同名称的非虚函数.
21.预编译时,如何避免重复展开头文件
1) #ifndef#endif
2)#pragma once方式
相关文章:
面试问题记录一 --- C++(Qt方向)
以下是我于2023年6~7月间换工作时遇到的面试题目,有需要的小伙伴可以参考下。约100个题目。 1 C和C++的区别 1) 文件区别:C源文件后缀 .c;C++源文件后缀 .cpp 2) 返回值: C默认返回int型;C++ 若无返回值,必须指定为void 3) 参数列表:C默认接收多个…...
使用词袋模型(BoW)测试提取图像的特征点和聚类中心
文章目录 环境配置代码测试 环境配置 (1) 导入opencv,参考链接 https://blog.csdn.net/Aer_7z/article/details/132612369(2) 安装numpy 激活虚拟环境的前提下,输入: pip install numpy(3) 安装sklearn 激活虚拟环境的前提下,输…...
利用vba处理Excel表格数据实现键值转化,适用于将编码转化成对应的文本
最近遇到了一个甲方需要提供系统登录的用户名单和对应的角色权限内容。无奈直接从数据库导出的数据对应的都是编码,没有转成中文,想着偷个懒能不能直接用Excel直接转,网上看了一下有修改单元格格式的,但需要编码是2到3个。多的就用…...
IntelliJ IDEA(Windows 版)的所有快捷键
🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥 大家好 本文参考了 IntelliJ IDEA 的官网,列举了IntelliJ IDEA(Windows 版)的所有快捷…...
文件上传漏洞全面渗透姿势
0x00 文件上传场景 (本文档只做技术交流) 文件上传的场景真的随处可见,不加防范小心,容易造成漏洞,造成信息泄露,甚至更为严重的灾难。 比如某博客网站评论编辑模块,右上角就有支持上传图片的功能,提交带…...
GreenPlum的gpfdist使用与原理流程分析
一、简介 GreenPlum 的数据导入功能作为对数据源的一种扩充,数据导入的方式有: 1、insert 该方式通过 sql 语句,把数据一条一条插入至表中。这种方式,不仅读取数据慢(一条一条读取),且数据需要…...
Spring AOP与静态代理/动态代理
文章目录 一、代理模式静态代理动态代理代理模式与AOP 二、Spring AOPSping AOP用来处理什么场景jdk 动态代理cglib 动态代理面试题:讲讲Spring AOP的原理与执行流程 总结 一、代理模式 代理模式是一种结构型设计模式,它允许对象提供替代品或占位符&…...
【LeetCode算法系列题解】第51~55题
CONTENTS LeetCode 51. N 皇后(困难)LeetCode 52. N 皇后 II(困难)LeetCode 53. 最大子序和(中等)LeetCode 54. 螺旋矩阵(中等)LeetCode 55. 跳跃游戏(中等) …...
驱动开发错误汇编
本博文将会不定期更新。以便记录我的驱动开发生涯中的一些点点滴滴的技术细节和琐事。 1. link阶段找不到导出函数 比如"LNK2019 无法解析的外部符号 _FltCreateCommunicationPort32"。 出现这种情况的原因是,驱动的编译环境忽略了所有的默认库&#x…...
知识图谱项目实践
目录 步骤 SpaCy Textacy——Text Analysis for Cybersecurity Networkx Dateparser 导入库 写出页面的名称 编辑 自然语言处理 词性标注 可能标记的完整列表 依存句法分析(Dependency Parsing,DEP) 可能的标签完整列表 实例理…...
stable diffusion实践操作-提示词-人物属性
系列文章目录 stable diffusion实践操作-提示词 文章目录 系列文章目录前言一、提示词汇总1.1 人物属性11.2 人物属性2 前言 本文主要收纳总结了提示词-人物属性。 一、提示词汇总 1.1 人物属性1 角色类型人物身材胸部头发-发型头发-发色[女仆][霊烏路空][大腿][乳房][呆毛…...
RabbitMQ的安装和配置
将RabbitMQ文件夹传到linux根目录 开启管理界面及配置...
WebRTC 日志
WebRTC 日志 flyfish WebRTC支持的日志等级 // // The meanings of the levels are: // LS_VERBOSE: This level is for data which we do not want to appear in the // normal debug log, but should appear in diagnostic logs. // LS_INFO: Chatty level used in de…...
【python爬虫】16.爬虫知识点总结复习
文章目录 前言爬虫总复习工具解析与提取(一)解析与提取(二)更厉害的请求存储更多的爬虫更强大的爬虫——框架给爬虫加上翅膀 爬虫进阶路线指引解析与提取 存储数据分析与可视化更多的爬虫更强大的爬虫——框架项目训练 反爬虫应对…...
Windows系统中Apache Http服务器简单使用
1 简介 Apache HTTP服务器是一个开源的、跨平台的Web服务器软件。它由Apache软件基金会开发和维护。Apache HTTP服务器可以在多种操作系统上运行,如Windows、Linux、Unix等,并且支持多种编程语言和技术,如PHP、Perl、Python、Java等。…...
Django ORM 框架中的表关系,你真的弄懂了吗?
Django ORM 框架中的表关系 为了说清楚问题,我们设计一个 crm 系统,包含五张表: 1.tb_student 学生表 2.tb_student_detail 学生详情表 3.tb_salesman 课程顾问表 4.tb_course 课程表 5.tb_entry 报名表 表关系和字段如下图:…...
第五课:C++实现加密PDF文档解密
请注意,未经授权的加密PDF文件解密是非法的,本文仅为学术和研究目的提供参考。 打开加密的PDF文件并获取密钥 在C++中,可以使用pdfium库打开加密的PDF文件。使用pdfium库中的FPDF_LoadCustomDocument函数可以打开具有自定义访问权限的加密文件。该函数接受一个IFX_FileRead*…...
罗马数字转整数
罗马数字转整数 题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M …...
processflow流程图多人协作预热
前言 在线上办公如火如荼的今天,多人协作功能是每个应用绕不开的门槛。processflow在线流程图(前身基于drawio二次开发)沉寂两年之久,经过长时间设计开发,调整,最终完成了多人协作的核心模块设计。废话不多…...
PCL点云处理之快速计算多个点到同一直线的距离(二百零五)
PCL点云处理之快速计算多个点到同一直线的距离(二百零五) 一、算法简介二、具体实现1.代码2.结果一、算法简介 点到直线的距离计算,是一种常用的算法,在点云处理中,经常遇到需要计算多个点云到同一条直线的距离计算需求,此时若是逐点计算将耗费大量的时间,熟悉点到直线…...
NXOpen 属性工具(工作部件和实体加属性二合为一)
C++ //HPP文件 //============================================================================== #ifndef ATTRIBUTE_TEST_H_INCLUDED #define ATTRIBUTE_TEST_H_INCLUDED //------------------------------------------------------------------------------ //These i…...
实测科哥版HeyGem稳定性:文件校验、中断恢复、显存保护全解析
实测科哥版HeyGem稳定性:文件校验、中断恢复、显存保护全解析 1. 引言:为什么稳定性对数字人视频生成如此重要 在数字人视频生成领域,我们常常关注生成效果和速度,却容易忽视一个更基础的问题——稳定性。想象一下,当…...
飞书机器人集成OpenClaw与百川2-13B-4bits量化版:对话触发任务实战
飞书机器人集成OpenClaw与百川2-13B-4bits量化版:对话触发任务实战 1. 为什么选择这个技术组合 去年冬天,我接手了一个小团队的内部效率优化项目。团队每天需要从海量行业报告中提取关键数据,整理成简报表。最初尝试用传统RPA工具ÿ…...
Ruby开发工具JetBrains RubyMine
链接:https://pan.quark.cn/s/6d78ff88b12eJetBrains RubyMine是一个全新的为Ruby 和 Rails开发者准备的代码编辑器 ,对于Ruby这种比较新兴的编程语言,如果你是Ruby的爱好者,不妨试试使用它作为你的开发工具。软件是建立在IntellJ…...
技术创业中的风险管理:从内核开发到商业稳定
技术创业中的风险管理:从内核开发到商业稳定 技术创业的风险挑战 作为一名从Linux内核开发者转型产品经理再到科技创业者的人,我深刻体会到风险管理在技术创业中的重要性。技术创业过程中充满了各种风险,从技术风险到商业风险,从市…...
GRS认证实操干货:TC交易证书全流程解析(源头供应商必看)
一、前言:GRS证书与TC的核心关联(新手必懂)在再生行业GRS认证体系中,多数源头供应商存在一个核心认知误区:认为拿到GRS范围证书(SC)就完成了合规闭环,实则不然。GRS证书(…...
Java验证数组中的字符串是否对称,只判断字母和数字,忽略大小写
1、Java验证数组中的字符串是否对称,忽略大小写public class Main {public static void main(String[] args) {String[] strings {"A manm, a plan, a canal, Panama", "Madam", "12321", "12345"};findPalindromicAlphan…...
echarts环形饼图自定义边框、标题及图例
目录 1、官网找示例 2、初步改造有个雏形 3、细节改造和优化 4、全部代码 5、原始效果和最终效果对比 看下效果图,和普通的饼图很明显的区别就是: 1有明显的白色边框线 2圆环中心自定义内容标题 3需要设置图例位置与内容 我通常的实现思路就是官网找例子再一步一步改…...
【架构师通关】理发店排队 + 车库停车,大白话秒懂“进程状态模型”与“PV操作
兄弟们,操作系统的进程管理一直是软考里最让人头疼的“硬骨头” 🦴。什么“阻塞”、“挂起”、“信号量”、“PV操作”,听着就像天书 📚。 但今天,飞哥绝不跟你拽学术名词!咱们就通过“去理发店剪个头” &a…...
借助快马平台AI能力打造智能自适应的contextmenumanager管理系统
最近在做一个需要频繁使用右键菜单的项目,发现传统contextmenu管理方式实在太麻烦了。每次新增功能都要手动写一堆配置代码,维护起来也头疼。正好看到InsCode(快马)平台的AI辅助开发功能,尝试用它打造了一个智能自适应的contextmenumanager系…...
