2021-JAVA高级开发工程师面试,高级开发面试,小红书面试,木仓科技面试,金三银四面试

本文包含大量文字内容

url从客户端到服务端经历了什么?

  1. 第一步先由浏览器解析URL中的协议、主机、端口、路径、构建一个http请求。浏览器在发送请求之前会先检测缓存是否命中,如果命中则不会发起请求。(缓存中包含:强缓存、协商缓存、存储位置)之后便会经历DNS解析后返回对应的IP地址
  2. 第二步在获取到对应的IP地址后便会创建一个TCP Connection用来在客户端和服务端进行通信,也就是最初的三次握手:第一次握手由Client端发起一个包含位码syn和seq两个信息给到服务端,服务端通过解析syn知道client想要发起一个连接请求。第二次握手由服务端发起,服务端会生成一个acknumber=seq+1,syn=1,ack=seq+1,seq发送给客户端,告知客户端可以发送了。第三次握手,由客户端发起在检验ack码和syn码全部正确后,便建立连接成功。

在第一次收到服务端反馈的时候,此时的连接会被放入一个半连接队列中,完成三次握手后便会放入全连接队列中

  1. 第三步就是发送给web service处理请求,这里分为静态资源和动态资源,静态资源根据路径直接寻址获取,动态资源需要webservice将请求委托给对应的服务处理,最终在进行返回结果集
  2. 第四步浏览器渲染,作为Java后端开发工程师对于这块简单了解即可,基本分为,拿到字节码转为字符然后令牌化然生成dom树之后在进行渲染
  3. 第五步就是四次挥手:刚开始双方都处于established状态,假如是客户端先发起关闭请求
    第一次挥手:客户端发送一个FIN报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态
    第二次挥手:服务端收到FIN之后,会发送ACK报文,且把客户端的序列号值+1作为ACK报文的序列号值,表明已经收到客户端的报文了,此时服务端处于CLOSE_WAIT状态
    第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发送FIN报文,且指定一个序列号。此时服务端处于LAST_ACK的状态
    需要过一阵子以确保服务端收到自己的ACK报文之后才会进入CLOSED状态,服务端收到ACK报文之后,就处于关闭连接了,处于CLOSED状态。
    作者:FinGet
    链接:https://juejin.cn/post/6935232082482298911
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上述就是一个url到服务端的基本流程中间还有许多细节的点可以参考从输入URL开始建立前端知识体系

Java类加载过程

在面试一家中字开头的企业,人家问了我这个问题,着实有些生疏,今天接着记录一下java类加载过程

  1. 首先我们java的类加载过程是:加载-验证-准备-解析-初始化。
  2. 类加载器分类有:
    - Bootstrap ClassLoader 这个加载器用来加载java的核心类库
    - Extension ClassLoader 这个加载器可以用来加载指定目录下的文件
    - Application Classloader 用来加载环境变量和系统属性配置下的文件,Java中的类就是由此加载器完成
    - 自定义加载器 此加载器可以用来加载网络上的相关文件
  3. 类加载最为重要的类加载机制-双亲委派机制。简言之就是类加载器由自定义-application-extension-bootstrap这样的顺序依次委派至最顶层,如果bootstrap可以完成加载则由顶级父加载器完成加载,不行则交由子类自行加载
  4. 而对于一种特殊的情况,就是第三方包加载spi,对于这种类,java采用了线程上下文加载器来实行委托加载

Java常用的集合框架(木仓科技)

Java多线程(必问)

tcp和udp的区别(小红书)

名称tcpudp
是否连接需要连接无需连接
是否可靠可靠不可靠
连接对象个数只能是一对一通信支持一对一,一对多,多对一和多对多交互通信
传输方式面向字符流面向报文
适用场景适用于要求可靠传输的应用,例如文件传输适用于实时应用(IP电话、视频会议、直播等)
首部开销首部最小20字节,最大60字节首部开销小,仅8字节

参考链接

http和https的区别(小红书)

名称httphttps
是否需要证书不需要需要
连接端口80443
文本传输方式超文本协议传输,明文传输具有安全性的加密文本传输
连接协议无状态连接ssl和http协议构建的加密传输,身份认证的安全传输协议
经济性无需费用需要付费申请

参考链接

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹏鹏与丁满

一分也是爱,哈哈哈哈哈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值