【前端面经】百度一面

article/2025/8/14 16:54:51

写在前面:面经只是记录博主遇到的题目。每题的答案在编写文档的时候已经有问过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.hkcw.cn/article/OSuPoaFhCZ.shtml

相关文章

智能体觉醒:AI开始自己“动手”了-自主进化开启任务革命时代

1. 智能体&#xff1a;AI从“工具”到“伙伴”的关键跃迁 1.1 什么是智能体&#xff1f; 智能体&#xff08;Agent&#xff09;是AI的“进化版”——它不再局限于生成文字或图像&#xff0c;而是能像人类一样“规划任务”“调用工具”甚至“协同合作”。例如&#xff0c;一个…

STM32软件spi和硬件spi

核心观点 本文主要介绍了SPI通信的两种实现方式&#xff1a;软件SPI和硬件SPI。详细阐述了SPI通信协议的基本概念、硬件电路连接方式、移位示意图、时序基本单元以及四种工作模式。同时&#xff0c;对W25Q64模块进行了详细介绍&#xff0c;包括其硬件电路、框图以及操作注意事…

MongoDB数据库命令

目录 一、数据库操作 二、集合&#xff08;表&#xff09;操作 三、文档&#xff08;记录&#xff09;CRUD 操作 1、插入文档 2、查询文档 3、更新文档 4、删除文档 四、聚合操作 1、单目的聚合操作 2、聚合管道 3、MapReduce编程 五、索引管理操作 六、用户权限管…

当前最新IDEA社区版安装当前最新的tomcat插件:集成SmartTomcat,提升开发效率

当前最新IDEA社区版安装当前最新的tomcat插件&#xff1a;集成SmartTomcat&#xff0c;提升开发效率 【下载地址】当前最新IDEA社区版安装当前最新的tomcat插件 该项目为开发者提供了详细的指南&#xff0c;帮助在IntelliJ IDEA社区版中安装SmartTomcat插件&#xff0c;以便更高…

Docker 实战——部署 Nginx 镜像容器、Tomcat 镜像容器、MySQL 镜像容器

#设置基础镜像 FROM dadoha/centos7.4.1708 #维护该镜像的用户信息 MAINTAINER zhangsan #安装相关依赖包 RUN yum clean all ; yum -y install proc-devel net-tools gcc zlib zlib-devel make openssl-devel wget #下载并解压nginx软件包 RUN wget http://nginx.org/d…

Nginx和Tomcat实现负载均衡群集部署应用

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作时间&…

Linux中使用Docker容器构建Tomcat容器完整教程

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作…

一文读懂Nginx应用之 Keepalived+Nginx+Tomcat实现高可用负载均衡集群

目录 一、概述 二、环境规划 三、Nginx服务、Tomcat服务安装部署 (一)、Nginx服务安装部署 (二)、Tomcat服务安装部署 1、Tomcat01应用服务器部署应用程序 (1)、tomcat_8081服务 (2)、tomcat_8082服务 2、Tomcat02应用服务器部署应用程序 (1)、tomcat_8081服务 (2)、…

从0到1部署Tomcat和添加servlet(IDEA2024最新版详细教程)

本文不仅细化了每一个步骤&#xff0c;实现了从0到1部署Tomcat和添加servlet。还针对IDEA2024版和以前的版本在部署上的区别&#xff0c;做了详细介绍&#xff0c;尤其是add framework support部分。与此同时&#xff0c;针对控制台中文乱码问题&#xff0c;本文也给出了详细解…

Apache Tomcat RCE 稳定复现 保姆级!(CVE-2024-50379)附视频+POC

原文链接 Apache Tomcat 最新RCE 稳定复现分析 保姆级&#xff01;&#xff01;&#xff01;附复现视频POC 前言 最近爆出 Apache Tomcat条件竞争导致的RCE&#xff0c;影响范围当然是巨大的&#xff0c;公司也及时收到了相关情报&#xff0c;于是老大让我复现&#xff0c;以…

Tomcat 的使用(图文教学)

Tomcat 的使用&#xff08;图文教学&#xff09; 前言一、什么是Tomcat&#xff1f;二、Tomcat 服务器和 Servlet 版本的对应关系三、Tomcat 的使用 1、安装2、目录介绍3、如何启动4、Tomcat 的停止5、如何修改 Tomcat 的端口号6、如何部暑 web 工程到 Tomcat 中 6.1 方式一6.…

linux服务器tomcat日志中文出现问号乱码

目录 一、场景二、排查三、原因四、解决 一、场景 tomcat日志的中文出现问号乱码 乱码示例 ??[377995738417729536]????????? ac??????????????message:二、排查 1、使用locale命令查看服务器当前使用的语言包 发现只用的语言包为utf-8&#xff0…

在【IntelliJ IDEA】中配置【Tomcat】【2023版】【中文】【图文详解】

作为一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;IntelliJ IDEA为Web服务器提供了卓越的支持&#xff0c;从而极大地简化了程序员在Web开发过程中的工作流程。学习Java Web开发实质上就是掌握如何创造动态Web资源&#xff0c;这些资源在完成开发后&…

tomcat 8 所有版本安装包

https://archive.apache.org/dist/tomcat/tomcat-8/ 此时在这里点击你要下载的版本号&#xff0c;这里大版本都是 8&#xff0c;这里演示下载 8.5.57 的过程&#xff1a; 点击后页面如下&#xff0c;再点击这里的 bin/ 我使用的linux系统选择对应的版本下载

Tomcat多应用部署与静态资源路径问题全解指南

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…

Tomcat 8.5 下载、安装、启动及各种问题

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 本期内容主要介绍 Tomcat 8 的安装&#xff0c;以及可能会遇到的问题 文章目录 1. Tomcat 安装2. 可能会遇到的问题2.…

tomcat官网下载及安装

文档参考&#xff1a; (5条消息) tomcat官网下载详细步骤_成长硕果的博客-CSDN博客_tomcat怎么下载 (5条消息) Tomcat的下载及安装_InkingWT的博客-CSDN博客_tomcat下载及安装 一、Tomcat下载 1、tomcat官方网址&#xff1a;https://tomcat.apache.org 2、选择自己所需要的…

Apache Tomcat 远程代码执行漏洞(CVE-2025-24813) 超详细!

一、漏洞概述 远程代码执行漏洞(CVE-2025-24813)源于 Apache Tomcat 的反序列化机制未对用户输入进行严格验证&#xff0c;攻击者可通过构造恶意序列化对象绕过安全限制&#xff0c;处理部分 PUT 请求时&#xff0c;攻击者利用临时文件路径处理中的缺陷&#xff08;将路径分隔…

Tomcat 是什么?有什么功能和作用?为什么启动 Spring 或 Spring Boot 项目需要 Tomcat?

本文的内容是博主学习并记录关于 Tomcat 的基本知识&#xff0c;介绍了 Tomcat 为什么是一个 Web 应用服务器&#xff0c;为什么是 Servlet 容器&#xff0c;同时总结了 Tomcat 的一些功能原理&#xff0c;并详细介绍了 Tomcat 在 Spring 和SpringBoot 项目中的使用原理。本文不…

IDEA 中配置 Tomcat (详细教程)

前言 在Web项目的开发过程中&#xff0c;Tomcat 作为一款开源的Servlet容器&#xff0c;不仅能够提供稳定的运行环境&#xff0c;为开发者提供了丰富的功能支持。因此&#xff0c;本文将详细阐述在Web项目如何配置Tomcat服务器&#xff0c;包括安装检查、模块设置、路径配置、依…