面试题总结
1. 双向链表数据结构
双向链表(Doubly Linked List)是一种链表数据结构,它的每个节点除了包含数据域外,还包含两个指针,一个指向前一个节点(前驱节点),另一个指向后一个节点(后继节点)。这种结构使得双向链表在遍历和操作上更加灵活,既可以正向遍历,也可以反向遍历。
以下是双向链表的基本特点和常见操作:
特点
节点结构:每个节点包含三个部分:数据元素、指向前一个节点的指针(prev)和指向后一个节点的指针(next)。
双向遍历:可以从链表的头节点开始正向遍历,也可以从尾节点开始反向遍历。
插入和删除操作:在双向链表中插入和删除节点相对简单,因为可以通过前驱和后继指针直接定位到相关节点。
常见操作
插入节点:
在头部插入:创建新节点,将新节点的 next 指针指向原头节点,原头节点的 prev 指针指向新节点,然后将头指针指向新节点。
在尾部插入:创建新节点,将尾节点的 next 指针指向新节点,新节点的 prev 指针指向尾节点,然后将尾节点更新为新节点。
在指定节点后插入:创建新节点,新节点的 next 指针指向指定节点的 next 节点,新节点的 prev 指针指向指定节点,指定节点的 next 节点的 prev 指针指向新节点,指定节点的 next 指针指向新节点。
删除节点:
删除头节点:将头指针指向原头节点的 next 节点,原头节点的 next 节点的 prev 指针设为 null。
删除尾节点:将尾节点的 prev 节点的 next 指针设为 null,尾节点更新为原尾节点的 prev 节点。
删除指定节点:将指定节点的 prev 节点的 next 指针指向指定节点的 next 节点,指定节点的 next 节点的 prev 指针指向指定节点的 prev 节点。
遍历链表:
正向遍历:从头部开始,通过 next 指针逐个访问节点,直到节点为 null。
反向遍历:从尾部开始,通过 prev 指针逐个访问节点,直到节点为 null。
2. http所有状态码,及解决方法
HTTP 状态码是用于表示 HTTP 请求的结果的三位数字代码,分为 5 个类别,分别以 1 - 5 开头。以下是详细介绍及部分状态码常见的解决方法:
1xx(信息性状态码)
这些状态码表示临时的响应,客户端通常只需等待下一个响应。
100 Continue:
含义:客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。
解决方法:一般无需客户端做额外处理,继续发送请求剩余部分即可。
2xx(成功状态码)
表示请求已成功被服务器接收、理解、并接受。
200 OK:
含义:请求成功,请求所希望的响应头或数据体将随此响应返回。
解决方法:正常处理响应数据。
201 Created:
含义:请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随 Location 头信息返回。
解决方法:可根据 Location 头信息访问新创建的资源。
204 No Content:
含义:服务器成功处理了请求,但不需要返回任何实体内容。
解决方法:无需处理响应数据,可根据业务逻辑进行后续操作。
3xx(重定向状态码)
表示需要客户端采取进一步的操作才能完成请求。
301 Moved Permanently:
含义:被请求的资源已永久移动到新 URI,客户端应使用新的 URI 访问。
解决方法:更新本地记录的资源 URI,使用新的 URI 重新发起请求。
302 Found:
含义:请求的资源临时从不同的 URI 响应请求。
解决方法:暂时使用响应中 Location 字段指定的 URI 重新发起请求。
304 Not Modified:
含义:表示资源未被修改,可以使用缓存的版本。
解决方法:使用本地缓存的资源。
4xx(客户端错误状态码)
表示客户端可能存在错误,妨碍了服务器的处理。
400 Bad Request:
含义:由于明显的客户端错误(如格式错误、参数缺失等),导致服务器不能或不会处理该请求。
解决方法:检查请求参数、格式等是否正确,修正后重新发起请求。
401 Unauthorized:
含义:请求需要用户验证。通常在响应中会包含一个 WWW - Authenticate 头,用于提示用户如何进行身份验证。
解决方法:提供正确的身份验证信息(如用户名和密码),重新发起请求。
403 Forbidden:
含义:服务器理解请求客户端的请求,但是拒绝执行此请求。可能是因为权限不足等原因。
解决方法:检查用户权限,联系服务器管理员获取相应权限。
404 Not Found:
含义:请求的资源未在服务器上找到。
解决方法:检查请求的 URI 是否正确,确认资源是否存在或已被移动。
405 Method Not Allowed:
含义:请求行中指定的请求方法不能被用于请求相应的资源。
解决方法:检查请求使用的 HTTP 方法(如 GET、POST 等)是否正确,使用正确的方法重新发起请求。
5xx(服务器错误状态码)
表示服务器在处理请求的过程中发生了错误。
500 Internal Server Error:
含义:服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
解决方法:等待服务器修复问题,或者联系服务器管理员排查错误。
502 Bad Gateway:
含义:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
解决方法:检查网络连接,等待上游服务器恢复正常,或者联系服务器管理员处理。
503 Service Unavailable:
含义:由于临时的服务器维护或者过载,服务器当前无法处理请求。
解决方法:等待一段时间后重新发起请求,或者联系服务器管理员了解维护情况。
504 Gateway Timeout:
含义:充当网关或代理的服务器,未及时从上游服务器接收请求。
解决方法:检查网络连接,等待上游服务器响应,或者联系服务器管理员处理。