前端八股Day5——XHS某中厂实习前端一面

没写完,睡醒补

CSS盒模型

//出现频率好高,感觉每次写面经都遇到

W3C标准盒模型(content-box):盒子宽高=width/height+padding+border+margin

IE怪异盒模型(border-box):盒子宽高=width/heigth(包括padding和border)+margin

默认标准切换怪异:box-sizing:border-box

对BFC有了解吗

BFC全称Block Formatting Context,块级格式化上下文,具有隔离性,BFC内部元素完全与外部隔离不会互相影响布局,内部默认垂直排布间距由margin决定,BFC会自动包裹浮动元素,不会造成高度塌陷问题,不同BFC间外边距不会合并

/* 常用触发方式 */
.element {display: flow-root;        /* 最干净的BFC触发方式 */overflow: hidden/auto;     /* 非visible值(慎用可能造成内容裁剪) */float: left/right;         /* 非none值 */position: absolute/fixed;  /* 绝对定位 */display: inline-block;     /* 行内块元素 */contain: layout/content/paint; /* CSS Containment规范 */
}

CSS选择器,优先级

!important > 内联 > id > 类 = 伪类 = 属性 > 标签 = 伪元素 = 后代  > 子 = 相邻 > 通配

用到过哪些布局

 1. 文档流布局(Normal Flow)

特点:元素按HTML顺序自然排列
痛点:难以实现复杂布局

2. 浮动布局(Float)

应用场景:早期多栏布局
缺陷:需手动清除浮动(clearfix hack)

3. 定位布局(Position)

典型应用:悬浮元素、模态框

1. Flexbox(弹性盒子)

核心优势:

  • 一维布局(主轴方向控制)

  • 动态分配剩余空间

  • 完美垂直居中方案

2. Grid(网格布局)

核心优势:

  • 二维布局(行列双向控制)

  • 精准控制网格轨道尺寸

  • 支持命名网格区域

3. 多列布局(Multi-column)

应用场景:报纸式文本排版

Flex布局有哪些属性

 

响应式怎么实现的

 

水平垂直居中的方法

//出现过好多次
//#1 绝对定位
.container{
position: absolute,
left: 50%,
top: 50%,
transform: translate(-50%,-50%),
}
//#2 flex
.container{
display: flex,
justify-content: center,
align-items: center,
}
//#3 grid
.container{
display: grid,
place-items: center,
}
//#4 行内块
.parent{
display: inline-block,
.child{
text-align: center,
vertical-align: center,
}
}
//#5 水平 margin
.container{
margin: 0 auto,
}

闭包

函数嵌套,内层函数变量可访问外层函数变量,并于内层函数返回接口,导致外层函数变量一直存在,未被销毁,主要应用场景为防抖节流,滥用易造成内存泄漏

闭包使用场景

防抖节流

防抖和节流

防抖:触发事件回调,n秒后执行,若n秒内再次触发则重新计时

节流:频繁触发事件回调,单位时间内只执行一次,适用于滚动条

箭头函数和普通函数的区别

 语法简洁,无构造函数,不能调用

箭头函数this指向

父级作用域,无父级指向Windows

无论普通函数还是箭头函数this指向机制

普通函数,构造即隐式绑定this指向自己

箭头函数,指向外层作用域

事件监听回调函数,即谁动指向谁

显示绑定: call apply bind

显示绑定指向箭头函数本身,无效

深拷贝和浅拷贝

一、核心概念对比

浅拷贝(Shallow Copy)

  • 定义:仅复制对象的一层属性

  • 引用处理:嵌套对象复制引用地址(新旧对象共享嵌套层)

  • 内存占用:较少(仅复制第一层)

  • 修改影响:修改嵌套对象会影响原对象

深拷贝(Deep Copy)

  • 定义:递归复制对象的所有层级属性

  • 引用处理:嵌套对象完全新建独立副本

  • 内存占用:较多(全层级独立存储)

  • 修改影响:新旧对象完全独立,互不影响


四、使用场景对比

  1. 简单对象且无嵌套引用

    • 推荐方案:浅拷贝

    • 原因:性能高效,实现简单

  2. 配置对象/状态管理

    • 推荐方案:深拷贝

    • 原因:避免意外修改原始数据

  3. 含函数/特殊类型(如Date、RegExp)的对象

    • 推荐方案:Lodash.cloneDeep

    • 原因:第三方库处理复杂类型更完善

  4. 需要极致性能的大数据操作

    • 推荐方案:不可变数据结构(如Immutable.js)

    • 原因:深拷贝成本过高时,通过结构共享优化性能

      //浅拷贝
      // 方法1:Object.assign
      const obj = { a: 1, b: { c: 2 } };
      const shallowCopy1 = Object.assign({}, obj);// 方法2:展开运算符
      const shallowCopy2 = { ...obj };// 方法3:数组浅拷贝
      const arr = [1, { d: 3 }];
      const shallowArr = arr.slice(); // 或 arr.concat()
      //深拷贝
      // 方法1:JSON序列化(有局限性)
      const deepCopy1 = JSON.parse(JSON.stringify(obj));// 方法2:递归实现(基础版)
      function deepClone(source) {if (typeof source !== 'object' || source === null) return source;const target = Array.isArray(source) ? [] : {};for (const key in source) {if (source.hasOwnProperty(key)) {target[key] = deepClone(source[key]);}}return target;
      }// 方法3:使用第三方库 lodash
      import _ from 'lodash';
      const deepCopy3 = _.cloneDeep(obj);

基本数据类型和引用数据类型指的哪些

基本:String Number Boolean Null Undefined Symbol BigInt

引用:Object

事件循环

宏任务和微任务

console.log('Script Start'); // 同步任务(宏任务)setTimeout(() => { console.log('setTimeout'); // 宏任务回调
}, 0);Promise.resolve().then(() => {console.log('Promise 1'); // 微任务1}).then(() => {console.log('Promise 2'); // 微任务2});console.log('Script End'); // 同步任务(宏任务)/* 输出顺序:
Script Start
Script End
Promise 1
Promise 2
setTimeout
*/

怎样处理跨域

http缓存策略

响应式原理

组件通信

从url输入到页面渲染的过程

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

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

相关文章

INP指标

什么是INP(Interaction to Next Paint) 参考网站:webVital-INP文档 定义与核心目标 INP 是一项稳定的 Core Web Vitals 指标,通过统计用户访问期间所有符合条件的互动约定时间,评估网页对用户操作的总体响应能力。最…

剖析扩散模型(Denoising Diffusion Probabilistic Models)

文章目录 1. 前言2. 前向扩散过程(Forward Diffusion)3. 反向生成过程(Reverse Process)4. 训练和推理过程中的伪代码5. 训练过程代码实现(Training)5.1 时间嵌入模块——TimeEmbedding5.2 前向扩散过程——GaussianDiffusionTrai…

基于 Spring Boot 瑞吉外卖系统开发(九)

基于 Spring Boot 瑞吉外卖系统开发(九) 保存菜品 菜品管理页面提供了一个“新增菜品”按钮,单击该按钮时,会打开新增菜品页面。 请求路径/dish,请求方法POST,参数使用DishDto类接收。 DishDto 添加f…

w317汽车维修预约服务系统设计与实现

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…

【Agent搭建】利用coze平台搭建一个AI销售?

目录 一、关于coze 核心功能 二、搭建属于你自己智能体 备注:(以下说明比较需要调整的板块) 1、从Prompt工程开始 2、搭建工作流 3、添加知识 三、总结 一、关于coze Coze是字节跳动推出的AI应用开发平台,专注于帮助用户快速…

Sharding-JDBC分库分表中的热点数据分布不均匀问题及解决方案

引言 在现代分布式应用中,使用Sharding-JDBC进行数据库的分库分表是提高系统性能和扩展性的常见策略。然而,在实际应用中,某些特定的数据(如最新订单、热门商品等)可能会成为“热点”,导致这些部分的数据处…

DSP48E2 的 MAC模式功能仿真

DSP48E2 仿真代码: 测试的功能为 P i ( A D ) ∗ B P i − 1 P_{i} (AD) * B P_{i-1} Pi​(AD)∗BPi−1​ timescale 1ns / 1nsmodule dsp_tb;// 输入reg CLK;reg CE;reg SCLR;reg signed [26:0] A, D;reg signed [17:0] B;// 输出wire signed [47:0] P;par…

抽象工厂模式(Abstract Factory Pattern)

很好!你现在已经开始接触设计模式了,而**抽象工厂模式(Abstract Factory Pattern)是一种常用于“创建一系列相关产品”**的经典设计模式。 我会一步步帮你理解: 🧠 一句话解释 抽象工厂模式:提…

Thymeleaf模板引擎从入门到实战:Spring Boot整合与核心用法详解

在 Java Web 开发的世界里,模板引擎是连接后端数据与前端展示的重要桥梁。Thymeleaf 凭借其强大的功能和简洁的语法,逐渐成为众多开发者的首选。如果你正在寻找一款能够让你的 Web 应用开发更加高效、代码更加优雅的模板引擎,那么 Thymeleaf …

【HarmonyOS】作业三 UI

目录 一. 单选题(共10题,10分) 1. (单选题, 1分)关于Tabs组件页签的位置设置,下面描述错误的是 2. (单选题, 1分)下面哪个组件不能包含子组件? 3. (单选题, 1分)ArkTS语言的实现计数器功能的组件名称是以下哪个? 4. (单选题…

《算法笔记》10.6小节——图算法专题->拓扑排序 问题 C: Legal or Not

题目描述 ACM-DIY is a large QQ group where many excellent acmers get together. It is so harmonious that just like a big family. Every day,many "holy cows" like HH, hh, AC, ZT, lcc, BF, Qinz and so on chat on-line to exchange their ideas. When so…

博客信息管理/博客管理

🛠 博客管理模块:设计建议 你应该以To B 的后台系统思路来设计,但保持简单、轻量级、自己易维护是关键。下面是针对你这个场景的建议。 🧱 前端页面结构(React/Vue 可用) 页面 说明 博客列表页 展示所有博…

全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars

一、基本介绍 MobileIMSDK是一套全平台原创开源IM通信层框架: 超轻量级、高度提炼,lib包50KB以内;精心封装,一套API同时支持UDP、TCP、WebSocket三种协议(可能是全网唯一开源的);客户端支持iOS…

SpringBoot商城平台系统设计与开发

概述 SpringBoot商城平台系统实现了商品展示、购物车、订单管理等商城核心功能,适合作为计算机专业设计项目或商城项目开发参考,实现商城平台的核心功能,学习商品管理、订单处理、支付集成等关键技术实现。 主要内容 1. 前台用户功能模块 …

【网络原理】深入理解HTTPS协议

本篇博客给大家带来的是网络原理的知识点, 由于时间有限, 分三天来写, 本篇为线程第三篇,也是最后一篇. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动…

【C语言练习】018. 定义和初始化结构体

018. 定义和初始化结构体 018. 定义和初始化结构体1. 定义结构体示例1:定义一个简单的结构体输出结果2. 初始化结构体示例2:在声明时初始化结构体输出结果示例3:使用指定初始化器初始化结构体(C99及以上标准支持)输出结果3. 结构体数组示例4:定义和初始化结构体数组输出结…

3D版同步帧游戏

以下是实现一个3D版同步帧游戏的详细步骤与完整代码示例。我们将以第一人称射击游戏(FPS)为原型,重点讲解3D空间中的同步机制优化。 项目升级:3D版核心改动 1. 3D坐标系与消息结构 // common/messages.go type Vector3 struct {X float32 `json:"x"`Y float32 `…

卷积神经网络进化史:从LeNet-5到现代架构的完整发展脉络

摘要 本文系统梳理卷积神经网络(CNN)从诞生到繁荣的发展历程。从1998年Yann LeCun开创性的LeNet-5出发,重点解析2012年引爆深度学习革命的AlexNet,并详细拆解后续演进的五大技术方向:网络深度化(VGG)、卷积功能强化(ResNet)、检测任务迁移(F…

在 Windows 中安装 Pynini 的记录

#工作记录 概述 Pynini 是一个用于加权有限状态文法编译的 Python 库,广泛应用于自然语言处理(NLP)领域。以下记录旨在用于回顾和帮助大家在 Windows 系统中安装 Pynini。 安装思路: 优先用conda虚拟环境 或 在python3.12的vir…

深挖Java之:运算符与输入器

今天我要介绍的是在Java中对于运算符与输入器的一些基础语法运算符与输入器的代码示例以及应用场景,他们在应用上的优势与劣势作说明介绍: 介绍:运算符与输入器是两个基础且关键的概念,它们共同构成了程序与用户、程序与数据之间…