参考书籍:《C++ primer》,《effective C++》,《STL源码解析》,《深度搜索C++对象模型》
extern关键字作用static关键字作用volatile是干啥的说说const的作用,越多越好new与malloc区别C++多态性与虚函数表 C++多态的实现? 虚函数的作用?虚函数用于实现多态,这点大家都能答上来但是虚函数在设计上还具有封装和抽象的作用。比如抽象工厂模式。动态绑定是如何实现的? 静态多态和动态多态。静态多态是指通过模板技术或者函数重载技术实现的多态,其在编译器确定行为。动态多态是指通过虚函数技术实现在运行期动态绑定的技术。虚函数表虚函数表是针对类的还是针对对象的?同一个类的两个对象的虚函数表是怎么维护的?编译器为每一个类维护一个虚函数表,每个对象的首地址保存着该虚函数表的指针,同一个类的不同对象实际上指向同一张虚函数表。 纯虚函数如何定义,为什么对于存在虚函数的类中析构函数要定义成虚函数 析构函数能抛出异常吗 构造函数和析构函数中调用虚函数吗?指针和引用的区别指针与数组千丝万缕的联系智能指针是怎么实现的?什么时候改变引用计数? 构造函数中计数初始化为1;拷贝构造函数中计数值加1;赋值运算符中,左边的对象引用计数减一,右边的对象引用计数加一;析构函数中引用计数减一;在赋值运算符和析构函数中,如果减一后为0,则调用delete释放对象。share_prt与weak_ptr的区别? C++四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_cast内存对齐的原则内联函数有什么优点?内联函数与宏定义的区别?C++内存管理STL里的内存池实现 STL里set和map是基于什么实现的。红黑树的特点?STL里的其他数据结构和算法实现也要清楚 这个问题,把STL源码剖析好好看看,不仅面试不慌,自己对STL的使用也会上升一个层次。必须在构造函数初始化式里进行初始化的数据成员有哪些 模板特化 定位内存泄露 (1)在windows平台下通过CRT中的库函数进行检测; (2)在可能泄漏的调用前后生成块的快照,比较前后的状态,定位泄漏的位置 (3)Linux下通过工具valgrind检测手写strcpy,memcpy,strcat,strcmp等函数这一块考察范围太广,主要靠多刷题吧,牛客网,剑指OFFER,LeetCode等。
几十亿个数经常要查找某一个数在不在里面,使用布隆过滤器,布隆过滤器的原理。布隆过滤器可能出现误判,怎么保证无误差?
参考书籍:《图解TCP/IP》,《TCP/IP详解 卷一》,《图解HTTP》,《HTTP权威指南》
TCP与UDP之间的区别 (1) IP首部,TCP首部,UDP首部 (2) TCP和UDP区别 (3) TCP和UDP应用场景 (4) 如何实现可靠的UDPTCP三次握手与四次挥手详细说明TCP状态迁移过程 (1) 三次握手和四次挥手状态变化; (2) 2MSL是什么状态?作用是什么? (3)三次握手为什么不是两次或者四次?TCP相关技术 TCP重发机制,Nagle算法TCP的拥塞控制使用的算法和具体过程TCP的窗口滑动 TCP客户与服务器模型,用到哪些函数UDP客户与服务器模型,用到哪些函数域名解析过程,ARP的机制,RARP的实现Ping和TraceRoute实现原理http数据由请求行,首部字段,空行,报文主体四个部分组成 首部字段分为:通用首部字段,请求首部字段,响应首部字段,实体首部字段
https与http的区别?如何实现加密传输?加解密方式?浏览器中输入一个URL发生什么,用到哪些协议?至少了解攻击的原理和基本的防御方法,常见的攻击方法有一下几种
SQL注入XSSCSRFSYN洪水攻击APR欺骗主要参考书籍:《数据库系统概念》,《高性能MySQL》
SQL语言(内外连接,子查询,分组,聚集,嵌套,逻辑)MySQL索引方法?索引的优化?InnoDB与MyISAM区别?事务的ACID事务的四个隔离级别查询优化(从索引上优化,从SQL语言上优化)B-与B+树区别?MySQL的联合索引(又称多列索引)是什么?生效的条件?分库分表主要参考书籍:《现代操作系统》,《APUE》,《UNP》,《LINUX内核设计与实现》,《深入理解LINUX内核》
进程与线程(1) 进程与线程区别? (2) 线程比进程具有哪些优势? (3) 什么时候用多进程?什么时候用多线程? (4) LINUX中进程和线程使用的几个函数? (5) 线程同步? 在Windows下线程同步的方式有:互斥量,信号量,事件,关键代码段 在Linux下线程同步的方式有:互斥锁,自旋锁,读写锁,屏障(并发完成同一项任务时,屏障的作用特别好使) 知道这些锁之间的区别,使用场景?
进程间通讯方式 匿名管道与命名管道的区别:匿名管道只能在具有公共祖先的两个进程间使用。共享文件映射mmap mmap建立进程空间到文件的映射,在建立的时候并不直接将文件拷贝到物理内存,同样采用缺页终端。mmap映射一个具体的文件可以实现任意进程间共享内存,映射一个匿名文件,可以实现父子进程间共享内存。常见的信号有哪些?:SIGINT,SIGKILL(不能被捕获),SIGTERM(可以被捕获),SIGSEGV,SIGCHLD,SIGALRM 内存管理 虚拟内存的作用?虚拟内存的实现?操作系统层面对内存的管理?内存池的作用?STL里内存池如何实现?进程空间和内核空间对内存的管理不同?Linux的slab层,VAM?伙伴算法高端内存 进程调度 Linux进程分为两种,实时进程和非实时进程;优先级分为静态优先级和动态优先级,优先级的范围;调度策略交互进程通过平均睡眠时间而被奖励; 死锁(1) 死锁产生的条件; (2) 死锁的避免;
命令行 Linux命令 在一个文件中,倒序打印第二行前100个大写字母 cat filename | head -n 2 | tail -n 1 | grep '[[:upper:]]' -o | tr -d '\n'| cut -c 1-100 | rev 与CPU,内存,磁盘相关的命令(top,free, df, fdisk)网络相关的命令netstat,tcpdump等sed, awk, grep三个超强大的命名,分别用与格式化修改,统计,和正则查找ipcs和ipcrm命令查找当前目录以及字母下以.c结尾的文件,且文件中包含”hello world”的文件的路径创建定时任务 IO模型 五种IO模型:阻塞IO,非阻塞IO,IO复用,信号驱动式IO,异步IOselect,poll,epoll的区别 线程池,内存池 自己动手实现一遍