前端面试每日三题 - Day 29

news/2025/5/24 2:13:17

这是我为准备前端/全栈开发工程师面试整理的第29天每日三题练习:


✅ 题目1:Web Components技术全景解析

核心三要素

  1. 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);
    
  2. Shadow DOM(影子DOM)

    <!-- 使用示例 -->
    <my-button>点击我</my-button>
    
  3. HTML Templates(模板标签)

    <template id="user-card"><div class="card"><h2><slot name="name"></slot></h2></div>
    </template>
    

与主流框架对比

特性WebComponentsReact/Vue
渲染引擎浏览器原生虚拟DOM
样式隔离Shadow DOM天然支持CSS-in-JS/Scoped
包体积无运行时需要框架运行时
学习曲线较高中等

浏览器兼容方案

// 动态加载polyfill
if (!('customElements' in window)) {await import('https://unpkg.com/@webcomponents/webcomponentsjs');
}

✅ 题目2:React 18并发模式原理剖析

并发模式核心机制

  1. 可中断渲染

    // 使用startTransition标记非紧急更新
    import { startTransition } from 'react';function handleInput(text) {startTransition(() => {setSearchText(text); // 低优先级更新});
    }
    
  2. 自动批处理优化

    // React 17及之前:多次渲染
    setCount(c => c + 1);
    setFlag(f => !f);// React 18自动批处理:单次渲染
    
  3. 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)

核心功能设计

  1. 动态路由配置

    // 使用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 });
    });
    
  2. 熔断降级策略

    // 使用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('服务暂不可用')});
    });
    
  3. 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编译器优化原理
  • 分布式链路追踪系统设计

💪 坚持每日三题,未来更进一步!如果你也在准备面试,欢迎一起刷题打卡!


https://dhexx.cn/news/show-5514466.html

相关文章

iOS创建Certificate证书、制作p12证书流程

一、创建Certificates 1、第一步得先在苹果电脑上创建一个.certSigningRequest的文件。首先打开钥匙串&#xff0c;使用快捷键【command空格】——输入【钥匙串】回车&#xff08;找不到就搜一下钥匙串访问使用手册&#xff09; 2、然后在苹果电脑的左上角菜单栏选择【钥匙串…

Android 项目中配置了多个 maven 仓库,但依赖还是下载失败,除了使用代理,还有其他方法吗?

文章目录 前言解决方案gradlemaven 仓库 前言 我们在Android 开发的过程中&#xff0c;经常会遇到三方依赖下载不下来的问题。一般情况下我们会在项目的build.gradle文件中配置多个 maven 仓库来解决。 // Top-level build file where you can add configuration options com…

【UEFN】用于可靠多模态情感分析的高效不确定性估计融合网络

abstract&#xff1a; 数字时代的快速发展极大地改变了社交媒体&#xff0c;导致情感表达更加多样化&#xff0c;公共话语日益复杂。因此&#xff0c;识别多模态数据中的关系变得越来越具有挑战性。目前大多数多模态情感分析&#xff08;MSA&#xff09;方法集中于将来自不同模…

【网安播报】Meta 推出 LlamaFirewall开源框架以阻止 AI 越狱、注入和不安全代码

1、Meta 推出 LlamaFirewall 框架以阻止 AI 越狱、注入和不安全代码 Meta 宣布推出 LlamaFirewall&#xff0c;这是一个开源框架&#xff0c;旨在保护人工智能 &#xff08;AI&#xff09; 系统免受新出现的网络风险&#xff0c;例如提示词注入、越狱和不安全代码等。除了 Llam…

五一旅游潮涌:数字化如何驱动智慧旅游升级

文化和旅游部5月6日公布2025年“五一”假期文化和旅游市场情况&#xff0c;经文化和旅游部数据中心测算&#xff0c;假期5天&#xff0c;全国国内出游3.14亿人次&#xff0c;同比增长6.4%&#xff1b;国内游客出游总花费1802.69亿元&#xff0c;同比增长8.0%。在这组流动的数字…

Uniapp Android/IOS 获取手机通讯录

介绍 最近忙着开发支付宝小程序和app&#xff0c;下面给大家介绍一下 app 获取通讯录的全部过程吧&#xff0c;也是这也是我app开发中的一项需求吧。 效果图如下 勾选配置文件 使用uniapp开发的童鞋都知道有一个配置文件 manifest.json 简单的说一下&#xff0c;就是安卓/ios/…

量子计算在软件开发中的兴起

量子计算的兴起对软件开发有着深远的影响&#xff0c;它能够实现传统计算系统所无法完成的解决方案。 量子计算&#xff08;QC&#xff09;是一个充满前景的新概念&#xff0c;标志着软件开发领域的一次变革性转变。这项技术的融合将把编程提升到一个全新的高度&#xff0c;为…

Android Handler 机制面试总结

一、Handler 机制核心原理 1. ThreadLocal 与线程绑定 真题&#xff1a; 为什么每个线程只能有一个 Looper&#xff1f;ThreadLocal 是如何实现线程隔离的&#xff1f; 源码注释&#xff1a; public final class Looper {// 静态 ThreadLocal 存储每个线程的 Looper 实例s…

服务器配置错误导致SSL/TLS出现安全漏洞,如何进行排查?

SSL/TLS 安全漏洞排查与修复指南 一、常见配置错误类型‌ 弱加密算法与密钥问题‌ 使用弱密码套件&#xff08;如DES、RC4&#xff09;或密钥长度不足&#xff08;如RSA密钥长度<2048位&#xff09;&#xff0c;导致加密强度不足。 密钥管理不当&#xff08;如私钥未加密存…

5月9日复盘-混合注意力机制

5月9日复盘 四、混合注意力 混合注意力机制&#xff08;Hybrid Attention Mechanism&#xff09;是一种结合空间和通道注意力的策略&#xff0c;旨在提高神经网络的特征提取能力。 1. CBAM Convolution Block Attention Module &#xff0c;卷积块注意力模块 论文地址&…