# 【NO.428】最强阿里巴巴历年经典面试题汇总：C++研发岗

![img](https://pic1.zhimg.com/80/v2-8c0605f70d3c3cc20b6a6407525943d0_720w.webp)

（1）、B树、存储模型

（2）、字典树构造及其优化与应用

（3）、持久化数据结构，序列化与反序列化时机（4）、在无序数组中找最大的K个数?

（4）、大规模文本文件，全是单词，求前10词频的单词

（5）、堆排序与其在求10词频问题中的应用

（6）、字典树与其在统计词频上的应用

（7）、红黑树的特性与其在C++ STL中的应用

（8）、红黑树的调整

（9）、贪心算法与其弊端

（10）、能取得全局最优解的算法

（11）、动态规划的原理与本质

（12）、01背包问题的详细解释

（13）、进程间通信方式

（14）、数据库中join的类型与区别

（15）、数据库的ACID

（16）、实现bitmap数据结构，包括数据的存储与插入方式

（17）、实现unordered_map，键为string，value不限

（18）、实现unordered_map过程中的冲突解决办法

（19）、一串int型整数存放磁盘上的压缩存储方式，包括写入与读取及内存无法一次性读取时的解决办法

（20）、对Java的了解

（21）、Bloom过滤器处理大规模问题时的持久化，包括内存大小受限、磁盘换入换出问题

（22）、线程池的了解、优点、调度处理方式和保护任务队列的方式

（23）、对象复用的了解

（24）、零拷贝的了解

（25）、Linux的I/O模型

（26）、异步I/O的详细解释

（27）、线程池对线程的管理方式，包括初始化线程的方法、线程创建后的管理、指派任务的方式

（28）、同步I/O与异步I/O的区别

（29）、Direct I/O 和其与异步I/O的区别

（30）、Linux内核如何调用Direct I/O

（31）、Bloom过滤器的优点与原理

（32）、字符串hash成状态位的具体实现方式

（33）、hash函数如何保证冲突最小

（34）、文件读写使用的系统调用

（35）、文件读写中涉及的磁盘缓冲区与其手动flush问题

（36）、数据库join的具体含义

（37）、struct与class的区别

（38）、STL库的介绍

（39）、vector使用的注意点及其原因

（40）、频繁对vector调用push_back()对性能的影响和原因

（41）、vector重新分配内存的大小与方式

（42）、hashmap的实现方式

（43）、map的实现方式

（44）、C++虚函数的具体实现原理

（45）、实现编译器处理虚函数表应该如何处理

（46）、析构函数一般写成虚函数的原因

（47）、解释哲学家进餐问题

（48）、描述银行家算法

（49）、实现一种算法解决哲学家进餐问题

（50）、大数量整数的去重问题

（51）、如果用bitmap解决大数量整数去重问题，计算当全为int型整数时需要消耗的内存

（52）、算法题：环形公路上加油站算法问题

现有一圆环形路，路上有n个加油站，第i个加油站储存有N[i]升容量的油，与下一个加油站之间有一定的距离g[i]，一汽车初始无油，假设该车每公里消耗1升油，请问该车从哪个加油站出发可以绕该环形路行驶一圈。

（53）、多个服务器通信，线程池的设定

（54）、哈希表的冲突解决方式

（55）、哈希表在桶固定的情况下，时间复杂度。怎么优化？

（56）、多线程中哈希表保证线程安全

（57）、哈希表特别大，桶特别多的时候怎么加锁

（58）、C语言变量存放位置

（59）、栈上的分配内存快还是堆上快

（60）、http的长连接和短连接是什么，各有什么优缺点，然后使用场景

（61）、在一个浏览器里面输入一个网址，后回车，在这后面发生了什么？

（62）、进程线程的区别，多进程与多线程的区别

（63）、什么是生产者消费者模型？如果一个人洗碗，另一个人马上用碗，是生产者消费者模型吗？

（64）、GET/POST的区别，GET/POST的安全性问题，假如你来实现，你怎么实现GET/POST的安全性

（65）、你做服务器压力测试时，用什么测试，如何配置参数，吞吐量大小，并发量大小

（66）、类似Nginx这种web服务器是用什么数据结构实现定时器事件的，四叉堆知道是什么吗，与二叉堆有什么区别？

（67）、动态规划与贪心算法的区别，什么情况下，动态规划可以转换为贪心算法

（68）、说一下快排，快排是稳定的吗?为什么？哪些排序算法稳定？哪些不稳定？

（69）、数据库有哪些索引，你知道哪些索引引擎，这些索引引擎有什么区别

（70）、epoll与select的区别，epoll在什么情况下吞吐率比较高？

（71）、非阻塞与异步的区别？

（72）、HTTP1.0和HTTP1.1的区别，服务器端如何判断是长连接还是短连接？

（73）、HTTP2.0的 新特性，它是如何实现共用一个长连接？

（74）、tcp如何连接到服务器，你如何判断tcp连接到服务器，你服务器的输入是什么？

（75）、epoll的底层实现

**完整的linux c/c++高级开发技术路线图**

![img](https://pic2.zhimg.com/80/v2-dd61a798de3ebe741df54e9eb6da1a7d_720w.webp)

![img](https://pic2.zhimg.com/80/v2-b7bf75892f81a3ee5a9ad3b9c0f9f4e1_720w.webp)

![img](https://pic1.zhimg.com/80/v2-6a3a9de5f37c74528accdb5b84728034_720w.webp)

![img](https://pic4.zhimg.com/80/v2-522e78c886f5121c08990e57e9cd2b3b_720w.webp)

![img](https://pic3.zhimg.com/80/v2-82b0ac03ee96fa62235d85bbc6fbb242_720w.webp)

![img](https://pic2.zhimg.com/80/v2-d84edf93cf10529900617d85c19eda49_720w.webp)

![img](https://pic4.zhimg.com/80/v2-50cc437d64513556a447ad9b64591c83_720w.webp)

原文地址：https://zhuanlan.zhihu.com/p/372020083

作者：linux