常见面试题及解析

本文详细解析了Java面试中常见的知识点,包括HTTP错误码、请求响应报文、GET和POST的区别、HTTP与HTTPS、身份认证方式、ArrayList与LinkedList的区别、List和Set的特性、Set的去重原理、线程安全集合、优先级队列、异常处理目的、设计模式应用、SOLID原则、UML建模、Spring框架、Spring Boot、Spring Cloud、MyBatis、NoSQL(Redis)、数据库事务特性、多线程、JVM内存模型、JVM调优、构建工具与服务器管理等,涵盖从基础到进阶的全面面试指南。
摘要由CSDN通过智能技术生成

1.HTTP

1.1 常用错误码(必问)

分类 分类描述
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误
状态码 描述
200 请求成功
400 客户端请求的语法错误
401 未授权
404 请求的网页不存在
408 请求超时
414 请求的 URI 过长
500 服务内部异常
502 错误网关
503 服务器超时

1.2 HTTP请求响应报文组成(必问)

http请求报文组成:
1、请求行:一般由请求方法+url+http协议版本字段组成。 GET /data/info.html HTTP/1.1
(HTTP/1.0:一次连接只能执行一次请求和响应后就关闭了,没有HOST字段;
  HTTP/1.1 一次连接可以多次请求和响应,且必须要有HOST字段);
2、请求头:Accept、Accept-Encoding、Use-Agent、Content-Type、Content-Length(Post请求必有)、Host、if-modify-since、Cookie、Connection等组成;
3、空行:标志请求头结束;
4、请求数据:若方法字段是GET,则此项为空,没有数据;若方法字段是POST,则通常来说此处放置的就是要提交的数据。

POST方法请求报文如下,它的请求行URL段中一般是没有参数的,参数放在了报文体中。而GET方法的参数直接置于请求行URL中,报文体则为空。

HTTP响应报文:
1、响应行:包含http协议版本+状态码+描述 HTTP/1.1 200 OK;
2、响应头:描述服务器的基本信息:Allow(服务器支持哪些请求方法)、Content-Encoding(如果request.getHeader("Accept-Encoding")支持gzip,则返回gzip压缩后编码格式的文档)、Content-Type、Content-Length、Expires、Last-Modified(只有改动时间迟于指定时间(If-Modified-Since)的文档才会返回,否则返回一个304(Not Modified)状态)、Set-Cookie、Transfer-Encoding:告诉浏览器数据的传送格式、Date等;
3、空行:发送回车符+换行符,标志响应头的结束;
3、响应体:如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。

HTTP协议解读:HTTP协议-HTTP响应报文 - 掘金

请求方法:

  • POST:用于传输实体的主题

  • GET:获取资源,请求访问已经被URI识别的资源

  • PUT:传输文件,自身不带验证机制,任何人都可以上传文件,存在安全性问题

  • DELETE:删除文件。同样不带验证机制,存在安全性问题。

请求头字段

  • Host

  • Accept:客户端支持接受响应类型

    • text/plain

    • text/csv

    • text/html

    • text/xml

    • application/javascript

    • application/json

    • application/zip

    • application/xml

    • multipart/form-data

    • image/xxx

  • Accept-Charset:请求编码

    • utf-8

  • Accept-Encoding

    • gzip

    • zip

  • Accept-Language:

  • Cookie:jsessionid

  • Cache-Control:响应返回的内容在客户端是否被缓存

    • no-cache

  • Connection:

  • Last-Modified:

  • Content-Type:

  • Content-Lengh:

  • Date

请求头

  • 请求方式+URI+协议版本

  • 请求首部字段:

  • 实体首部字段

  • 其他

请求体

空行

请求数据

http 报文首部 | ProcessOn免费在线作图,在线流程图,在线思维导图

1.3 请求行的组成(必问)

请求方法+URL+协议版本

1.4 GET和POST的区别(必问)

GET POST
请求参数 多个参数以&连接<br />HTTP协议对URL长度没有限制,但是实际浏览器和服务器存在规范限制,建议最多1KB 数据放在Body中<br />请求长度无限制
数据类型 只接受ASCII字符 无限制
参数位置 请求头 请求体
参数获取 请求可以携带Body,但是通过Body不能保证数据一定被接收到 无限制
安全性 提交的数据缓存在URL上,页面会被浏览器缓存<br />明文传输 请求不会缓存,除非手动设置<br />可明可密
数据传输 产生一个TCP数据包,将请求头和请求体一次性发送。等待响应 产生两个TCP数据包<br />发送请求头,获取响应<br />发送请求体,等待响应

1.4.1 关于HTTP请求URL长度的大小限制

服务器限制:

  • Nginx 的配置参数为large_client_header_buffers

  • Tomcat 的请求配置参数为maxHttpHeaderSize

浏览器限制:

  • IE浏览器对URL的长度现限制为2048字节。

  • 360极速浏览器对URL的长度限制为2118字节。

  • Firefox(Browser)对URL的长度限制为65536字节。

  • Safari(Browser)对URL的长度限制为80000字节。

  • Opera(Browser)对URL的长度限制为190000字节。

  • Google(chrome)对URL的长度限制为8182字节。

1.4.2 使用场景

操作方式 数据位置 明文密文 数据安全 长度限制 应用场景
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值