├── 面经 ├── 虎牙面经 │ ├── 二面HR面.txt │ ├── 经理面.txt │ ├── 一面技术面.txt │ ├── 二面技术面.txt │ └── 虎牙面经-书记.txt ├── 京东 │ ├── 一面.txt │ └── 二面.txt ├── 头条 │ └── 一面.txt ├── 奇虎360 │ ├── 一面.txt │ └── 二面.txt ├── 小米 │ ├── 小米一面.txt │ └── 小米二面.txt ├── 海康威视 │ ├── HR面.txt │ └── 一面.txt ├── 深信服 │ ├── 我的一面.txt │ ├── 我的二面.txt │ └── 盛璐晨.txt ├── 百度 │ └── 百度一面.docx └── 腾讯 │ ├── 大腚一面.txt │ ├── 二面(总监面).txt │ └── 一面(leader面).txt ├── .gitignore ├── 知识点总结 ├── 设计模式高频面试问题.md ├── Linux高频面试问题.md ├── 算法高频面试问题.md ├── 数据库高频面试问题.md ├── 操作系统高频面试问题.md ├── 网络高频面试问题.md └── C++高频面试问题.md └── README.md /面经/虎牙面经/二面HR面.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pdf 2 | -------------------------------------------------------------------------------- /面经/京东/一面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/京东/一面.txt -------------------------------------------------------------------------------- /面经/京东/二面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/京东/二面.txt -------------------------------------------------------------------------------- /面经/头条/一面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/头条/一面.txt -------------------------------------------------------------------------------- /面经/奇虎360/一面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/奇虎360/一面.txt -------------------------------------------------------------------------------- /面经/奇虎360/二面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/奇虎360/二面.txt -------------------------------------------------------------------------------- /面经/小米/小米一面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/小米/小米一面.txt -------------------------------------------------------------------------------- /面经/小米/小米二面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/小米/小米二面.txt -------------------------------------------------------------------------------- /面经/海康威视/HR面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/海康威视/HR面.txt -------------------------------------------------------------------------------- /面经/海康威视/一面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/海康威视/一面.txt -------------------------------------------------------------------------------- /面经/深信服/我的一面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/深信服/我的一面.txt -------------------------------------------------------------------------------- /面经/深信服/我的二面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/深信服/我的二面.txt -------------------------------------------------------------------------------- /面经/深信服/盛璐晨.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/深信服/盛璐晨.txt -------------------------------------------------------------------------------- /面经/百度/百度一面.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/百度/百度一面.docx -------------------------------------------------------------------------------- /面经/腾讯/大腚一面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/腾讯/大腚一面.txt -------------------------------------------------------------------------------- /面经/虎牙面经/经理面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/虎牙面经/经理面.txt -------------------------------------------------------------------------------- /面经/腾讯/二面(总监面).txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/腾讯/二面(总监面).txt -------------------------------------------------------------------------------- /面经/虎牙面经/一面技术面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/虎牙面经/一面技术面.txt -------------------------------------------------------------------------------- /面经/虎牙面经/二面技术面.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/虎牙面经/二面技术面.txt -------------------------------------------------------------------------------- /面经/腾讯/一面(leader面).txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/腾讯/一面(leader面).txt -------------------------------------------------------------------------------- /面经/虎牙面经/虎牙面经-书记.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miller-Xie/CS_Review/HEAD/面经/虎牙面经/虎牙面经-书记.txt -------------------------------------------------------------------------------- /知识点总结/设计模式高频面试问题.md: -------------------------------------------------------------------------------- 1 | ## 设计模式常见面试问题 2 | 3 | * 介绍熟悉的设计模式(单例,简单工厂,观察者模式等等) 4 | 5 | * 写单例模式(饿汉模式和懒汉模式),线程安全版本 6 | 7 | * MVC设计模式 8 | 9 | **注意**:设计模式一般都不会考太多 -------------------------------------------------------------------------------- /知识点总结/Linux高频面试问题.md: -------------------------------------------------------------------------------- 1 | ## Linux面试问题汇总 2 | 3 | * Linux的I/O模型介绍以及同步异步阻塞非阻塞的区别(超级重要) 4 | 5 | * 文件系统的理解(EXT4,XFS,BTRFS) 6 | 7 | * 文件处理grep,awk,sed这三个命令必知必会 8 | 9 | * IO复用的三种方法(select,poll,epoll)深入理解,包括三者区别,内部原理实现? 10 | 11 | * Epoll的ET模式和LT模式(ET的非阻塞) 12 | 13 | * 查询进程占用CPU的命令(注意要了解到used,buf,cache代表意义) 14 | 15 | * linux的其他常见命令(kill,find,cp等等) 16 | 17 | * shell脚本用法 18 | 19 | * 硬连接和软连接的区别 20 | 21 | * 文件权限怎么看(rwx) 22 | 23 | * 文件的三种时间(mtime, atime,ctime),分别在什么时候会改变 24 | 25 | * Linux监控网络带宽的命令,查看特定进程的占用网络资源情况命令 -------------------------------------------------------------------------------- /知识点总结/算法高频面试问题.md: -------------------------------------------------------------------------------- 1 | ## 算法面试问题 2 | 3 | * 时间复杂度的计算方式(Master公式计算递归函数的时间复杂度) 4 | * 红黑树的了解(平衡树,二叉搜索树),使用场景 5 | * 红黑树在STL上的应用 6 | * 贪心算法和动态规划的区别 7 | * 判断一个链表是否有环,如何找到这个环的起点 8 | * 实现一个strcpy函数(或者memcpy),如果内存可能重叠呢 9 | * 实现一个循环队列 10 | * 排序算法(写快排,归并排序,堆排序),算法的时间复杂度,空间复杂度,是否稳定等 11 | * 快排存在的问题,如何优化 12 | * 反转一个链表 13 | * Top K问题(可以采取的方法有哪些,各自优点?) 14 | * Bitmap的使用,存储和插入方法 15 | * 二叉树的先序、中序、后序遍历(非递归实现) 16 | * 二叉树的公共祖先(简单地说,剑指offer上的题大都是高频题) 17 | * 1-n中有多少个1 18 | * 字典树(前缀树)的理解以及在统计上的应用 19 | * 并查集的实现(低频) 20 | * 数组的全排列 21 | * N个骰子出现和为m的概率 22 | * 海量数据问题(可参考左神的书) 23 | * 一致性哈希 24 | * 线段树的实现(一般是区间求解问题,低频) 25 | * KMP,Manacher,Bfprt算法(进阶) 26 | 27 | **注意**:以上列出的算法题只是举例说明,算法能力主要还是靠刷题来提高,可以参考仓库[面试高频算法题总结]() -------------------------------------------------------------------------------- /知识点总结/数据库高频面试问题.md: -------------------------------------------------------------------------------- 1 | ## 数据库常见面试问题 2 | 3 | ### 数据库 4 | 5 | * 关系型和非关系型数据库的区别(各自优点) 6 | * 常用SQL语句(DDL,DML,DCL,TCL) 7 | * 数据库中join的类型与区别(inner join, outer join, cross join, natural join, self join),注意适用场景和sql语句的编写 8 | * 数据库的索引类型 9 | * 聚集索引和非聚集索引的区别(叶节点存储内容) 10 | * 唯一性索引和主码索引的区别 11 | * 索引的优缺点,什么时候使用索引,什么时候不能使用索引(重点) 12 | * 索引的底层实现(B+树,为何不采用红黑树,B树) 13 | * B树和B+树具体实现 14 | * 索引最左前缀问题 15 | * Mysql的优化(高频,索引优化,性能优化) 16 | * 数据库引擎介绍,Innodb和Myisam的特点与区别 17 | * 数据库中事务的ACID(四大特性都要能够举例说明,理解透彻,比如原子性和一致性的关联,隔离性不好会出现的问题) 18 | * 数据库隔离性设置不同会出现的问题(脏读、不可重复读、丢失修改、幻读) 19 | * 数据库的隔离级别,Mysql和Oracle的隔离级别分别是什么 20 | * 数据库连接池的作用 21 | * Mysql的表空间方式,各自特点 22 | * 分布式事务 23 | * 数据库的范式 24 | * 数据的锁的种类,加锁的方式 25 | * 视图的作用与使用方法(如何删除等) 26 | * 分库分表,主从复制,读写分离。(我不会,也没碰到过) 27 | * 项目中哪里用到了数据库,怎么用的 28 | * Memcache和Redis了解 29 | 30 | ### 大数据和分布式 31 | 32 | * Hadoop框架下,各个组件的构成及作用 33 | * BASE原则,CAP原则 34 | * 一致性算法Raft的过程 35 | * TIDB原理 36 | 37 | > [存储](https://pingcap.com/blog-cn/tidb-internal-1/) 38 | > 39 | > [调度](https://pingcap.com/blog-cn/tidb-internal-3/) 40 | > 41 | > [计算](https://pingcap.com/blog-cn/tidb-internal-2/) 42 | 43 | * [HBase的存储原理](https://www.cnblogs.com/panpanwelcome/p/8716652.html) 44 | * [HDFS运行原理](https://blog.csdn.net/dpengwang/article/details/79297435) 45 | * Hive的了解 46 | * Spark的了解 -------------------------------------------------------------------------------- /知识点总结/操作系统高频面试问题.md: -------------------------------------------------------------------------------- 1 | ## 操作系统常见面试问题 2 | 3 | * 进程与线程的区别和联系 4 | * 一个进程可以创建多少线程,和什么有关 5 | * 一个程序从开始运行到结束的完整过程(四个过程) 6 | * 进程通信方法(Linux和windows下),线程通信方法(Linux和windows下) 7 | * 文件读写使用的系统调用 8 | * 怎么回收线程 9 | * 守护进程、僵尸进程和孤儿进程 10 | * [处理僵尸进程的两种经典方法](https://www.cnblogs.com/scut-fm/archive/2013/10/29/3393686.html) 11 | * 进程终止的几种方式 12 | * linux中异常和中断的区别 13 | * 一般情况下在Linux/windows平台下栈空间的大小 14 | * 五种IO模型 15 | * 守护进程 16 | * 程序从堆中动态分配内存时,虚拟内存上怎么操作的 17 | * 交换空间与虚拟内存的关系 18 | * 堆和栈的区别;从堆和栈上建立对象哪个快?(考察堆和栈的分配效率比较) 19 | * 内存泄漏和内存溢出 20 | * 常见内存分配方式和错误 21 | * 堆内存和栈内存的区别 22 | * [可重入函数和可重入内核](https://blog.csdn.net/chj1234chj/article/details/78162443?locationNum=7&fps=1) 23 | * 操作系统动态内存分配的几种策略 24 | * 内部碎片和外部碎片 25 | * 系统调用进入内核态的过程 26 | * 内核态和用户态的区别 27 | * 常见的进程调度算法以及linux的进程调度 28 | * 中断、陷阱、故障和终止 29 | * 进程通信方法 30 | 31 | > 同步进程通信:管道、FIFO(命名管道)、消息队列、共享内存、信号量(用于进程同步)、socket套接字 32 | > 33 | > 异步进程通信:信号 34 | 35 | * 线程互斥和同步的方法 36 | 37 | > 互斥:互斥量、读写锁、自旋锁 38 | > 39 | > 同步:轮询结合互斥量、条件变量、信号量、屏障 40 | > 41 | 42 | * 内存对齐的规则和作用 43 | * 页面置换算法 44 | 45 | > 最佳 46 | > 47 | > 最近最久未使用(LRU) 48 | > 49 | > 最近未使用(NRU) 50 | > 51 | > 先进先出(FIFO) 52 | > 53 | > 第二次机会算法 54 | > 55 | > 时钟算法 56 | 57 | - 实现一个LRU页置换算法(或者FIFO置换算法) 58 | - 死锁的必要条件(怎么检测死锁,解决死锁问题),银行家算法(死锁避免) 59 | - 哲学家就餐,读者写者,生产者消费者(怎么加锁解锁,伪代码) 60 | - 海量数据的bitmap使用原理 61 | - 布隆过滤器原理与优点 62 | - 布隆过滤器处理大规模问题时的持久化,包括内存大小受限、磁盘换入换出问题 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CS复习记录 2 | 3 | * [面经]() 4 | 5 | * [面试问题汇总]() 6 | * [C++]() 7 | * [操作系统]() 8 | * [网络]() 9 | * [算法]() 10 | * [Linux基础]() 11 | * [数据库]() 12 | * [设计模式]() 13 | 14 | -------------------------------------------------------------------------------- /知识点总结/网络高频面试问题.md: -------------------------------------------------------------------------------- 1 | ## 网络常见面试问题 2 | 3 | * 网络的几种分层体系结构 4 | * 建立TCP服务器的各个系统调用 5 | * socket网络编程有哪些系统调用?其中close是一次就能直接关闭的吗,半关闭状态是怎么产生的? 6 | * MTU和MSS 7 | * 对路由协议的了解与介绍 8 | > 内部网关协议(IGP)包括RIP,OSPF,和外部网关协议EGP和BGP. 9 | * 路由协议所使用的算法 10 | * 路由表的项目包括哪些 11 | * 地址解析协议ARP的过程 12 | * 网际控制报文协议ICMP的过程 13 | * 动态主机配置协议DHCP的过程 14 | * WAN LAN WLAN VLAN VPN的区别 15 | * 介绍一下VPN(虚拟专用网) 16 | * TCP和UDP的区别 17 | * [TCP如何保证数据的正确性](https://blog.csdn.net/bjrxyz/article/details/75194716) 18 | * TCP和UDP相关的协议与端口号 19 | * TCP(UDP,IP)等首部的认识(http请求报文构成) 20 | * 网络层分片的原因与具体实现 21 | * TCP的三次握手与四次挥手的详细介绍(TCP连接建立与断开是热门问题) 22 | * TCP握手以及每一次握手客户端和服务器端处于哪个状态(11种状态) 23 | * 为什么使用三次握手,两次握手可不可以? 24 | * TIME_WAIT的意义(为什么要等于2MSL) 25 | * 超时重传机制(不太高频) 26 | * TCP怎么保证可靠性(面向字节流,超时重传,应答机制,滑动窗口,拥塞控制,校验等)? 27 | * 流量控制的介绍,采用滑动窗口会有什么问题(死锁可能,糊涂窗口综合征)? 28 | * TCP滑动窗口协议 29 | * 拥塞控制和流量控制的区别 30 | * TCP拥塞控制,算法名字?(极其重要) 31 | * 网页解析的过程与实现方法 32 | * 应用层协议常用的端口号 33 | * http协议与TCP联系 34 | * http/1.0和http/1.1的区别 35 | * http的请求方法有哪些?get和post的区别。 36 | * http的状态码 37 | * http和https的区别,由http升级为https需要做哪些操作 38 | * https的具体实现,怎么确保安全性 39 | * 在浏览器输入一个URL的流程,这个过程中浏览器做了什么(如www.baidu.com) 40 | * URL包括哪三个部分? 41 | * [长连接与短连接的区别以及使用场景](https://blog.csdn.net/zou2ouzou/article/details/76570171) 42 | * 一个机器能够使用的端口号上限是多少,为什么?可以改变吗?那如果想要用的端口超过这个限制怎么办? 43 | * 介绍一下ping的过程,分别用到了哪些协议 44 | * 对称密码和非对称密码体系 45 | * 数字证书的了解(高频) 46 | * 客户端为什么信任第三方证书 47 | * RSA加密算法(非对称加密,用公匙和私匙实现); 48 | * MD5原理(MD5是密码散列函数)=> SHA安全散列算法替代 49 | * 单条记录高并发访问的优化 50 | * [数据流和粘包问题](https://blog.csdn.net/bjrxyz/article/details/73351248) 51 | * 一台机器最多可以建立多少tcp连接? 52 | * 五种IO模型的过程和比较 53 | 54 | > 阻塞IO、非阻塞IO、IO多路复用、信号驱动IO、异步IO 55 | 56 | * IO多路复用(select,poll,epoll的区别) 57 | * 有没有抓过TCP包,描述一下 58 | * 一个ip配置多个域名,靠什么识别? 59 | * 服务器攻击(DDos攻击) 60 | * 重放攻击,IP欺骗 -------------------------------------------------------------------------------- /知识点总结/C++高频面试问题.md: -------------------------------------------------------------------------------- 1 | ## C++常见面试问题汇总 2 | 3 | * 指针和引用的区别 4 | * 堆和栈的区别 5 | * new和delete是如何实现的,new 与 malloc的异同处 6 | * C和C++的区别 7 | * C++、Java的联系与区别,包括语言特性、垃圾回收、应用场景等(java的垃圾回收机制) 8 | * Struct和class的区别 9 | * define 和const的区别(编译阶段、安全性、内存占用等) 10 | * 在C++中const和static的用法(定义,用途) 11 | * const和static在类中使用的注意事项(定义、初始化和使用) 12 | * C++中的const类成员函数(用法和意义),以及和非const成员函数的区别 13 | * C++的顶层const和底层const 14 | * final和override关键字 15 | * 拷贝初始化和直接初始化,初始化和赋值的区别 16 | * extern "C"的用法 17 | * 模板函数和模板类的特例化 18 | * C++的STL源码(这个系列也很重要,建议侯捷老师的**STL源码剖析**书籍与视频),其中包括内存池机制,各种容器的底层实现机制,算法的实现原理等) 19 | * STL源码中的hashtable的实现 20 | * STL中unordered_map和map的区别和应用场景 21 | * STL中vector的实现 22 | * STL容器的几种迭代器以及对应的容器(输入迭代器,输出迭代器,前向迭代器,双向迭代器,随机访问迭代器) 23 | > 顺序容器:vector,deque是随机访问迭代器;list是双向迭代器 24 | > 25 | > 容器适配器:stack,queue,priority_queue没有迭代器 26 | > 27 | > 关联容器:set,map,multiset,multimap是双向迭代器 28 | > 29 | > unordered_set,unordered_map,unordered_multiset,unordered_multimap是前向迭代器 30 | * STL中的traits技法 31 | > type_traits 32 | > 33 | > iterator_traits 34 | > 35 | > char traits 36 | > 37 | > allocator_traits 38 | > 39 | > pointer_traits 40 | > 41 | > array_traits 42 | * vector使用的注意点及其原因,频繁对vector调用push_back()对性能的影响和原因。 43 | * C++中的重载和重写的区别 44 | * C++内存管理,内存池技术(热门问题),与csapp中几种内存分配方式对比学习加深理解 45 | * 介绍面向对象的三大特性,并且举例说明每一个 46 | * C++多态的实现 47 | * C++虚函数相关(虚函数表,虚函数指针),虚函数的实现原理(包括单一继承,多重继承等)(拓展问题:为什么基类指针指向派生类对象时可以调用派生类成员函数,基类的虚函数存放在内存的什么区,虚函数表指针vptr的初始化时间) 48 | * C++中类的数据成员和成员函数内存分布情况 49 | * this指针 50 | * 析构函数一般写成虚函数的原因 51 | * 构造函数、拷贝构造函数和赋值操作符的区别 52 | 53 | > 构造函数:对象不存在,没用别的对象初始化 54 | > 55 | > 拷贝构造函数:对象不存在,用别的对象初始化 56 | > 57 | > 赋值运算符:对象存在,用别的对象给它赋值 58 | 59 | * 构造函数声明为explicit 60 | * 构造函数为什么一般不定义为虚函数 61 | * 构造函数的几种关键字(default delete 0) 62 | 63 | > = default:将拷贝控制成员定义为=default显式要求编译器生成合成的版本 64 | > 65 | > = delete:将拷贝构造函数和拷贝赋值运算符定义删除的函数,阻止拷贝(析构函数不能是删除的函数 C++Primer P450) 66 | > 67 | > = 0:将虚函数定义为纯虚函数(纯虚函数无需定义,= 0只能出现在类内部虚函数的声明语句处;当然,也可以为纯虚函数提供定义,不过函数体必须定义在类的外部) 68 | 69 | * 构造函数或者析构函数中调用虚函数会怎样 70 | * 纯虚函数 71 | * 静态类型和动态类型,静态绑定和动态绑定的介绍 72 | * 引用是否能实现动态绑定,为什么引用可以实现 73 | * 深拷贝和浅拷贝的区别(举例说明深拷贝的安全性) 74 | * 对象复用的了解,零拷贝的了解 75 | * 介绍C++所有的构造函数 76 | * 什么情况下会调用拷贝构造函数(三种情况) 77 | * 结构体内存对齐方式和为什么要进行内存对齐? 78 | * 内存泄露的定义,如何检测与避免? 79 | * 手写智能指针的实现(shared_ptr和weak_ptr实现的区别) 80 | * 智能指针的循环引用 81 | * 遇到coredump要怎么调试 82 | * 内存检查工具的了解 83 | * 模板的用法与适用场景 84 | * 成员初始化列表的概念,为什么用成员初始化列表会快一些(性能优势)? 85 | * 用过C++ 11吗,知道C++ 11哪些新特性? 86 | * C++的调用惯例(简单一点C++函数调用的压栈过程) 87 | * C++的四种强制转换 88 | 89 | > static_cast 90 | > 91 | > dynamic_cast 92 | > 93 | > const_cast 94 | > 95 | > reinterpret_cast 96 | 97 | * C++中将临时变量作为返回值的时候的处理过程(栈上的内存分配、拷贝过程) 98 | * C++的异常处理 99 | * volatile关键字 100 | * 优化程序的几种方法 101 | * public,protected和private访问权限和继承 102 | * class和struct的区别 103 | * decltype()和auto 104 | * inline和宏定义的区别 105 | * C++和C的类型安全 --------------------------------------------------------------------------------