[ Java面试题 ]Java 开发岗面试知识点解析 (8)

[ Java面试题 ]Java 开发岗面试知识点解析

[ Java面试题 ]Java 开发岗面试知识点解析

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 的区别、三次握手和四次挥手的状态切换,必考

[ Java面试题 ]Java 开发岗面试知识点解析

数据库知识点

既然是后端开发,那么与数据库相关的知识点也是必不可少的。

01. MySQL 和 MongoDB 的区别有哪些?如何选择?

02. MongoDB 的优缺点有哪些?

(ps 本人对这一块不是很熟悉,就不附上参考答案了,请各位小伙伴自行学习哈~)

03. 听说过事务吗?(必考)

答:

作为单个逻辑工作单元执行的一系列操作,满足四大特性:

原子性(Atomicity):事务作为一个整体被执行 ,要么全部执行,要么全部不执行;

一致性(Consistency):保证数据库状态从一个一致状态转变为另一个一致状态;

隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行;

持久性(Durability):一个事务一旦提交,对数据库的修改应该永久保存。

04. 事务的并发问题有哪几种?

答:丢失更新、脏读、不可重复读以及幻读。

05. 数据库中的锁有哪几种?

答:独占锁、排他锁以及更新锁。

06. 事务的隔离级别有哪几种?

答:读未提交、读已提交、可重复读和序列化。

扩展问题:MySQL 事务默认隔离级别是哪个?

答:可重复读。

07. 数据库的索引有什么作用?(必考) 底层数据结构是什么,为什么使用这种数据结构?

答:

索引  是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息;

底层数据结构是 B+ 树;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwxfyf.html