![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
文章平均质量分 90
攻城狮百里
学无止境
展开
-
2024最新大厂C++校招面试真题合集,大厂面试百日冲刺 day17
右值引用(R-value References)右值引用是C++11引入的特性之一,用于引用临时对象(右值)。右值引用使用&&来声明。与左值引用相比,它的主要目的是支持转移语义和完美转发。转移语义是指资源(如动态分配的内存)的所有权可以从一个对象转移到另一个对象,这样可以避免不必要的资源复制,提高程序的效率。例如,标准库中的std::move函数就是基于右值引用实现的。// 使用std::move将str1转换为右值引用在上面的例子中,str1的内容被“移动”到str2。原创 2024-06-20 21:51:25 · 688 阅读 · 0 评论 -
2024最新大厂C++校招面试真题合集,大厂面试百日冲刺 day16
考察对C++基本面向对象编程(OOP)概念的理解,包括封装、类与结构体的使用,以及对默认访问权限的理解。类:默认的访问权限是私有。结构体:默认的访问权限是公开。结构体可以定义成员函数,包括构造函数、析构函数、以及其他成员函数,和类在这方面是相同的。结构体和类都支持面向对象编程的特性,如封装和抽象。考察操作系统中多进程通讯机制多进程通讯方法包括管道、命名管道、信号、消息队列、共享内存、信号量、套接字等。原创 2024-06-18 16:18:34 · 106 阅读 · 0 评论 -
2024最新大厂C++校招面试真题合集,大厂面试百日冲刺 day14
红黑树的设计目标是一种自平衡的二叉搜索树,它通过将节点着色并且对树进行旋转和颜色变换来保持树的平衡。收集整理了一份2024年最新C++开发学习资料,既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C++开发知识点,真正体系化!浅拷贝仅复制对象的各个值及其成员变量的值,如果成员变量包括指针,只复制指针的值而不复制指针指向的数据。深拷贝不仅复制对象的各个值及其成员变量的值,还会在堆上为所有指针成员分配新的内存,并复制指针指向的数据到新分配的内存中。原创 2024-05-18 19:37:55 · 748 阅读 · 0 评论 -
2024最新大厂C++校招面试真题合集,大厂面试百日冲刺 day13
内存分配:当你创建一个vector时,它会预分配一定量的内存。这个量通常是其容量(capacity),即在需要重新分配之前vector可以保存的元素数量。自动扩容:当新元素被添加到vector并且当前容量不足以容纳它时,vector会自动扩大其内存空间。通常,这是通过分配一个更大的内存块,复制现有元素,然后释放旧内存来实现的。元素访问vector提供了像operator[]这样的访问操作符来进行快速索引访问,因为其数据是连续存储的。元素添加:元素可以通过push_back和方法添加到vector。原创 2024-05-17 18:02:15 · 952 阅读 · 0 评论 -
2024最新大厂C++校招面试真题合集,大厂面试百日冲刺 day12
HmacSha256加密算法:HmacSha256是一种基于密钥的哈希算法消息认证码(HMAC)结合了SHA-256散列函数。它用于同时验证消息的完整性和消息的真实性。HmacSha256使用一个密钥和一个消息,生成一个固定长度的哈希值作为消息认证码。相较于仅使用SHA-256,HmacSha256更难以遭受伪造攻击。单向散列函数:单向散列函数又称哈希函数,是一种从任意长度的消息计算出固定长度哈希值的函数。原创 2024-05-16 20:39:36 · 659 阅读 · 0 评论 -
2024最新大厂C++面试真题合集,大厂面试百日冲刺 day11
C++标准规定,在一个异常已经被抛出的情况下,如果在析构过程中再次抛出一个异常而未被当前析构函数内部捕获,则处理器无法同时处理两个并发的异常,因而只能调用。收集整理了一份2024年最新C++开发学习资料,既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C++开发知识点,真正体系化!这是因为C++支持异常的栈展开(stack unwinding)机制,确保在抛出异常后,并在异常传播过程中,释放栈上对象的资源。是的,纯虚函数在C++中可以有方法体。原创 2024-05-15 16:35:53 · 675 阅读 · 0 评论 -
2024最新大厂C++面试真题合集,大厂面试百日冲刺 day10
B-Tree索引:也就是我们常说的索引,用于等值和范围查询,左侧前缀查找;哈希索引:只用于等值查询,不能用于排序和部分查找;空间数据索引:主要用于空间数据查询,比如地理数据查找;全文索引:用于全文搜索。B-Tree索引:采用B+树数据结构;哈希索引:采用哈希表;空间数据索引:采用R-Tree;全文索引:采用倒排索引。使用!=或操作符;对字段进行运算或函数操作;使用LIKE '%XXX’这样以通配符开头的模糊查询;原创 2024-05-15 16:15:10 · 536 阅读 · 0 评论 -
2024最新大厂C++面试真题合集,大厂面试百日冲刺 bay9
腾讯实习指针常量和常量指针常量指针(const Type* ptr):指针指向的内容不能被改变,但指针本身可以改变指向。指针常量(Type* const ptr):指针自身的值即内存地址不能改变,但指向的内存内容可以被改变。int x/8性能优化使用位运算进行性能优化,可以将 int x/8 替换为 x >> 3,这样利用位移操作来代替除法运算。介绍虚函数及其用法虚函数是一个在基类中声明为virtual的函数,它可以在派生类中被重写,以实现多态。当通过基类的指针或引用调用一个虚函数原创 2024-05-13 16:36:24 · 749 阅读 · 0 评论 -
2024最新大厂C++面试真题合集,大厂面试百日冲刺 day8
在C++中,可以通过several ways来定义并运行多线程。使用pthread库:定义线程:通过函数创建一个新线程,需要传递一个指向函数的指针,该函数是线程将要执行的代码。启动线程:调用后,线程就开始运行了。等待线程:通过方法可以等待一个特定线程执行完毕。使用C++11线程库:定义线程:通过std::thread类创建一个新线程。启动线程:线程对象在构建时就会开始执行。等待线程:通过成员函数join可以确保主线程等待其他线程完成执行。面向对象编程是一种编程范式,它使用“对象”来设计软件。原创 2024-05-09 17:41:11 · 906 阅读 · 0 评论 -
2024最新大厂C++面试真题合集,大厂面试百日冲刺 day7
i++ 并非原子操作,实际包含了 读取 , 增加 , 存储 三个操作。在多进程环境下,如果两个进程几乎同时进行 i++ 操作,可能会出现竞态条件(Race Condition),即两个进程读取了同一个值,接着各自增加1,最后存回内存。假设i初始为0,理想情况下,两次 i++ 后i应为2,但在上述竞态条件下,可能最后i的值仍为1,因为两个进程读取和存储的都是同一个旧值。不可以。这是因为当你创建一个局部的对象并从函数中返回其c_str()时,对象在函数返回后会被销毁,它的析构函数会释放其占用的内存。原创 2024-05-07 13:49:09 · 937 阅读 · 1 评论 -
2024最新大厂C++面试真题合集,大厂面试百日冲刺 day6
TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它保证数据正确性和顺序。UDP(用户数据报协议)是一种无连接的协议,提供快速、尽最大努力交付的传输方式,但不保证数据包的顺序或可靠性。简而言之,TCP强调可靠性,而UDP强调速度。原创 2024-04-29 16:58:42 · 611 阅读 · 0 评论 -
2024最新大厂C++面试真题合集,大厂面试百日冲刺 day5
读写锁(也称作共享-独占锁或者共享-修改锁)是一种同步机制,旨在解决多线程程序中的读者-写者问题。读写锁允许并发的读取操作,但写入操作是互斥的。这种锁是对读者和写者操作的优化,因为读取操作通常不会修改数据,所以多个线程可以安全地同时读取。共享锁(或读锁):当获得共享锁时,其他线程可以获取共享锁进行读操作,但任何试图获得写锁(独占锁)的线程都会被阻塞,直到所有的共享锁都被释放。独占锁(或写锁):当获得独占锁时,其他线程不能读取也不能写入。所有试图获取共享锁或独占锁的线程都会被阻塞,直到写锁被释放。原创 2024-04-27 13:51:58 · 574 阅读 · 2 评论 -
2024最新大厂C++面试真题合集,大厂面试百日冲刺 day4
创建一个新的事件类,继承自,其中T是你的新事件类名。在你的自定义事件类中,添加所需的属性和方法。使用方法在感兴趣的UI元素上注册事件监听器,T是你的自定义事件类。使用方法触发自定义事件。虚函数是在基类中使用关键字virtual声明的函数,它允许在派生类中被重写,以实现多态性。这意味着当你通过基类指针或引用调用一个虚函数时,实际调用的是对象的动态类型(派生类类型)中对应的函数实现,而非指针或引用的静态类型(基类类型)中的实现。原创 2024-04-25 15:41:08 · 1129 阅读 · 1 评论 -
2024最新大厂C++面试真题合集,大厂面试百日冲刺 day3
a的值是未定义的(在C++标准中称为“未初始化”):放宽内存顺序,不要求操作之间的顺序。:较为弱的顺序要求,仅在特定平台上有效。:阻止操作重排序到原子操作之前。:阻止操作重排序到原子操作之后。:同时应用 acquire 和 release。:顺序一致,所有线程看到的操作顺序相同。预处理阶段进行文本替换,不涉及类型检查。可定义常量和宏,提高代码复用性。宏可以包含参数,但不进行正确性检查。这里的(a)和(b)被括起来是为了避免展开时出现的运算优先级问题。原创 2024-04-24 14:40:54 · 964 阅读 · 0 评论 -
2024最新大厂C++面试真题合集,大厂面试百日冲刺 day2
结构体对齐是指在结构体中,每个成员的起始地址相对于结构体起始地址的偏移量是该成员大小的整数倍,这样做是为了满足某些硬件平台对数据存取对齐的要求,提高内存访问效率。结构体的起始地址能够被其最宽基本类型成员的大小所整除。结构体每个成员相对于结构体起始地址的偏移量应是该成员大小的整数倍,不是的话会进行填充(padding)。结构体的总大小为其最宽基本类型成员大小的整数倍。确定每个成员的大小和对齐要求。根据成员声明顺序,为每个成员分配地址空间,必要时进行填充。原创 2024-04-23 15:14:49 · 967 阅读 · 1 评论 -
2024最新大厂C++面试真题合集,大厂面试百日冲刺
1. vfork了解吗 是一个UNIX系统调用,用于创建一个新的进程,称为子进程,它与创建它的父进程共享相同的内存空间。 被设计用来在执行 系列函数前作为一个临时步骤。它区别于 ,因为它不会复制父进程的地址空间,而是直接使用父进程的地址空间,直到子进程调用 或 。这样做的目的是为了提高性能,但缺点是可能导致父子进程间的同步问题。现代系统上, 的行为通常与 相似,或被 系统调用所取代。2. C++程序编译链接过程3. 静态链接和动态链接的区别静态链接和动态链接的主要区别在于:静态链接:动态链接:4.原创 2024-04-20 16:27:36 · 783 阅读 · 0 评论 -
2024最新大厂C++面试真题合集,玩转互联网公司面试!
这个过程确保了数据的正确顺序和完整性。协程,又称为微线程或轻量线程,是程序组件化和异步编程的一种方式,允许函数、方法或者操作挂起和恢复,而非使用传统的线程阻塞方式。控制块与智能指针所管理的对象内存是分离的,但通常是连续分配的,以减少分配次数和提高空间局部性。接收方提示:接收方可以通过ACK中的SACK选项(选择确认),明确指出哪些数据段已收到,哪些未收到,促使发送方仅重传未被确认接收的数据段。右值引用允许实现移动语义和完美转发,它可以将资源从一个(临时的)对象转移到另一个对象,提高效率,避免不必要的复制。原创 2024-04-18 21:44:17 · 964 阅读 · 0 评论 -
c++华为od面经
当一个类中含有虚函数时,其析构函数应该也是虚函数,这样在删除基类指针指向的派生类对象时,可以正确调用派生类的析构函数。C++中的构造函数不需要虚函数,因为在创建一个对象时,只有当前正在创建的类的构造函数会被调用,因此不存在多态性。同时,在构造函数中调用虚函数会导致一些问题,例如派生类的成员变量还没有被初始化,就会调用派生类的虚函数,这可能导致程序崩溃或者行为不可预测。具体实现中,选择一个基准元素,将数组中小于等于它的元素放在它的左边,大于它的元素放在右边,最后再递归地对左右子数组进行快排。原创 2023-04-13 17:24:35 · 1426 阅读 · 0 评论 -
百度暑期实习 C++ 一面
并发(Concurrency):指在同一时间段内执行多个任务,但不一定同时执行。在并发的情况下,系统通过交替执行各个任务来实现看似同时执行的效果。并行(Parallelism):指在同一时刻执行多个任务,通常需要多个处理器或者多个核心才能实现。在并行的情况下,系统可以同时执行多个任务,提高了系统的处理能力和性能。异步(Asynchrony):指一个操作不会立即得到结果,而是在将来某个时候才会得到结果。异步操作可以让程序在等待结果的同时继续执行其他任务,从而提高系统资源的利用率。原创 2023-04-11 22:08:43 · 1190 阅读 · 1 评论 -
美团后端开发暑期实习一面
使用UDP协议的主要原因是它能够在网络中提供快速和高效的数据传输。与TCP协议相比,UDP协议没有建立连接和确认数据包的过程,因此具有更低的延迟和更高的吞吐量,适用于需要快速响应的应用场景,如在线游戏、视频和音频流等。缺点,由于没有可靠性保证,数据包可能会丢失或乱序到达,因此在传输质量要求较高的应用场景下不太适用。此外,UDP协议对网络拥塞的控制能力很弱,如果网络出现拥堵,则容易造成数据包的丢失或延迟,从而影响用户体验。原创 2023-04-11 16:42:35 · 1561 阅读 · 0 评论 -
Linux C/C++ 学习路线(已拿腾讯、百度等)
Linux C/C 从零基础到入门、到熟悉的一些路线,对于想走这个方向的同学,可以认真看看,分享到这里来,希望对于正在走 Linux C/C 路上的同学能有所帮助。我将大致按照以下的目录,分享自己一路走来的一些学习经历。一、秋招自己的一些情况二、Linux C/C 方向的一些思考三、计算机基础知识的梳理四、C 方向的深入学习路线五、项目 亮点 面试的一些思考六、更多的个人分享在校期间,我一直走的都是 Linux C/C 学习路线,历经暑期实习、秋招决战、校招期间投的大部分岗位都是 Linux原创 2021-03-10 15:53:58 · 960 阅读 · 0 评论 -
linux下c/c++语法知识点归纳和总结(1)
C++申请动态内存在c++中,申请动态内存是使用new和delete,这两个关键字实际上是运算符,并不是函数。而在c中,申请动态内存则是使用malloc和free,这两个函数是c的标准库函数,使用它们必须包含stdlib.h,才能编译通过。new/delete和malloc/free的相同之处在于,new和malloc都是手动申请动态内存,释放时new则需要delete释放内存,而malloc则需要free释放内存。它们的不同之处在于,new和delete会自动调用对象的构造和析构函数,而mal..原创 2020-12-07 20:25:53 · 722 阅读 · 2 评论 -
2020年C/C++精选面试题及答案(三)
堆排序的思路堆是一个完全二叉树完全二叉树即是:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。堆满足两个性质: 堆的每一个父节点数值都大于(或小于)其子节点,堆的每个左子树和右子树也是一个堆。堆分为最小堆和最大堆。最大堆就是每个父节点的数值要大于孩子节点,最小堆就是每个父节点的数值要小于孩子节点。排序要求从小到大的话,我们需要建立最大堆,反之建立最小堆。堆的存储一般用数组来实现。假如父节点的数组下标为原创 2020-12-04 17:11:53 · 1293 阅读 · 2 评论 -
2020年C/C++精选面试题及答案(二)
什么是并行计算?并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程,是 提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来 协同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理 机来并行计算。并行计算系统既可以是专门设计的、含有多个处理器的超级计算机,也 可以是以某种方式互连的若干台的独立计算机构成的集群。通过并行计算集群完成数据 的处理,再将处理的结果返回给用户。并行计算可分为时间上的并行和空间上的并行。时间上原创 2020-12-03 20:38:55 · 2463 阅读 · 6 评论 -
2020年精选面试题及答案(一)
1. 在ACM竞赛中,一支队伍由三名队员组成,现在有N+M名学生,其中有N名学生擅长算法,剩下M名学生擅长编程,这些学生要参加ACM竞赛,他们的教练要求每支队伍至少有一名擅长算法和一名擅长编程的学生,那么这些学生最多可以组成多少支队伍?输入: 输入两个整数M,N,其中1<N,M<10000000输出: 最多可以组成的队伍数#include <iostream>using namespace std; int main(){ int cnt = 0,n,m;原创 2020-12-01 17:21:11 · 312 阅读 · 0 评论