2024年最新2024最全前端面试系列(计算机网络)(非科班出身最薄弱的环节),快手面试java

最后

推荐一些系统学习的途径和方法。

路线图

每个Web开发人员必备,很权威很齐全的Web开发文档。作为学习辞典使用,可以查询到每个概念、方法、属性的详细解释,注意使用英文关键字搜索。里面的一些 HTML,CSS,HTTP 技术教程也相当不错。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

HTML 和 CSS:

html5知识

css基础知识

  1. 主动方发送Fin=1, Ack=Z, Seq= X报文

  2. 被动方发送ACK=X+1, Seq=Z报文

  3. 被动方发送Fin=1, ACK=X, Seq=Y报文

  4. 主动方发送ACK=Y, Seq=X报文

  5. 浏览器检查响应状态吗:是否为1XX,3XX, 4XX, 5XX,这些情况处理与2XX不同

  6. 如果资源可缓存,进行缓存

  7. 对响应进行解码(例如gzip压缩)

  8. 根据资源类型决定如何处理(假设资源为HTML文档)

  9. 解析HTML文档,构件DOM树,下载资源,构造CSSOM树,执行js脚本,这些操作没有严格的先后顺序,以下分别解释

  10. 构建DOM树:

  11. Tokenizing:根据HTML规范将字符流解析为标记

  12. Lexing:词法分析将标记转换为对象并定义属性和规则

  13. DOM construction:根据HTML标记关系将对象组成DOM树

  14. 解析过程中遇到图片、样式表、js文件,启动下载

  15. 构建CSSOM树:

  16. Tokenizing:字符流转换为标记流

  17. Node:根据标记创建节点

  18. CSSOM:节点创建CSSOM树

  19. 根据DOM树和CSSOM树构建渲染树 :

  20. 从DOM树的根节点遍历所有可见节点,不可见节点包括:1) script,meta这样本身不可见的标签。2)被css隐藏的节点,如display: none

  21. 对每一个可见节点,找到恰当的CSSOM规则并应用

  22. 发布可视节点的内容和计算样式

  23. js解析如下:

  24. 浏览器创建Document对象并解析HTML,将解析到的元素和文本节点添加到文档中,此时document.readystate为loading

  25. HTML解析器遇到没有async和defer的script时,将他们添加到文档中,然后执行行内或外部脚本。这些脚本会同步执行,并且在脚本下载和执行时解析器会暂停。这样就可以用document.write()把文本插入到输入流中。同步脚本经常简单定义函数和注册事件处理程序,他们可以遍历和操作script和他们之前的文档内容

  26. 当解析器遇到设置了async属性的script时,开始下载脚本并继续解析文档。脚本会在它下载完成后尽快执行,但是解析器不会停下来等它下载。异步脚本禁止使用document.write(),它们可以访问自己script和之前的文档元素

  27. 当文档完成解析,document.readState变成interactive

  28. 所有defer脚本会按照在文档出现的顺序执行,延迟脚本能访问完整文档树,禁止使用document.write()

  29. 浏览器在Document对象上触发DOMContentLoaded事件

  30. 此时文档完全解析完成,浏览器可能还在等待如图片等内容加载,等这些内容完成载入并且所有异步脚本完成载入和执行,document.readState变为complete,window触发load事件

  31. 显示页面(HTML解析过程中会逐步显示页面)

补充

三次握手和四次挥手流程

三次握手

第一次握手:客户端向服务端发送SYN包,等待服务端响应,并进入SYN-SEND状态

第二次握手:服务端收到SYN包,并确定SYN=ACK+1,然后响应一个SYN包和ACK包。客户端进入SYN-RECV状态。

第三次握手:客户端收到服务端SYN+ACK包。向服务器发送确认包ACK。发送完毕进入ESTABLISHED状态。

四次挥手

第一次挥手:主动关闭连接一方,发送FIN包。此时发送FIN包之前发送的数据如果没有发送到。会进行重试发送。

第二次挥手:被动关闭一方收到FIN包。响应一个ACK包。

第三次挥手:被动关闭方发送一个FIN包。告诉被动关闭方。数据发送完毕。

第四次挥手:主动关闭方收到FIN包。发送一个ACK包给被动关闭方,至此四次挥手结束,断开连接。

P.S

ACK:确认位,只有ACK=1的时候ack才起作用,正常通信时ACK=1,第一次发起请求时,因为没有需要确认接收的数据所以ACK为0。

SYN:同步位,用于在建立连接时同步序号,刚开始建立连接时并没有历史接收的数据,所以ack也就没办法设置。SYN的作用就是,当接收端接收到SYN=1的报文时就会将ack设置位接收到的seq+1的值。SYN会在前两次握手时都为1,是因为通信的双方的ack都需要设置一个初始值;

FIN:终止位,用来在数据传输完毕后释放连接。

为什么是三次握手,四次挥手?

三次握手用于防止“已失效的连接请求报文段”,报文段没有丢失,而是在某个节点长时间滞留。

四次挥手:由于连接是全双工的。所以每个方向都必须单独进行关闭

因为在握手的时候服务端在listen状态,收到建立连接的syn报文后,将ack和syn放在一个报文里发送给对方,而关闭连接时,收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

浏览器缓存机制


浏览器缓存,也称Http缓存,分为强缓存和协商缓存。强缓存的优先级大于协商缓存。

1.强缓存

强缓存是利用 http 头中的 Expires 和 Cache-Control 两个字段来控制的。强缓存中,当请求再次发出时,浏览器会根据其中的 Expires 和 Cache-control 判断目标资源是否“命中”强缓存,若命中则直接从缓存中获取资源,不会再与服务端发生通信。

Expires时间戳(过期时间),浏览器就会先对比本地时间和 Expires 的时间戳,如果本地时间小于 Expires 设定的过期时间,那么就直接去缓存中取这个资源。

Cache-Control 利用 max-age (时间段/相对时间),如果访问间隔小于 Cache-Control 设定的时间段,那么就直接去缓存中取这个资源。

两者可以同时启用,Cache-Control 相对于 expires 优先级更高。

2.协商缓存

协商缓存通过 Last-Modified 和 Etag 实现,具体机制如下:浏览器向服务器去询问缓存的相关信息,如果服务端提示缓存资源未改动(Not Modified),资源会被重定向到浏览器缓存,这种情况下网络请求对应的状态码是 304。

Last-Modified 是一个时间戳(更新时间),首次请求时随着 Response Headers 返回 Last-Modified(请求资源在服务器上一次修改时间),再次请求时,Request Header 会带上 If-Modified-Since 的时间戳字段,它的值正是上一次 response 返回给它的 last-modified 值。

如果发生了变化,就会返回一个完整的响应内容,并在 Response Headers 中添加新的 Last-Modified 值;否则,返回如上图的 304 响应,Response Headers 不会再添加 Last-Modified 字段。

Etag是一个唯一标识字符串,每次文件修改后服务器端就会生成一个新的 Etag,这个标识字符串可以是基于文件内容编码的,只要文件内容不同,它们对应的 Etag 就是不同的。再次请求资源时,Request Header 会带上 If-Modified-Since,询问 Etag 是否变动

Etag 比 Last-Modified 优先级更高。

补充

Expires 缺点:

返回的到期时间是服务器端的时间,如果客户端的时间与服务器的时间相差很大,容易产生误差。

Last-Modified 缺点:

修改文件,但文件的内容未改变。服务器端并不清楚我们是否真正改变了文件,它仍然通过最后编辑时间进行判断。因此这个资源在再次被请求时,会被当做新资源,进而引发一次完整的响应。

当我们修改文件的速度过快时(比如花了 100ms 完成了改动),由于 If-Modified-Since 只能检查到以秒为最小计量单位的时间差,它感知不到这个改动的。

Etag 缺点:

Etag 的生成过程需要服务器额外付出开销,会影响服务端的性能。

协议结构


TCP/IP四层协议体系结构

1.应用层(域名系统DNS、文件传输协议FTP、简单邮件传送协议SMTP、超文本传输协议HTTP、简单网络管理协议SNMP、远程登录协议Telnet)

2.运输层(TCP、UDP)

3.网际层(IP、ICMP、ARP、RARP)

4.网络接口层

五层体系结构

1.应用层

2.运输层

3.网络层

4.数据链路层

5.物理层

OSI七层协议模型

1.应用层(Application)(TELNET,HTTP,FTP,NFS,SMTP)

2.表示层(Presentation)(加密,ASCII)

3.会话层(Session)(RPC,SQL)

4.传输层(Transport)(TCP,UDP,SPX)

5.网络层(Network)(IP,IPX)

6.数据链路层(Data Link)(ATM,FDDI)

7.物理层(Physical)(Rj45,802.3)

http报文


HTTP请求报文主要包括请求行、请求头部以及请求的数据(实体)三部分。

请求行由方法字段(GET、POST、PUT、DELETE)、URL字段和HTTP协议版本字段组成。

请求头部

Connection标头:连接管理

Host标头:指定请求资源的主机

Range标头:请求实体的字节范围

User-Agent标头:包含发出请求的用户信息

Accept标头:首选的媒体类型

Accept-Language标头:首选的自然语言

HTTP响应报文分为状态行、首部行、实体三部分。

状态行包括三个字段:协议版本、状态码与原因短语。

响应首部

Date标头:消息产生的时间

Age标头:(从最初创建开始)响应持续时间

Server标头: 向客户端标明服务器程序名称和版本

ETag标头:不透明验证者

Location标头:URL备用的位置

Content-Length标头:实体的长度

Content-Type标头:实体的媒体类型

get和post方法区别


本质区别:GET 产生一个 TCP 数据包;POST 产生两个 TCP 数据包。

GET 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应 200(返回数据);而对于 POST,浏览器先发送 header,服务器响应 100(continue),浏览器再发送 data,服务器响应 200(返回数据)。

  1. GET 在浏览器回退时是无害的,而 POST 会再次提交请求。

  2. GET 产生的 URL 地址可以被 Bookmark,而 POST 不可以。

  3. GET 请求会被浏览器主动 cache,而 POST 不会,除非手动设置。

  4. GET 请求只能进行 URL 编码,而 POST 支持多种编码方式。

  5. GET 请求参数会被完整保留在浏览器历史记录里,而 POST 中的参数不会被保留。

  6. GET 请求在 URL 中传送的参数是有长度限制的,而 POST 么有。对参数的数据类型,

  7. GET 只接受 ASCII 字符,而 POST 没有限制。

  8. GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息。

  9. GET 参数通过 URL 传递,POST 放在 Request body 中。

网络安全


  1. XSS攻击(存储型、反射型、DOM型)

防御方法:

1.cookie中设置HttpOnly

2.输入过滤,对于输入格式检查

3.转义

  1. CSRF攻击

防御方法:

1.验证码

总结
  • 对于框架原理只能说个大概,真的深入某一部分具体的代码和实现方式就只能写出一个框架,许多细节注意不到。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 算法方面还是很薄弱,好在面试官都很和蔼可亲,擅长发现人的美哈哈哈…(最好多刷一刷,不然影响你的工资和成功率???)

  • 在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。

  • 要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!!

第一次跳槽十分忐忑不安,和没毕业的时候开始找工作是一样的感受,真的要相信自己,有条不紊的进行。如果有我能帮忙的地方欢迎随时找我,比如简历修改、内推、最起码,可以把烦心事说一说,人嘛都会有苦恼的~

祝大家都有美好的未来,拿下满意的 offer。

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值