备战秋招 | 笔试强训17

目录

一、选择题

二、编程题

三、选择题题解

四、编程题题解


一、选择题

1、假设A为抽象类,下列声明()是正确的

A. int fun(A);

B. A Obj;

C. A fun(int);

D. A *p;

2、虚函数可不可以重载为内联?

A. 可以

B. 不可以

C. 语法错误

3、下面有关虚函数的描述,说法错误的是?

A. 虚函数的作用是实现了继承性

B. 虚函数的作用就是实现“动态联编”,也就是在程序的运行阶段动态地选择合适的成员函数

C. 和类的静态成员函数与非类的成员函数相比,虚函数的效率较低

D. 要正确的实现虚函数,只能用一个基类的指针或者引用来指向派生类对象

4、下面这个代码输出的是()

#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
    vector<int>array;
    array.push_back(100);
    array.push_back(300);
    array.push_back(300);
    array.push_back(300);
    array.push_back(300);
    array.push_back(500);
    vector<int>::iterator itor;
    for(itor=array.begin();itor!=array.end();itor++)
    {
        if(*itor==300)
        {
            itor=array.erase(itor);
        }
    }
    for(itor=array.begin();itor!=array.end();itor++)
    {
        cout<<*itor<<"";
    }
    return 0;
}

A. 100 300 300 300 300 500

B. 100 300 300 300 500

C. 100 300 300 500

D. 100 300

5、在 C++ 中,用于实现动态多态性的是( )。

A. 内联函数

B. 重载函数

C. 模板函数

D. 虚函数

6、调用一成员函数时, 使用动态联编的情况是()

A. 通过对象调用一虚函数

B. 通过指针或引用调用一虚函数

C. 通过对象调用静态函数

D. 通过指针或应用调用一静态函数

7、下面有关继承、多态、组合的描述,说法错误的是?

A. 封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏

B. 继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展

C. 隐藏是指派生类中的函数把基类中相同名字的函数屏蔽掉了

D. 覆盖是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同

8、“引用”与多态的关系?

A. 两者没有关系

B. 引用可以作为产生多态效果的手段

C. 一个基类的引用不可以指向它的派生类实例

D. 以上都不正确

9、下面这段程序的输出是什么?

class A
{
public:
    A(){p();}
    virtual void p(){printf("A")}
    virtual ~A(){p();}
};
class B:public A
{
public:
    B(){p();}
    void p(){printf("B")}    
    ~B(){p();}
};
int main(int, char**)
{
    A* a=new B();
    delete a;
    return 0;
}

A. AABB

B. BBAA

C. ABAB

D. ABBA

10、以下代码的运行结果为()

class Base 
{
public:
    Base() 
    {
        echo();
    }
    virtual void echo() 
    {
        printf("Base");
    }
};
class Derived:public Base 
{
public:
    Derived() 
    {    
        echo();
    }
    virtual void echo() 
    {
        printf("Derived");
    }
};
int main() 
{
    Base* base = new Derived();
    base->echo();
    return 0;
}

A. DerivedDerivedDerived

B. DerivedBaseDerived

C. BaseDerivedBase

D. BaseDerivedDerived

二、编程题

1、杨辉三角的变形  题目链接

 2、计算某字符出现次数  题目链接

三、选择题题解

1、假设A为抽象类,下列声明()是正确的

A. int fun(A);

B. A Obj;

C. A fun(int);

D. A *p;

正确答案:D

题解:

         抽象类不能实例化出对象;A选项,传值传参必然需要调用拷贝构造,实例化对象故错误;B选项,定义一个A类,也要实例化A类对象;C选项,传值返回必须调用拷贝构造,则必须实例化出对象;D选项,定义指针不会实例化出对象;

2、虚函数可不可以重载为内联?

A. 可以

B. 不可以

C. 语法错误

正确答案:B

 题解:

        虚函数不能重载为内联函数,因为内联函数并不会有地址,只是在调用出展开;

3、下面有关虚函数的描述,说法错误的是?

A. 虚函数的作用是实现了继承性

B. 虚函数的作用就是实现“动态联编”,也就是在程序的运行阶段动态地选择合适的成员函数

C. 和类的静态成员函数与非类的成员函数相比,虚函数的效率较低

D. 要正确的实现虚函数,只能用一个基类的指针或者引用来指向派生类对象

正确答案:A

题解:

         虚函数是实现多态的条件之一,于继承并无关系;故A选项错误;

4、下面这个代码输出的是()

#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
    vector<int>array;
    array.push_back(100);
    array.push_back(300);
    array.push_back(300);
    array.push_back(300);
    array.push_back(300);
    array.push_back(500);
    vector<int>::iterator itor;
    for(itor=array.begin();itor!=array.end();itor++)
    {
        if(*itor==300)
        {
            itor=array.erase(itor);
        }
    }
    for(itor=array.begin();itor!=array.end();itor++)
    {
        cout<<*itor<<"";
    }
    return 0;
}

A. 100 300 300 300 300 500

B. 100 300 300 300 500

C. 100 300 300 500

D. 100 300

正确答案:C

题解:

         此处考察vector中erase函数时迭代器失效问题,当我们删除vector中一个元素时,返回的是删除元素的下一个元素位置的迭代器,当vector有 100 300 300 300 300 500时,我们进入循环,首先判断第一个元素是否等于300,结果是不等于300,因此对迭代器进行++来到第二个元素的位置,进入下一个循环;继续判断发现迭代器指向的值等于300,因此删除这个元素,并返回下一个元素的位置,此时注意了,我们除了 if 语句后,再次对迭代器进行了++,而正好跳过了一个300,后面依次类推,这就是300没有删除干净的原因,最后答案为C;

5、在 C++ 中,用于实现动态多态性的是( )。

A. 内联函数

B. 重载函数

C. 模板函数

D. 虚函数

正确答案:D

题解:

         我们通过函数重载完成静态的多态,虚函数的重写完成动态多态;故选D;

6、调用一成员函数时, 使用动态联编的情况是()

A. 通过对象调用一虚函数

B. 通过指针或引用调用一虚函数

C. 通过对象调用静态函数

D. 通过指针或应用调用一静态函数

正确答案:B

题解:

         所谓动态联编指的是程序在编译期间,无法确定调用哪个函数,只能在运行期间才可以得知,简单来说,这不就是我们C++里的多态嘛,而形成多态有两个条件,并且缺一不可,其一是虚函数的重写;其二是父类的指针或引用调用;故选B;

7、下面有关继承、多态、组合的描述,说法错误的是?

A. 封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏

B. 继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展

C. 隐藏是指派生类中的函数把基类中相同名字的函数屏蔽掉了

D. 覆盖是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同

正确答案:D

题解:

         D选项,覆盖即虚函数的重写,要求函数返回值相同,函数名相同,函数参数列表相同(除协变与析构函数的特殊情况除外);故D错误;

8、“引用”与多态的关系?

A. 两者没有关系

B. 引用可以作为产生多态效果的手段

C. 一个基类的引用不可以指向它的派生类实例

D. 以上都不正确

正确答案:B

题解:

         形成多态的条件之一就是父类的指针或引用来调用虚函数;

9、下面这段程序的输出是什么?

class A
{
public:
    A(){p();}
    virtual void p(){printf("A")}
    virtual ~A(){p();}
};
class B:public A
{
public:
    B(){p();}
    void p(){printf("B")}    
    ~B(){p();}
};
int main(int, char**)
{
    A* a=new B();
    delete a;
    return 0;
}

A. AABB

B. BBAA

C. ABAB

D. ABBA

正确答案:D

题解:

         仔细观出题目,我们的有一对父子类,其构造和析构函数都调用了虚函数p,且p在子类完成了重写;要做这题,首先我们得知道在构造函数与析构函数中,我们调用虚函数不会有多态性;比如在调用构造函数时,虚表还没产生,故没有多态性;我们在看题目我们首先new了一个子类对象,该对象会先调用父类的构造,构造函数中调用函数不会有多态性,因此我们会打印A;随后调用子类的构造,同样调用p函数,打印B;接着我们delete base对象,base对象是父类的指针,且指向的是子类对象,此时达成了多态,先析构子类,在析构父类,析构函数中调用的函数也不会有多态,因此打印分别B、A;最终答案D;

10、以下代码的运行结果为()

class Base 
{
public:
    Base() 
    {
        echo();
    }
    virtual void echo() 
    {
        printf("Base");
    }
};
class Derived:public Base 
{
public:
    Derived() 
    {    
        echo();
    }
    virtual void echo() 
    {
        printf("Derived");
    }
};
int main() 
{
    Base* base = new Derived();
    base->echo();
    return 0;
}

A. DerivedDerivedDerived

B. DerivedBaseDerived

C. BaseDerivedBase

D. BaseDerivedDerived

正确答案:D

题解:

         与第九题一样,构造函数内部调用了虚函数,不会有多态性;因此分别打印Base与Derived;然后我们通过父类对象的指针去调用虚函数,虚函数完成重写,达成多态,打印Derived;最后答案D;

四、编程题题解

1、杨辉三角的变形

思路:本题是一个找规律的题目,如果你再往后多些几行,会发现,奇数行都是第二列是偶数,偶数行分为两种情况,第一种是4的倍数,此时第四列是偶数,第二种情况是2的倍数,次数是第三列是偶数;

#include <iostream>
using namespace std;

int main() 
{
    int n;
    cin >> n;

    if(n < 3)
        cout << -1 << endl;
    else if(n % 2== 1)
        cout << 2 << endl;
    else if((n - 2) % 4 == 0)
        cout << 4 << endl;
    else
        cout << 3 << endl;
    return 0;
}

2、计算某字符出现次数

思路:我们首先输入一个字符串,该字符串包括字母、数字和空格;接着我们输入一个字符,我们计算该字符出现在字符串种的次数;如果搜索的是字母则不区分大小写;此时我们有一种思路,在创建一个字符,若原来字符是大写字母,该字符就是对应的小写字母;若原来字符是小写字母,该字符就是对应的大写字母;若非字母,则该字符就是原来字符;然后进行循环判断,该字符的个数;

#include <iostream>
#include <string>
using namespace std;

int main() 
{
    string str;
    char ch1;
    getline(cin, str);
    cin >> ch1;
    int pos = 0;
    int count = 0;
    char ch2 = ch1;
    if(ch1 >= 'a' && ch1 <= 'z')
        ch2 = ch1 - 32;
    else if(ch1 >= 'A' && ch1 <= 'Z')
        ch2 = ch1 + 32;
    while(pos < str.size())
    {
        if(str[pos] == ch1 || str[pos] == ch2)
            count++;
        pos++;
    }
    cout << count << endl;
    return 0;
}

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

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

相关文章

uni-app踩坑记

打包h5如何配置域名&#xff1a; 在manifest.json中配置域名 配置完成后无论是测试环境还是正式环境都带上/mobile/&#xff0c;否则会报错404 如何引入调试工具erada: 在默认的index.html中直接引入erada&#xff0c;页面样式会整个错乱&#xff0c;解决方案就是引入官方…

低代码开发平台源码

什么是低代码开发平台&#xff1f; 低代码来源于英文“Low Code&#xff0c;它意指一种快速开发的方式&#xff0c;使用最少的代码、以最快的速度来交付应用程序。通俗的来说&#xff0c;就是所需代码数量低&#xff0c;开发人员门槛低&#xff0c;操作难度低。一般采用简单的图…

学习笔记|大模型优质Prompt开发与应用课(二)|第二节:超高产文本生成机,传媒营销人必备神器

文章目录 01 文字写作技能的革新&#xff0c;各行各业新机遇四大类常见文字工作新闻记者的一天新闻记者的一天–写策划prompt 新闻记者的一天–排采访prompt生成结果prompt生成结果 大模型加持&#xff0c;文字写作我们如何提效营销创作营销创作-使用预置法为不同平台生成文案p…

产品开发八大模块交流︱奇瑞新能源汽车产品开发院院长荣升格

奇瑞新能源汽车股份有限公司研发中心/产品开发院院长荣升格先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;产品开发八大模块交流。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; VUCA时代…

从源码分析Handler面试问题

Handler 老生常谈的问题了&#xff0c;非常建议看一下Handler 的源码。刚入行的时候&#xff0c;大佬们就说 阅读源码 是进步很快的方式。 Handler的基本原理 Handler 的 重要组成部分 Message 消息MessageQueue 消息队列Lopper 负责处理MessageQueue中的消息 消息是如何添加…

用WhatsApp开拓和跟进客户,需要注意这些雷点

我们很多新手小白在利用WhatsApp开拓和维护客户的时候&#xff0c;总是容易犯一些错误&#xff0c;踩到雷点&#xff0c;这不利于客户对企业的印象&#xff0c;不利于增长&#xff0c;下面我们来说一些需要注意的点&#xff1a; 1、专业正确的用语 不管外贸人是跟进哪个国家…

29.Git版本控制工具

1.Git简介 Git是一开源的分布式版本控制系统&#xff0c;提供了存储代码、管理版本历史、分支和合并等功能。 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理&#xff0c;是软件配置管理的核心思想之一。它的主要目的是跟踪和记录软件开发过程…

双重for循环优化

项目中有段代码逻辑是个双重for循环&#xff0c;发现数据量大的时候&#xff0c;直接导致数据接口响应超时&#xff0c;这里记录下不断优化的过程&#xff0c;算是抛砖引玉吧~ Talk is cheap,show me your code&#xff01; 双重for循环优化 1、数据准备2、原始双重for循环3、…

如何利用Requestly提升前端开发与测试的效率

痛点 B站最牛的Python接口自动化测试进阶教程合集&#xff08;真实企业项目实战&#xff09; 前端测试 在进行前端页面开发或者测试的时候&#xff0c;我们会遇到这一类场景&#xff1a; 在开发阶段&#xff0c;前端想通过调用真实的接口返回响应在开发或者生产阶段需要验证前…

Vue 中通用的 css 列表入场动画效果

css 代码 .gradientAnimation {animation-name: gradient;animation-duration: 0.85s;animation-fill-mode: forwards;opacity: 0; }/* 不带前缀的放到最后 */ keyframes gradient {0% {opacity: 0;transform: translate(-100px, 0px);}100% {opacity: 1;transform: translate…

算法38:反转链表

一、需求 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1] 示例3&#xff…

MSFCS互相联动

MSF&CS互相联动 1. 前言2. CS联动MSF2.1. 案例测试2.1.1. CS设置联动监听器2.1.2. CS设置联动MSF会话2.1.3. MSF设置监听 3. MSF联动CS3.1. 案例测试3.1.1. MSF生成木马3.1.2. 设置监听3.1.3. CS设置监听3.1.4. MSF转移会话3.1.5. 查看上线 4. 其它 1. 前言 在日常渗透测试…

基于K8s环境·使用ArgoCD部署Jenkins和静态Agent节点

今天是「DevOps云学堂」与你共同进步的第 47天 第⑦期DevOps实战训练营 7月15日已开营 实践环境升级基于K8s和ArgoCD 本文节选自第⑦期DevOps训练营 &#xff0c; 对于训练营的同学实践此文档依赖于基础环境配置文档&#xff0c; 运行K8s集群并配置NFS存储。实际上只要有个K8s集…

VMPWN的入门级别题目详解(二)

实验四 VMPWN4 题目简介 这道题应该算是虚拟机保护的一个变种&#xff0c;是一个解释器类型的程序&#xff0c;何为解释器&#xff1f;解释器是一种计算机程序&#xff0c;用于解释和执行源代码。解释器可以理解源代码中的语法和语义&#xff0c;并将其转换为计算机可以执行的…

史上最强,Python自动化测试框架整理,搭建框架看这篇就够了...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 什么是测试框架呢…

【ruby on rails】M1遇到的一些安装问题

1. homebrew位置变了 原来的Cellar Homebrew Caskroom 都是在 /usr/local/下面 M1在/opt/homebrew下面 2. 装ruby M1电脑安装ruby&#xff0c;装不上的问题 RUBY_CFLAGS"-w" rbenv install 2.7.43. 装puma报错 gem install puma -v 5.5.2 -- --with-openssl-dir…

兵兵数码:网络机顶盒哪个好?2023最新网络机顶盒排名

网络机顶盒让电视机重生&#xff0c;解决卡顿、资源少、广告多等问题&#xff0c;我们每年都会进行网络机顶盒测评&#xff0c;今年已经测评过17款&#xff0c;通过多角度对比筛选了五款表现最佳的产品整理成网络机顶盒排名&#xff0c;近期想买网络机顶盒不知道网络机顶盒哪个…

Linux学习之自定义函数

函数是把一些重复使用的命令封装成一个集合&#xff0c;之后可以使用函数名调用。 定义函数的格式如下&#xff1a; function 函数名() {指令集&#xff08;若干条语句&#xff09; return n }要是直接在Shell中直接定义函数&#xff0c;那么直接在Shell中直接使用函数名 参数…

matlab BP神经网络对iris数据集进行分类

iris数据集 本文所用数据集&#x1f449;&#x1f449;&#x1f449;iris分类数据集 1.数据预处理 %% 1.数据预处理 oridatareadtable(Iris.xls,Sheet,Sheet1); Xtable2array(oridata(:,(1:4))); % X转化为array类型 Ytable2array(oridata(:,5)); % Y因为包含中文字符&…

在Mac系统下搭建Selenium环境并驱动Chrome浏览器

本文带领那些使用Mac的童鞋们实现Selenium驱动Chrome浏览器&#xff0c;虽然会有坑&#xff0c;但是我们可以凭借敏捷的身手躲过。下面就开始吧&#xff1a; 安装selenium 打开终端 ->pip安装&#xff08;安装命令&#xff1a;pip3 install selenium&#xff09; 安装浏览…