秋招网络篇-后端开发/测试/运维-八股文-拔高篇
在基础问题的提升,涉及了几组问题。
是的,本文暂时只有网络篇,不知道受众面如何,而且一篇也说不完。
八股文-网络
1.
1.1 restful的用法是怎样的,说下get 和post的区别和常见场景。
1.2 现在restful你感觉有什么缺点,有些公司只使用post,不使用常规的rest模式,只使用http协议作为api调用方式,这是为什么?
1.3 听说过graphQL吗?有相关的尝试吗?
1.4 了解RPC协议吗,说说看,为什么不直接使用HTTPS协议呢?用WebSocket不行吗?
1.5 gRPC的特点有哪些,为什么会这样设计(解决了什么问题)
2.
- 现在主流的web协议都是HTTPS了,少数环境还会用HTTP,那么HTTP目前的哪些使用场景仍在使用?
- HTTPS目前的TLS版本是哪些?
- 我们知道现在已经有40%的站点开启了HTTP/2,那么HTTP/2为什么比HTTP版本要好?(或者问HTTP/2的优势在哪里?)
- HTTP/2的队头阻塞听说过没有,说说看。
- QUIC协议听说过吗?说说看
- 计算机网络的拥塞控制和流量控制的区别
- 在丢包率较高的情况下,我们使用了BBR协议,说说他的特点,相比传统的协议最大的改进在哪里。
- 在游戏,语音和部分媒体流(视频流/直播)环境下,KCP得到的广泛的应用,说说他的特点(这里可能不说kcp,但是会问FEC前项纠错,快速重传,RTO和ACK)
- HTTP/2和HTTP/3的区别
- 我们知道Chrome内核的浏览器占有了80%的浏览器份额,那么其推进的HTTP/3已经默认支持了,目前占有率6%,那么HTTP/3相比HTTP/2有哪些改进呢?可以多说几条,毕竟变化比较大。(HTTP/3解决了什么问题)
- TCP和UDP的区别
- 为什么改用UDP,用传统的TCP遇到了哪些困难?(这里涉及到TCP的快速重传,目前TCP的快速重传是失败了的。windows目前都没有使用,这里重点说TCP变更困难,涉及操作系统和内核)
- HTTP/3的0RTT是怎么实现的?
3.
- 说个简单点的,TCP的三次握手和四次挥手说一下
- 为什么不用二次握手和三次挥手呢(全双工)
- TCP的2MSL为什么这样设计
- eBPF了解吗?现在很火的。
4.
输入URL到显示网页发生了什么?
- 是的刚才说到了DNS,Chrome的DNS是怎么调用的?调用的DNS服务器采用了哪些技术(AnyCast,LB,分布式,刷新),DNS的基本原理是什么?
- 目前还有什么其他的调用DNS的方式吗?例如DOH。(这个就是考察各位是否真的用过,一般使用真实的DNS会接触上面的问题)
- DNS投毒攻击我们开发时候可以考虑用什么方式应对?
- 说说你对CDN的理解。
- CDN常见的操作有哪些。(这里挺多公司要你操作CDN的)
- 阿里云/AWS/Azure/Cloudflare用过吗?说说edge serverless的用途。
5.
说说常见的网络攻击方式(DDos和CC(Flood,ACK,SYN,UDP)
- 说说常见的渗透方式(XSS,CSRF,SQL注入),WAF***就是防止这个的。
如何解决
常见的对称加密算法有哪些,非对称加密呢?(这是基础哟)
欧欧,HTTPS的加密流程能说出多少?(证书是干甚的,)(先非对称握手,再转对称)
6.
虽然不想问,但是确实是目前在用的。
- 说说你对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年,目前有很多公司在开发相关项目。
这个只有部分业界公司会问,仅供参考。
题目解答
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的特点有哪些,为什么会这样设计(解决了什么问题)
这个要单开一章讲解,也可以找相关的资料哟,这是面试常问的RPC特点题。
兄弟们,写完这些时间已经到一点半了,没有时间写相关的解答了。这个也不是给各位拿来背的,当然要背也是可以的,回答完基础问题后多一嘴我还了解了/研究了xxx,并做了小实验,或者调试成功了。(主要就是挑一部分背)
后期会慢慢更新答案,前提是各位要收藏啊,不然就错过了。
PS:那就点亮下面的小心心然后再点个赞呗,一键三连啊。
#秋招##面试题目##面经##2023秋招##面试八股文#