【前端面經】字節跳動一面

寫在前面:面經只是記錄博主遇到的題目。每題的答案在編寫文檔的時候已經有問過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
繁體地址,請注明出處:http://hk.pswp.cn/web/82161.shtml
英文地址,請注明出處:http://en.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…