【前端面经】字节跳动一面

写在前面:面经只是记录博主遇到的题目。每题的答案在编写文档的时候已经有问过deepseek,它只是一种比较普世的答案,要学得深入还是靠自己

Q:三栏布局的实现方式(圣杯模型)如何实现
A:

    /* 整个 */.container {display: grid;grid-template-columns: 200px 1fr 200px;}

    /* 整个 */.container {display: flex;}.left,.right {width: 200px;}/* 中间那个 */.main {flex: 1;}

Q:盒子模型

<html>
<div id="content-box" class="box">content-box</div>
<div id="border-box" class="box">border-box</div>
<style>.box {width: 100px;height: 100px;padding: 20px;margin: 10px;border: 5px solid red;background: blue;color: #fff;}#content-box {box-sizing: content-box;}#border-box {box-sizing: border-box;}
</style>
</html>

中,两种box-sizing蓝色区域大小分别是多少
A:
content-box:默认模式,宽高100只包含内容。150盒子含有20 margin,蓝色是140×140
border-box:宽高100包含内容、padding、border。100盒子含有20 margin,蓝色是90×90

Q:js 事件循环机制

setTimeout(() => console.log(1))new Promise(function (resolve) {console.log(2)for (let i = 0; i < 10000; i++) {if (i == 9999) resolve()}console.log(3)}).then(() => console.log(4))console.log(5)

以上代码输出顺序是?
A:
调用栈 console.log(2),for是同步代码console.log(3),console.log(5)
微任务队列 then(() => console.log(4))
宏任务队列 setTimeout(() => console.log(1))

结果为:2 3 5 4 1

Q:Vue响应式如何实现
A:
V2: Object.defineProperty,对象属性劫持
V3: Proxy,代理整个对象

Q:js有什么基本类型
A:
基本类型:Number,String,Boolean,Undefined,Null,Symbol,BigInt。
引用类型:Object,Array,Function等。

Q:如何判断两个对象是否完全相等
A:

JSON.stringify(obj1) === JSON.stringify(obj2)

Q:如何遍历对象的键值对
A:

// 法一
const obj = { a: 1, b: 2, c: 3 };
for (let key in obj) {console.log(key, obj[key]);
}
// 法二
const obj = { a: 1, b: 2, c: 3 };
const keys = Object.keys(obj);
keys.forEach((key) => {console.log(key, obj[key]);
})
// 法三
const obj = { a: 1, b: 2, c: 3 };
const keys = Reflect.ownKeys(obj);
keys.forEach((key) => {console.log(key, obj[key]);
})

Q:Vue3使用Proxy,那么Proxy有什么缺点
A:浏览器兼容不好,性能开销大,调试复杂性,代码更复杂,内存占用,===比较失败

Q:vue中,如果大量后端数据异步回来,如何处理
A:web workers处理密集型计算

// 主线程
const worker = new Worker('data-processor.js');
worker.postMessage(largeData);
worker.onmessage = (e) => {const processedData = e.data;// 更新UI
};// data-processor.js
self.onmessage = (e) => {const result = heavyComputation(e.data);self.postMessage(result);
};

Q:手撕代码,js写出promise底层实现
A:

function MyPromise(executor) {// 初始化状态和结果和回调函数数组this._state = 'pending';this._value = undefined;this._callbacks = [];// 定义函数const resolve = (value) => {if (this._state === 'pending') {this._state = 'fulfilled';this._value = value;this._callbacks.forEach((callback) => {callback.onFulfilled(value);});}};// 定义函数const reject = (reason) => {if (this._state === 'pending') {this._state = 'rejected';this._value = reason;this._callbacks.forEach((callback) => {callback.onRejected(reason);});}};// 执行executor,传入两个函数try {executor(resolve, reject);} catch (error) {reject(error);}
}MyPromise.prototype.then = function (onFulfilled, onRejected) {if (this._state === 'fulfilled') {onFulfilled(this._value);} else if (this._state === 'rejected') {onRejected(this._value);} else if (this._state === 'pending') {this._callbacks.push({onFulfilled,onRejected,});}
};const promise = new MyPromise((resolve, reject) => {setTimeout(() => {resolve('Hello, World!');}, 1000);
});promise.then((value) => {console.log(value); // Output: Hello, World!},(error) => {console.error(error);}
);

Q:平时开发,CSR和SSR用哪种
A:
Vue支持CSR也支持SSR
CSR:在浏览器中动态生成HTML,开发简单,直接用vue-cli,SEO不友好
常用:纯Vue,React,Angular,静态站点生成,后台管理系统

SSR:SEO友好,服务器压力大,开发复杂度高,需要处理node.js环境
常用:Nuxt.js,Next.js

Q:手撕代码,有序数组[1, 2, 3, 29]和[2, 3 ,6 ,9]合并成一个有序数组(规定不能用内置)
A:

function mergeSortedArrays(arr1, arr2) {let i = 0; // 第一个数组的指针let j = 0; // 第二个数组的指针const result = [];// 使用双指针遍历两个数组while (i < arr1.length && j < arr2.length) {if (arr1[i] <= arr2[j]) {result.push(arr1[i]);i++;} else {result.push(arr2[j]);j++;}}// 将剩余元素添加到结果数组// 使用扩展运算符和slice来添加剩余元素return [...result, ...arr1.slice(i), ...arr2.slice(j)];
}// 测试代码
const array1 = [2, 5, 6, 9];
const array2 = [1, 2, 3, 29];
const mergedArray = mergeSortedArrays(array1, array2);console.log('数组1:', array1);
console.log('数组2:', array2);
console.log('合并后的有序数组:', mergedArray);

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

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

相关文章

ST-GCN

1.bash 安装git 在目录下右键使用git bash打开 需要安装wgetbash download_model.sh&#xff0c;下载.sh文件 wget: command not found&#xff0c;Windows系统使用git命令 下载预训练权重_sh文件下载-CSDN博客 bash tools/get_models.sh 生成了三个.pt文件

计算机网络全维度解析:架构协议、关键设备、安全机制与新兴技术深度融合

计算机网络作为当今数字化社会的基石&#xff0c;其复杂性和应用广泛性远超想象。本文将从基础架构、协议体系、关键设备、安全机制到新兴技术&#xff0c;进行全方位、深层次的解析&#xff0c;并辅以实际应用场景和案例分析。 一、网络架构与分类的深度剖析 1.1 网络分类的立…

大语言模型的推理能力

2025年&#xff0c;各种会推理的AI模型如雨后春笋般涌现&#xff0c;比如ChatGPT o1/o3/o4、DeepSeek r1、Gemini 2 Flash Thinking、Claude 3.7 Sonnet (Extended Thinking)。 对于工程上一些问题比如复杂的自然语言转sql&#xff0c;我们可能忍受模型的得到正确答案需要更多…

黑马程序员C++核心编程笔记--3 函数高级

3.1 函数默认参数 本节内容之前已经整理过&#xff0c;详见22.函数的默认值 3.2 函数占位参数 C中函数的形参列表里可以有占位参数&#xff0c;用来做占位&#xff0c;调用函数时必须补填该位置 语法&#xff1a; 返回值类型 函数名 (数据类型) {} 在现阶段函数的占位参数…

数据仓库分层 4 层模型是什么?

企业每天都在产生和收集海量数据。然而&#xff0c;面对这些数据&#xff0c;许多企业却陷入了困境&#xff1a;如何高效管理、处理和分析这些数据&#xff1f;如何从数据中提取有价值的信息来支持业务决策&#xff1f;这些问题困扰着众多数据分析师和 IT 管理者。 在众多架构…

Java正则表达式完全指南

Java正则表达式完全指南 一、正则表达式基础概念1.1 什么是正则表达式1.2 Java中的正则表达式支持 二、正则表达式基本语法2.1 普通字符2.2 元字符2.3 预定义字符类 三、Java中正则表达式的基本用法3.1 编译正则表达式3.2 创建Matcher对象并执行匹配3.3 常用的Matcher方法 四、…

缓存击穿、缓存雪崩、缓存穿透以及数据库缓存双写不一致问题

在项目中&#xff0c;我们所需要的数据通常存储在数据库中&#xff0c;但是数据库的数据保存在硬盘上&#xff0c;硬盘的读写操作很慢&#xff0c;为了避免直接访问数据库&#xff0c;我们可以使用 Redis 作为缓存层&#xff0c;缓存通常存储在内存中&#xff0c;内存的读写速度…

可灵2.1 vs Veo 3:AI视频生成谁更胜一筹?

在Google发布Veo 3几天后,可灵显然感受到了压力,发布了即将推出的视频模型系列可灵 2.1的早期体验版。 据我了解,有三种不同的模式: 可灵 2.1 标准模式: 720p分辨率 仅支持图像转视频(生成更快,一致性更好) 5秒视频仍需20积分 可灵 2.1 专业模式: 1080p分辨率 仅在图…

解决Docker存储空间不足问题

虚拟机磁盘扩展实战&#xff1a;解决Docker存储空间不足问题 问题背景 在虚拟机中运行的Linux系统上&#xff0c;Docker服务因根分区空间不足而无法正常运行。初始状态如下&#xff1a; [rootlocalhost ~]# df -h / 文件系统 容量 已用 可用 已用% 挂载点…

Redis 中如何保证缓存与数据库的数据一致性?

在 Redis 中保证缓存与数据库的数据一致性&#xff0c;需结合业务场景选择以下策略&#xff1a; 核心策略总结 Cache Aside&#xff08;旁路缓存&#xff09;模式 读操作&#xff1a;先查缓存&#xff0c;未命中则查数据库并写入缓存。写操作&#xff1a;先更新数据库&#xf…

晶振频率稳定性:5G 基站与航天设备的核心竞争力

在当今科技飞速发展的时代&#xff0c;电子设备的性能和可靠性至关重要。晶振作为电子设备中的核心部件&#xff0c;为系统提供精确的时间和频率基准。晶振的频率稳定性直接影响着设备的整体性能&#xff0c;从日常生活中广泛使用的智能手机、智能穿戴设备&#xff0c;到对精度…

PDFGear——完全免费且功能强大的PDF处理软件

关键词 &#xff1a;PDFGear、免费、跨平台、多功能、OCR 概要 &#xff1a;PDFGear是一款完全免费且功能强大的PDF处理软件&#xff0c;支持Windows、macOS、iOS和Android等多平台使用。它集PDF阅读、编辑、格式转换、OCR识别及AI智能助手于一体&#xff0c;满足用户多样化文档…

【笔记】在 MSYS2(MINGW64)中正确安装 Rust

#工作记录 1. 环境信息 Windows系统: MSYS2 MINGW64当前时间: 2025年6月1日Rust 版本: rustc 1.87.0 (17067e9ac 2025-05-09) (Rev2, Built by MSYS2 project) 2. 安装步骤 步骤 1: 更新系统包数据库并升级已安装的包 首先&#xff0c;确保我们的 MSYS2 系统是最新状态。打…

WIN11+VSCODE搭建的c/c++环境调试报错解决

解决调试报错 前面win11vscode搭建的c/c环境&#xff0c;ctrlshiftB生成正常&#xff0c;cttlF5运行正常。今天打断点逐步调试时报错&#xff0c;提示找不到库文件。解决方案如下&#xff1a; 下载mingw-w64源码库&#xff1a;&#xff08;两种途径&#xff09; 通过MSYS2 UC…

React项目在ios和安卓端要做一个渐变色背景,用css不支持,可使用react-native-linear-gradient

以上有个模块是灰色逐渐到白的背景色过渡 如果是css&#xff0c;以下代码就直接搞定 background: linear-gradient(180deg, #F6F6F6 0%, #FFF 100%);但是在RN中不支持这种写法&#xff0c;那应该写呢&#xff1f; 1.引入react-native-linear-gradient插件&#xff0c;我使用的是…

android-studio-2024.3.2.14如何用WIFI连接到手机(给数据线说 拜拜!)

原文&#xff1a;Android不用数据线就能调试真机的方法—给数据线说 拜拜&#xff01;&#xff08;adb远程调试&#xff09; android-studio-2024.3.2.14是最新的版本&#xff0c;如何连接到手机&#xff0c;可用WIFI&#xff0c;可不用数据线&#xff0c;拜拜 第一步&#xf…

【前端】JS引擎 v.s. 正则表达式引擎

JS引擎 v.s. 正则表达式引擎 它们的转义符都是\ 经过JS引擎会进行一次转义 经过正则表达式会进行一次转义在一次转义中\\\\\的转义过程&#xff1a; 第一个 \ (转义符) 会“吃掉”第二个 \&#xff0c;结果是得到一个字面量的 \。 第三个 \ (转义符) 会“吃掉”第四个 \&#x…

ReactHook有哪些

React 中常用的 Hooks 列表及用法 React Hooks 是 React 16.8 版本引入的一项重要特性&#xff0c;它极大地简化和优化了函数组件的开发过程。以下是 React 中常用的 Hooks 列表及其详细用法&#xff1a; 1. useState useState 是用于在函数组件中添加状态的 Hook。通过调用…

【PyQt5】PyQt5初探 - 一个简单的例程

PyQt5初探 - 一个简单的例程 引言一、安装配置二、使用2.1 PyQt5简单例程2.2 与c Qt深入对比 三、相关教程 引言 PyQt5是一个比较流行的Python图形用户界面(GUI)库&#xff0c;它基于Qt库&#xff08;一个跨平台的C库&#xff0c;用于开发应用程序的图形界面&#xff09;为Pyt…

图文详解Java并发面试题

文章目录 1、并发与并行2、线程安全3、线程、进程、协程4、线程间通信5、线程创建方式6、8G内存创建的线程数7、普通Java程序含有的线程8、start()、run()9、线程调度、6种状态、强制停止线程、上下文切换10、守护线程、用户线程11、 volatile 、synchronized12、sleep() 、 wa…