注意注意,本文不是用来背八股文的,现在八股大家都会,都背的很熟悉,所以需要在八股的基础上引导面试官,表示自己在面对互联网非常痴迷,执着于技术,主要是用来在面对基础八股文上作扩展,所以称为扩展题,多一个方向,给面试官一个发现你亮点的机会。只要吃透一点,提一嘴,通过率就大大增加哟。
是的,本文暂时只有网络篇,不知道受众面如何,而且一篇也说不完。
## 八股文plus
- restful的用法是怎样的,说下get 和post的区别和常见场景。
- 现在restful你感觉有什么缺点,有些公司只使用post,不使用常规的rest模式,只使用http协议作为api调用方式,这是为什么?
- 听说过graphQL吗?有相关的尝试吗?
- 了解RPC协议吗,说说看,为什么不直接使用HTTPS协议呢?用WebSocket不行吗?
- gRPC的特点有哪些,为什么会这样设计(解决了什么问题)
2.1 现在主流的web协议都是HTTPS了,少数环境还会用HTTP,那么HTTP目前的哪些使用场景仍在使用?
2.2 HTTPS目前的TLS版本是哪些?
2.3 我们知道现在已经有40%的站点开启了HTTP/2,那么HTTP/2为什么比HTTP版本要好?(或者问HTTP/2的优势在哪里?)
2.4 HTTP/2的队头阻塞听说过没有,说说看。
2.5 QUIC协议听说过吗?说说看
2.6 计算机网络的拥塞控制和流量控制的区别
2.7 在丢包率较高的情况下,我们使用了BBR协议,说说他的特点,相比传统的协议最大的改进在哪里。
2.8 在游戏,语音和部分媒体流(视频流/直播)环境下,KCP得到的广泛的应用,说说他的特点(这里可能不说kcp,但是会问FEC前项纠错,快速重传,RTO和ACK)
2.9 HTTP/2和HTTP/3的区别
2.10 我们知道Chrome内核的浏览器占有了80%的浏览器份额,那么其推进的HTTP/3已经默认支持了,目前占有率6%,那么HTTP/3相比HTTP/2有哪些改进呢?可以多说几条,毕竟变化比较大。(HTTP/3解决了什么问题)
3.1 TCP和UDP的区别
3.2 为什么改用UDP,用传统的TCP遇到了哪些困难?(这里涉及到TCP的快速重传,目前TCP的快速重传是失败了的。windows目前都没有使用,这里重点说TCP变更困难,涉及操作系统和内核)
- HTTP/3的0RTT是怎么实现的?
- 说个简单点的,TCP的三次握手和四次挥手说一下
- 为什么不用二次握手和三次挥手呢(全双工)
- TCP的2MSL为什么这样设计
- eBPF了解吗?现在很火的。
输入URL到显示网页发生了什么?
- 是的刚才说到了DNS,Chrome的DNS是怎么调用的?调用的DNS服务器采用了哪些技术(AnyCast,LB,分布式,刷新),DNS的基本原理是什么?
- 目前还有什么其他的调用DNS的方式吗?例如DOH。(这个就是考察各位是否真的用过,一般使用真实的DNS会接触上面的问题)
- DNS投毒攻击我们开发时候可以考虑用什么方式应对?
- 说说你对CDN的理解。
- CDN常见的操作有哪些。(这里挺多公司要你操作CDN的)
- 阿里云/AWS/Azure/Cloudflare用过吗?说说edge serverless的用途。
说说常见的网络攻击方式(DDos和CC(Flood,ACK,SYN,UDP)
- 说说常见的渗透方式(XSS,CSRF,SQL注入),WAF防火墙就是防止这个的。
如何解决
常见的对称加密算法有哪些,非对称加密呢?(这是基础哟)
欧欧,HTTPS的加密流程能说出多少?(证书是干甚的,)(先非对称握手,再转对称)
虽然不想问,但是确实是目前在用的。
- 说说你对ipv6的了解吧。
- 因为现在工信部要求对ipv6的升级改造,所以很多app都是支持ipv6的。部分网站也是支持了,也有些大型web网站不支持。
- 传统的TCP/IP协议用的是MAC加上ARP,为此带来了很多网络攻击方式,所以在目前以ipv6联网的情况下,通过了什么样的方式解决了这一问题?(NDP邻居协议)
- ipv6的地址生成是如何生成的?
- ipv6回退到ipv4的流程。
- ipv6的dhcpv6协议和SLAAC协议。
- ipv6使得传统的扫ip段ip端口的方式成为了过去式,但是现在还有没有扫ip的方式去扫ipv6呢?(非重点,一般不问)
7.cookies和session的区别
- 没有cookies可以吗?因为国外有些数字法案规定了用户可以拒绝使用cookies,那么禁用cookies再使用session的话如何使用。
8,说说零信任网络,这个概念已经快10年,目前有很多公司在开发相关项目。
兄弟们,写完这些时间已经很晚了,没有时间写相关的解答了。这个也不是给各位拿来背的,当然要背也是可以的,回答完基础问题后多一嘴我还了解了/研究了xxx,并做了小实验,或者调试成功了。(主要就是挑一部分背)
后期会慢慢更新答案,前提是各位要收藏啊,不然就错过了。
PS:那就点亮下面的小心心然后再点个赞呗,一键二连啊。
!!! 只写几句话。。
3.1.1 restful的用法是怎样的,说下get 和post的区别和常见场景。
- RESTFUL 是一种API的表现风格,REST中文是表征状态转移,就是将增删改查动作转换为GET,POST,PUT,DELETE请求,同时将需要操作的对象转换到一个URL上。
- 区别和场景参见 网络篇,这里不做赘述。
3.1.2 现在restful你感觉有什么优缺点,有些公司只使用post,不使用常规的rest模式,只使用http协议作为api调用方式,这是为什么?
rest模式使得用户调用API,了解API上更加方便,易于通过swagger等文档生成工具自动生成文档,通过约定的方式降低用户的使用成本。
但是约定接口的方式会带来可猜测和攻击面范围的扩大,使得安全机制较差。同时在复杂环境下,HTTP的动词较少,不太适合映射。此外,在一些需要会话保持的情况下,HTTP不太适合,然而大多数的REST都是用的HTTP。
一般公司内部的环境或者部分对外API会只使用post,将操作动词写入json中,后端解析相关json,这样可以规避黑客探测,同时post在整个过程中不会有太多的痕迹,因为记录requestBody的功能比较少。例如日志一般不记录。同时post没有长度限制,可以传递一些图片而无需使用文件服务器。等等。
3.1.3 听说过graphQL吗?有相关的尝试吗?
这个一般只有在简历中写到量使用或者了解才会问,因为目前graphQL只在部分环境下使用。
一种是前端需要更多的数据库权限,而且开发速度有要求,这样直接把操作数据库的权限放到前端。
前端需要更多时间调整代码,并注意查询和操作数据库的可用性。
3.1.4 了解RPC协议吗,说说看,为什么不直接使用HTTPS协议呢?用WebSocket不行吗?
RPC 远程方法调用,在各个后端组件的相互调用中常见。常见的有java的 dubbo,多语言的gRPC,Facebook的thrift。
RPC有着xxxx的特点,在内部场景和SDK书写中常用。(这个在后端开发中问的很多,视情况单开一章)
其实gRPC底层用的就是HTTPS协议,说明RPC也是可以使用HTTPS的,但是通过一些改进可以更好适配RPC需求。最大的改进是Protobuf,序列化和反序列化极大地增强了其性能。部分RPC的特性如压缩,认证都部分使用HTTP/2的协议内容。
可以使用websocket,对应的协议栈是HTTP,在常见的消息交换时比较适合,但是RPC有其他的功能更加适配服务之间的信息交换。
3.1.5 gRPC的特点有哪些,为什么会这样设计(解决了什么问题)
2.1 现在主流的web协议都是HTTPS了,少数环境还会用HTTP,那么HTTP目前的哪些使用场景仍在使用?
2.1 HTTP在部分监控场景,部分状态上报等场景还在使用,包括部分内网环境。
2.2 HTTPS目前的TLS版本是哪些?
2.2 HTTPS目前更新到了TLS1.3了,早期TLS1.2使用比例更多,SSL由于目前的安全问题已经不适用了。TLS目前还是常见的先非对称加密上证书,然后传输建立后转对称加密。
2.3 我们知道现在已经有40%的站点开启了HTTP/2,那么HTTP/2为什么比HTTP版本要好?(或者问HTTP/2的优势在哪里?)
2.3 HTTP/2 解决了队头阻塞(部分),通过多路复用。允许使用多个TCP链接。增加了序列化和更改了压缩问题。并且websocket方便推送和长连接。
就是解决了HTTP的队头阻塞,但是没有解决TCP的队头阻塞。
2.4 HTTP/2的队头阻塞听说过没有,说说看。
2.4 兄弟们直接看这里
2.5 QUIC协议听说过吗?说说看
2.5 看Quic内容上面的有解释。
2.6 计算机网络的拥塞控制和流量控制的区别
2.6 计算机基础,自己看计算机网络去。。
2.7 在丢包率较高的情况下,我们使用了BBR协议,说说他的特点,相比传统的协议最大的改进在哪里。
2.7 BBR最大的改进是由丢包率为主的有限状态机转为了由带宽时延积,(物理时延和带宽瓶颈)控制的状态机,走了两轮。参见这个链接[状态机,了解]
!! 注意这个写在简历上说了解了下大致的源码或者原理。一般不写不问。问的原因是HTTP/3时代,需要在协议中实现拥塞控制,现在所以可能会问相关问题。
2.8 在游戏,语音和部分媒体流(视频流/直播)环境下,KCP得到的广泛的应用,说说他的特点(这里可能不说kcp,但是会问FEC前项纠错,快速重传,RTO和ACK)
2.8 FEC偏向通信和存储,注意,传统后端可能没必要问。或者部分用到的公司问。
2.9 HTTP/2和HTTP/3的区别
2.9 没有找到比较好的内容,网上多搜搜。。。
2.10 同上。
科大讯飞一面 web服务器项目: 1、用正则与状态机解析http请求的什么报文? 2、正则的时候效率并不高,有没有想过用别的方法替代正则? 3、有限状态自动机是什么? 4、除了get和post还有哪些? 5、怎么理解IO多路复用?
6、什么是进程上下文?什么是中断上下文?分别举个例子 7、你知道哪些socket? 8、你知道哪些字符串匹配算法? 9、链表和数组有什么区别?使用场景? 10、CPU的catch缓存,是怎么换入换出的,用的什么算法? (时间片轮转是CPU调度) 11、我们两之间的这个视频对话,在计算机网络里面用到了哪些协议,都分别是怎么工作的? 这些层怎么封装?怎么解封装? 12、我们之间通过以太网进行传输,这中间有个协议叫ARP协议,说一下什么是ARP协议? 13、广播和单播的区别? 14、路由器和交换机的工作原理? 15、linux是由内核和文件系统组成的,你知道哪些文件系统? 16、windows和linux系统是怎么启动的?启动过程知道吗?
做的是内核研发,用C比较多,对计算机基础要求很高,打好基础。