面 试 宝 典

《网络》

在浏览器中输入url,回车发生了什么
DNS的分级查找
3次握手都发送了什么数据包
设计路由表查找算法,满足最长匹配,(前缀树,根据需求不同设计4层的或32层的)
硬链接、符号链接的区别
如何处理粘包
ARP协议介绍,ARP表建立的过程
五层网络模型介绍一下,同时介绍一下每一层有哪些协议
http协议,connection选项的作用
IO模型有哪些
用的最多的应该算IO多路复用模型,讲讲它的优缺点
条件变量应用场景
ARP协议是干什么的,属于哪一层
阻塞与非阻塞,IO模型
http长连接短连接说一下
路由器是哪一层的,有什么功能,路由寻址怎么找的,路由表存了什么
ping协议会发生什么事情(当时以为问ICMP,结果下面引导到了dns)
dns协议,让后udp还是tcp
http response里面都有哪些内容(大概说了一部分)
B 树的特点,B 树与B树的区别
get/post 区别
HTTP 怎么建立连接
计算机开机后如何让这台机器联网,说一下mac地址找IP,然后ping测试
了解DHCP协议么
http的报文格式 ,说几个头部
http和https的区别? https加密实现?
错误的状态码
状态码 502是什么?
HTTP协议有状态吗?
cookie和session的作用和工作方式说一下。
HTTPS加密流程说一下,证书是怎么工作的

TCP:HTTP,FTP,SMTP,TENET,
UDP:BOOTP,DHCP,NTP,TFTP,SNMP
DNS可以基于TCP,也可以基于UDP

  • IP分片的危害?
    https://www.cnblogs.com/glacierh/p/3653442.html
  • 为什么选择 IP 层负责分片(因为网络层几乎只有IP协议,更纯粹效率高)
    https://www.zhihu.com/question/22181709
  • TCP滑动窗口
    https://zhuanlan.zhihu.com/p/60893857
    三次握手过程中有哪些不安全性
    udp报文什么时候乱序,为社么乱序
    可不可以三次挥手(可以,server不发包的时候给一条FIN=1的ACK)?
    三次握手期间除了建立连接,还有互相交换什么信息?(窗口大小)
    Tcp四次挥手,为什么要有Time-Wait的两个往返时间?如果有大量的Time-Wait会占用哪些资源?最应该的care的资源是什么?(端口号)
    tcp四次挥手过程?最后为什么等待2msls,TCP的TIME_WAIT出现在哪一端?作用是什么?

《C++基础》

析构函数中不建议抛出异常,这是因为析构函数的调用表示一个对象的销毁(包括对象所占有的资源的释放),如果此时抛出异常,对象将游离在内存之中,对象所占用的资源也将得不到释放

区别一:物理地址存储的连续性
数组的元素在内存中是连续存放的。
链表的元素在内存中不一定是连续存放的,通常是不连续的。
区别二:访问速度
数组的访问速度很快,因为数组可以根据数组可以根据下标进行快速定位。
链表的访问速度较慢,因为链表访问元素需要移动指针。
区别三:添加、删减元素速度
数组的元素增删速度较慢,因为需要移动大量的元素。
链表的元素增删速度较快,因为只需要修改指针即可。

#include 包含文件的时候,尖括号和双引号有什么区别,如果双引号中是库文件的话,会发生什么

#include <>格式:引用标准库头文件,编译器从标准库目录开始搜索
#incluce ""格式:引用非标准库的头文件,编译器从用户的工作目录开始搜索

1、内联函数在编译时展开,而宏在预编译时展开
2、在编译时,内联函数直接被嵌入到目标代码中去,宏只是一个简单文本替换。
3、内联函数可以进行诸如类型安全检查、语句是否正确等编译功能,
5、宏在定义时要小心处理宏参数,一般用括号括起来,否则容易出现二义性。

nullptr, auto, 范围for循环, 初始化列表,尖括号>, Lambda 表达式
https://blog.csdn.net/jiange_zh/article/details/79356417

  • 左值右值的区别

左值:有名字的变量(对象),可以被赋值,可以在多条语句中使用。
右值:没有名字的临时变量(对象),不能被赋值,只能在一条语句中出现。
https://blog.csdn.net/weixin_36691991/article/details/88623482

  • 内存4G,malloc申请4.1G会发生什么 (不行)

OS给每个进程理论上都’分配’了2^32B的空间(逻辑空间),这个逻辑空间的大小与实际内存大小和外存大小都没有关系,只由计算机的地址结构决定(也即是CPU地址寄存器的位数)

    char buffer[32] = "quantum6";
    buffer[33] = 0x01;
    buffer[34] = 0x00;
    buffer[35] = 0x00;
    buffer[36] = 0x00;
    int* p = nullptr;
    p = (int*)&buffer[33];
  • extern作用,在函数内可以使用么(不行)

对变量而言,如果你想在本源文件中使用另一个源文件的变量(注意:此时这个变量应该是全局变量,定义它的位置是在所有函数之外),就需要在使用前用extern声明该变量,或者在头文件中用extern声明该变量;
对函数而言,如果你想在本源文件中使用另一个源文件的函数(注意:此时这个函数应该是全局函数,定义它的位置是在所有函数之外),就需要在使用前用声明该函数,声明函数加不加extern都没关系,所以在头文件中函数可以不用加extern。

  • extern int a 不需要建立存储空间,其中 变量a是在别的文件中定义的。
  • 个人习惯提高代码可读性, 头文件中用extern,因为头文件不能定义一个变量
  • 头文件为什么不能定义变量

注意:但类的定义,和const变量, inline函数实体可以在头文件定义
https://www.cnblogs.com/xxiaoye/p/3956847.html

  • vector迭代器作用

模板使得算法独立于存储的数据类型,而迭代器使算法独立于使用的容器类型。

  • 动态库和静态库,运行时不想加载某个动态库的内容怎么办
    https://zhuanlan.zhihu.com/p/242471856
  • 动态库的静态/动态链接,动态库和静态库区别,如何再运行时调用动态库

注意动态库中的.lib文件叫导入库和静态库.lib完全不同
https://blog.csdn.net/qq_25408423/article/details/81289823?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-3&spm=1001.2101.3001.4242

new 失败是抛出异常的,malloc返回一个NULL指针.

  • 堆栈溢出的原因

1.函数调用层次太深。函数递归调用时,系统要在栈中不断保存函数调用时的现场和产生的变量,如果递归调用太深,就会造成栈溢出,这时递归无法返回。再有,当函数调用层次过深时也可能导致栈无法容纳这些调用的返回地址而造成栈溢出。
2.动态申请空间使用之后没有释放。由于C语言中没有垃圾资源自动回收机制,因此,需要程序主动释放已经不再使用的动态地址空间。申请的动态空间使用的是堆空间,动态空间使用不会造成堆溢出。
3.数组访问越界。C语言没有提供数组下标越界检查,如果在程序中出现数组下标访问超出数组范围,在运行过程中可能会内存访问错误。
4.指针非法访问。指针保存了一个非法的地址,通过这样的指针访问所指向的地址时会产生内存访问错误。

空类占1个字节,因为对象是有地址的 (占位符),这个地址里边保存的是1个字节才能去地址。
后面的占4+4+4 = 12字节, 因为类也内存对齐

C++菱形继承是怎么解决的,什么情况下菱形继承会出现问题。

1.二义性 2.数据的冗余
https://blog.csdn.net/sssssuuuuu666/article/details/75736954

《操作系统》

select poll epoll(讲了区别,epoll底层数据结构,ET、LT)
解释一下内存池的概念

  • Linux IO模型,哪些属于同步IO,哪些属于异步IO

五种IO模型包括:阻塞IO、非阻塞IO、IO多路复用、信号驱动IO、异步IO。
https://zhuanlan.zhihu.com/p/115912936

epoll的底层实现,红黑树了解多少
进程和线程的区别
进程虚拟地址空间,mmap映射和动态链接库在哪个位置
fork,vfork,clone的关系,clone是为了创建线程的吗?
调用malloc时会立即分配物理内存吗?页表中一定会对应物理页框吗?swap交换空间
linux中基本的操作命令,一个日志文件很大,vim打开很费时间,怎么快速搜索某个内容
查看端口号情况
查看进程id、内存使用情况等
查看打开的文件or描述符
常用哪些linux命令,查看线程用哪个命令,会用vim吗
epoll的机制,什么时候用ET
怎么查看端口号占用情况
有一个日志文件,里面每一行都有ip、time、context等信息,怎么查询某个ip有多少个
线程安全队列该怎么实现,说了一下生产者消费者模型
如果不用锁怎么实现,说的自旋锁忙等待
调用fork,发生了些什么事情
32位机器,一个程序可以用的内存有多少
shell脚本了解吗
互斥锁会有一些性能开销,不想用怎么办
什么时候会发生死锁在代码实现上怎么解决死锁呢
有些线程处于死锁状态了,怎么在另一个线程中检测出来
那一个线程可以访问另一个线程的线程栈吗,会发生什么
链表了解吗,跳表呢
进程虚拟地址空间划分,分别存储什么
线程栈通常是多少
协程了解吗
死锁(死锁条件、避免死锁、死锁检测、死锁预防)
僵尸进程?僵尸进程和孤儿进程区别是什么?孤儿进程如何善终?进程的状态(逻辑状态和ps指令看到的状态分别回答)
虚拟内存是什么用途,如何实现
讲一下共享内存的实现。
父子进程间共享哪些资源。
多线程之间共享哪些资源。
缓存机制有了解吗?缓存的替换策略有哪些,说一下。
缺页中断是什么?
换页算法有哪些?
fork函数介绍一下,怎么用?fork的时候内存是怎么变化的?
epoll的边缘触发和水平触发了解吗?分别说一下特点和区别。
阻塞队列具体是怎么实现的,怎么优化它。(锁的粒度以及不空的时候读不加锁)
进程虚拟地址空间布局
进程间通讯的方式
进程调度算法
进程间通信机制
了解共享内存吗(说了下虚拟页面到物理页帧的映射),后问如果这两个进程都终止了,共享内存还在吗
互斥锁和读写锁有什么区别
自旋锁是什么,怎么实现的
低地址到高地址说一下进程的虚拟地址空间
共享库的映射区是做什么的,讲了下mmap映射到文件对象,设置为有效位无效,访问时再按需调页
进程虚拟地址空间分布
linux中CPU调度怎么做的
操作系统内存分配与释放
这个进程队列是什么队列
进程状态都有哪些,怎么转换
说一下进程线程,fork和vfork
fork时内存空间发生了哪些变化
设计一个内存池,满足内存申请、内存释放以及内存碎片管理等基本功能
作业调度的几种方式。
负载均衡的算法你了解哪些?项目中的负载均衡是怎么实现的。
进程间通讯的方式,未命名管道和命名管道的区别

《数据库》

  • 数据库基础
    http://datawhale.club/c/team-learning/IntroductionToSQL/13
    mysql中innodb和myisam的区别,行锁的实现原理
    redis可以做什么,mysql buffer pool 可以做缓存吗?
    mysql join有哪些,笛卡尔积
    如何优化一条sql的查询语句
    msyql有哪些索引
    说一下数据库索引,然后说一下索引的优缺点
    redis都有哪些数据类型
    索引的使用条件 优化 最左原则
    sql语句查询每个班级的平均分,查询班级平均分 排名前三的班。
    覆盖索引了解吗?
    单列索引,如果查询的字段不是主键,一定会搜索两次吗?
    事务的隔离界别,说一下幻读
    文件里面 两亿个数,找到最大100个的
    系统的文件日志,几千万条,怎么找出出现最多的ip地址。
    mysql有哪些引擎,优劣。备份怎么实现。
    主键索引和普通索引有什么区别。
    查询慢怎么优化。
    mysql中索引为什么会增加查询速度,索引的内部怎么实现?

《手撕代码》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容