【前端面經】云智慧一面

寫在前面:面經只是記錄博主遇到的題目。每題的答案在編寫文檔的時候已經有問過deepseek,它只是一種比較普世的答案,要學得深入還是靠自己

Q:手撕代碼,兩個有序數組排序
A:

function mysort(arr1, arr2) {let i = 0;let j = 0;let res = [];while (i < arr1.length && j < arr2.length) {if (arr1[i] <= arr2[j]) {res.push(arr1[i])i++} else {res.push(arr2[j])j++}}return [...res, ...arr1.slice(i), ...arr2.slice(j)];
}

Q:Vue里emit和on如何實現“發起然后更新”這樣一個過程
A:

  • $emit: 用于觸發/發起一個自定義事件
  • $on: 用于監聽/訂閱一個自定義事件

父子組件之間:子組件發起(emit),父組件監聽(on)并更新

<!-- 子組件 Child.vue -->
<template><button @click="sendMessage">發送消息</button>
</template><script>
export default {methods: {sendMessage() {// 發起/觸發一個名為'message-sent'的事件,并附帶數據this.$emit('message-sent', { text: 'Hello from child!' });}}
}
</script>
<!-- 父組件 Parent.vue -->
<template><div><child @message-sent="handleMessage"></child><p>收到的消息: {{ receivedMessage }}</p></div>
</template><script>
import Child from './Child.vue';export default {components: { Child },data() {return {receivedMessage: ''};},methods: {// 監聽/處理子組件發出的事件handleMessage(payload) {this.receivedMessage = payload.text; // 更新數據console.log('收到消息:', payload.text);}}
}
</script>

Q:一個平鋪數組如何變成樹
A:

const flatArray = [{ id: 1, pid: 0, children: [{ id: 2, pid: 1, children: null }] },{ id: 3, pid: 0, children: null }
];function normalizeTree(node) {if (node.children === null) {node.children = [];} else if (Array.isArray(node.children)) {node.children.forEach(normalizeTree);}return node;
}const tree = flatArray.map(normalizeTree);
console.log(tree);

Q:Nuxt.js有了解嗎
A:一個基于Vue.js的SSR服務端渲染和靜態站點生成的SSG框架,用于構建高性能、SEO友好的現代web應用,它簡化了Vue.js的開發流程。
核心:多種渲染模式,服務端渲染,靜態站點生成,單頁應用,混合渲染。
無需手動vue-router,內置代碼分割,預加載,支持HMR。
適合博客、電商、后臺管理系統、全棧應用。

Q:代碼分割是為了什么,在什么場景下用
A:

  • ESM代碼分割:() => import(組件),實現動態引入。
  • WebPack代碼分割:需要性能優化的場景下使用,減少包體積,給瀏覽器緩存,包分得多了,如果只改一部分js代碼,就不需要整個js重新加載。
    WebPack分割配置:
// webpack.config.js
module.exports = {// ...optimization: {splitChunks: {chunks: 'all', // 對所有模塊進行優化(包括同步和異步)minSize: 20000, // 生成 chunk 的最小體積(20KB)minRemainingSize: 0,minChunks: 1, // 被引用次數 >=1 才會被拆分maxAsyncRequests: 30, // 最大異步請求數(默認 30)maxInitialRequests: 30, // 入口點的最大并行請求數(默認 30)enforceSizeThreshold: 50000, // 強制拆分閾值(50KB)cacheGroups: {// 拆分第三方庫(node_modules)vendors: {test: /[\\/]node_modules[\\/]/,priority: -10, // 優先級reuseExistingChunk: true,name: 'vendors', // 輸出文件名(如 vendors.js)},// 拆分公共代碼(被多個入口引用)common: {minChunks: 2, // 至少被 2 個入口引用priority: -20,reuseExistingChunk: true,name: 'common', // 輸出文件名(如 common.js)},},},},
};

Q:v-model如何實現的
A:它實現了表單輸入和應用狀態之間的雙向數據綁定。本質上是語法糖,結合了數據綁定和事件監聽。

<custom-input v-model="message"></custom-input>
// 相當于是 v-bind + v-on 的語法糖
<custom-input :value="message"  // 將 value 屬性綁定到 Vue 實例的 message 數據@input="message = $event.target.value" // 監聽 input 事件,當輸入值變化時更新 message
></custom-input>// 組件內部需要:
// 接收 value 這個prop
// 在值變化時觸發 input 事件
Vue.component('custom-input', {props: ['value'],template: `<input:value="value"@input="$emit('input', $event.target.value)">`})

底層實現機制:
模板編譯:Vue 編譯器將模板中的 v-model 轉換為 v-bind:value 和 v-on:input
AST 轉換:生成抽象語法樹時處理 v-model 指令
數據綁定:通過 Object.defineProperty 或 Proxy 實現響應式
事件監聽:建立事件監聽器,在事件觸發時更新數據

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/85287.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85287.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/85287.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Leetcode 3568. Minimum Moves to Clean the Classroom

Leetcode 3568. Minimum Moves to Clean the Classroom 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3568. Minimum Moves to Clean the Classroom 1. 解題思路 這一題我的核心思路就是廣度優先遍歷遍歷剪枝。 顯然&#xff0c;我們可以給出一個廣度優先遍歷來給出所有可能…

Spring Boot,注解,@RestController

RestController 是 Spring MVC 中用于創建 RESTful Web 服務的核心注解。 RestController 核心知識點 REST 作用: RestController 是一個方便的組合注解&#xff0c;它結合了 Controller 和 ResponseBody 兩個注解。 Controller: 將類標記為一個控制器&#xff0c;使其能夠處理…

【計算機網絡】Linux下簡單的UDP服務器(超詳細)

套接字接口 我們把服務器封裝成一個類&#xff0c;當我們定義出一個服務器對象后需要馬上初始化服務器&#xff0c;而初始化服務器需要做的第一件事就是創建套接字。 &#x1f30e;socket函數 這是Linux中創建套接字的系統調用,函數原型如下: int socket(int domain, int typ…

Fashion-MNIST LeNet訓練

前面使用線性神經網絡softmax 和 多層感知機進行圖像分類&#xff0c;本次我們使用LeNet 卷積神經網絡進行 訓練&#xff0c;期望能捕捉到圖像中的圖像結構信息&#xff0c;提高識別精度&#xff1a; import torch import torchvision from torchvision import transforms f…

EasyRTC嵌入式音視頻通信SDK助力1v1實時音視頻通話全場景應用

一、方案概述? 在數字化通信需求日益增長的今天&#xff0c;EasyRTC作為一款全平臺互通的實時視頻通話方案&#xff0c;實現了設備與平臺間的跨端連接。它支持微信小程序、APP、PC客戶端等多端協同&#xff0c;開發者通過該方案可快速搭建1v1實時音視頻通信系統&#xff0c;適…

查看make命令執行后涉及的預編譯宏定義的值

要查看 make 命令執行后涉及的預編譯宏定義&#xff08;如 -D 定義的宏&#xff09;及其值&#xff0c;可以采用以下方法&#xff1a; 1. 查看 Makefile 中的宏定義 直接檢查 Makefile 或相關構建腳本&#xff08;如 configure、CMakeLists.txt&#xff09;&#xff0c;尋找 -…

【C/C++】面試常考題目

面試中最常考的數據結構與算法題&#xff0c;適合作為刷題的第一階段重點。 ? 分類 & 推薦題目列表&#xff08;精選 70 道核心題&#xff09; 一、數組 & 字符串&#xff08;共 15 題&#xff09; 題目類型LeetCode編號兩數之和哈希表#1盛最多水的容器雙指針#11三數…

【芯片學習】555

一、引腳作用 二、原理圖 三、等效原理圖 1.比較器 同相輸入端大于反相輸入端&#xff0c;輸出高電平&#xff0c;反之亦然 2.三極管 給它輸入高電平就可以導通 3.模擬電路部分 4.數字電路部分 這部分的核心是RS觸發器&#xff0c;R-reset代表0&#xff0c;set是置位代表1&am…

Linux《文件系統》

在之前的系統IO當中已經了解了“內存”級別的文件操作&#xff0c;了解了文件描述符、重定向、緩沖區等概念&#xff0c;在了解了這些的知識之后還封裝出了我們自己的libc庫。接下來在本篇當中將會將視角從內存轉向磁盤&#xff0c;研究文件在內存當中是如何進行存儲的&#xf…

Java-代碼段-http接口調用自身服務中的其他http接口(mock)-并建立socket連接發送和接收報文實例

最新版本更新 https://code.jiangjiesheng.cn/article/367?fromcsdn 推薦 《高并發 & 微服務 & 性能調優實戰案例100講 源碼下載》 1. controller入口 ApiOperation("模擬平臺端現場機socket交互過程,需要Authorization")PostMapping(path "/testS…

基于遞歸思想的系統架構圖自動化生成實踐

文章目錄 一、核心思想解析二、關鍵技術實現1. 動態布局算法2. 樣式規范集成3. MCP服務封裝三、典型應用場景四、最佳實踐建議五、擴展方向一、核心思想解析 本系統通過遞歸算法實現了Markdown層級結構到PPTX架構圖的自動轉換,其核心設計思想包含兩個維度: 數據結構遞歸:將…

Python包管理器 uv替代conda?

有人問&#xff1a;python的包管理器uv可以替代conda嗎? 搞數據和算法的把conda當寶貝&#xff0c;其他的場景能替代。 Python的包管理器有很多&#xff0c;pip是原配&#xff0c;uv是后起之秀&#xff0c;conda則主打數據科學。 uv替代pip似乎只是時間問題了&#xff0c;它…

使用pnpm、vite搭建Phaserjs的開發環境

首先&#xff0c;確保你已經安裝了 Node.js 和 npm。然后按照以下步驟操作&#xff1a; 一、使用pnpm初始化一個新的 Vite 項目 pnpm create vite 輸入名字 選擇模板&#xff0c;這里我選擇Vanilla,也可以選擇其他的比如vue 選擇語言 項目新建完成 二、安裝相關依賴 進入項…

JS逆向案例—喜馬拉雅xm-sign詳情頁爬取

JS逆向案例——喜馬拉雅xm-sign詳情頁爬取 聲明網站流程分析總結 聲明 本文章中所有內容僅供學習交流&#xff0c;抓包內容、敏感網址、數據接口均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff0c;若有侵權&am…

姜老師的MBTI課程:MBTI是可以轉變的

我們先來看內向和外向這條軸&#xff0c;I和E內向和外向受先天遺傳因素的影響還是比較大的&#xff0c;因為它事關到了你的硬件&#xff0c;也就是大腦的模型。但是我們在大五人格的排雷避坑和這套課程里面都強調了一個觀點&#xff0c;內向和外向各有優勢&#xff0c;也各有不…

進程同步:生產者-消費者 題目

正確答案&#xff1a; 問題類型&#xff1a; 經典生產者 - 消費者問題 同時涉及同步和互斥。 同步&#xff1a;生產者與消費者通過信號量協調生產 / 消費節奏&#xff08;如緩沖區滿時生產者等待&#xff0c;空時消費者等待&#xff09;。互斥&#xff1a;對共享緩沖區的訪問需…

吳恩達MCP課程(1):chat_bot

原課程代碼是用Anthropic寫的&#xff0c;下面代碼是用OpenAI改寫的&#xff0c;模型則用阿里巴巴的模型做測試 .env 文件為&#xff1a; OPENAI_API_KEYsk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx OPENAI_API_BASEhttps://dashscope.aliyuncs.com/compatible-mode…

Netty 實戰篇:手寫一個輕量級 RPC 框架原型

本文將基于前文實現的編解碼與心跳機制&#xff0c;構建一個簡單的 RPC 框架&#xff0c;包括請求封裝、響應解析、動態代理調用。為打造微服務通信基礎打下基礎。 一、什么是 RPC&#xff1f; RPC&#xff08;Remote Procedure Call&#xff0c;遠程過程調用&#xff09;允許…

邊緣計算新基建:iVX 輕量生成模塊的 ARM 架構突圍

一、引言 隨著工業 4.0 和物聯網的快速發展&#xff0c;邊緣計算作為連接云端與終端設備的關鍵技術&#xff0c;正成為推動數字化轉型的核心力量。在邊緣計算場景中&#xff0c;設備的實時性、低功耗和離線處理能力至關重要。ARM 架構憑借其低功耗、高能效的特點&#xff0c;成…

C# 基于 Windows 系統與 Visual Studio 2017 的 Messenger 消息傳遞機制詳解:發布-訂閱模式實現

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、CSDN平臺優質創作者&#xff0c;高級開發工程師&#xff0c;數學專業&#xff0c;10年以上C/C, C#, Java等多種編程語言開發經驗&#xff0c;擁有高級工程師證書&#xff1b;擅長C/C、C#等開發語言&#xff0c;熟悉Java常用開…