面试题(场景题)

20 阅读4分钟
  1. 打包上线,浏览器访问你的index页面
    • 作为前端开发,我们想要知道输入ur后发生了什么,首先要知道URL是什么,由什么组成?
      • 协议名+域名+端口号+路径+查询字符串+片段标识符

image.png

  • 其次再必须对http请求以及浏览器的渲染过程有一定的了解,那么在浏览器中输入url后发生了什么:
    • 检查浏览器是否有缓存或缓存是否过期
    • 解析DNS,建立IP链接
    • 建立TCP链接
    • 发起HTTP请求
    • 收到服务器端响应
    • 浏览器解析数据
    • 关闭TCP链接
    • 解析DNS

      • 在解析DNS的过程中,首先检测系统缓存,如果没有或已过期,则会根据域名从顶级、一级..开始查找,直到找到对应的服务器,然后建立IP链接
    • 建立TCP链接

      • 建立TCP链接,就是通常说的三次握手,首先是客户端向服务器发送请求是否可以建立链接,服务器返回同意后,客户端回馈服务器的响应,即完成3次通话。
        • 第一次:客户端发送一个SYN包(同步序列号)到服务器,说:“你好,我想和你建立连接。
        • 第二次:服务器收到后,回复一个SYN-ACK包,说:“我收到了你的请求,我同意连接。我的接收能力正常,你的呢?”
        • 第三次:客户端再回复一个ACK包,说:“我也收到你的回复了,我的接收能力也正常。连接可以建立
    • 发送HTTP请求

      • 在完成3次握手后,由客户端向服务器端发送http请求,http请求内容包括:
        • 请求行:方法+地址+http版本
        • 请求头
        • 请求体
    • 服务器处理请求并返回http报文

      • 服务器端接到http请求后会作出响应,响应内容包括:
        • 响应行:http版本+状态码+状态描述
        • 其中响应的状态码包括:
          • 200 成功
          • 300 重定向
          • 400 客户端错误
          • 500 服务器端错误
    • 浏览器渲染

      • 在客户端还没有完全接收完到服务器端的响应内容后,便已经开始在浏览器中渲染页面了,渲染过程包括:
      • 解析DOM Tree
      • 解析CSS Tree
      • 把DOM+CSS Tree布局绘制到屏幕
        • 在布局中有两个概念:重排和重绘,这两个动作如果频繁的话会非常影响页面性能,所以我们尽量避免以下会引起重排和重绘的操作:增删改DOM、移动DOM位置、修改DOM内容、修改CSS、resize窗口、修改网页默认字体、获取某些属性:width、offsetTop
      • 解析JS
        • 在解析html时,遇到js代码会停止解析html进行js解析,但是在js执行前必须保证css文件已经加载完
        • js执行都是单线程的,因为他的用途决定了他就是个单线程,那么的异步操作是怎么来的呢?
          js执行时分同步任务和异步任务,在主线程执行同步任务,称其为执行栈。开启浏览器其他线程执行异步任务,称其为任务队列。js执行时先依次执行执行栈,完成后再从任务队列中提取事件,进行回调执行。
    • 关闭TCP链接

  1. 项目背景,架构,技术栈
  2. 请说出登录鉴权的实现过程
  3. 在做用户添加的时候,你的角色和部门数据是怎么拿到的
  4. 动态路由是怎么加载的
  5. 你的组件是如何划分的
  6. 用户列表中,分页绍件是怎么使用的
  7. 数据发生变化,视图没有更新
  8. 项目中发现的难点,常见的问题
  9. 项目中遇到bug怎么解决
  10. js跟ts的区别
  11. 怎么防止恶意登录
  12. 移动端和pc端登录对方有提示
  13. 你们公司用的权限框架是什么
  14. 项目亮点
  15. 怎么实现大文件切片上传
  16. Vue中如何使用自定义指令封装一个水印功能
  17. 怎么解决长时间保存token的安全问题?认证失败的请求怎么重新发送?
  18. 10000条数据的列表怎么保证不卡顿
  19. 小程序怎么适配iPhone以及Android的底部导航横条
  20. 首页加载大量数据怎么保证不出现长时间白屏
  21. ECharts 图表怎么实时刷新数据
  22. Vue3和uniapp项目打包
  23. 实现微信扫码登录
  24. 你的项目做了哪些优化