• 【明年找到好工作】:面试题打卡第四天


    # 前端优化手段
    • 降低请求量:合并资源,减少HTTP请求数,minify/gzip压缩,webP,lazyLoad
    • 加快请求速度:预解析DNS,减少域名数,并行加载,CDN分发
    • 缓存:HTTP协议缓存请求,离线缓存 manifest,离线数据缓存localStorage
    • 渲染:JS/CSS优化,加载顺序,服务端渲染,pipeline

    # GET和POST的区别
    • GET 参数通过URL传递,POST参数放在 request body 中

    • GET 请求在URL中传递的参数是有长度限制的,而 POST 没有

    • POST 比 GET 更安全

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

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

    • GET 产生一个TCP数据包,POST 产生两个TCP数据包

    对于 GET 浏览器会把 http header 和 data 一并发送出去,服务器返回数据

    对于 POST 浏览器会先发送 header,再发送 data,服务器返回数据


    # 301 和302的区别
    • 301:永久重定向(被请求的资源已永久移动到新位置)
    • 302:临时重定向(被请求的资源临时移动到新位置)

    # HTML5 新增的元素
    • 语义化标签:header、footer、nav、aside、section
    • 表单:input增加了 color、email、data、range
    • 存储:sessionStorage、localStorage、离线存储
    • 多媒体:audio、vedio
    • 地理定位
    • canvas画布
    • 拖放
    • 多线程编程的web worker
    • websocket协议

    # 在地址栏里输入URL,到这个页面呈现出来,中间发生什么?

    在这里插入图片描述

    1、输入 url 后,需要通过 url 找到其服务器的 ip,为了找到该ip

    2、浏览器会先寻找缓存,查看缓存中是否有记录(浏览器缓存 =》 系统缓存 =》 路由缓存)

    3、若没找到,再次查找系统的 hosts文件 中是否有记录

    4、最终没有,则查询 DNS 服务器,得到 ip 后

    5、浏览器会根据 ip 以及端口号,构造一个 http 请求,并将这个请求封装在一个TCP包

    6、这包会经过传输层,网络层,数据链路层,物理层,最终到达服务器

    7、服务器接收到该请求后,进行解析,返回相应的html给到浏览器

    8、浏览器根据 html 来构建 DOM 树,如果在构建过程中遇到js脚本或外部js链接,则会停止DOM树,来执行和下载js代码,这就会造成阻塞

    9、之后,根据外部样式,内部样式,内联样式构建一个CSS对象模型树CSSOM树

    10,构建完成后和 DOM 树合并为渲染树(这一步的操作只要是排除非视觉节点,比如script,meta以及displa为none的节点)

    11、最后进行布局(确定各个元素的位置和尺寸)

    12、由于hrml 文件可能存在图片,视频,音频等资源,在构建 DOM树 过程中,遇到这些都会进行并行下载。

    13、浏览器对每个于的并行下载数量有一定的限制(4~6)

    14、在这下载过程优化的过程中,就可能涉及到强缓存或协商缓存


    # CSRF 和 XSS

    XSS(跨站脚本攻击)是一种代码注入攻击,攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行,获取敏感信息(Cookie、sessionID)

    CSRF(跨站请求伪造)攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨域请求,利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击网站执行某项操作的目的

    XSS预防手段:对输入的URL以及参数进行过滤,过滤掉导致脚本执行的相关内容;对动态输入到页面的内容进行html编码,使脚本无法在浏览器中执行

    CSRF防御手段:验证HTTP Referer字段;在请求地址中添加token并验证;在HTTP头中自定义属性并验证

  • 相关阅读:
    Delphi 的操作符重载 - Record 结构体
    二叉树的最小深度(rust实现)
    c++ 学习之 数据类型的取值范围
    ImmunoChemistry艾美捷高级钙素AM细胞活力试剂盒方案
    【Push Kit】模拟服务端发送消息至客户端,测试消息发送功能(华为推送服务)
    combit Report Server 29
    我们能从PEP 703中学到什么
    mqtt.js在接收到数据后,如何将数据实时更新到vue界面上的data中
    windows内核编程-文件操作
    JAVA毕业设计剧院售票系统计算机源码+lw文档+系统+调试部署+数据库
  • 原文地址:https://blog.csdn.net/weixin_44659458/article/details/126650773