某互联网公司c++笔试题1

1. 画多重继承虚函数表

注:虚函数表是一种编译时构建的数据结构,它用于在运行时解析对虚函数的调用,是一个存储类成员函数指针的数组。每个拥有虚函数的类都有一个对应的虚函数表。当类对象创建时,对象中会包含一个指向相应虚函数表的指针(称为vptr,虚指针)。这个指针是对象的隐式成员,由编译器自动添加到每个对象中。
        每个对象的虚指针指向对应的虚函数表。虚函数表的布局和内容在编译时就已确定,里面存储的是类的虚函数的地址。当一个虚函数被调用时,实际上是通过虚指针来间接调用的。

        虚函数表运行时才会被调用,允许通过基类指针或引用调用派生类的方法。特别灵活,子类可以覆盖父类的虚函数实现,而调用者无需知道具体的子类类型。

        当然有额外的开销,虚函数调用通常比非虚函数调用慢,因为需要额外的间接寻址。内存也有额外的开销,每个对象需要额外存储一个虚指针,每个类需要一个虚函数表。

2. 循环与递归可以转换吗?各有啥特点

循环和递归是在编程中实现重复操作的两种基本方法。它们在功能上是等效的,理论上任何使用循环的代码都可以通过递归来实现,反之亦然。尽管如此,它们各有其特点和最适用的场景。

        从循环到递归:将循环结构的代码转换成递归通常涉及将循环的迭代过程表达为递归调用。每次递归调用相当于循环的一次迭代,并在满足基本条件时结束递归。

        从递归到循环:递归函数通常可以重写为使用栈的循环结构,其中栈用来模拟递归调用栈的行为。这种转换可以消除递归的开销,特别是对于深递归调用栈可能导致栈溢出的情况
递归特点:

        自然表达:递归提供了一种简洁的方式来处理那些问题本身就是递归的,如树遍历、分治算法等。
        简化复杂问题:递归可以将复杂问题分解为更小的子问题,每个子问题与原问题有着相同的形式。
        代码简洁:递归代码通常比对应的循环版本更简洁、更易于理解。
        性能开销:每次递归调用都需要在调用栈上增加一层,这会增加额外的时间和空间开销。
        栈溢出风险:深度递归可能导致调用栈过深,从而引发栈溢出错误。
        效率问题:递归可能重复解决相同的子问题,尤其是在没有使用记忆化技术的情况下。

循环特点:

       效率高:循环不涉及多次函数调用的开销,因此通常比递归更快。
       避免栈溢出:使用循环不会增加调用栈深度,因此不会因深度递归而导致栈溢出。
       直观执行流:循环的执行流是顺序的,没有调用栈的额外复杂性,对于追踪程序状态和调试通常更为直接。
       代码复杂度:对于本质上递归的算法(如深度优先搜索),用循环实现可能导致代码更加复杂
       手动管理状态:在某些复杂的情况下,需要手动模拟栈来保存状态,这可以增加实现的难度。

3. 构造函数与析构函数作用及调用时机

 构造函数与析构函数是被编译器隐式调用的。这些函数的调用时间取决于程序执行进入和离开实例化对象的作用域的顺序。通常,析构函数的调用顺序和对应构造函数的调用顺序相反。但是,对象的存储类别可以改变析构函数的调用顺序。

    在全局作用域内定义的构造函数在该文件中任何其他函数(包括main函数)开始执行之前执行(尽管文件间的构造函数的执行顺序是不确定的)。在main函数终止时,调用相应的析构函数。exit函数强制程序立即终止并且不执行自动对象的析构函数。该函数常用于在检测到输入错误或打不开要处理的文件时终止程序。abort函数类似于exit函数,但它强制程序立即终止,不允许调用任何对象的析构函数。abort通常用于指示程序的异常中断。

    自动局部对象的构造函数在执行到达对应的程序点时调用,对应的析构函数在对象离开该对象所在的作用域时(即定义该对象的执行结束时)调用。自动局部对象的构造函数和析构函数在每次到达和离开该对象的作用域时调用。如果程序使用exit和abort函数终止,则不调用自动对象的析构函数。

    static局部对象的构造函数只在执行第一次到达定义对象的程序点时调用一次。对应的析构函数在main函数终止或调用exit函数时调用。全局和static对象的释放顺序和创建顺序相反。如果遇到调用abort函数终止程序,则不调用static对象的析构函数。

4. 进程与线程区别,列出五点

5. 写一个内存拷贝函数

void* copy(void* src,void*dst,int count)

{     

       assert((src != NULL)&&(dest !=NULL));   

       char*tmp, *s;   

       if(dest <=src)     

       {        

              tmp = (char*) dest;

              s = (char*) src;      

              while(count--)     

              *tmp++ = *s++;    

       }      

       else

       {     

              tmp = (char*) dest +count;  

              s = (char*) src +count;       

              while(count--)      

              *--tmp = *--s;            

       } 

        return dst;

}

6. 写一个快排

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android开发者必备:RootEncoder引领实时流媒体传输革新

Android开发者必备&#xff1a;RootEncoder引领实时流媒体传输革新 I. 引言 A. RootEncoder简介 RootEncoder for Android&#xff08;rtmp-rtsp-stream-client-java&#xff09;是一个功能强大的流编码器&#xff0c;旨在通过多种协议&#xff08;包括RTMP、RTSP、SRT和UDP…

VR全景创业项目应该如何开展?未来有市场吗?

伴随着5G网络的发展&#xff0c;VR全景得到了众多的关注和提升。与此同时&#xff0c;各行各业都开始关注自身产业在互联网的展示效果&#xff0c;因为年轻一代的生活已经离不开互联网&#xff0c;而VR全景在互联网上的3D展示效果能给商家带来流量&#xff0c;提升营业额。 随着…

ERROR: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

今天本来想在A服务器上传文件给B服务器的结果发现明明给root用户设置了密码就是远程登陆不了&#xff0c;后来才发现在容器中很多服务都是没有的&#xff0c;所以刚安装后忘记了修改配置文件&#xff0c;导致远程登陆失败。 报错&#xff1a; 解决方法&#xff1a; 在/etc/ssh…

【电控实物-infantry】

云台电机参数 电机内部参数 相电阻:Rs1.8欧 相电感:Ls5.7810^-3H 转矩常数:Kt 0.741 NM/A 转动惯量:J KG-m^2 电机接收数据&#xff1a;-16384到16384&#xff08;-3A到3A&#xff09; 电机反馈&#xff1a;速度RPM rad/s &#xff08;2πrpm&#xff09;/60 C板陀螺仪&…

苍穹外卖学习笔记(9.订单状态定时处理,来电提醒,客户催单)

目录 一、订单状态定时处理1、需求分析设计2、代码开发3、测试 二、来单提醒1、需求分析设计2、代码开发3、测试 三、客户催单1、需求分析设计2、代码开发3、测试 四、相关知识1、Spring Task2、WebSocket 一、订单状态定时处理 1、需求分析设计 2、代码开发 创建orderTask类…

初学若依笔记

初学若依 下载ruoyi(以前后端分离板为例) https://ruoyi.vip/ 部署 安装mysql安装redis将数据库和redis配置到若依 配置文件为 ruoyi-admin\src\main\resource\application-druid.yml 运行 略 开发自己的功能 创建模块 为了不影响原有功能&#xff0c;创建一个模块写自…

物联网(iot)深度解析——FMEA软件

物联网即IoT&#xff0c;是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术&#xff0c;实时采集任何需要监控、连接、互动的物体或过程&#xff0c;采集其声、光、热、电、力学、化学、生物、位置等各种需要的信息&#xff0c;通过…

顺序栈算法库构建

学习贺利坚老师,顺序栈,构建顺序栈算法库 数据结构之自建算法库——顺序栈_设计一个主函数实现对顺序栈进行操作测试&#xff0c;测试方法&#xff0c;依次把元素-CSDN博客文章浏览阅读4.9k次&#xff0c;点赞10次&#xff0c;收藏10次。本文针对数据结构基础系列网络课程(2)&…

CRAFT文字检测算法解析和基于C++和TensorRT的推理实现

本文讲解了CVPR 2019的一篇文字检测算法《Character Region Awareness for Text Detection》的原理&#xff0c;并给出我使用C和TensorRT重新实现的推理&#xff0c;速度比原版代码快12倍。 论文&#xff1a;https://arxiv.org/pdf/1904.01941.pdf 官方代码&#xff1a;https:…

自然语言处理 (NLP) 的技术演变史

一、简述 本文的目标是了解自然语言处理 (NLP) 的历史&#xff0c;包括 Transformer 体系结构如何彻底改变该领域并帮助我们创建大型语言模型 (LLM)。 基础模型&#xff08;如 GPT-4&#xff09;是最先进的自然语言处理模型&#xff0c;旨在理解、生成人类语言并与之交互。 要理…

IPEmotion轻松解决急停设备的控制与数据存储问题

一 背景 众所周知&#xff0c;急停操作在各种工业领域中都扮演着非常重要的角色。在一个个紧急情况下&#xff0c;及时采取急停操作可节省宝贵时间&#xff0c;避免人身伤害或设备损坏&#xff0c;降低安全风险&#xff0c;尤其是在新能源测试中&#xff0c;出于对高压电性能方…

linux 关闭不了docker服务

[rootiZ2ze7y4akbxb1yjoydztxZ ~]# systemctl stop docker Warning: Stopping docker.service, but it can still be activated by: docker.socket 在 systemd 系统中&#xff0c;服务和套接字是分开管理的。docker.socket 是一个套接字单元&#xff0c;用于监听 Docker 的 API…

小程序AI智能名片S2B2C商城系统:五大营销技术模块深度剖析

在当今数字化营销的时代&#xff0c;小程序AI智能名片S2B2C商城系统凭借五大核心营销技术模块&#xff0c;为企业提供了强大的私域流量管理与营销能力。下面我们将逐一剖析这五大模块&#xff0c;看它们如何共同助力企业实现精准营销与业务增长。 一、小程序&#xff1a;用户触…

力扣刷题 70.爬楼梯

题干 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2&…

机器学习和深度学习 -- 李宏毅(笔记与个人理解)Day 23

Day 23 Self - Atention 变形 关于很多个former 的故事 痛点&#xff1a; 在于做出注意力矩阵之后的运算惊人 由于self - attention 一般都是在big model 的一部分&#xff0c;所以&#xff0c;一般不会对模型造成决定性的影响&#xff0c; 只有当model 的输入较长的时候&am…

求臻医学MRD产品斩获2023年度肿瘤标志物年度十大创新技术产品奖

2024年4月20日&#xff0c;中国肿瘤标志物学术大会开幕式暨名家讲坛在南京隆重召开! 会议期间&#xff0c;中国抗癌协会肿瘤标志专业委员会联合中国抗癌协会肿瘤临床检验与伴随诊断专业委员会、中国抗癌协会肿瘤基因诊断专业委员等共同发布“2023 年度肿瘤标志物创新技术产品”…

Java 提取HTML文件中的文本内容

从 HTML 文件中提取文本内容是数据抓取中的一个常见任务&#xff0c;你可以将提取的文本信息用于编制报告、进行数据分析或其他处理。本文分享如何使用免费 Java API 从HTML 文件中提取文本内容。 安装免费Java库&#xff1a; 要通过Java提取HTML文本&#xff0c;需要用到Free…

C语言实现双人贪吃蛇项目(基于控制台界面)

一.贪吃蛇 贪吃蛇是一款简单而富有乐趣的游戏&#xff0c;它的规则易于理解&#xff0c;但挑战性也很高。它已经成为经典的游戏之一&#xff0c;并且在不同的平台上一直受到人们的喜爱和回忆。 二.贪吃蛇的功能 游戏控制&#xff1a;玩家可以使用键盘输入设备来控制蛇的移动方…

基于模糊控制的纯跟踪横向控制在倒车中的应用及实现

文章目录 1. 引言2. Pure Pursuit在倒车场景的推导3. 模糊控制器的设计3.1 基础知识3.2 预瞄距离系数k的模糊控制器设计 4. 算法和仿真实现 1. 引言 Pure Pursuit是一种几何跟踪控制算法&#xff0c;也被称为纯跟踪控制算法。他的思想就是基于当前车辆的后轮中心的位置&#x…

Axure RP 9 for Mac/win:打造极致交互体验的原型设计神器

在数字化浪潮席卷全球的今天&#xff0c;原型设计作为产品开发的关键环节&#xff0c;其重要性不言而喻。Axure RP 9&#xff0c;作为一款专为设计师和开发者打造的原型设计软件&#xff0c;以其出色的交互设计能力和高效的协作体验&#xff0c;赢得了广大用户的青睐。 Axure …
最新文章