前端学习30 相关面试题4

1.浏览器渲染过程(输入 URL 到页面展示)

  • 地址解析与网络请求用户在浏览器地址栏输入 URL,浏览器开始进行 DNS 解析(域名转 IP),建立 TCP 连接(三次握手),发送 HTTP 请求到服务器。
  • 服务器响应与资源下载服务器返回 HTML 文档,浏览器开始解析 HTML 流,遇到 CSS、JS、图片等资源时,继续发起请求下载。
  • HTML 解析生成 DOM 树浏览器解析 HTML,构建出DOM 树(Document Object Model),这是页面的节点树,代表页面结构。
  • CSS 解析生成 CSSOM 树浏览器解析 CSS,生成CSSOM(CSS Object Model),表示样式信息。
  • 生成渲染树(Render Tree)浏览器结合 DOM 树和 CSSOM 树,生成渲染树,它只包含可见节点和对应样式信息。
  • 布局(Layout 或 Reflow)浏览器根据渲染树计算每个节点的几何信息(大小、位置)。
  • 绘制(Paint)浏览器根据布局结果,把每个节点绘制成屏幕像素。
  • 2.Vue 3 中的 VNode 渲染流程

    VNode是构成虚拟DOM树的节点对象,虚拟DOM树是由VNode组成的树结构

    在 Vue 3 应用中,模板被编译为 VNode(虚拟 DOM)树,由 JavaScript 构建并维护,初次渲染时将 VNode 转为真实 DOM,响应式数据变化时通过高效的 diff 算法对比新旧 VNode,实现最小化 DOM 更新。这个虚拟 DOM 渲染机制是 Vue 提升页面渲染性能和响应速度的关键所在。

    Vue 的 SPA 应用中:

    1. Vue 先基于响应式数据生成虚拟 DOM 树(VNode)。
    2. Vue 通过 diff 算法更新虚拟 DOM 树的差异。
    3. Vue 最终把这些变化应用到真实 DOM。
    4. 浏览器根据真实 DOM 和 CSS,构建渲染树,进行布局(Layout)和绘制(Paint)

    3.JavaScript 的下载与运行过程

    1.下载阶段:

    浏览器解析 HTML 文档时,遇到 <script> 标签(外部脚本或内联脚本)对于外部脚本(带 src 属性的 <script src="xxx.js">),浏览器会向服务器发起额外的 HTTP 请求下载这个 JS 文件下载 JS 文件是网络 I/O 过程,浏览器会同时进行解析 HTML、下载其他资源,但一般脚本下载会阻塞后续 HTML 的解析(除非使用 defer 或 async 属性)。

    2.解析与编译阶段:

    浏览器下载完 JavaScript 文件后,会将脚本文本传给 JavaScript 引擎(比如 Chrome 的 V8)JS 引擎先进行词法分析和语法分析,生成抽象语法树(AST)随后将 AST 编译为字节码或机器码,准备执行。

    3.执行阶段:

    JS 引擎执行编译后的代码,进行变量声明、函数定义、表达式计算等在浏览器环境中,JS 运行时会访问 DOM API、BOM API(浏览器对象模型),可以操作页面内容和浏览器行为如果是 Vue 等框架,JS 代码会创建 VNode,管理响应式数据,触发组件渲染。

    异步任务与事件循环JS 单线程执行同步代码异步任务(如网络请求、定时器、DOM 事件)通过事件循环机制处理,保证 UI 不阻塞。

    全部评论

    相关推荐

    05-14 22:18
    已编辑
    西南石油大学 前端工程师
    菜菜鼠鼠劳动节之后在ssob投简历妄想找一个六月份的实习(学校六月底开始懂得都懂的实训),迫切需要一份像样的offer躲过去,顺带积攒一段实习经历为下半年的实习早做准备,投了百余份简历出去约面的一只手都数的过来经历了两个小厂的水面之后终于接到了一个比较正式的面试通知,于是鼠鼠把八股看过去看过来,把手撕多写了几遍,今下午提前五分钟进入会议等着被拷打,面试官是温柔小姐姐,一问问题直摧鼠鼠内心,感觉是针对简历项目问的问题,再顺便拓展问八股的,有一些压根没去了解过……还好面试官姐姐好,没压力我让我挺了过来面试时长大概35分钟1、自我介绍2、AI助手如何实现的(项目中实现了AI问答功能,最好会做打字流)3、节流和防抖的区别和具体使用场景(项目中是setTimeout手搓的)5、如何实现图文混合上传,怎么实现的多种类型报告对应下载(项目中的)6、如果需要批量上传一组很多图片或者数据该如何设计7、上传了100组数据,上传成功n组,要怎么实现断点记录哪些上传成功了,让用户下一次只需要上传后100-n组8、如果因为某些问题上传一半失败了,用户离开了页面,怎么储存上传成功返回的东西(这里答成粑粑了,感觉是考简历写的Blob分片之类的东西)9、axios写了什么请求拦截,怎么实现的请求去重,为什么想用map结构替换对象实现拦截器的去重(自己给自己挖坑了)10、路由懒加载怎么实现的,图片懒加载怎么实现,自定义指令的IntersectionObserver不兼容怎么办,requestIdleCallback预加载不兼容怎么办,有什么降级方案11、Vue2&nbsp;/&nbsp;Vue3区别,响应式,组合式API,TS支持(感觉还是了解底层原因的好一点)12、webpack和Vite的区别和为什么用Vite13、npm和pnpm的区别和pnpm的优势,为什么pnpm比npm更快14、微前端应用场景15、项目中的TS用在了哪里,泛型和接口的运用,泛型怎么用和约束之类的16、TS的extends,TS的方法等(这里也是答成粑粑了,对TS不是很熟悉)反问总结:面成了粑粑,比较紧张,也是感受到了不足,很多原理没去了解很深,还是很感谢给我这次面试机会了,面试官姐姐也很好,给了一些建议。这些问题其实也很简单了,只能说自己还是太菜了20分钟之后通知一面过了约二面!!!(马萨卡,我也运气来了吗,得去好好熟悉项目和简历了,好好准备一下呜呜呜,AAA沉淀~~)
    查看15道真题和解析
    点赞 评论 收藏
    分享
    评论
    点赞
    1
    分享

    创作者周榜

    更多
    牛客网
    牛客网在线编程
    牛客网题解
    牛客企业服务