帅地!面试题

  • shared_ptr是如何实现的
  • volatile有什么作用
    状态寄存器一类的并行设备硬件寄存器
    一个中断服务子程序会访问到的非自动变量
    多线程间被几个任务共享的变量
  • typedef和define的区别
  • 指针常量与常量指针的区别
  • C语言的结构体和C++的有什么区别
  • c++的顶层const和底层const
    底层const是代表对象本身是一个常量(不可改变)
    顶层const是代表指针的值是一个常量,而指针的值(即对象的地址)的内容可以改变。
  • 面向对象的三大特征的特点
    • 封装:将客观事物封装成抽象的类,而类可以把自己的数据和方法暴露给可信的类或者对象,对不可信的类或对象则进行信息隐藏。
    • 继承:可以使用现有类的所有功能,并且无需重新编写原来的类即可对功能进行拓展;
    • 多态:一个类实例例的相同方法在不同情形下有不同的表现形式,使不不同内部结构的对象可以共享相同的外部接口。
  • 多态的实现有哪几种
    多态分为静态多态和动态多态。其中,静态多态是通过重载和模板技术实现的,在编译期间确定;动态多态是通过虚函数和继承关系实现的,执行动态绑定,在运行期间确定。
  • 动态多态有什么作用?
  • 动态绑定是如何实现的?
  • 纯虚函数有什么作用,如何实现?
  • 虚函数表是针对类的还是针对对象的?同一一个类的两个对象的虚函数表是怎么维护的?
  • 对虚函数和多态的理解
  • c++中四种cast转换
  • RTTI是什么,原理是?
    RTTI即运行时类型识别,其功能由两个运算符实现:
  • 模板函数和模板类的特例化
    编写单一的模板,它能适应多种类型的需求,使每种类型都具有相同的功能,但对于某种特定类型,如果要实现其特有的功能,单一模板就无法做到,这时就需要模板特例化。
    • 模板函数特例化
      必须为原函数模板的每个模板参数都提供实参,且使用关键字template后跟一个空尖括号对<>,表明将原模板的所有模板参数提供实参。
    • 类模板特例化
      在类中,可以对模板进行特例化,也可以对类进行部分特例化。对类进行特例化时,仍然用template<>表示是一个特例化版本。
  • 为什么析构函数一般写成虚函数
  • 拷贝初始化和直接初始化,初始化和赋值的区别?

C++ STL

  • 什么是STL?
    C++ STL从广义来讲包括了三类:算法、容器和迭代器。
  • 什么时候需要用hash_map,什么时候需要用map?
  • STL中hashtable的底层实现?
    STL中的hashtable使用的是开链法解决hash冲突问题。
  • vector底层原理及其相关面试
  • list底层原理及其相关面试
  • deque底层原理及其相关面试
  • map、set、multiset、multimap底层原理及其相关面试
  • unordered_map、unordered_set底层原理及其相关面试
  • 迭代器的底层机制和失效的问题
    迭代器是连接容器和算法的一种重要桥梁,通过迭代器可以在不了解容器内部原理的情况下遍历容器。它的底层实现包含两个重要的部分:萃取技术和模板偏特化。
  • vector如何释放空间?
  • 如何在共享内存上使用STL标准库?
  • map的插入方式有哪几种?
  • 为什么vector的插入操作可能会导致迭代器失效?
  • vector的reserve()和resize()方法之间有什么区别?
    reserve(n)方法只改变vector的容量,如果当前容量小于n,则重新分配内存空间,调整容量为n,如果大于等于n,无操作。resize(n)方法改变vector的大小,如果当前容量小于n,则调整容量为n,同时将其全部元素填充为初始值;如果当前容量大于等于n,则不调整容量,只将其前n个元素填充为初始值。
  • 标准库中有哪些容器?分别有什么特点?
  • 容器内不删除元素
  • 越界访问下标,会不会释放空间。
  • STL内存优化?
    STL内存管理使用二级内存配置器。

C++内存管理

  • new/delete和malloc/free之间有什么关系?
  • delete与delete[]有什么区别?
  • 内存块太小导致malloc和new返回空指针,该怎么处理?
  • 内存泄漏的场景有哪些?如何判断内存泄漏?如何定位内存泄漏?
  • 内存的分配方式有几种?
  • 堆和栈的区别?
  • 静态内存分配和动态内存分配有什么区别?
  • 如何构造一个类,使得只能在堆上或只能在栈上分配内存?
  • 深浅拷贝的区别
  • 字节对齐的原则是什么?
    从偏移为0的位置开始存储;
    如果没有定义#pragma pack(n)
  • 结构体内存对齐问题
    默认情况下,按自然对齐条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储
  • malloc申请的内存能够通过delete释放?

网络编程

  • 什么是IO多路复用
  • epoll中水平触发和边缘触发的区别与实现原理
  • 网络编程中涉及并发服务器,使用多进程与多线程,有什么区别?

计算机网络

操作系统

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值