首页 > 一起乘风破浪-大华一面凉经(C++客户端)——解答
头像
蒋豆芽
编辑于 2021-07-27 10:55
+ 关注

一起乘风破浪-大华一面凉经(C++客户端)——解答

从今天起,豆芽有空也尽己所能,帮助一下大家。

面经来源:https://www.nowcoder.com/discuss/690834?source_id=discuss_experience_nctrack&channel=-1


1. C++三大特性

C++为了更好的实现面向对象的编程思想,于是引入了新的数据类型——。由此衍生出三大特性:(1)封装。(2)继承。(3)多态。

  1. 封装

    C++类将类中成员分为三种属性:private、protected、public

    (1)私有成员(变量和函数)只限于类成员访问,由private限定;

    (2)公有成员(变量和函数)允许类成员和类外的任何访问,由public限定;

    (3)受保护成员(变量和函数)允许类成员和派生类成员访问,不允许类外的任何访问。所以protected对外封闭,对派生类开放。

    C++这样做都是有道理的,实现了很好的封装,这就是C++的第一个重要特性:封装

  2. 继承

    面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。

    当创建一个类时,不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类

  3. 多态

    基类指针可以按照基类的方式来做事,也可以按照派生类的方式来做事,它有多种形态,或者说有多种表现方式,我们将这种现象称为多态(Polymorphism)。多态的实现机制为虚函数

    虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类的同名函数

    方法是在基类中为同名函数添加关键字virtual


2. 多态的实现原理,虚函数是怎么实现的

多态的实现机制为虚函数

C++实现虚函数的原理是虚函数表+虚表指针

当一个类里存在虚函数时,编译器会为类创建一个虚函数表,虚函数表是一个数组,数组的元素存放的是类中虚函数的地址

同时为每个类的对象添加一个隐藏成员,该隐藏成员保存了指向该虚函数表的指针。该隐藏成员占据该对象的内存布局的最前端。

所以虚函数表只有一份,而有多少个对象,就对应多少个虚函数表指针


3. 容器用过哪些,底层是什么

  1. vector:底层数组

  2. list:底层链表

  3. unordered_map:底层哈希表

  4. map:底层红黑树


4. map的底层,存储的是什么

红黑树。

键值对。


5. tcp/ip四层协议分别是什么

img

6. 指针和引用的区别

(1)指针是实体,占用内存空间;引用是别名,与变量共享内存空间。

(2)指针不用初始化或初始化为NULL;引用定义时必须初始化。

(3)指针中途可以修改指向;引用不可以。

(4)指针可以为NULL;引用不能为空。

(5)sizeof(指针)计算的是指针本身的大小;而sizeof(引用)计算的是它引用的对象的大小。

(6)如果返回的是动态分配的内存或对象,必须使用指针,使用引用会产生内存泄漏。

(7)指针使用时需要解引用;引用使用时不需要解引用‘*’。

(8)有二级指针;没有二级引用。


以上所有题的答案其实都来源于我的博客面经,欢迎大家围观:https://blog.nowcoder.net/jiangwenbo



更多模拟面试

全部评论

(1) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐