备战秋招 | 笔试强训16
目录
一、选择题
二、编程题
三、选择题题解
四、编程题题解
一、选择题
1、下列一段 C++ 代码的输出结果是()
#include <iostream>
class Base
{
public:int Bar(char x){return (int)(x);}virtual int Bar(int x){return (2 * x);}
};
class Derived : public Base
{
public:int Bar(char x){return (int)(-x);}int Bar(int x){return (x / 2);}
};
int main(void)
{Derived Obj;Base *pObj = &Obj;printf("%d,", pObj->Bar((char)(100)));printf("%d,", pObj->Bar(100));return 0;}
A. 100,-100
B. 100,50
C. 200,-100
D. 200,50
2、关于函数的描述正确的是()
A. 虚函数是一个static型的函数
B. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型
C. 虚函数是一个非成员函数
D. 基类中说明了虚函数后,派生类中起对应的函数可以不必说明为虚函数
3、代码执行后,a和b的值分别为?
// 32位环境下
class Test
{
public:int a;int b;virtual void fun() {}Test(int temp1 = 0, int temp2 = 0){a=temp1 ;b=temp2 ;}int getA(){return a;}int getB(){return b;}
};
int main()
{Test obj(5, 10);// Changing a and bint* pInt = (int*)&obj;*(pInt+0) = 100;*(pInt+1) = 200;cout << "a = " << obj.getA() << endl;cout << "b = " << obj.getB() << endl;return 0;
}
A. 200 10
B. 5 10
C. 100 200
D. 100 10
4、当一个类的某个函数被说明为virtual,则在该类的所有派生类中的同原型函数_____?
A. 只有 被重新说明时才识虚函数
B. 只有被重新说明为virtual时才是虚函数
C. 都不是虚函数
D. 都是虚函数
5、下面有关虚函数和非虚函数的区别说法错误的是?
A. 子类的指针访问虚函数访问的是子类的方法
B. 子类的指针访问非虚函数访问的是子类的方法
C. 父类的指针访问虚函数访问的是父类的方法
D. 父类的指针访问非虚函数访问的是父类的方法
6、下列程序的输出结果:
#include <iostream>
using namespace std;
class A
{
public:void print(){cout << "A:print()";}
};
class B: private A
{
public:void print(){cout << "B:print()";}
};
class C: public B
{
public:void print(){ A:: print();}
};
int main()
{C b;b.print();return 0;
}
A. A:print()
B. B:print()
C. 编译出错
7、以下关于C++的描述中哪一个是正确的()
A. 任何指针都必须指向一个实例
B. 子类指针不可以指向父类实例
C. 任何引用都必须指向一个实例
D. 引用所指向的实例不可能无效
8、下面关于多态性的描述,错误的是()
A. C++语言的多态性分为编译时的多态性和运行时的多态性
B. 编译时的多态性可通过函数重载实现
C. 运行时的多态性可通过模板和虚函数实现
D. 实现运行时多态性的机制称为动态绑定
9、写出下面程序的输出结果
class A
{
public:void FuncA(){printf( "FuncA called\n" );}virtual void FuncB(){printf( "FuncB called\n" );}
};
class B : public A
{
public:void FuncA(){A::FuncA();printf( "FuncAB called\n" );}virtual void FuncB(){printf( "FuncBB called\n" );}
};
void main( void )
{B b;A *pa;pa = &b;A *pa2 = new A;pa->FuncA(); ( 3)pa->FuncB(); ( 4)pa2->FuncA(); ( 5)pa2->FuncB();delete pa2;return 0;
}
A. FuncA called FuncB called FuncA called FuncB called
B. FuncA called FuncBB called FuncA called FuncB called
C. FuncA called FuncBB called FuncAB called FuncBB called
D. FuncAB called FuncBB called FuncA called FuncB called
10、在32位环境下,以上程序的输出结果是?
#include<iostream>
using namespace std;
class Base
{
public:virtual int foo(int x){return x * 10;}int foo(char x[14]){return sizeof(x) + 10;}
};
class Derived: public Base
{int foo(int x){return x * 20;}virtual int foo(char x[10]){return sizeof(x) + 20;}
} ;
int main()
{Derived stDerived;Base *pstBase = &stDerived;char x[10];printf("%d\n", pstBase->foo(100) + pstBase->foo(x));return 0;
}
A. 2000
B. 2004
C. 2014
D. 2024
二、编程题
1、完全数计算 题目链接

2、扑克牌大小 题目链接

三、选择题题解
1、下列一段 C++ 代码的输出结果是()
#include <iostream>
class Base
{
public:int Bar(char x){return (int)(x);}virtual int Bar(int x){return (2 * x);}
};
class Derived : public Base
{
public:int Bar(char x){return (int)(-x);}int Bar(int x){return (x / 2);}
};
int main(void)
{Derived Obj;Base *pObj = &Obj;printf("%d,", pObj->Bar((char)(100)));printf("%d,", pObj->Bar(100));return 0;}
A. 100,-100
B. 100,50
C. 200,-100
D. 200,50
正确答案:B
题解:
首先我们观察题目,父类与子类中都有两个叫bar的函数,其中形参为int的是虚函数,并进行了重写,形参为char的与这个虚函数构成重载;我们在看主函数中,我们实例化了一个子类对象,并用父类指针指向它,然后我们调用父类char类的那个接口,返回100;接着我们调用int那个接口,这个接口声明成了虚函数,又是用父类的指针调用,构成多态,可是该指针原本指向的是一个子类对象,因此这里调用子类的那个虚函数,返回打印50;故选B;
2、关于函数的描述正确的是()
A. 虚函数是一个static型的函数
B. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型
C. 虚函数是一个非成员函数
D. 基类中说明了虚函数后,派生类中起对应的函数可以不必说明为虚函数
正确答案:D
题解:
A选项,虚函数不可能是静态成员函数,因为静态成员函数没有this指针;B选项,虚函数的重写必须满足返回值相同,函数名相同,函数参数相同(除了协变与析构);C选项,虚函数必须为成员函数,非成员函数没有this指针;D选项,正确;
3、代码执行后,a和b的值分别为?
class Test
{
public:int a;int b;virtual void fun() {}Test(int temp1 = 0, int temp2 = 0){a=temp1 ;b=temp2 ;}int getA(){return a;}int getB(){return b;}
};
int main()
{Test obj(5, 10);// Changing a and bint* pInt = (int*)&obj;*(pInt+0) = 100;*(pInt+1) = 200;cout << "a = " << obj.getA() << endl;cout << "b = " << obj.getB() << endl;return 0;
}
A. 200 10
B. 5 10
C. 100 200
D. 100 10
正确答案:A
题解:
这里有个小坑,可能很多人会选C选项,这题实际上有个虚函数,既然类中声明了虚函数,那必然有虚表指针,而虚表指针一般都放在类的起始位置;因此我们取类的地址并强制转换成int*类型,指向的就是开头的虚表指针,我们首先将虚表指针改为100;在将第二个元素a改为200;构造中b初始化为10;故此题选A;
4、当一个类的某个函数被说明为virtual,则在该类的所有派生类中的同原型函数_____?
A. 只有 被重新说明时才识虚函数
B. 只有被重新说明为virtual时才是虚函数
C. 都不是虚函数
D. 都是虚函数
正确答案:D
题解:
只要在父类中声明为virtual函数,那么其所有子类中的同型函数都为虚函数;
5、下面有关虚函数和非虚函数的区别说法错误的是?
A. 子类的指针访问虚函数访问的是子类的方法
B. 子类的指针访问非虚函数访问的是子类的方法
C. 父类的指针访问虚函数访问的是父类的方法
D. 父类的指针访问非虚函数访问的是父类的方法
正确答案:C
题解:
C选项中说父类的指针访问虚函数必然是访问父类的方法,其实也不一定,要是构成多态了呢?可能访问子类的同型函数;
6、下列程序的输出结果:
#include <iostream>
using namespace std;
class A
{
public:void print(){cout << "A:print()";}
};
class B: private A
{
public:void print(){cout << "B:print()";}
};
class C: public B
{
public:void print(){ A:: print();}
};
int main()
{C b;b.print();return 0;
}
A. A:print()
B. B:print()
C. 编译出错
正确答案:C
题解:
仔细观察,在B继承父类时,是私有继承方式,对子类是不可见的,因此,无法在C类中调用A类的print函数;故编译错误,选C;
7、以下关于C++的描述中哪一个是正确的()
A. 任何指针都必须指向一个实例
B. 子类指针不可以指向父类实例
C. 任何引用都必须指向一个实例
D. 引用所指向的实例不可能无效
正确答案:C
题解:
A选项,可以有指向空的指针;B选项,可通过强制类型转换或dynamic_cast的方式将子类指针指向父类;C选项,描述正确;D选项,若引用的对象空间是在堆上动态申请的,那么该空间析构时,引用所指向的实例无效;
8、下面关于多态性的描述,错误的是()
A. C++语言的多态性分为编译时的多态性和运行时的多态性
B. 编译时的多态性可通过函数重载实现
C. 运行时的多态性可通过模板和虚函数实现
D. 实现运行时多态性的机制称为动态绑定
正确答案:C
题解:
C选项,模板与多态没有任何关系;
9、写出下面程序的输出结果
class A
{
public:void FuncA(){printf( "FuncA called\n" );}virtual void FuncB(){printf( "FuncB called\n" );}
};
class B : public A
{
public:void FuncA(){A::FuncA();printf( "FuncAB called\n" );}virtual void FuncB(){printf( "FuncBB called\n" );}
};
void main( void )
{B b;A *pa;pa = &b;A *pa2 = new A;pa->FuncA(); ( 3)pa->FuncB(); ( 4)pa2->FuncA(); ( 5)pa2->FuncB();delete pa2;return 0;
}
A. FuncA called FuncB called FuncA called FuncB called
B. FuncA called FuncBB called FuncA called FuncB called
C. FuncA called FuncBB called FuncAB called FuncBB called
D. FuncAB called FuncBB called FuncA called FuncB called
正确答案:B
题解:
首先观察题目,FuncA不是虚函数,在子类中,将父类的FuncA隐藏起来了;FuncB是虚函数,且完成了重写;首先pa是A类型指针,指向子类,pa2也是A类型指针,指向父类;分别调用FuncA与FuncB时,pa调用FuncA函数时调用A类中的FuncA,调用FuncB时构成多态,调用子类的FuncB,接着pa2本身指向的就是父类,因此调用FuncA与FuncB时都是调用父类的;故选B;
10、在32位环境下,以上程序的输出结果是?
#include<iostream>
using namespace std;
class Base
{
public:virtual int foo(int x){return x * 10;}int foo(char x[14]){return sizeof(x) + 10;}
};
class Derived: public Base
{int foo(int x){return x * 20;}virtual int foo(char x[10]){return sizeof(x) + 20;}
} ;
int main()
{Derived stDerived;Base *pstBase = &stDerived;char x[10];printf("%d\n", pstBase->foo(100) + pstBase->foo(x));return 0;
}
A. 2000
B. 2004
C. 2014
D. 2024正确答案:C
题解:
此题函数声明的与我们的第一题非常类似;父类与子类中的两个foo函数都各自分别构成重载,父类中int接口的foo函数定义成了虚函数,并在子类中完成了重写;接着我们来看主函数,定义了一个子类并用父类的指针指向该子类;printf函数中,我们第一个传入了一个整型,调用的子类int接口的foo函数,构成了多态;返回2000;第二个传入了字符数组,调用的是父类字符数组那个接口的foo函数,sizeof计算得到4+10,返回14(不知道为啥是4的可以看C语言指针强化);故选C;
四、编程题题解
1、完全数计算
思路:我们依次遍历1到n,记录完全数个数,没什么技巧;
#include <iostream>
using namespace std;bool is_absolute(int num)
{int sum = 0;for(int i = 1; i < num; i++){if(num % i == 0)sum += i;}if(num == sum)return true;elsereturn false;
}int main()
{int n;cin >> n;int count = 0;for(int i = 1; i <= n; i++){if(is_absolute(i))count++;}cout << count << endl;return 0;
}
2、扑克牌大小
思路:本题主要考察string的使用,也没有什么算法,我们先判断是否存在王炸,如果存在直接返回;然后继续筛选,首先我们分别计算得到这两手牌的 第一个张牌、手牌数量;然后用string保存比较次序,然后如果手牌数量相同,直接比较第一张牌再次序表中的位置;如果手牌数量不相同,则看是否有一方有炸弹,如果有返回炸弹一方手牌,没有则返回ERROR;
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;string find_max(string& cards)
{if(cards.find("joker JOKER") != string::npos)return "joker JOKER";// 分离两手牌int pos = cards.find('-');string play1 = cards.substr(0, pos);string play2 = cards.substr(pos + 1);// 统计两手牌个数int card_num1 = count(play1.begin(), play1.end(), ' ') + 1;int card_num2 = count(play2.begin(), play2.end(), ' ') + 1;// 统计他两第一张牌string card1 = play1.substr(0, play1.find(' '));string card2 = play2.substr(0, play2.find(' '));// 手牌比较依据数组string str = "345678910JQKA2jokerJOKER";if(card_num1 == card_num2){if(str.find(card1) > str.find(card2))return play1;elsereturn play2;}else {if(card_num1 == 4)return play1;else if(card_num2 == 4)return play2;elsereturn "ERROR";}
}int main()
{string cards;getline(cin, cards);cout << find_max(cards) << endl;return 0;
}相关文章:
备战秋招 | 笔试强训16
目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、下列一段 C 代码的输出结果是() #include <iostream> class Base { public:int Bar(char x){return (int)(x);}virtual int Bar(int x){return (2 * x);} }; clas…...
01 Excel常用高频快捷键汇总
目录 一、简介二、快捷键介绍2.1 常用基本快捷键1 复制:CtrlC2 粘贴:CtrlV3 剪切:CtrlX4 撤销:CtrlZ5 全选:CtrlA 2.2 常用高级快捷键1 单元格内强制换行:AltEnter2 批量输入相同的内容:CtrlEnt…...
PHP Laravel 路由、中间件、数据库等例子
以下是使用Laravel框架时的一些常见示例: 1. 路由(Routes): // 定义基本路由 Route::get(/home, HomeControllerindex); // 带有参数的路由 Route::get(/user/{id}, UserControllershow); // 路由组 Route::middleware([auth])-&…...
Unity小游戏——使被砍中的怪物四处飞散
被武士砍中后,怪物将向四面八方飞散。 动作的不同将导致攻击力度的强弱表现不同,被攻击的各个对象的反应也有很大差异。在格斗游戏中,对对手一顿拳打脚踢后,看到其步履蹒跚的样子,往往可以感受到他的疼痛。相反如果对…...
hive之文件格式与压缩
hive文件格式: 概述: 为Hive表中的数据选择一个合适的文件格式,对提高查询性能的提高是十分有益的。Hive表数据的存储格式,可以选择text file、orc、parquet、sequence file等。 文本文件: 文本文件就是txt文件&…...
云原生容器内的一次pg_repack排错和解决过程
postgresql的pg_repack 这个cronjob一直执行不了。 排错过程: 用命令 kubectl describe job pg-repack-scheduler-manual-wv82r -n xxx没有查看用有用信息想办法进它启动的pod查看,于是在执行pg_repack.sh命令前,先加一个睡眠时间,如下: - …...
Centos Certbot 使用
安装 可选配置:启动EPEL存储库 非必要项 yum install -y epel-release yum clean all yum makecache #启用可选通道 可以不配置 yum -y install yum-utils yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional必要配置…...
VL163的基本信息
VL163是2:4差分通道多路复用/demux开关USB 3.1应用,为交换机信号性能支持高达USB 3.1,并使用QFN-28 3.5x4.5mm绿色封装。 VL163 QFN28 只能处理2Lane数据信号。自己没有CC识别沟通协议,如果要做USB-C Swtich,就要通过别的USB-C协…...
IntelliJ IDEA 2023.2 新版本,拥抱 AI
IntelliJ IDEA 近期连续发布多个EAP版本,官方在对用户体验不断优化的同时,也新增了一些不错的功能,尤其是人工智能助手补充,AI Assistant,相信在后续IDEA使用中,会对开发者工作效率带来不错的提升。 以下是…...
softmax回归
模型 softmax回归是多类分类模型,用于获取每个分类的置信度,置信度计算方式如下 经过全连接层,得到输出O,将O作为softmax的输入 O是输出向量,每个分量表示一个类别,y_hat_i表示i类别的置信度࿰…...
.NET 8 Preview 5推出!
作者:Jiachen Jiang 排版:Alan Wang 我们很高兴与您分享 .NET 8 Preview 5 中的所有新功能和改进!此版本是 Preview 4 版本的后续版本。在每月发布的版本中,您将看到更多新功能。.NET 6 和 7 用户可以密切关注此版本,而…...
Spring核心概念、IoC和DI的认识、Spring中bean的配置及实例化、bean的生命周期
初始Spring 一、Spring核心概念1.1IoC(Inversion of Contral):控制反转1.2IoC代码实现1.2DI代码实现 二、bean的相关操作2.1bean的配置2.1.1bean的基础配置2.1.2bean的别名配置2.1.3bean的作用范围配置 2.2bean的实例化 - - 构造方法2.3bean的实例化 - - 实例工厂与…...
git冲突“accept theirs”和“accept yours”
Accept Yours 就是直接选取本地的代码,覆盖掉远程仓库的 Accept Theirs 是直接选取远程仓库的,覆盖掉自己本地的 我们选择Merge,自己手动行进选择、修改。 这里左边部分是你本地仓库的代码,右边部分是远程仓库的代码,中间的res…...
Vision Transformer (ViT)
生成式模型与判别式模型 生成式模型,又称概率模型,是指通过学习数据的分布来建立模型P(y|x),然后利用该模型来生成新的数据。生成式模型的典型代表是朴素贝叶斯模型,该模型通过学习数据的分布来建立概率模型,然后利用该模型来生成新的数据。判别式模型,又称非概率模型,…...
OpenGL Metal Shader 编程:解决图片拉伸变形问题
前面发了一些关于 Shader 编程的文章,有读者反馈太碎片化了,希望这里能整理出来一个系列,方便系统的学习一下 Shader 编程。 由于主流的 Shader 编程网站,如 ShaderToy, gl-transitions 都是基于 GLSL 开发 Shader ,加…...
[SQL挖掘机] - 字符串函数 - concat
介绍: concat函数用于连接字符串的函数。它接受多个字符串作为参数,并将它们按顺序连接起来形成一个新的字符串。 用法: 以下是concat函数的语法: concat(string1, string2, ...)其中,string1, string2, …是要连接的字符串参数。你可以传…...
Rust之所有权
1、所有权的概念: 程序需要管理自己在运行时使用的计算机内部空间。Rust语言采用包含特定规则的所有权系统来管理内存,这套规则允许编译器在编译的过程中执行检查工作,而不会产生任何的运行时开销。 (1)、所有权规则: Rust中的…...
RabbitMQ帮助类的封装
RabbitMQ帮助类的封装 基本部分 public class RabbitMQInvoker {#region Identy private static IConnection _CurrentConnection null;private readonly string _HostName null;private readonly string _UserName null;private readonly string _Password null;#endreg…...
mac 移动硬盘未正常退出,再次链接无法读取(显示)
(1)首先插入自己的硬盘,然后找到mac的磁盘工具 (2)打开磁盘工具,发现自己的磁盘分区在卸载状态;点击无法成功装载。 (3)打开终端,输入 diskutil list查看自…...
短视频账号矩阵系统源码开发部署路径
一、短视频批量剪辑的开发逻辑算法 1.视频剪辑之开发算法 自己研发视频剪辑是指通过对视频素材进行剪切、调整、合并等操作,利用后台计算机算法,进行抽帧抽组抽序进行排列以达到对视频内容进行修改和优化的目的。自己研发的视频剪辑工具可以通过后台码…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...
