20230920研发面经整理

news2024/11/22 16:52:55

1.cpp中的虚函数和虚函数表

C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数

虚函数表是指在每个包含虚函数的类中都存在着一个函数地址的数组。当我们用父类的指针来操作一个子类的时候,这张虚函数表指明了实际所应该调用的函数。

C++的编译器保证虚函数表的指针存在于对象实例中最前面的位置,这样通过对象实例的地址得到这张虚函数表,然后就可以遍历其中函数指针,并调用相应的函数。

单继承:1.虚函数子类覆盖父类 2.父类位于子类前面
多继承:1.按声明顺序放 2.虚函数子类覆盖父类

在这里插入图片描述
解释:
父类和子类都有"相同"原型的虚函数,才能根据父类指针指向的对象类型不同,在调用父类或子类的虚函数时表现出多态。父类有虚函数而子类没有,或反之,不能表现出多态行为。当用父类指针调用一个函数时,不管该函数是不是虚函数,它一定要在本指针所属的父类存在,否则编译因找不到函数肯定会报错

2.new和malloc的区别

参考https://www.cnblogs.com/qg-whz/p/5140930.html
在这里插入图片描述

3.overload、override、overwrite的区别

在这里插入图片描述

4.shared_ptr和weak_ptr;shared_ptr循环引用问题和解决

C++中经常需要new一个对象,开辟一个内存空间,返回一个指针来操作这个内存。使用完毕之后,需要通过delete来释放内存空间。如果内存没有释放,那这块内存将无法再利用,导致内存泄漏。为降低人为疏忽,C++ 11的新特性中引入了三种智能指针,来自动化地管理内存资源

在这里插入图片描述
shared_ptr基于“引用计数”模型实现,多个shared_ptr可指向同一个动态对象,并维护了一个共享的引用计数器,记录了引用同一对象的shared_ptr实例的数量。当最后一个指向动态对象的shared_ptr销毁时,会自动销毁其所指对象(通过delete操作符)

weak_ptr用于解决“引用计数”模型循环依赖问题,weak_ptr指向一个对象,并不增减该对象的引用计数器

一个强引用当被引用的对象活着的时候,这个引用也存在

弱引用当引用的对象活的时候不一定存在 。仅仅是当它存在的时候的一个引用。弱引用并不修改该对象的引用技术,这意味这弱引用它并不对对象的内存进行管理,在功能上类似普通的指针,然而一个比较大的区别是:弱引用能检测到所管理的对象是否已经被释放,从而避免访问非法内存

进行该对象的内存管理的是那个强引用的shared_ptr。weak_ptr只是提供了对管理对象一个访问手段。但这种方式必须在程序员能预见会出现循环引用的情况下才能使用,也可以是说这个仅仅是一种编译期的解决方案

5.cpp中 进程栈和堆区别作用

在这里插入图片描述
申请方式:stack系统分配;heap程序员制定大小 malloc new
申请resp:stack剩余空间大于申请空间;heap来说os有一个记录空闲内存的链表,寻找第一个大于空间的堆节点,并记录实际大小,把剩下的重新放入链表
申请大小:stack向下,连续空间,windows是2M,会overflow;堆向上不连续,受限于虚拟内存
申请效率:stack快,heap满容易碎片
存储位置:stack首先进第一条指令,然后是各个参数(从右往左),然后局部变量;heap记录大小,然后具体内容;
stack是由系统提供的,有专门寄存器和机器指令支持
heap是函数库提供的,但更灵活

6.cpp中vector使用,插入数据

7.unordered_map和map的区别

8.LRU算法

9.红黑树和平衡二叉树,红黑树的旋转

10.cpp为啥比py快

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

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

相关文章

免费好用bpm平台,实现生产管理系统

1.什么是生产管理系统 生产制造管理系统主要是以生产制造管理为核心,其管理功能包括产品结构设置(BOM)生产计划、加工、领料、质检、库存、成本核算等。通过信息化解决行业管理问题,满足各企业科学管理的需求,并为制造…

Ubuntu上线一个JAVA环境微服务架构的系统

项目背景: 项目目的: 项目架构: 配置环境: 流程: 1、系统安装 更改root密码 sudo passwd root 设置root密码123 切换用户 su root 输入root密码123 2、开启root远程ssh 编辑配置文件 vi /etc/ssh/sshd_config 更改以下行 #PermitRootLogin prohibit-passwor…

【BeanTrimUtil】通过反射去除JavaBean中String类型数据的空格:一行代码搞定整个Bean的字符串去空!

【原文地址】 https://blog.csdn.net/qq_36170500/article/details/107250282 简化不必要的代码逻辑纯原生环境亦可运行 import java.lang.reflect.Field; import java.lang.reflect.Method;/*** author zhoudeshui v1.1* Desc 版权声明:本文为CSDN博主「一个人的编…

公众号迁移线上公证靠谱吗?

公众号账号迁移的作用是什么?只能变更主体吗?微信公众平台的帐号迁移功能可将原公众号的粉丝、文章素材、违规记录、留言功能、名称等迁移至新的公众号。通过迁移可以实现公众号的公司主体变更、粉丝转移、开通留言功能、服务号转为订阅号等作用。因此不…

电脑剪切板在哪?4个方法教你提高效率!

“我在电脑上复制了一些图像,电脑显示已经保存在了剪切板,但是我找了好久都不知道电脑的剪切板在哪。有朋友可以指点一下吗?” 电脑剪切板是计算机操作中一个常用且强大的工具,它允许你复制、剪切和粘贴文本、图像、文件等。无论是…

期权佣金是如何收取的?成交手续费是怎么计算的?

现在期权新开户佣金1.7元/张,超优惠活动! 期权佣金是默认在6元一张收取的,可以申请调低的,证券公司可以结合运营成本制定合理的期权佣金优惠费率,但是不同的客户,不同的实际情况,都可能会影响期…

UML六大关系总结

UML六大关系有:继承、关系、聚合、组合、实现、依赖。分为通过图和代码总结这些关系。 1、继承 class Bird:Animal { } 说明:一段都是子类继承父类,在子类的后面用一个冒号表示,冒号后面跟着父类的名字。继承只能继…

【前端知识】Three 学习日志(十二)—— WebGL渲染器设置(锯齿模糊)

Three 学习日志(十二)—— WebGL渲染器设置(锯齿模糊) 一、设置抗锯齿 const renderer new THREE.WebGLRenderer({antialias:true, });二、效果对比 设置前: 设置后: 三、查看并设置设备像素比 // 不同硬件设备的屏幕的设…

乐划锁屏推出“屏上看展”,用创意“解锁”艺术新体验

在移动互联网时代,手机不仅是重要的通讯工具,作为点亮屏幕后的“第一眼”,手机锁屏也为人们提供了更加集成、更加多元的信息接收渠道。为了满足人们的碎片化消遣需求,加速信息传播,OPPO依托锁屏点亮即触达的特点,将锁屏壁纸作为探索碎片化娱乐的新通道,推出了乐划锁屏。 在乐划…

成集云 | 用友NC集成聚水潭ERP(用友NC主管库存)| 解决方案

源系统成集云目标系统 方案介绍 用友NC是用友NC产品的全新系列,是面向集团企业的世界级高端管理软件。它以“全球化集团管控、行业化解决方案、全程化电子商务、平台化应用集成”的管理业务理念而设计,采用J2EE架构和先进开放的集团级开发平台…

VMware Esxi 7.0.3用户名密码都对,网页却无法登录问题解决

Esxi 7.0.3安装完成,重启之后,下面就是esxi的界面: 之后通过网页管理esxi,输入网址,出现一个问题: (esxi已连接上,所以拿其他网段举例)连接不上,无法访问此页…

MVVM模式理解

链接: MVVM框架理解及其原理实现 - 知乎 (zhihu.com) 重点: 1.将展示的界面窗口和创建的构件是数据进行分离 2.利用一个中间商进行数据的处理,所有的数据通过中间商进行处理

Python 数独求解器

文章目录 使用回溯算法在Python中解决数独总结 Sudoku(数独)是一种基于逻辑的数字填充谜题游戏,最受喜爱的是那些热爱逻辑和推理的人。解决数独谜题有助于提高集中注意力和逻辑思维能力。 本文介绍了如何使用Python解决数独谜题。 使用回溯算…

0.UML

1.图 1.1类图含义 第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。注意前面的符号, ,表示public,-,表示private,#,表示protected。 1.2接口图 与类图的区别主要是顶端有<< interface >…

回收站清空文件恢复?恢复文件,就看这4种方法!

电脑回收站对于大部分经常误删文件的用户来说&#xff0c;确实帮了大忙。但有时&#xff0c;用户可能会有定期清空回收站的习惯。回收站清空后文件还能恢复吗&#xff1f;这确实是个烦人的问题。比如下面这个用户所遇到的问题&#xff1a; “大家快帮帮我吧&#xff01;昨天看电…

淘宝/天猫API 获得淘宝app商品详情原数据(优惠券详情)

item_get_app-获得淘宝app商品详情原数据 taobao.item_get_app 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;获取Key和secret接入secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#x…

学Python的漫画漫步进阶 -- 第十一步.常用的内置模块

学Python的漫画漫步进阶 -- 第十一步.常用的内置模块 十一、常用的内置模块11.1 数学计算模块——math11.2 日期时间模块——datetime11.2.1 datetime类11.2.2 date类11.2.3 time类11.2.4 计算时间跨度类——timedelta11.2.5 将日期时间与字符串相互转换 11.3 正则表达式模块—…

git vscode

01&#xff1a;工作区 **02&#xff1a;暂存区 git add . 3&#xff1a;本地库 git commit -m ’ 4&#xff1a;远程库 git push example 点击箭头之后

[架构之路-218]: 架构师责权利的定位, 架构师是技术领导者、决策者、激励者、企业家思维、战略思维、理论指导

目录 一、架构的诉求与系统的规模和复杂度强相关 1.1 系统的规模和复杂度对架构的影响 1.2 系统的业务需求对架构的影响 1.3 业架构和软件架构 二、架构师的类型 三、系统架构师 3.1 什么是系统架构师 3.2 系统架构师的技术素质要求 3.3 系统架构师的管理素质要求 3.…

【小黑送书—第二期】>>《用户画像:平台构建与业务实践》

在大数据时代&#xff0c;如何有效地挖掘数据价值并通过画像数据进行呈现&#xff0c;如何基于画像数据构建平台功能并提高业务产出&#xff0c;是值得各类公司和业务人员思考并付诸实践的事情。 通过画像释放大数据价值。大数据时代不缺少数据&#xff0c;而是缺乏挖掘数据价值…