备战秋招 | 笔试强训9

目录

一、选择题

二、编程题

三、选择题题解

四、编程题题解


一、选择题

1、某函数申明如下()

void Func(int &nVal1);

A. Func(a)

B. Func(&a)

C. Func(*a)

D. Func(&(*a))

2、C++语言中,类ClassA的构造函数和析构函数的执行次数分别为()

ClassA *pclassa=new ClassA[5];
delete pclassa;

A. 5,1

B. 1,1

C. 5,5

D. 1,5

3、动态内存分配(C语言中malloc,C++中的new)得到的存储区属于内存中的:

A. 静态区

B. 堆(heap)

C. 栈(stack)

D. 堆栈

E. 内核内存

F. 不确定

4、下列静态数据成员的特性中,错误的是()

A. 引用静态数据成员时,要在静态数据成员名前加和作用域符号

B. 说明静态数据成员时前边要加关键字static来修饰

C. 静态数据成员在类体外进行初始化

D. 静态数据成员不是所有对象所共有的

5、用class关键字定义的类,其成员默认的访问属性为()

A. private

B. protected

C. public

D. 无定义

6、在重载一个运算符为成员函数时,其参数表中没有任何参数,这说明该运算符是 ( )。

A. 无操作数的运算符

B. 二元运算符

C. 前缀一元运算符

D. 后缀一元运算符

7、有如下程序:运行时的输出结果是

#include<iostream>
using namespace std;
class MyClass
{
    public:
    MyClass(int i=0){cout<<1;}
    MyClass(const MyClass&x){cout<<2;}
    MyClass& operator=(const MyClass&x){cout<<3; return*this;}
    ~MyClass(){cout<<4;}
};
int main()
{
    MyClass obj1(1),obj2(2),obj3(obj1);
    return 0;
}

A. 121,444

B. 112,444

C. 11,114,444

D. 11,314,445

E. 11,314,444

8、下面有关c++静态数据成员,说法正确的是()

A. 不能在类内初始化

B. 不能被类的对象调用

C. 不能受private修饰符的作用

D. 可以直接用类名调用

9、在C++中,为了让某个类只能通过new来创建(即如果直接创建对象,编译器将报错),应该()

A. 将构造函数设为私有

B. 将析构函数设为私有

C. 将构造函数和析构函数均设为私有

D. 没有办法能做到

10、下列的模板声明中,其中几个是正确的()

1)template
2)template<T1,T2>
3)template<class T1,T2>
4)template<class T1,class T2>
5)template<typename T1,T2>
6)template<typename T1,typename T2>
7)template<class T1,typename T2>
8)<typename T1,class T2>

A. 2

B. 3

C. 4

D. 5

二、编程题

1、另类加法  题目链接

2、走方格的方案数  题目链接 

三、选择题题解

1、某函数声明如下()

void Func(int &nVal1);

A. Func(a)

B. Func(&a)

C. Func(*a)

D. Func(&(*a))

正确答案:A

题解:

         我们观察函数,是引用,因此我们传参时,以一种类似 “传值” 的方式传参即可(底层是传指针,我们前面早已介绍过)

2、C++语言中,类ClassA的构造函数和析构函数的执行次数分别为()

ClassA *pclassa=new ClassA[5];
delete pclassa;

A. 5,1

B. 1,1

C. 5,5

D. 1,5

正确答案:A

题解:

         注意题目new一个对象时,用了 [ ] ,因此首先会创建5个classA对象的空间,然后再调用5次构造函数,而delete时,由于没有方括号因此只会调用一次析构函数,然后再所释放其空间,因此只调用一次析构;

3、动态内存分配(C语言中malloc,C++中的new)得到的存储区属于内存中的:

A. 静态区

B. 堆(heap)

C. 栈(stack)

D. 堆栈

E. 内核内存

F. 不确定

正确答案:B

题解:

        动态内存分配申请的空间来自于堆,概念题; 

4、下列静态数据成员的特性中,错误的是()

A. 引用静态数据成员时,要在静态数据成员名前加和作用域符号

B. 说明静态数据成员时前边要加关键字static来修饰

C. 静态数据成员在类体外进行初始化

D. 静态数据成员不是所有对象所共有的

正确答案:D

题解:

         静态成员变量属于这个类的所有对象,并不属于某个具体的对象;选D错误;

5、用class关键字定义的类,其成员默认的访问属性为()

A. private

B. protected

C. public

D. 无定义

正确答案:A

题解:

         class的成员默认访问权限为private,默认继承权限也为private,struct的成员默认访问权限为public,默认继承权限也为public;

6、在重载一个运算符为成员函数时,其参数表中没有任何参数,这说明该运算符是 ( )。

A. 无操作数的运算符

B. 二元运算符

C. 前缀一元运算符

D. 后缀一元运算符

正确答案:C

题解:

         当重载运算符为成员函数时,若其中没有任何参数,由于其是类的成员函数,故会传this指针,故应该为前缀一元运算符,若给参数int,则为后缀一元操作符;

7、有如下程序:运行时的输出结果是

#include<iostream>
using namespace std;
class MyClass
{
    public:
    MyClass(int i=0){cout<<1;}
    MyClass(const MyClass&x){cout<<2;}
    MyClass& operator=(const MyClass&x){cout<<3; return*this;}
    ~MyClass(){cout<<4;}
};
int main()
{
    MyClass obj1(1),obj2(2),obj3(obj1);
    return 0;
}

A. 121,444

B. 112,444

C. 11,114,444

D. 11,314,445

E. 11,314,444

正确答案:B

题解:

         分别创建3个对象,对象1和对象2使用的是构造函数,对象3是用拷贝构造进行初始化,因此会打印112,接着析构三个对象,打印444;

8、下面有关c++静态数据成员,说法正确的是()

A. 不能在类内初始化

B. 不能被类的对象调用

C. 不能受private修饰符的作用

D. 可以直接用类名调用

正确答案:D 

题解:

        A选项,对于普通静态数据成员,确实只能再类内声明,再类外进行定义,而const 修饰的静态整型家族数据成员,可以在类内定义,这是一种特殊语法;B选项,可以被类的对象调用;C选项,可以被private修饰;D选项,正确;

9、在C++中,为了让某个类只能通过new来创建(即如果直接创建对象,编译器将报错),应该()

A. 将构造函数设为私有

B. 将析构函数设为私有

C. 将构造函数和析构函数均设为私有

D. 没有办法能做到

正确答案:B

题解:

         假设我们将构造函数私有,由于构造函数私有,确实不能直接创建对象了,但是我们也不能通过new构造对象了,因此new主要分为两步,1、申请空间;2、调用构造进行初始化;,因此A错误;B选项,当我们将析构函数私有后,由于只能在类内调用析构,而我们一般创建的对象在出作用域时调用析构,由于无法调用析构,因此编译器也不允许我们直接构造对象,但由于构造并没有被封,我们可以通过new构造对象,然后如果我们需要析构这个对象,我们需要实现一个公有的方法,在这个公有的方法里调用析构,然后我们通过这个公有的方法进行析构;故B正确;

10、下列的模板声明中,其中几个是正确的()

1)template
2)template<T1,T2>
3)template<class T1,T2>
4)template<class T1,class T2>
5)template<typename T1,T2>
6)template<typename T1,typename T2>
7)template<class T1,typename T2>
8)<typename T1,class T2>

A. 2

B. 3

C. 4

D. 5

正确答案:B

题解:

         根据语法,每个类型参数前都必须由class或者typename,可以混用,故(4)(6)(7)都正确;选B;

四、编程题题解

1、另类加法

题解:我们利用异或的不进位加法特性进行解题,具体如下;

 

        我们得到了非进位的加法后的结果,那我们如何得到加法的进位呢?首先我们要清楚二进制的进位是两个二进制位都为1,相加后往后一位进1,你是否联想到了什么?我们是否可以通过两个数相与之后,在使用左移运算符,向左移动一位;这不就得到了我们的进位吗?

即 进位的数 = (A & B)<< 1;

 

        我们将进位的值与不进位相加的值进行相加不就是结果的值吗?(用或运算符)但是这个结果也是不准确的,因为我们要考虑连续进位的情况;因此有了以下代码;

class UnusualAdd 
{
public:
    int addAB(int A, int B) 
    {
        // 可能会出现连续进位的情况
        while(B)
        {
            int tmp = (A & B) << 1; // 进位的值
            A ^= B; // 不进位相加后的值
            B = tmp;
        }
        return A;
    }
};

2、走方格的方案数

题解:本题主要使用动态规划的思路进行解题,具体如下;

        有了以上的思路,具体我们还是来看代码是如何实现的;如下所示;

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

int main() 
{
    int n, m;
    cin >> n >> m;
    // 注意这里多开一个空间,因为题目给的是网格数
    vector<vector<int>> dp(n + 1, vector<int>(m + 1, 0));
    // 注意这里也必须都是小于等于
    for(int i = 0; i <= n; i++)
    {
        for(int j = 0; j <= m; j++)
        {
            if(i == 0 || j == 0)
            {
                dp[i][j] = 1;
            }
            else 
            {
                dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
            }
        }
    }
    cout << dp[n][m] << endl;
    return 0;
}

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

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

相关文章

如何生成一个漂亮的allure测试报告

前言 今天给大伙展示一下如何生成一个漂亮的allure测试报告&#xff0c;同时呢希望能帮助到大家。 定制化后的allure测试报告效果展示 如何定制化输出锦上添花的allure测试报告 使用前&#xff0c;先导入allure模块。 import allure 使用前&#xff0c;先熟悉运行测试用例…

【Spring Boot】拦截器与统一功能处理:统一登录验证、统一异常处理与统一数据返回格式

前言 Spring AOP是一个基于面向切面编程的框架&#xff0c;用于将横切性关注点&#xff08;如日志记录、事务管理&#xff09;与业务逻辑分离&#xff0c;通过代理对象将这些关注点织入到目标对象的方法执行前后、抛出异常或返回结果时等特定位置执行&#xff0c;从而提高程序的…

供应链管理系统有哪些?

1万字干货分享&#xff0c;国内外 20款 供应链管理软件都给你讲的明明白白。如果你还不知道怎么选择&#xff0c;一定要翻到第三大段&#xff0c;这里我将会通过8年的软件产品选型经验告诉你&#xff0c;怎么样才能快速选到适合自己的软件工具。 &#xff08;为防后续找不到&a…

Waves 14 Complete对Mac和Windows系统的最低要求

Waves 14 Complete是一款功能齐全的音频编辑软件&#xff0c;适用于音乐制作、音频工程和声音设计等领域。它提供了一系列强大的工具和效果&#xff0c;帮助用户在音频处理过程中实现专业水平的效果和混音。 Waves 14 Complete包含了多个实用的插件&#xff0c;如均衡器、压缩…

Gradle和Aritifactory,实现上传Apk并发送消息到钉钉

Gradle和Aritifactory 本文链接&#xff1a;https://blog.csdn.net/feather_wch/article/details/131746580 文章目录 Gradle和AritifactoryGradle基本介绍Gradle插件开发流程本地仓库artifactory搭建添加仓库使用本地仓库gradle插件仓库引入 插件buildSrc开发步骤xxxPluginPg…

甲板上的战舰(力扣)递归 JAVA

给你一个大小为 m x n 的矩阵 board 表示甲板&#xff0c;其中&#xff0c;每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ &#xff0c;返回在甲板 board 上放置的 战舰 的数量。 战舰 只能水平或者垂直放置在 board 上。换句话说&#xff0c;战舰只能按 1 x k&#xf…

Redis入门基础命令

文章目录 一、redis1.1 redis概述1.2 redis安装 二、string2.1 基础命令2.2 存储结构2.3 应用 三、list3.1 基础命令3.2 应用 四、hash4.1 基础命令4.2 存储结构4.3 应用 五、set5.1 基础命令5.2 存储结构5.3 应用 六、zset6.1 基础命令6.2 存储结构6.3 应用 一、redis 1.1 re…

随手笔记——如何手写高斯牛顿法

随手笔记——如何手写高斯牛顿法 说明源代码 说明 将演示如何手写高斯牛顿法 源代码 #include <iostream> #include <chrono> #include <opencv2/opencv.hpp> #include <Eigen/Core> #include <Eigen/Dense>using namespace std; using names…

【前端知识】React 基础巩固(二十八)——StrictMode

React 基础巩固(二十八)——StrictMode StrictMode StrictMode 是一个用来突出显示应用程序中潜在问题的工具 与 Fragment 一样&#xff0c;StrictMode 不会渲染任何可见的 UI为后代出发额外的检测和警告严格模式检查仅在开发模式下运行&#xff0c;不影响生产构建 严格模式检…

线程与信号

1. 进程内所有线程共享信号处理配置&#xff0c;故信号配置可以全部放在主线程内。 2. 每个线程有自己的信号掩码sigset_t&#xff0c;线程创建时继承创建时线程的信号掩码。 3. 触发信号处理函数按创建线程顺序分配给当前空闲线程&#xff0c;信号处理函数内是可以阻塞的。 …

Django实现接口自动化平台(十三)接口模块Interfaces序列化器及视图【持续更新中】

相关文章&#xff1a; Django实现接口自动化平台&#xff08;十二&#xff09;自定义函数模块DebugTalks 序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解&#xff0c;查看本章内容时&#xff0c;要结合整体项目代码来看&#xff1a; pytho…

华润燃气牵手腾讯云 数字技术助力燃气行业高质量发展

7月13日&#xff0c;华润燃气与腾讯云正式签署战略合作协议。双方将充分发挥各自优势&#xff0c;探索AI大模型在燃气行业的深度应用&#xff0c;并深耕分布式计算、连接和客户运营等领域&#xff0c;不断提升燃气民生服务的效率、质量&#xff0c;共同推动行业数字化转型和高质…

巧妙使用 CSS 渐变来实现波浪动画

目录 一、波浪的原理 二、曲面的绘制 三、波浪动画 四、文字波浪动画 五、总结一下 参考资料 之前看到coco[1]的这样一篇文章&#xff1a;纯 CSS 实现波浪效果&#xff01;[2]&#xff0c;非常巧妙&#xff0c;通过改变border-radius和不断旋转实现的波浪效果&#xff0c…

初探KVM虚拟化技术:新手指南

首先了解一下虚拟化的概念 虚拟化是指对资源的逻辑抽象、隔离、再分配、管理的一个过程&#xff0c;通常对虚拟化的理解有广义狭义之分。广义包括平台虚拟化、应用程序虚拟化、存储虚拟化、网络虚拟化、设备虚拟化等等。狭义的虚拟化专门指计算机上模拟运行多个操作系统平台。…

面试中关于自动化测试的认识

目录 一、什么是自动化测试&#xff0c;自动化测试的优势是什么&#xff1f; 二、什么样的项目比较适合做自动化测试&#xff0c;什么样的不适合做自动化测试&#xff1f; 三、在制定自动化测试计划的时候一般要考虑哪些点&#xff1f; 四、编写自动化脚本时的一些规范&…

C#图片处理

查找图片所在位置 原理&#xff1a;使用OpenCvSharp对比查找小图片在大图片上的位置 private static System.Drawing.Point Find(Mat BackGround, Mat Identify, double threshold 0.8) {using (Mat res new Mat(BackGround.Rows - Identify.Rows 1, BackGround.Cols - Iden…

WEB:shrine

背景知识 了解Flask SSIT模板注入 题目 进行代码审计 import flask import osapp flask.Flask(__name__) /*创建了flask包下的Flask类的对象&#xff0c;name是一个适用于多数情况的快捷方式。有了这个参数&#xff0c;Flask才知道在哪里可以找到模板和静态文件*/app.confi…

【Fiddler】Fiddler实现mock测试(模拟接口数据)

软件接口测试过程中&#xff0c;经常会遇后端接口还没有开发完成&#xff0c;领导就让先介入测试&#xff0c;然后缩短项目时间&#xff0c;有的人肯定会懵&#xff0c;接口还没开发好&#xff0c;怎么介入测试&#xff0c;其实这就涉及到了我们要说的mock了。 一、mock原理 m…

小程序:页面跳转闪屏

自己的笔记&#xff0c;随手记录。扛精走开。 1、问题描述 进入页面&#xff0c;是一个组件&#xff0c;通过路由传参判断是由哪个页面进入&#xff0c;不同的页面拿的已选值不一样&#xff0c;需要回显值&#xff0c;在编辑数据。此时会出现一个问题&#xff0c;A页面中进来…

微信小程序——字符串截取

indexOf() &#xff1a; 判断一个字符是否在字符串 中 存在&#xff0c;如果存在返回该元素或字符第一次出现 的 位置 的 索引&#xff0c;不存在返回-1。 lastIndexOf() &#xff1a; 返回一个指定的字符串值最后出现的位置&#xff0c;在一个字符串中的指定位置从后向前搜索。…
最新文章