当前位置: 首页 > article >正文

前端面试每日三题 - Day 10

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

  • JavaScript 中 this 的指向详解与常见陷阱
  • Vue 生命周期钩子的执行顺序与场景实践(Vue2 vs Vue3)
  • 系统设计实战:内容推荐系统的核心架构设计

✅ 题目 1:JavaScript 中 this 的指向详解与常见陷阱

📘 解析:

this 是 JavaScript 中最容易误解的机制之一,它的指向取决于函数的调用方式,而不是定义方式。

📌 常见场景:

  1. 普通函数调用:
function sayName() {console.log(this.name);
}const name = 'Global';
sayName(); // this -> window(严格模式下为 undefined)
  1. 对象方法调用:
const user = {name: 'Alice',sayName() {console.log(this.name);}
};
user.sayName(); // this -> user
  1. 构造函数调用:
function Person(name) {this.name = name;
}
const p = new Person('Tom'); // this -> 实例对象 p
  1. 箭头函数:不绑定自己的 this,继承外层作用域的 this
const obj = {name: 'Arrow',sayName: () => {console.log(this.name);}
};
obj.sayName(); // undefined(this -> window)
  1. 手动绑定:call、apply、bind
function show() {console.log(this.name);
}
const user = { name: 'Bob' };
show.call(user); // Bob

🧠 记忆脑图建议:

  • this 绑定优先级图谱:new > bind > call/apply > 对象方法 > 全局
  • 场景联想 + 函数调用方式分类

✅ 题目 2:Vue 生命周期钩子的执行顺序与场景实践(Vue2 vs Vue3)

📘 解析:

Vue 生命周期是组件开发的核心。Vue 2 和 Vue 3 的生命周期略有差异,Vue 3 引入了 Composition API 和 setup(),更适合逻辑复用。

📌 Vue 2 生命周期钩子:

beforeCreate → created → beforeMount → mounted → beforeUpdate → updated → beforeDestroy → destroyed
export default {data() {return { msg: "hello" };},created() {console.log("created");},mounted() {console.log("mounted");},destroyed() {console.log("destroyed");}
};

📌 Vue 3 生命周期对比:

Vue 3 使用 Composition API:

import { onMounted, onUpdated, onUnmounted } from "vue";export default {setup() {onMounted(() => {console.log("mounted");});onUpdated(() => {console.log("updated");});onUnmounted(() => {console.log("unmounted");});}
}
生命周期阶段Vue 2 Options APIVue 3 Composition API
创建阶段createdsetup()
挂载阶段mountedonMounted
更新阶段updatedonUpdated
销毁阶段destroyedonUnmounted

🔍 使用场景实践:

  • 数据初始化:created/setup
  • DOM 依赖操作:mounted/onMounted
  • 清理定时器或监听器:beforeDestroy/destroyedonUnmounted

🧠 记忆脑图建议:

  • 对比图 + 适用场景
  • 生命周期流程图,标注 Composition API 对应钩子

✅ 题目 3:系统设计-内容推荐系统的核心架构设计

📘 解析:

内容推荐系统广泛用于新闻、视频、短内容类产品,核心目标是“个性化”和“实时性”。

🔧 架构核心模块:

  1. 用户行为采集层:

    • 点击、浏览、点赞、分享、停留时间
    • 使用前端埋点系统或 SDK 上传
  2. 日志流处理层(实时处理):

    • Kafka/Flume -> Spark/Flink 实时计算
    • 构建用户画像、行为标签、热度指标
  3. 推荐引擎服务层:

    • 协同过滤算法(基于用户/内容相似性)
    • 内容召回 + 精排模型(CTR、深度学习模型)
    • AB 测试平台支持多策略灰度上线
  4. 缓存与接口服务层:

    • Redis 存储用户推荐结果
    • Node.js/Go 实现高性能接口(GraphQL/REST)
  5. 前端展示层:

    • 按模块展示推荐内容(新闻流/短视频流)
    • 滚动加载、懒加载、智能曝光统计
用户点击行为
埋点数据采集
Kafka 日志流
实时处理引擎 Flink
用户画像系统
推荐服务 API
前端展示内容

示例:推荐结果缓存接口(Node.js)

app.get('/api/recommend', async (req, res) => {const userId = req.query.userId;const cached = await redis.get(`recommend:${userId}`);if (cached) return res.send(JSON.parse(cached));const result = await recommendService.getForUser(userId);await redis.set(`recommend:${userId}`, JSON.stringify(result), 'EX', 60);res.send(result);
});

🧠 记忆脑图建议:

  • 推荐系统五层架构图
  • 算法策略流程图 + 示例

🧾 今日总结

题目涉及知识点关键收获
this 指向机制JavaScript掌握不同调用方式下 this 的指向与绑定规则
Vue 生命周期对比Vue2 vs Vue3掌握生命周期钩子变化,结合场景实践
内容推荐系统设计系统设计理解推荐架构的五大模块及前端接口优化

📅 明日预告

  • JavaScript 模块化发展历程与 ES Modules
  • React 中的 Fiber 架构解析
  • 统设计实战:图片/视频 CDN 分发系统设计

💡 坚持每天进步一点点,面试成功自然水到渠成!加油,未来的前端大牛!

相关文章:

前端面试每日三题 - Day 10

这是我为准备前端/全栈开发工程师面试整理的第十天每日三题练习,涵盖: JavaScript 中 this 的指向详解与常见陷阱Vue 生命周期钩子的执行顺序与场景实践(Vue2 vs Vue3)系统设计实战:内容推荐系统的核心架构设计 ✅ 题…...

《深度学习》课程之卷积神经网络原理与实践教学设计方案

《深度学习》课程之卷积神经网络原理与实践教学设计方案 一、教学目标设计 (一)知识目标 学生能够准确描述卷积神经网络(CNN)的基本定义,包括其核心组成部分(如卷积层、池化层、全连接层等)及…...

elasticsearch中文分词器插件下载教程

一、下载原因: 我们的业务中通常使⽤的是中⽂分词,es的中⽂分词默认会将中⽂词每个字看成⼀个词⽐如:“我想吃⾁夹馍”会被分为”我”,”想”,”吃”,”⾁” ,”夹”,”馍” 这显然是…...

门面模式与适配器模式

一、门面模式 门面模式:提供统一接口访问子系统接口 1、包含角色 外观系统对外的统一接口子系统类的集合;并不知道外观角色的存在,需要为了配合外观角色而做特殊处理或修改 2、举例 原本开关灯要分别操作各个房间的灯,现在设置总…...

QSS【QT】

文章目录 QSSid选择器 & 类型选择器伪类选择器盒子模型 QSS 设置样式的时候,是可以指定某个控件来设置的。 指定控件之后,此时的样式就会针对这个指定的控件,也会针对子控件生效 ui->pushButton_2->setStyleSheet("QPushButt…...

第十六节:高频开放题-React与Vue设计哲学差异

响应式原理(Proxy vs 虚拟DOM) 组合式API vs Hooks React 与 Vue 设计哲学差异深度解析 一、响应式原理的底层实现差异 1. Vue 的响应式模型(Proxy/数据劫持) Vue 的响应式系统通过 数据劫持 实现自动依赖追踪: • …...

css 中float属性及clear的释疑

float属性可以让元素脱离文档流&#xff0c;父元素中的子元素设置为float,则会导致父元素的高度塌陷。 <style type"text/css"> .father{ /*没有给父元素定义高度*/background:#ccc; border:1px dashed #999; } .box01,.box02,.box0…...

缓存 --- 内存缓存 or 分布式缓存

缓存 --- 内存缓存 or 分布式缓存 内存缓存&#xff08;In-Memory Cache&#xff09;分布式缓存&#xff08;Distributed Cache&#xff09;内存缓存 vs 分布式缓存 内存缓存和分布式缓存是两种常见的缓存策略&#xff0c;它们在存储位置、访问速度和适用场景上有所不同。下面分…...

2025.4.17总结

工作&#xff1a;今天对需求的测试设计进行了完善&#xff0c;然后&#xff0c;对测试设计进行了评审&#xff0c;最后提了个问题单。 反思这个过程&#xff0c;要说不足的地方&#xff0c;就是评审的时候总觉得自己吐字不清晰&#xff0c;表达能力早就想提升了&#xff0c;但…...

BH1750光照传感器---附代码

目录 BH1750简介BH1750指令集BH1750工作流程 BH1750简介 VCC-->电源正&#xff1b; ADDR-->地址端口&#xff1b; GND-->电源负&#xff1b; PA5-->SDA-->I2C数据线&#xff1b; PA3-->SCL-->I2C时钟线&#xff1b; DVI-->I2C端口参考电压&#xff1b…...

机器学习在催化剂设计中的应用理论加实操

背景介绍​​ 数据智能驱动&#xff0c;催化理性设计新纪元​​ 催化材料设计是能源转化、化工合成及环境治理等领域的核心挑战。传统催化研究主要依赖密度泛函理论(DFT)计算与实验试错法&#xff0c;通过量子力学模拟揭示活性位点电子结构&#xff0c;结合高通量实验筛选候选…...

蔡浩宇的AIGC游戏革命:从《原神》到《Whispers》的技术跨越

目录 引言&#xff1a;游戏行业的AI革命前夜 一、《Whispers》的技术突破与市场挑战 1.1 多模态AI技术的集成应用 1.2 与传统游戏的差异化体验 1.3 面临的商业化难题 二、从《原神》到《Whispers》的技术演进 2.1 《原神》成功的时代因素分析 2.2 蔡浩宇的技术路线转变 …...

Docker Compose 命令实现动态构建和部署

Docker Compose 命令实现动态构建和部署 一、编写支持动态版本号的 docker-compose.yml version: 3.8services:myapp:build: context: . # Dockerfile所在目录args:APP_VERSION: ${TAG:-latest} # 从环境变量获取版本号&#xff0c;默认latestimage: myapp:${TAG:-latest} …...

前端vue+typeScritp+elementPlus基础页面实现:

效果&#xff1a; 前端代码&#xff1a; index.vue: <template><el-container><el-main><el-card class"search-card" shadow"never"><transition :enter-active-class"proxy?.animate.searchAnimate.enter" :le…...

leetcode第20题(有效的括号)

思路解析&#xff08;使用栈&#xff09;&#xff1a; 使用一个栈来保存左括号。 每当遇到一个右括号时&#xff0c;检查栈顶元素是否是匹配的左括号。 如果匹配&#xff0c;则弹出栈顶元素&#xff1b; 如果不匹配或者栈为空&#xff0c;则说明无效&#xff1b; 最后如果栈…...

超简单的git学习教程

本博客仅用于记录学习和使用 前提声明全部内容全部来自下面廖雪峰网站&#xff0c;如果侵权联系我删除 0.前言 相信有不少人被推荐那个游戏学习git&#xff0c;一个不止我一个完全没学习过的进去后一脸懵&#xff0c;半天都通不过一关然后就放弃了&#xff0c;我个人觉得那个…...

【DVWA File Upload 漏洞实战指南】(Low / Medium / High 全级别解析)

前言 文件上传功能是 Web 应用中非常常见的一种功能&#xff0c;用于上传头像、文档、图片等文件。但如果验证不当&#xff0c;攻击者可能上传恶意脚本&#xff0c;进而控制服务器。在 DVWA 中&#xff0c;File Upload 模块专门设计用于演练此类漏洞的不同防御等级。 一、Low …...

iPhone 13P 换超容电池,一年实记的“电池循环次数-容量“柱状图

继上一篇 iPhone 13P 更换"移植电芯"和"超容电池"&#x1f50b;体验&#xff0c;详细记录了如何更换这两种电池&#xff0c;以及各自的优略势对比。 一晃一年过去&#xff0c;时间真快&#xff0c;这次分享下记录了使用超容电池的 “循环次数 - 容量(mAh)…...

Django 使用教程

Django 使用教程 Django 是一个高级的 Python Web 框架&#xff0c;采用了 MTV&#xff08;Model-Template-View&#xff09;设计模式&#xff0c;旨在帮助开发者快速构建高效、可维护的 Web 应用。它有着非常丰富的功能&#xff0c;包括 ORM、用户认证、表单处理、管理后台等…...

【集群IP管理分配技术_DHCP】一、DHCP技术概念与快速上手

在网络技术飞速发展的今天&#xff0c;动态主机配置协议&#xff08;DHCP&#xff09;作为网络中自动分配 IP 地址及相关配置参数的重要工具&#xff0c;极大地简化了网络管理流程。然而&#xff0c;随着网络规模的不断扩大和应用场景的日益复杂&#xff0c;传统 DHCP 在灵活性…...

Tailwindcss 入门 v4.1

以 react 为例&#xff0c;步骤如下&#xff1a; npm create vitelatest my-app -- --template react 选择 React 和 JavaScript 根据上述命令的输出提示&#xff0c;运行以下命令 cd my-app npm install npm run dev 一个 React App 初始化完成。 安装 Tailwindcss theme …...

【Linux】NAT、代理服务、内网穿透

NAT、代理服务、内网穿透 一. NAT1. NAT 技术2. NAT IP 转换过程3. NAPT 技术4. NAT 技术的缺陷 二. 代理服务器1. 正向代理2. 反向代理3. NAT 和代理服务器 内网穿透内网打洞 一. NAT NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;技术&a…...

PCA——主成分分析数学原理及代码

主成分分析 PCA的目的是&#xff1a;对数据进行一个线性变换&#xff0c;在最大程度保留原始信息的前提下去除数据中彼此相关的信息。反映在变量上就是说&#xff0c;对所有的变量进行一个线性变换&#xff0c;使得变换后得到的变量彼此之间不相关&#xff0c;并且是所有可能的…...

AWS EC2完全指南:如何快速搭建高性能云服务器?

一、什么是AWS EC2&#xff1f;云时代的虚拟服务器革命 AWS Elastic Compute Cloud&#xff08;EC2&#xff09;作为全球领先的云服务器解决方案&#xff0c;正在重新定义虚拟服务器的可能性。与传统VPS相比&#xff0c;EC2提供&#xff1a; 秒级弹性扩展&#xff1a;CPU/RAM按…...

TLS/SSL 弱密码套件中危漏洞修复

TLS/SSL 弱密码套件漏洞是一种常见的安全问题&#xff0c;它可能导致加密通信被破解或降级攻击。修复此漏洞的关键是禁用不安全的密码套件&#xff0c;并配置服务器使用强密码套件。以下是修复步骤和详细说明&#xff1a; 1. 了解弱密码套件 弱密码套件通常包括以下类型&…...

SSMS中如何把一个库的表移到另一个库中

方法 1&#xff1a;使用“生成脚本”功能 步骤 右键点击源表&#xff1a; 在对象资源管理器中&#xff0c;展开源数据库的“表”节点&#xff0c;找到目标表。右键点击该表&#xff0c;选择 “脚本表为” -> “创建到” -> “新查询编辑器窗口”。 修改脚本&#xff1a…...

【技术派后端篇】Redis实现统计计数

在互联网项目中&#xff0c;计数器有着广泛的应用场景。以技术派项目为例&#xff0c;诸如文章点赞数、收藏数、评论数以及用户粉丝数等都离不开计数器的支持。在技术派源码中&#xff0c;提供了基于数据库操作记录实时更新和基于 Redis 的 incr 特性实现计数器这两种方案&…...

JavaWeb 课堂笔记 —— 16 MyBatis 动态SQL

本系列为笔者学习JavaWeb的课堂笔记&#xff0c;视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程&#xff0c;实现javaweb企业开发全流程&#xff08;涵盖SpringMyBatisSpringMVCSpringBoot等&#xff09;》&#xff0c;章节分布参考视频教程&#xff0c;为同样学习…...

论文阅读:2023 ICLR Safe RLHF: Safe Reinforcement Learning from Human Feedback

总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Safe RLHF: Safe Reinforcement Learning from Human Feedback 安全 RLHF:通过人类反馈进行安全强化学习 https://arxiv.org/pdf/2310.12773 https://github.com/PKU-Alignment/safe…...

Python赋能去中心化电子商务平台:重构交易生态的新未来

Python赋能去中心化电子商务平台:重构交易生态的新未来 近年来,传统电子商务平台由于依赖中心化的服务器架构,面临数据隐私泄露、平台垄断、交易中介费用高昂以及信任危机等诸多挑战。而随着区块链和Web 3.0理念的快速普及以及零信任安全架构、边缘计算等新兴技术的不断成熟…...