前端面试每日三题 - Day 29
这是我为准备前端/全栈开发工程师面试整理的第29天每日三题练习:
✅ 题目1:Web Components技术全景解析
核心三要素
-
Custom Elements(自定义元素)
class MyButton extends HTMLElement {constructor() {super();this.attachShadow({ mode: 'open' });this.shadowRoot.innerHTML = `<button><slot></slot></button><style>button { padding: 8px 16px; }</style>`;} } customElements.define('my-button', MyButton);
-
Shadow DOM(影子DOM)
<!-- 使用示例 --> <my-button>点击我</my-button>
-
HTML Templates(模板标签)
<template id="user-card"><div class="card"><h2><slot name="name"></slot></h2></div> </template>
与主流框架对比
特性 | WebComponents | React/Vue |
---|---|---|
渲染引擎 | 浏览器原生 | 虚拟DOM |
样式隔离 | Shadow DOM天然支持 | CSS-in-JS/Scoped |
包体积 | 无运行时 | 需要框架运行时 |
学习曲线 | 较高 | 中等 |
浏览器兼容方案
// 动态加载polyfill
if (!('customElements' in window)) {await import('https://unpkg.com/@webcomponents/webcomponentsjs');
}
✅ 题目2:React 18并发模式原理剖析
并发模式核心机制
-
可中断渲染
// 使用startTransition标记非紧急更新 import { startTransition } from 'react';function handleInput(text) {startTransition(() => {setSearchText(text); // 低优先级更新}); }
-
自动批处理优化
// React 17及之前:多次渲染 setCount(c => c + 1); setFlag(f => !f);// React 18自动批处理:单次渲染
-
Suspense数据流
<Suspense fallback={<Loading />}><LazyComponent /> </Suspense>
性能优化示例
// 使用useTransition管理加载状态
function App() {const [isPending, startTransition] = useTransition();return (<div>{isPending && <Spinner />}<button onClick={() => {startTransition(() => {loadData();});}}>加载数据</button></div>);
}
✅ 题目3:微服务网关设计实践指南(Nodejs)
核心功能设计
-
动态路由配置
// 使用Express实现 const gateway = express(); const routeTable = {'/user-service/*': 'http://user-cluster:3000','/order-service/*': 'http://order-cluster:3001' };gateway.all('*', (req, res) => {const path = req.path;const target = Object.entries(routeTable).find(([prefix]) => path.startsWith(prefix))?.[1];if (!target) return res.status(404).send();// 代理请求httpProxy.web(req, res, { target }); });
-
熔断降级策略
// 使用circuit-breaker-js const CircuitBreaker = require('circuit-breaker-js'); const breaker = new CircuitBreaker({timeoutDuration: 5000,failureThreshold: 3 });app.get('/api', (req, res) => {breaker.run(() => fetchService(), {success: data => res.send(data),failure: err => res.status(503).send('服务暂不可用')}); });
-
JWT鉴权流程
const jwt = require('jsonwebtoken'); gateway.use((req, res, next) => {try {const token = req.headers.authorization.split(' ')[1];req.user = jwt.verify(token, SECRET_KEY);next();} catch (err) {res.status(401).send('无效凭证');} });
高可用设计方案
方案类型 | 实现方式 | 适用场景 |
---|---|---|
集群部署 | Nginx+Keepalived双活 | 百万级QPS系统 |
流量染色 | Header携带环境标识 | 灰度发布 |
动态限流 | Redis令牌桶算法 | 秒杀活动 |
📅 明日预告:
- TypeScript类型体操技巧
- Vue3编译器优化原理
- 分布式链路追踪系统设计
💪 坚持每日三题,未来更进一步!如果你也在准备面试,欢迎一起刷题打卡!
相关文章:
前端面试每日三题 - Day 29
这是我为准备前端/全栈开发工程师面试整理的第29天每日三题练习: ✅ 题目1:Web Components技术全景解析 核心三要素 Custom Elements(自定义元素) class MyButton extends HTMLElement {constructor() {super();this.attachShado…...

第十五章,SSL VPN
前言 IPSec 和 SSL 对比 IPSec远程接入场景---client提前安装软件,存在一定的兼容性问题 IPSec协议只能够对感兴趣的流量进行加密保护,意味着接入用户需要不停的调整策略,来适应IPSec隧道 IPSec协议对用户访问权限颗粒度划分的不够详细&…...

spring5.x讲解介绍
Spring 5.x 是 Spring Framework 的重要版本升级,全面拥抱现代 Java 技术栈,其核心改进涵盖响应式编程、Java 8支持、性能优化及开发模式创新。以下从特性、架构和应用场景三个维度详细解析: 一、核心特性与架构改进 Java 8 全面支持 Spring …...

荣耀A8互动娱乐组件部署实录(第3部分:控制端结构与房间通信协议)
作者:曾在 WebSocket 超时里泡了七天七夜的苦命人 一、控制端总体架构概述 荣耀A8控制端主要承担的是“运营支点”功能,也就是开发与运营之间的桥梁。它既不直接参与玩家行为,又控制着玩家的行为逻辑和游戏规则触发机制。控制端的主要职责包…...

levelDB的数据查看(非常详细)
起因:.net大作业天气预报程序(WPF)答辩时,老师问怎么维持数据持久性的,启动时加载的数据存在哪里,我明白老师想考的应该是json文件的解析(正反),半天没答上来存那个文件了(老师默认这个文件是自…...

在Fiddler中添加自定义HTTP方法列并高亮显示
在Fiddler中添加自定义HTTP方法列并高亮显示 Fiddler 是一款强大的 Web 调试代理工具,允许开发者检查和操作 HTTP 流量。一个常见需求是自定义 Web Sessions 列表,添加显示 HTTP 方法(GET、POST 等)的列,并通过颜色区…...

基于公共卫生大数据收集与智能整合AI平台构建测试:从概念到实践
随着医疗健康数据的爆发式增长,如何有效整合、分析和利用这些数据已成为公共卫生领域的重要挑战。传统方法往往难以应对数据的复杂性、多样性和海量性,而人工智能技术的迅猛发展为解决这些挑战提供了新的可能性。基于数据整合与公共卫生大数据的AI平台旨在构建一个全面的生态…...

clahe算法基本实现
一、背景介绍 图像算法处理中,经常需要遇到图像对比度调整的情况,CLAHE(Contrast Limited Adaptive Histogram Equalization)则是一种基于直方图,使用非常普遍的图像对比度调整算法。 关于这个算法的介绍有很多,基本原理这些&…...

python打卡day20
特征降维------特征组合(以SVD为例) 知识点回顾: 奇异值的应用: 特征降维:对高维数据减小计算量、可视化数据重构:比如重构信号、重构图像(可以实现有损压缩,k 越小压缩率越高&#…...
如何使用极狐GitLab 软件包仓库功能托管 ruby?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 软件包库中的 Ruby gems (BASIC ALL) WARNING:Ruby gems 软件包库正在开发中,由于功能有限,尚未准备好…...

数字化转型-4A架构之数据架构
系列文章 数字化转型-4A架构(业务架构、应用架构、数据架构、技术架构) 数字化转型-4A架构之业务架构 数字化转型-4A架构之应用架构 数据架构 Data Architecture(DA) 1. 定义 数据架构,是组织管理数据资产的科学之…...

React 第三十七节 Router 中 useOutlet Hook的使用介绍以及注意事项
React Router 中的 useOutlet 是 v6 版本新增的 Hook,用于在父路由组件中访问当前嵌套的子路由元素。它提供了比 <Outlet> 组件更灵活的控制方式,适合需要根据子路由状态进行动态处理的场景。 一、useOutlet的基本用法 import { useOutlet } fro…...
u-boot学习笔记(四)
文章目录 cmd/sub_cmd/exit.cdo_exit()exit.c可提供的命令及使用方式: ext2.cdo_ext2ls()do_ext2load()ext2.c可提供的命令及使用方式: ext4.cdo_ext4_size()do_ext4_load()do_ext4_ls()do_ext4_write()ext4.c可提供的命令及使用方式: fastbo…...
使用React实现调起系统相机功能
前言: 最近在公司推荐研发任务时实现了拍照识别功能,需要调起系统相机,笔者实现之后,将实现的流程分享给各位小伙伴 功能描述: 点击相机icon调起系统相机,同时可以选择是拍摄还是使用相册图片࿰…...
结构性变革与新兴机遇
近年来,全球就业市场正经历深刻的结构性变革。受技术进步、产业升级、人口结构变化及全球经济格局调整的影响,传统就业模式被重塑,新的职业机会不断涌现。本文将分析当前就业市场的主要趋势,并探讨其对劳动者、企业和政策制定者的…...

AGV通信第3期|AGV集群智能应急响应系统:从故障感知到快速恢复
随着智慧工厂物流系统复杂度的提升,AGV运行过程中的异常处理能力已成为保障生产连续性的关键指标。面对突发障碍、设备故障等意外状况,传统依赖人工干预的响应模式已无法满足现代智能制造对时效性的严苛要求。 一、AGV异常应急体系面临的挑战 响应时效瓶…...

军事目标无人机视角坦克检测数据集VOC+YOLO格式4003张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4003 标注数量(xml文件个数):4003 标注数量(txt文件个数):4003 …...
2025年5月AI科技领域周报(4.28-5.4):大模型商用加速落地 边缘AI开启全域智能新图景
2025年5月AI科技领域周报(4.28-5.4):大模型商用加速落地 边缘AI开启全域智能新图景 一、本周热点回顾1. OpenAI发布GPT-5多模态大模型 开启通用人工智能新纪元2. 谷歌发布安卓15系统 全面集成Gemini大模型重构移动生态3. 百度Apollo发布第六代…...
Flutter 3.29.3 花屏问题记录
文章目录 Flutter 3.29.3 花屏问题记录问题记录解决尝试解决 Flutter 3.29.3 花屏问题记录 问题记录 flutter版本3.29.3,代码大致为: ShaderMask(shaderCallback: (Rect bounds) {return LinearGradient(begin: Alignment.topCenter,end: Alignment.bo…...
【Pandas】pandas DataFrame all
Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 True pandas.DataFrame.all() pandas.DataFrame.all() 方…...

软件安全(二)优化shellcode
我们在上一节课中所写的shellcode,其中使用到的相关的API是通过写入其内存地址来实现调用。这种方法具有局限性,如切换其他的操作系统API的内存地址就会发生变化,从而无法正常调用。 所谓的shellcode不过是在目标程序中加一个区段使得程序可…...

RabbitMQ-运维
文章目录 前言运维-集群介绍多机多节点单机多节点 多机多节点下载配置hosts⽂件配置Erlang Cookie启动节点构建集群查看集群状态 单机多节点安装启动两个节点再启动两个节点验证RabbitMQ启动成功搭建集群把rabbit2, rabbit3添加到集群 宕机演示仲裁队列介绍raft算法协议 raft基…...

深度学习基础--目标检测常见算法简介(R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN、SSD、YOLO)
博主简介:努力学习的22级本科生一枚 🌟;探索AI算法,C,go语言的世界;在迷茫中寻找光芒🌸 博客主页:羊小猪~~-CSDN博客 内容简介:常见目标检测算法简介…...
【Python 元组】
Python 中的元组(Tuple)是一种不可变的有序数据集合,用于存储多个元素的序列。与列表(List)类似,但元组一旦创建后无法修改,这种特性使其在特定场景下具有独特优势。 一、核心特性 不可变性&am…...

LINUX CFS算法解析
文章目录 1. Linux调度器的发展历程2. CFS设计思想3. CFS核心数据结构3.1 调度实体(sched_entity)3.2 CFS运行队列(cfs_rq)3.3 任务结构体中的调度相关字段 4. 优先级与权重4.1 优先级范围4.2 权重映射表 (prio_to_weight[])优先级计算4.3.1. static_prio (静态优先级)4.3.2. n…...
智能指针笔记
智能指针,利用class类对象销毁的时候自动调用析构函数,去把delete ptr的操作放在析构函数里,去实现自动释放指针里的资源 RAII是ResourceAcquisition Is Initialization的缩写,他是⼀种管理资源的类的设计思想,本质是 …...

软考-软件设计师中级备考 14、刷题 算法
一、考点归纳 1)排序 2、查找 3、复杂度 4、经典问题 0 - 1 背包动态规划0 - 1 背包问题具有最优子结构性质和重叠子问题性质。通过动态规划可以利用一个二维数组来记录子问题的解,避免重复计算,从而高效地求解出背包能装下的最大价值。分…...
Vue3 中 ref 与 reactive 的区别及底层原理详解
一、核心区别 1. 数据类型与使用场景 • ref 可定义基本类型(字符串、数字、布尔值)和对象类型的响应式数据。对于对象类型,ref 内部会自动调用 reactive 将其转换为响应式对象。 语法特点:需通过 .value 访问或修改数据&#…...
豆包:基于多模态交互的智能心理咨询机器人系统设计与效果评估——情感计算框架下的对话机制创新
豆包:基于多模态交互的智能心理咨询机器人系统设计与效果评估——情感计算框架下的对话机制创新 摘要 随着人工智能在心理健康领域的应用深化,本文提出一种融合情感计算与动态对话管理的智能心理咨询机器人系统架构。通过构建“用户状态-情感响应-策略生成”三层模型,结合…...

Baklib实战企业内容与中台管理差异解析
企业内容管理中台本质差异 企业内容管理系统(CMS)与内容中台的核心差异在于战略定位与技术路径的本质性区隔。传统CMS聚焦于内容存储与审批流程的线性管理,而内容中台则构建起全域数据服务中枢,通过API接口实现跨系统内容资产调用…...