冲进银行测开,扛住了~

最近招商银行的 24 届秋招已经开始了,有很多同学问我 C++ 能投银行吗?

银行的技术大多数都是 Java,但是我看银行后端开发和测开岗位的要求:熟悉Java/C++中至少一门编程语言。

所以,C++同学也是可以投银行开发的。今天分享,一位c++同学面招商银行测开岗位的面经,共问了 20+ 个问题,测开问的问题其实跟后端开发差不多,还是编程语言+数据库+计算机基础+算法这些,只是难度不会太深。

当然,还会额外问几个测试相关的问题,比如针对某个场景,你会如何设计测试用例?

所以,投了测开岗位的同学,可以去补充学习下这类的测试相关内容。

C++

1. float/double所占字节分别是多少?

float类型占用4个字节,double类型占用8个字节。

其他变量大小如下图:

2. 深拷贝和浅拷贝的区别?

  • 浅拷贝是指将一个对象的值复制到另一个对象,包括对象中的数据和指向动态分配内存的指针。这意味着原始对象和拷贝对象将共享同一块内存,当其中一个对象修改数据时,另一个对象也会受到影响。这可能导致潜在的问题,尤其是在释放内存时可能会发生错误。

  • 深拷贝是指创建一个新的对象,并复制原始对象的所有数据和指针指向的数据。这意味着原始对象和拷贝对象将拥有彼此独立的内存空间,彼此之间的修改不会相互影响。深拷贝通常需要在拷贝过程中分配新的内存,并将原始对象的数据复制到新的内存中。

3. ++i和i++的区别?

++ii++都是C++中的自增运算符,它们的区别在于它们的行为和返回值。

  • ++i是前置自增运算符,它会先将变量i的值加1,然后返回加1后的值。也就是说,++i会先执行自增操作,再使用自增后的值。
  • i++是后置自增运算符,它会先返回变量i的当前值,然后再将i的值加1。也就是说,i++会先使用当前值,再执行自增操作。

下面是一个示例代码,展示了++ii++的使用:

#include <iostream>

int main() {
    int i = 0;

    std::cout << "Before increment: " << i << std::endl;

    int result1 = ++i;
    std::cout << "After pre-increment: " << i << std::endl;
    std::cout << "Result of pre-increment: " << result1 << std::endl;

    int result2 = i++;
    std::cout << "After post-increment: " << i << std::endl;
    std::cout << "Result of post-increment: " << result2 << std::endl;

    return 0;
}

输出结果将是:

Before increment: 0
After pre-increment: 1
Result of pre-increment: 1
After post-increment: 2
Result of post-increment: 1

可以看到,++i先将i的值加1,再返回加1后的值,而i++先返回i的当前值,再将i的值加1。

4. 多态是什么?怎么实现的?

C++的多态是通过虚函数(virtual function)和指向基类的指针或引用来实现的。在基类中声明虚函数,派生类中重写该函数,通过基类指针或引用调用该函数,就可以实现运行时多态。

多态的实现原理主要涉及到两个概念:虚函数表(vtable)和虚函数指针(vptr)。每个含有虚函数的类,或者从这样的类派生的类,都有一个虚函数表。这个表中存储了虚函数的地址。类的对象中包含一个虚函数指针,指向这个虚函数表。当我们通过基类的指针或引用调用虚函数时,实际上是通过这个虚函数指针找到虚函数表,然后在表中查找并调用相应的函数。这个过程是在运行时完成的,所以可以实现运行时多态。

多态性的实现主要依靠两个机制:继承和虚函数。

  1. 继承:派生类可以继承基类的属性和方法。通过继承,派生类可以具有基类的行为和特征。
  2. 虚函数:在基类中声明一个虚函数,派生类可以对该虚函数进行重写。通过使用虚函数,可以在运行时根据实际对象的类型来调用相应的函数,而不是根据指针或引用的类型。

实现多态的步骤如下:

  1. 定义基类:定义一个基类,并在其中声明一个或多个虚函数。
  2. 派生类:从基类派生出一个或多个派生类,并在派生类中重写基类的虚函数。
  3. 使用基类指针或引用:使用基类类型的指针或引用来引用派生类对象。这样做可以根据实际对象的类型来调用相应的函数。

下面是一个简单的示例代码,展示了多态的实现:

#include <iostream>

class Animal {
public:
    virtual void makeSound() {
        std::cout << "Animal makes a sound." << std::endl;
    }
};

class Dog : public Animal {
public:
    void makeSound() override {
        std::cout <<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值