C/C++

const 多态 什么类不能被继承(这个题目非常经典,我当时答出了 private 但是他说不好,我就没想到 final 我以为那个是 java 的)

网络

网络的字节序 网络知识 tcp 三次握手 各种细节 timewait 状态 tcp 与 udp 区别 概念 适用范围 TCP 四次挥手讲一下过程,最后一次 ack 如果客户端没收到怎么办,为什么挥手不能只有三次,为什么 time_wait。 对于 socket 编程,accept 方法是干什么的,在三次握手中属于第几次,可以猜一下,为什么这么觉得。 tcp 怎么保证有序传输的,讲下 tcp 的快速重传和拥塞机制,知不知道 time_wait 状态,这个状态出现在什么地方,有什么用? 知道 udp 是不可靠的传输,如果你来设计一个基于 udp 差不多可靠的算法,怎么设计? http 与 https 有啥区别?说下 https 解决了什么问题,怎么解决的?说下 https 的握手过程。 tcp 粘包半包问题怎么处理? keepalive 是什么东东?如何使用? 列举你所知道的 tcp 选项,并说明其作用。 socket 什么情况下可读? nginx 的 epoll 模型的介绍以及 io 多路复用模型 SYN Flood 攻击 流量控制,拥塞控制 TCP 和 UDP 区别,TCP 如何保证可靠性,对方是否存活(心跳检测) tcpdump 抓包,如何分析数据包 tcp 如何设定超时时间 基于 socket 网络编程和 tcp/ip 协议栈,讲讲从客户端 send()开始,到服务端 recv()结束的过程,越细越好 http 报文格式 http1.1 与 http1.0 区别,http2.0 特性 http3 了解吗 http1.1 长连接时,发送一个请求阻塞了,返回什么状态码? udp 调用 connect 有什么作用?

操作系统

进程和线程-分别的概念 区别 适用范围 它们分别的通讯方式 不同通讯方式的区别优缺点 僵尸进程 死锁是怎么产生的 CPU 的执行方式 代码中遇到进程阻塞,进程僵死,内存泄漏等情况怎么排查。 有没有了解过协程?说下协程和线程的区别? 堆是线程共有还是私有,堆是进程共有还是私有,栈呢 了解过协程吗(我:携程???不了解呜呜呜) 共享内存的使用实现原理(必考必问,然后共享内存段被映射进进程空间之后,存在于进程空间的什么位置?共享内存段最大限制是多少?) c++进程内存空间分布(注意各部分的内存地址谁高谁低,注意栈从高道低分配,堆从低到高分配) ELF 是什么?其大小与程序中全局变量的是否初始化有什么关系(注意.bss 段) 使用过哪些进程间通讯机制,并详细说明(重点) 多线程和多进程的区别(重点 面试官最最关心的一个问题,必须从 cpu 调度,上下文切换,数据共享,多核 cup 利用率,资源占用,等等各方面回答,然后有一个问题必须会被问到:哪些东西是一个线程私有的?答案中必须包含寄存器,否则悲催) 信号:列出常见的信号,信号怎么处理? i++是否原子操作?并解释为什么??????? 说出你所知道的各类 linux 系统的各类同步机制(重点),什么是死锁?如何避免死锁(每个技术面试官必问) 列举说明 linux 系统的各类异步机制 exit() _exit()的区别? 如何实现守护进程? linux 的内存管理机制是什么? linux 的任务调度机制是什么? 标准库函数和系统调用的区别? 补充一个坑爹坑爹坑爹坑爹的问题:系统如何将一个信号通知到进程?(这一题哥没有答出来)

Linux 系统

linux 的各种命令 给你场景让你解决 Linux 了解么,查看进程状态 ps,查看 cpu 状态 top。查看占用端口的进程号 netstat grep Linux 的 cpu 100 怎么排查,top jstack,日志,gui 工具 Linux 操作系统了解么 怎么查看 CPU 负载,怎么查看一个客户下有多少进程 Linux 内核是怎么实现定时器的 gdb 怎么查看某个线程 core dump 有没有遇到过,gdb 怎么调试 linux 如何设置 core 文件生成 linux 如何设置开机自启动 linux 用过哪些命令、工具 用过哪些工具检测程序性能,如何定位性能瓶颈的地方 netstat tcpdump ipcs ipcrm (如果这四个命令没听说过或者不能熟练使用,基本上可以回家,通过的概率较小 ^_^ ,这四个命令的熟练掌握程度基本上能体现面试者实际开发和调试程序的经验) cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟练掌握,设置修改权限 tcp 网络状态查看 各进程状态 抓包相关等相关命令 必须熟练掌握 awk sed 需掌握 gdb 调试相关的经验,会被问到

MongoDB

关于大数据存储的(mongodb hadoop)各种原理 mongodb 又问的深入很多

Redis

算法

设计模式

对于单例模式,有什么使用场景了,讲了全局 id 生成器,他问我分布式 id 生成器怎么实现,说了 zk,问我 zk 了解原理不,讲了 zab,然后就没问啦。 除了单例模式,知道适配器模式怎么实现么,有什么用

分布式架构

CAP BASE 理论 看你项目里面用了 etcd,讲解下 etcd 干什么用的,怎么保证高可用和一致性? 既然你提到了 raft 算法,讲下 raft 算法的基本流程?raft 算法里面如果出现脑裂怎么处理?有没有了解过 paxos 和 zookeeper 的 zab 算法,他们之前有啥区别? rpc 有没有了解

道友总结

tcp/udp,http 和 https 还有网络这块(各种网络模型,已经 select,poll 和 epoll)一定要非常熟悉 一定要有拿的出手的项目经验,而且要能够讲清楚,讲清楚项目中取舍,设计模型和数据表 分布式要非常熟悉 常见问题定位一定要有思路 操作系统,还是操作系统,重要的事情说三遍 系统设计,思路,思路,思路,一定要思路清晰,一定要总结下系统设计的流程 一点很重要的心得,平时 blog 和专栏看的再多,如果没有自己的思考不过是过眼云烟,根本不会成为自己的东西,就像内核态和用户态,平常也看过,但是没细想,突然要自己说,还真说不出来,这就很尴尬了。勿以浮沙筑高台,基础这种东西还是需要时间去慢慢打牢,多去思考和总结。