【前端面经】百度一面

news2025/6/7 22:13:38

写在前面:面经只是记录博主遇到的题目。每题的答案在编写文档的时候已经有问过deepseek,它只是一种比较普世的答案,要学得深入还是靠自己

Q:

<html>
    <style>
        .a {
            background-color: red;
            width: 200px;
            height: 100px;
        }
        .b {
            background-color: blue;
            width: 50px;
            height: 50px;
            margin-top: 100%;
            padding-top: 50%;
        }
    </style>
    <body>
        <div class="a">
            <div class="b">
            </div>
        </div>
    </body>
</html>

以上代码执行结果是什么
A:
在这里插入图片描述
考察百分比单位的解析规则。
在CSS中,百分比单位的计算方式取决于它所应用的属性以及其包含块的情况。
对于margin/padding的百分比值,无论是水平方向还是垂直方向,都是相对于包含块的宽度来计算的。在这个例子中,包含块是a的div所以是200px。
padding-top与margin相同,也是相对于包含块的宽度,所以50%是100px。
外边距折叠:浏览器的一种默认行为。当子元素的margin-top紧邻父元素的margin-top时,它们边距会折叠,合并为一个外边距,作用于父元素上;如果父元素加上“border: 1px solid black;”则会分割

Q:cesium底层代码有看过吗,底层如何使用canvas实现地图渲染的
A:一个基于WebGL的3D地理空间可视化引擎,底层通过canvas+WebGL实现高性能的地图渲染。
一、场景管理层:管理实体,地形,影像,相机;通过私有API将数据转换为WebGL可渲染的图元。
二、渲染引擎层:基于WebGL封装底层绘图指令;使用command模式组织绘制逻辑,实现高效排序和批处理。
三、数据调度层:动态加载和卸载瓦片,地形,矢量数据。

  		// 创建 WebGL 上下文(通过 Canvas)
        const canvas = document.getElementById('cesiumContainer');
        const context = canvas.getContext('webgl', { alpha: false });
        // 主渲染循环
        function render() {
            // 1. 更新相机和场景状态
            scene.updateFrameState();

            // 2. 生成渲染命令队列
            const commandList = scene.updateAndExecuteCommands();
            // 3. 执行 WebGL 绘制
            context.clear(...);
            executeCommands(commandList);
            // 4. 请求下一帧
            // requestAnimationFrame调度动画帧,可以确保动画在浏览器【重绘】周期内执行
            // 从而避免不必要的回流,这种方式可确保动画在最佳时间点进行渲染
            requestAnimationFrame(render);
        }
        // 关键渲染技术
        // 伪代码:瓦片裁剪与选择
        if (tile.isInView && tile.meetsLODCriteria) {
            tile.loadContent(); // 加载纹理或几何数据
            commandList.add(tile.renderCommand);
        }
        // GLSL着色器
        // 顶点着色器(处理高程采样)
        varying vec3 v_positionEC;
        void main() {
            vec4 position = czm_projection * czm_modelView * vec4(positionMC, 1.0);
            v_positionEC = (czm_modelView * vec4(positionMC, 1.0)).xyz;
            gl_Position = position;
        }

Q:为什么想到用cesium
A:图片获取url然后把所有的图层叠加,转化为canvas。它做3d相对比较底层,SuperMap也有3D,但是它的3D是基于cesium做了二次封装,而越是底层的东西越好操作,被过度封装的东西好用,但是如果有bug或业务改动则不合适。

Q:协商缓存和强缓存有什么区别
A:若缓存生效,强缓存返回200【cache-control】,协商缓存返回304【if-none-match】

Q:性能指标有哪些,查看指标之后如何去优化性能
A:

  • FP first paint 浏览器首次绘制像素到屏幕上的时间
  • FCP first contentful paint 首次绘制有内容的像素到屏幕上的时间
  • FMP 首次绘制有意义的像素到屏幕上的时间
  • 帧率FPS
  • LCP largest contentful paint
  • FID first input delay
  • CLS 累积布局偏移
  • TTI 可交互时间

优化:

  • 长缓存:使浏览器能缓存应用程序的静态资源更长时间,以减少不必要的网络请求,如果资源的URL不变,浏览器会继续用缓存的资源,直到URL变化
  • Web Worker并行处理
  • 图片懒加载+监听滚动事件
  • 长列表渲染:分片,只渲染可视区域,滚动触底加载
  • 动画优化性能:启用GPU加速,避免过多z-index

答题注意逻辑:我使用Lighthouse发现A问题,然后优化对Webpack的构建以解决A问题,部署后查看Chrome DevTools页面,分析是否A问题解决,是否仍有问题,为什么仍有问题。

Q:HMR服务器热更新的原理、热更新时ws传给浏览器有哪些事件
A:模块热替换,是Webpack、Vite等构建工具提供的功能,允许在运行时动态替换,而无需完全刷新页面。

步骤:

  1. Webpack、Vite的开发服务器webpack-dev-server启动时,建立new WebSocket(‘ws://localhost:xxx’)
  2. 服务器用文件系统监听检测代码变动,当文件被修改时,框架会重新编译受影响的部分,并生成新的模块代码和HMR更新清单
  3. 服务器通过ws向浏览器发送HMR更新事件
  4. 浏览器接受更新,新模块代码动态替换旧模块,并执行相关回调

热更新时ws传给浏览器有哪些事件:
在这里插入图片描述

// 事件的详细结构
// 浏览器收到后,会用新模块代码替换旧模块
// 执行 module.hot.accept() 回调(如果有)
{
  "type": "update",
  "data": {
    "hash": "a1b2c3d4",       // 当前编译的 hash
    "modules": [               // 需要更新的模块列表
      {
        "id": "./src/App.js",  // 模块路径
        "name": "./App",       // 模块名称
        "generated": "..."     // 新模块代码(字符串或 AST)
      }
    ],
    "source": "HMR"           // 更新来源
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2397523.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[免费]微信小程序网上花店系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序网上花店系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序网上花店系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…

css使用scoped之后样式失效问题

项目中的vue代码原本用的style标签来写css&#xff0c;现在想改成<style langscss scoped>&#xff0c;但是改完之后发现样式不对&#xff1a; 原来是&#xff1a; 将style改成scoped之后变成了&#xff1a;检查发现是之前定义的一些变量无法被识别&#xff0c;导致这些样…

【NLP】将 LangChain 与模型上下文协议 (MCP) 结合使用

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

使用NMEA Tools生成GPS轨迹图

前言 在现代科技快速发展的时代&#xff0c;GPS定位技术已经广泛应用于各种领域&#xff0c;如导航、物流、运动追踪等。为了获取和分析GPS数据&#xff0c;我们常常需要使用一些专业的工具。本文将详细介绍如何使用一款名为“NMEA Tools”的APK应用&#xff0c;结合GPSVisual…

1. pytorch手写数字预测

1. pytorch手写数字预测 1.背景2.准备数据集2.定义模型3.dataloader和训练4.训练模型5.测试模型6.保存模型 1.背景 因为自身的研究方向是多模态目标跟踪&#xff0c;突然对其他的视觉方向产生了兴趣&#xff0c;所以心血来潮的回到最经典的视觉任务手写数字预测上来&#xff0…

AXI 协议补充(二)

axi协议存在slave 和master 之间的数据交互,在ahb ,axi-stream 高速接口 ,叠加大位宽代码逻辑中,往往有时序问题,valid 和ready 的组合电路中的问题引发的时序问题较多。 本文根据axi 协议和现有解决反压造成的时序问题的方法做一个详细的科普。 1. 解决时序问题的方法:…

Linux 基础指令入门指南:解锁命令行的实用密码

文章目录 引言&#xff1a;Linux 下基本指令常用选项ls 指令pwd 命令cd 指令touch 指令mkdir 指令rmdir 指令 && rm 指令man 指令cp 指令mv 指令cat 指令more 指令less 指令head 指令tail 指令date 指令cal 指令find 指令按文件名搜索按文件大小搜索按修改时间搜索按文…

标准精读:2025 《可信数据空间 技术架构》【附全文阅读】

《可信数据空间 技术架构》规范了可信数据空间的技术架构,明确其作为国家数据基础设施的定位,以数字合约和使用控制技术为核心,涵盖功能架构(含服务平台与接入连接器的身份管理、目录管理、数字合约管理等功能)、业务流程(登记、发现、创建空间及数据流通利用)及安全要求…

山东大学软件学院项目实训-基于大模型的模拟面试系统-面试官和面试记录的分享功能(2)

本文记录在发布文章时&#xff0c;可以添加自己创建的面试官和面试记录到文章中这一功能的实现。 前端 首先是在原本的界面的底部添加了两个多选框&#xff08;后期需要美化调整&#xff09; 实现的代码&#xff1a; <el-col style"margin-top: 1rem;"><e…

Webug4.0靶场通关笔记05- 第5关SQL注入之过滤关键字

目录 一、代码审计 1、源码分析 2、SQL注入分析 &#xff08;1&#xff09;大小写绕过 &#xff08;2&#xff09;双写绕过 二、第05关 过滤型注入 1、进入靶场 2、sqlmap渗透 &#xff08;1&#xff09;bp抓包保存报文 &#xff08;2&#xff09;sqlmap渗透 &…

ONLYOFFICE文档API:更强的安全功能

在数字化办公时代&#xff0c;文档的安全性与隐私保护已成为企业和个人用户的核心关切。如何确保信息在存储、传输及协作过程中的安全&#xff0c;是开发者与IT管理者亟需解决的问题。ONLYOFFICE作为一款功能强大的开源办公套件&#xff0c;不仅提供了高效的文档编辑与协作体验…

解析楼宇自控系统:分布式结构的核心特点与优势展现

在建筑智能化发展的进程中&#xff0c;楼宇自控系统作为实现建筑高效运行与管理的关键&#xff0c;其系统结构的选择至关重要。传统的集中式楼宇自控系统在面对日益复杂的建筑环境和多样化的管理需求时&#xff0c;逐渐暴露出诸多弊端&#xff0c;如可靠性低、扩展性差、响应速…

C#数字图像处理(三)

文章目录 前言1.图像平移1.1 图像平移定义1.2 图像平移编程实例 2.图像镜像2.1 图像镜像定义2.2 图像镜像编程实例 3.图像缩放3.1 图像缩放定义3.2 灰度插值法3.3 图像缩放编程实例 4.图像旋转4.1 图像旋转定义4.2 图像旋转编程实例 前言 在某种意义上来说&#xff0c;图像的几…

SQL Transactions(事务)、隔离机制

目录 Why Transactions? Example: Bad Interaction Transactions ACID Transactions COMMIT ROLLBACK How the Transaction Log Works How Data Is Stored Example: Interacting Processes Interleaving of Statements Example: Strange Interleaving Fixing the…

【机器学习基础】机器学习入门核心:Jaccard相似度 (Jaccard Index) 和 Pearson相似度 (Pearson Correlation)

机器学习入门核心&#xff1a;Jaccard相似度 &#xff08;Jaccard Index&#xff09; 和 Pearson相似度 &#xff08;Pearson Correlation&#xff09; 一、算法逻辑Jaccard相似度 (Jaccard Index)**Pearson相似度 (Pearson Correlation)** 二、算法原理与数学推导1. Jaccard相…

QT之头像剪裁效果实现

文章目录 源码地址&#xff0c;环境&#xff1a;QT5.15&#xff0c;MinGW32位效果演示导入图片设置剪裁区域创建剪裁小窗口重写剪裁小窗口的鼠标事件mousePressEventmouseMoveEventmouseReleaseEvent 小窗口移动触发父窗口的重绘事件剪裁效果实现 源码地址&#xff0c;环境&…

【GPT入门】第40课 vllm与ollama特性对比,与模型部署

【GPT入门】第40课 vllm与ollama特性对比&#xff0c;与模型部署 1.两种部署1.1 vllm与ollama特性对比2. vllm部署2.1 服务器准备2.1 下载模型2.2 提供模型服务 1.两种部署 1.1 vllm与ollama特性对比 2. vllm部署 2.1 服务器准备 在autodl 等大模型服务器提供商&#xff0c;…

unity开发棋牌游戏

使用unity开发的棋牌游戏&#xff0c;目前包含麻将、斗地主、比鸡、牛牛四种玩法游戏。 相关技术 客户端&#xff1a;unity 热更新&#xff1a;xlua 服务器&#xff1a;c Web服务器&#xff1a;ruoyi 游戏视频 unity开发棋牌游戏 游戏截图

Nat Commun项目文章 ▏小麦CUTTag助力解析转录因子TaTCP6调控小麦氮磷高效利用机制

今年2月份发表在《Nature Communications》&#xff08;IF14.4&#xff09;的“TaTCP6 is required for efficientand balanced utilization of nitrate and phosphorus in wheat”揭示了TaTCP6在小麦氮磷利用中的关键调控作用&#xff0c;为优化肥料利用和提高作物产量提供了理…

C 语言开发中常见的开发环境

目录 1.Dev-C 2.Visual Studio Code 3.虚拟机 Linux 环境 4.嵌入式 MCU 专用开发环境 1.Dev-C 使用集成的 C/C 开发环境&#xff08;适合基础学习&#xff09;,下载链接Dev-C下载 - 官方正版 - 极客应用 2.Visual Studio Code 结合 C/C 扩展 GCC/MinGW 编译器&#xff0c…