C++常见问题

作者:守望者1028

链接:https://www.nowcoder.com/discuss/55353?type=post&order=rank&pos=&page=8&channel=2000&source_id=search_post

来源:牛客网

(1)    指针和引用的区别

(2)    堆和栈的区别

(3)    new和delete是如何实现的,new 与 malloc的异同处

(4)    C和C++的区别

(5)    C++、Java的联系与区别,包括语言特性、垃圾回收、应用场景等(java的垃圾回收机制)

(6)    Struct和class的区别

(7)    define 和const的区别(编译阶段、安全性、内存占用等)

(8)    在C++中const和static的用法(定义,用途)

(9)    const和static在类中使用的注意事项(定义、初始化和使用)

(10)    C++中的const类成员函数(用法和意义)

(11)    计算下面几个类的大小:

class A {};: sizeof(A) = 1;

class A { virtual Fun(){} };: sizeof(A) = 4(32位机器)/8(64位机器);

class A { static int a; };: sizeof(A) = 1;

class A { int a; };: sizeof(A) = 4;

class A { static int a; int b; };: sizeof(A) = 4;

(12)    给一个代码,求输出结果

class A

{

public:

A(int x){}

}

问:A a = 1;是否正确, 如果正确, 那么它调用了哪些函数?

这类题目更常见的是在基类和子类有不同实现方法。(虚函数相关,栗子很多,不多说了)

(13)    C++的STL介绍(这个系列也很重要,建议侯捷老师的这方面的书籍与视频),其中包括内存管理allocator,函数,实现机理,多线程实现等

(14)    STL源码中的hash表的实现

(15)    STL中unordered_map和map的区别

(16)    STL中vector的实现

(17)    vector使用的注意点及其原因,频繁对vector调用push_back()对性能的影响和原因。

(18)    C++中的重载和重写的区别:

(19)    C ++内存管理(热门问题)

(20)    介绍面向对象的三大特性,并且举例说明每一个。

(21)    多态的实现(和下个问题一起回答)

(22)    C++虚函数相关(虚函数表,虚函数指针),虚函数的实现原理(热门,重要)

(23)    实现编译器处理虚函数表应该如何处理

(24)    析构函数一般写成虚函数的原因

(25)    构造函数为什么一般不定义为虚函数

(26)    构造函数或者析构函数中调用虚函数会怎样

(27)    纯虚函数

(28)    静态绑定和动态绑定的介绍

(29)    引用是否能实现动态绑定,为什么引用可以实现

(30)    深拷贝和浅拷贝的区别(举例说明深拷贝的安全性)

(31)    对象复用的了解,零拷贝的了解

(32)    介绍C++所有的构造函数

(33)    什么情况下会调用拷贝构造函数(三种情况)

(34)    结构体内存对齐方式和为什么要进行内存对齐?

(35)    内存泄露的定义,如何检测与避免?

(36)    手写实现智能指针类(34-37我没遇见过)

(37)    调试程序的方法

(38)    遇到coredump要怎么调试

(39)    内存检查工具的了解

(40)    模板的用法与适用场景

(41)    成员初始化列表的概念,为什么用成员初始化列表会快一些(性能优势)?

(42)    用过C11吗,知道C11新特性吗?(有面试官建议熟悉C11)

(43)    C++的调用惯例(简单一点C++函数调用的压栈过程)

(44)    C++的四种强制转换

你可能感兴趣的:(C++常见问题)