c++ 学习

C++ 虚函数

1.在有继承关系的父子类中,构建和析构一个子类对象时,父子构造函数和析构函数的执行顺序分别是怎样的?

2.在有继承关系的类体系中,父类的构造函数和析构函数一定要申明为 virtual 吗?如果不申明为 virtual 会怎样?

3.什么是 C++ 多态?C++ 多态的实现原理是什么?

4.什么是虚函数?虚函数的实现原理是什么?

5.什么是虚表?虚表的内存结构布局如何?虚表的第一项(或第二项)是什么?

6.菱形继承(类D同时继承B和C,B和C又继承自A)体系下,虚表在各个类中的布局如何?如果类B和类C同时有一个成员变了m,m如何在D对象的内存地址上分布的?是否会相互覆盖?

参考:c++虚继承_baidu_16370559的博客-CSDN博客_虚继承

 C++11/14/17

参考:c++ 11 新特性讲解大全_baidu_16370559的博客-CSDN博客_c++11到23新特性

1.统一的类成员初始化语法与 std::initializer_list<T>

2.注解标签(attributes)

3.final/override/=default/=delete 语法

4.auto 关键字

5.Range-based 循环语法

6.结构化绑定

7.stl 容器新增的实用方法

8.std::thread

9.线程局部存储 thread_local

10.线程同步原语 std::mutex、std::condition_variable 等

11.原子操作类

12.智能指针类

13.std::bind/std::function

算法与数据结构基础

1.排序(常考的排序按频率考排序为:快速排序 > 冒泡排序 > 归并排序 > 桶排序)

2.二分查找

3.链表

如链表的查找、定位、反转、连接等等。

4.队列与栈

栈一般对于基础要求高的面试,会结合函数调用实现来问。即函数如何实现的,包括函数的调用的几种常见调用方式、参数的入栈顺序、内存栈在地址从高向低扩展、栈帧指针和栈顶指针的位置、函数内局部变量在栈中的内存分布、函数调用结束后,调用者和被调用者谁和如何清理栈等等。

哈希表

哈希冲突的检测、让面试者写一个哈希插入函数等等

说出红黑树的概念、左旋右旋的方式、分析出查找和插入的平均算法复杂度和最好最坏时的算法复杂度

B树一般不会直接问,问的最多的形式是通过问 MySQL 索引实现原理

多线程开发

知道何种场合下需要新建新的线程、线程如何创建和等待、线程与进程的关系、线程局部存储(TLS 或者叫 thread local)、多线程访问资源产生竞态的原因和解决方案等等、熟练使用所在操作系统平台提供的线程同步的各种原语。


网络编程

如 select 函数的用法,非阻塞 connect 函数的写法,epoll 的水平和边缘模式、阻塞socket与非阻塞socket的区别、send/recv函数的返回值情形、reuse_addr选项等等。Windows 平台可能还会问 WSAEventSelect 和 WSAAsyncSelect 函数的用法、完成端口(IOCP模型)。

  • nagle算法;
  • keepalive选项;
  • Linger选项;
  • 对于某一端出现大量CLOSE_WAIT 或者 TIME_WAIT如何解决;
  • 通讯协议如何设计或如何解决数据包的粘包与分片问题;
  • 心跳机制如何设计;(可能不会直接问问题本身,如问如何检查死链)
  • 断线重连机制如何设计;
  • 对 IO Multiplexing 技术的理解;
  • 收发数据包正确的方式,收发缓冲区如何设计;
  • 优雅关闭;
  • 定时器如何设计;
  • epoll 的实现原理。


 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值