计算机网络
从url输入到最后访问的过程
总体分为以下几个过程:
- DNS解析——解析域名,获取对应的ip地址
- TCP连接——TCP三次握手
- 浏览器发送http请求
- 服务器处理请求并返回http报文
- 浏览器解析返回的数据并渲染页面
- 断开连接:TCP四次挥手
参考:https://www.jianshu.com/p/8446d0ce9782
TCP/UDP区别
参考:https://www.jianshu.com/p/e8ea289b478e
参考:https://zhuanlan.zhihu.com/p/24860273
TCP为什么可靠,怎么实现可靠的
url为什么要编码
OSI参考模型以及每层作用和大概的工作方式
三次握手
四次挥手
Time wait/Close wait
Http/Https区别
GET/POST区别
拥塞控制的四种方式
粘包和拆包
Https加密过程
DNS查询过程
操作系统:
进程和线程的区别
进程和程序的区别
进程的通信方式
线程的通信方式
死锁的发生原因以及如何避免死锁
内存调度
Java语言特性:(因为简历上只写了简单了解Java,Java相关的就问的不多)
Java多线程的实现方式
Java和C++的区别
C++语言特性:
C++怎么实现多态的
虚函数表保存的是什么
内存对齐的原因
改变默认内存对齐长度的指令
菱形继承的相关问题
各类指针的分辨和区别(常量指针、指针常量、函数指针等)
空类大小以及为什么
C和C++的区别
map和set的底层实现及区别
红黑树的结构以及如何调整树结构的
函数指针的优势
编译的过程
怎么链接的
数据库:
数据库索引的结构以及为什么
索引的优劣势
索引失效可能会导致什么
索引为什么失效
事务是什么
锁的种类和区别
Linux相关:
各类Linux指令的附加操作含义(例如:ls -h)
智力题:
不均匀的两段绳子,每段能燃烧一小时,如何确定15分钟
算法
一面(1.5h):
链表奇升偶降
二面(1h):
合并有序数组
路径总和
合并区间
三面(1h):
计算C/C++文件中的注释个数,以及忽略注释
包含 //, /* * /, /* /**/等