04. 浏览器中输入:“” 之后都发生了什么?请详细阐述。
解析:经典的网络协议问题。
答:
由域名→IP 地址
寻找 IP 地址的过程依次经过了浏览器缓存、系统缓存、hosts 文件、路由器缓存、 递归搜索根域名服务器。
建立 TCP/IP 连接(三次握手具体过程)
由浏览器发送一个 HTTP 请求
经过路由器的转发,通过服务器的防火墙,该 HTTP 请求到达了服务器
服务器处理该 HTTP 请求,返回一个 HTML 文件
浏览器解析该 HTML 文件,并且显示在浏览器端
这里需要注意:
HTTP 协议是一种基于 TCP/IP 的应用层协议,进行 HTTP 数据请求必须先建立 TCP/IP 连接
可以这样理解:HTTP 是轿车,提供了封装或者显示数据的具体形式;Socket 是发动机,提供了网络通信的能力。
两个计算机之间的交流无非是两个端口之间的数据通信 , 具体的数据会以什么样的形式展现是以不同的应用层协议来定义的。
05. 常见 HTTP 状态码
1xx(临时响应)
2xx(成功)
3xx(重定向):表示要完成请求需要进一步操作
4xx(错误):表示请求可能出错,妨碍了服务器的处理
5xx(服务器错误):表示服务器在尝试处理请求时发生内部错误
常见状态码:
200(成功)
304(未修改):自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容
401(未授权):请求要求身份验证
403(禁止):服务器拒绝请求
404(未找到):服务器找不到请求的网页
06. TCP 和 UDP 的区别:
答:
回答发送数据前是否存在建立连接的过程;
TCP过确认机制,丢包可以重发,保证数据的正确性;UDP不保证正确性,只是单纯的负责发送数据包;
UDP 是面向报文的。发送方的 UDP 对应用程序交下来的报文,在添加首部后就向下交付给 IP 层。既不拆分,也不合并,而是保留这些报文的边界,因 此,应用程序需要选择合适的报文大小;
UDP 的头部,只有 8 个字节,相对于 TCP 头部的 20 个字节信息包的额外开销很小。
限于篇幅,更多网络协议相关知识参考:
1. 如何快速入门网络基础知识(TCP/IP 和 HTTP)
2. 图解 HTTP
小结:必须熟练掌握 TCP 和 UDP 的区别、三次握手和四次挥手的状态切换,必考。
数据库知识点
既然是后端开发,那么与数据库相关的知识点也是必不可少的。
01. MySQL 和 MongoDB 的区别有哪些?如何选择?
02. MongoDB 的优缺点有哪些?
(ps 本人对这一块不是很熟悉,就不附上参考答案了,请各位小伙伴自行学习哈~)
03. 听说过事务吗?(必考)
答:
作为单个逻辑工作单元执行的一系列操作,满足四大特性:
原子性(Atomicity):事务作为一个整体被执行 ,要么全部执行,要么全部不执行;
一致性(Consistency):保证数据库状态从一个一致状态转变为另一个一致状态;
隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行;
持久性(Durability):一个事务一旦提交,对数据库的修改应该永久保存。
04. 事务的并发问题有哪几种?
答:丢失更新、脏读、不可重复读以及幻读。
05. 数据库中的锁有哪几种?
答:独占锁、排他锁以及更新锁。
06. 事务的隔离级别有哪几种?
答:读未提交、读已提交、可重复读和序列化。
扩展问题:MySQL 事务默认隔离级别是哪个?
答:可重复读。
07. 数据库的索引有什么作用?(必考) 底层数据结构是什么,为什么使用这种数据结构?
答:
索引 是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息;
底层数据结构是 B+ 树;