前端面試測試題目(一)

一、Vue的雙向綁定機制(v-model底層實現原理)
Vue的雙向綁定核心由 響應式系統 和 指令語法糖 共同實現,具體原理如下:

  1. 響應式系統
    Vue通過數據劫持和依賴收集實現數據變化到視圖的同步:
    ? 數據劫持:在Vue 2中使用Object.defineProperty攔截數據的getter/setter,在Vue 3中升級為Proxy,實現更細粒度的監聽。

    ? 依賴收集:每個數據屬性關聯一個Dep(訂閱器),當組件渲染時觸發getter,將當前Watcher(觀察者)添加到依賴列表中。數據變化時通過setter觸發Dep.notify(),通知所有依賴的Watcher更新視圖。

  2. v-model的語法糖機制
    v-model本質是v-bind:valuev-on:input的組合:
    ? 表單元素:例如<input>v-model會監聽input事件,并將event.target.value同步到綁定的數據屬性。

    ? 自定義組件:在Vue 2中,組件通過props: value接收數據,并通過$emit('input')更新父組件數據;Vue 3中改為modelValueupdate:modelValue事件。

    ? 編譯過程:Vue將v-model轉換為對應的value綁定和事件監聽代碼。

    它讓數據和界面自動保持同步:用戶在界面上輸入時數據會更新,數據變化時界面也會自動刷新

    • ??數據綁定??:用 v-bind 把數據綁到輸入框的 value 屬性(顯示數據)。
    • ??事件監聽??:用 v-on 監聽輸入框的 input 或 change 事件(更新數據)。

Vue 中 v-model 的實現原理詳解

v-model 是 Vue 中實現雙向數據綁定的核心指令,其本質是語法糖,結合了數據綁定(v-bind)與事件監聽(v-on)的機制。以下是其實現原理的分層解析:


一、底層機制:響應式系統與事件監聽

  1. 數據劫持與依賴收集
    ? Vue 2.x:通過 Object.defineProperty 對數據對象的屬性進行劫持,定義 getter/setter 以攔截屬性的讀取和修改。當數據變化時,觸發 setter 通知依賴(Watcher)更新視圖。

    ? Vue 3.x:改用 Proxy 代理對象,支持對整個對象的監聽,解決了 Vue 2.x 無法監聽屬性新增、刪除及數組下標修改的問題。

  2. 事件綁定與值更新
    ? 對表單元素(如 <input>),v-model 自動綁定 value 屬性并監聽 input 事件。當用戶輸入時,通過事件回調將新值同步到數據屬性,觸發響應式更新。

    ? 不同類型表單元素的適配:

    ? 文本輸入框:綁定 value 屬性 + input 事件。

    ? 復選框/單選框:綁定 checked 屬性 + change 事件。

    ? 下拉框:綁定 selected 屬性 + change 事件。


二、原生表單元素的雙向綁定

  1. 編譯過程
    Vue 模板編譯器將 v-model 轉換為以下等價代碼:

    <!-- 原生輸入框 -->
    <input v-model="message">
    <!-- 編譯結果 -->
    <input :value="message" @input="message = $event.target.value">
    

    通過動態綁定 value 屬性和監聽輸入事件,實現數據與視圖的同步。

  2. 修飾符的擴展
    ? .lazy:將 input 事件改為 change 事件(延遲同步)。

    ? .number:自動將輸入值轉為數字類型。

    ? .trim:去除輸入值首尾空格。


三、自定義組件的雙向綁定

  1. Vue 2.x 的實現
    ? 默認使用 value 屬性接收數據,通過 $emit('input') 事件更新父組件數據。

    ? 自定義配置:通過 model 選項修改默認的 prop 和事件名:

    model: { prop: 'data', event: 'updateData' }
    

    父組件通過 v-model 綁定,子組件通過 this.$emit('updateData', value) 觸發更新。

  2. Vue 3.x 的改進
    ? 默認使用 modelValue 屬性與 update:modelValue 事件,支持更靈活的組件通信。

    ? 多 v-model 綁定:允許為組件綁定多個雙向數據流,例如:

    <UserForm v-model:name="userName" v-model:age="userAge" />
    

    子組件通過 props 接收 nameage,并觸發 update:nameupdate:age 事件。


四、Vue 2.x 與 Vue 3.x 的差異總結

特性Vue 2.xVue 3.x
響應式實現Object.definePropertyProxy
默認 Prop/事件value + inputmodelValue + update:modelValue
v-model不支持支持多綁定(如 v-model:title
修飾符擴展僅內置修飾符支持自定義修飾符

五、總結
v-model 的核心是通過響應式系統與事件監聽實現雙向同步:

  1. 數據到視圖:通過綁定屬性(如 value)將數據渲染到 DOM。
  2. 視圖到數據:通過監聽事件(如 input)將用戶輸入同步到數據層。
  3. 組件擴展:通過自定義 prop 和事件名,實現父子組件間的靈活通信。

通過這一機制,v-model 簡化了表單交互的邏輯,成為 Vue 開發中提升效率的關鍵工具。


二、Vite前端工程化核心機制
Vite通過 原生ESM 和 按需編譯 實現了高效的開發與構建流程:

  1. 開發環境(冷啟動與HMR)
    ? 冷啟動快:直接以HTML為入口,瀏覽器通過ESM按需請求模塊,無需打包整個項目。

    ? 依賴預構建:使用esbuildnode_modules中的CommonJS模塊轉換為ESM格式并緩存,提升后續加載速度。

    ? 熱更新(HMR):基于WebSocket監聽文件變化,僅重新編譯變更模塊,通過diff算法局部更新DOM,無需刷新頁面。

  2. 生產環境打包
    ? Rollup優化:使用Rollup進行代碼壓縮、Tree Shaking(刪除未使用代碼)、代碼分割(Code Splitting)等。

    ? 靜態資源處理:CSS壓縮、圖片轉Base64、文件名哈希緩存等。


三、.vue文件的編譯與執行原理
Vue單文件組件(SFC)通過 構建工具鏈 轉換為瀏覽器可執行的代碼:

  1. 編譯階段
    ? 解析SFC結構:構建工具(如Vite或Webpack)通過@vitejs/plugin-vuevue-loader.vue文件拆分為<template><script><style>三部分。

    ? 模板編譯:<template>轉換為虛擬DOM的渲染函數(Render Function)。

    ? 腳本處理:<script>中的邏輯被提取為JavaScript模塊,支持Composition API或Options API。

    ? 樣式處理:<style>通過PostCSS或預處理器(如Sass)處理,支持作用域CSS(scoped屬性)或CSS Modules。

  2. 瀏覽器執行
    ? 開發環境:Vite動態編譯SFC為ESM模塊,瀏覽器直接加載并執行生成的JS代碼,CSS通過<style>標簽注入。

    ? 生產環境:打包后的JS和CSS文件通過<script><link>標簽引入,渲染函數生成DOM樹,最終呈現頁面。


總結
? Vue雙向綁定:依賴響應式系統與語法糖編譯,實現數據與視圖的自動同步。

? Vite工程化:利用ESM按需加載和Rollup優化,兼顧開發效率與生產性能。

? .vue文件編譯:構建工具鏈將SFC轉換為標準JS/CSS,瀏覽器通過ESM或傳統資源加載執行。


如何適配不支持ES6的瀏覽器?

若瀏覽器不支持ES6,可通過以下核心方案實現代碼兼容:


一、使用 Babel 轉譯器(主流方案)
Babel 可將 ES6+ 代碼轉換為 ES5,使其在舊版瀏覽器中運行。具體步驟:

  1. 安裝與配置
    ? 安裝核心包:

    npm install --save-dev @babel/core @babel/cli @babel/preset-env  
    

    ? 創建 .babelrc 配置文件,指定轉譯規則:

    {  "presets": ["@babel/preset-env"]  
    }  
    

    ? 在 package.json 添加構建腳本:

    "scripts": {  "build": "babel src -d dist"  
    }  
    
  2. 運行轉譯
    執行 npm run build,Babel 將 src 目錄的 ES6 代碼轉譯為 ES5 并輸出到 dist 目錄。


二、引入 Polyfill 填補缺失特性
Polyfill 模擬瀏覽器不支持的 API,如 PromiseArray.includes 等。

  1. 常用庫
    ? core-js:覆蓋大部分 ES6+ 特性,需在入口文件引入:

    import "core-js/stable";  
    import "regenerator-runtime/runtime";  
    

    ? polyfill.io:根據瀏覽器 UA 動態加載所需 Polyfill,通過 CDN 引入:

    <script src="https://polyfill.io/v3/polyfill.min.js"></script>  
    

    ? 特定功能庫:如 whatwg-fetch 兼容 fetch API。

  2. Babel 集成
    Babel 7.4.0 后需單獨安裝 core-jsregenerator-runtime

    npm install core-js regenerator-runtime  
    

    配置 .babelrc 自動按需加載 Polyfill:

    {  "presets": [  ["@babel/preset-env", {  "useBuiltIns": "usage",  "corejs": 3  }]  ]  
    }  
    

三、避免使用 ES6 特性(備選方案)
若無需復雜功能,可手動替換 ES6 語法:
? 箭頭函數 → 傳統函數表達式:

// ES6  
const add = (a, b) => a + b;  
// ES5  
var add = function(a, b) { return a + b; };  

? 模板字符串 → 字符串拼接:

// ES6  
`Hello, ${name}`;  
// ES5  
"Hello, " + name;  

四、使用 現代構建工具

  1. Webpack
    與 Babel 集成,自動轉譯并打包代碼,處理資源加載和優化(如 Tree Shaking)。
  2. 框架內置支持
    React、Vue 等框架默認集成 Babel,開箱即用。

五、兼容性測試與策略

  1. 測試工具
    ? 使用 Can I Use 查詢特性兼容性。

    ? 通過 BrowserStack 或 Sauce Labs 多瀏覽器測試。

  2. 漸進增強與優雅降級
    ? 漸進增強:先實現基礎功能,再逐步添加高級特性。

    ? 優雅降級:先實現完整功能,再為舊瀏覽器提供降級方案。


總結
推薦組合方案:

  1. Babel + core-js:主流轉譯與 Polyfill 方案。
  2. Webpack 集成:自動化構建與優化。
  3. 按需加載 Polyfill:減少代碼體積。

通過以上方法,可在舊版瀏覽器中運行 ES6 代碼,同時保持開發效率。

向面試官介紹適配ES6的簡潔回答:

核心思路:
如果瀏覽器不支持ES6,可以通過 代碼轉譯 和 特性填補 實現兼容。

具體方案:

  1. Babel工具:將ES6代碼(如箭頭函數、模板字符串)自動轉換為ES5語法,確保舊瀏覽器能讀懂。
  2. Polyfill(如core-js):給瀏覽器“打補丁”,補充缺失的API(比如 PromiseArray.includes)。
  3. 構建工具(如Webpack):集成Babel和Polyfill,打包時自動優化代碼,按需加載補丁,減少代碼體積。

效果:
用戶無需感知兼容問題,新舊瀏覽器都能正常運行,同時保留ES6的開發效率。


口語化示例:
“如果瀏覽器不支持ES6,我們可以用兩個核心工具解決:
? Babel 負責把ES6語法(比如箭頭函數)翻譯成ES5,讓舊瀏覽器能理解;

? Polyfill(比如core-js)負責補充缺失的API(比如Promise)。

再結合Webpack這類工具打包,按需加載補丁,最終讓代碼兼容老瀏覽器,同時保持開發時的高效。”

加分點:
提到“按需加載”和“構建優化”,體現性能意識。


JavaScript 異步傳輸詳解

JavaScript 的異步傳輸機制是其核心特性之一,用于處理非阻塞操作(如網絡請求、文件讀寫、定時任務等),避免單線程的代碼阻塞,提升性能和用戶體驗。以下是異步傳輸的核心原理、實現方式及實際應用場景的深度解析:


一、異步傳輸的必要性

  1. 單線程限制
    JavaScript 是單線程語言,所有代碼默認在主線程(調用棧)中按順序執行。若遇到耗時操作(如網絡請求),同步執行會導致后續代碼被阻塞,頁面失去響應。
    異步傳輸的作用:將耗時操作委托給瀏覽器或 Node.js 的底層 API(如 WebAPI、Libuv),主線程繼續執行其他任務,待操作完成后通過回調函數或事件通知主線程處理結果。

二、異步傳輸的實現方式

  1. 回調函數(Callback)
    ? 基礎機制:將函數作為參數傳遞給異步 API,操作完成后調用該函數。

    setTimeout(() => console.log("1秒后執行"), 1000);
    fs.readFile('file.txt', (err, data) => { /* 處理結果 */ });
    

    ? 問題:多層嵌套導致“回調地獄”,代碼可讀性差。

  2. Promise
    ? 設計目的:解決回調地獄,提供鏈式調用(.then().catch())。

    ? 三種狀態:pending(等待)、fulfilled(成功)、rejected(失敗)。

    fetch('api/data').then(response => response.json()).then(data => console.log(data)).catch(error => console.error(error));
    

    ? 擴展方法:

    ? Promise.all():并行執行多個異步任務,全部完成后返回結果。

    ? Promise.race():取最先完成的任務結果。

  3. Async/Await
    ? 語法糖:基于 Promise,用同步寫法處理異步操作。

    async function loadData() {try {const response = await fetch('api/data');const data = await response.json();console.log(data);} catch (error) {console.error(error);}
    }
    

    ? 優勢:代碼結構清晰,錯誤處理更直觀(try/catch)。

  4. 事件監聽與發布訂閱
    ? 適用場景:如 DOM 事件、Node.js 的 EventEmitter

    button.addEventListener('click', () => {console.log("按鈕被點擊");
    });
    
  5. Web Workers
    ? 后臺線程:將計算密集型任務(如大數據處理)交給獨立線程執行,避免阻塞主線程。

    const worker = new Worker('worker.js');
    worker.postMessage(data);
    worker.onmessage = (event) => { /* 處理結果 */ };
    

三、底層機制:事件循環(Event Loop)
事件循環是 JavaScript 處理異步的核心模型,執行流程如下:

  1. 調用棧(Call Stack):執行同步代碼。
  2. 任務隊列(Task Queue):存放宏任務(如 setTimeoutsetInterval)。
  3. 微任務隊列(Microtask Queue):存放微任務(如 Promise 的 .then()queueMicrotask)。

執行順序:
? 同步代碼 → 微任務隊列全部執行 → 宏任務隊列首個任務 → 循環。

示例:

console.log("同步1");
setTimeout(() => console.log("宏任務"), 0);
Promise.resolve().then(() => console.log("微任務"));
console.log("同步2");
// 輸出順序:同步1 → 同步2 → 微任務 → 宏任務

四、異步傳輸的應用場景

  1. 網絡請求
    ? AJAX:通過 XMLHttpRequestFetch API 實現異步數據加載。

    ? WebSocket:實時通信場景(如聊天室)。

  2. 定時任務
    ? setTimeout/setInterval:延遲執行或周期性任務。

  3. 文件操作
    ? Node.js:異步讀寫文件(fs.readFile)或數據庫查詢。

  4. 用戶交互
    ? 事件監聽(點擊、滾動等)通過異步回調響應用戶行為。


五、最佳實踐與注意事項

  1. 避免回調地獄:優先使用 PromiseAsync/Await,而非多層嵌套回調。

  2. 錯誤處理:
    ? Promise 使用 .catch()try/catch(配合 Async/Await)。

  3. 性能優化:
    ? 并行獨立任務用 Promise.all() 加速。

    ? 耗時計算使用 Web Workers

  4. 資源管理:
    ? 使用 finally 釋放資源(如關閉文件句柄)。


總結
JavaScript 的異步傳輸通過 事件循環 和 任務隊列 實現非阻塞操作,主要方式包括回調函數、Promise、Async/Await 等。理解其底層機制(如宏任務/微任務執行順序)和適用場景(網絡請求、定時任務等),能顯著提升代碼效率和可維護性。對于復雜場景,可結合 Promise.allWeb Workers 進一步優化性能。


向面試官介紹OSI模型的正確分層(七層)及核心要點:

核心澄清
OSI模型是七層架構(而非八層),由國際標準化組織(ISO)提出,目的是解決不同網絡體系結構的互聯問題。其分層設計將網絡通信拆解為七個獨立且協作的功能層次,從底層物理連接到頂層應用服務依次為:


七層模型及功能簡介

  1. 物理層(Physical Layer)
    ? 核心職責:處理物理介質的比特流傳輸,定義機械/電氣特性(如網線接口、電壓標準)。

    ? 典型設備:網卡、光纖、中繼器。

  2. 數據鏈路層(Data Link Layer)
    ? 核心職責:將比特流封裝為數據幀(Frame),提供物理地址(MAC地址)尋址、差錯校驗和流量控制。

    ? 典型協議:以太網(Ethernet)、PPP。

  3. 網絡層(Network Layer)
    ? 核心職責:通過邏輯地址(如IP地址)實現跨網絡的路由選擇,分割和重組數據包(Packet)。

    ? 典型設備:路由器。

  4. 傳輸層(Transport Layer)
    ? 核心職責:提供端到端(進程間)可靠或不可靠的數據傳輸,通過端口號標識應用程序。

    ? 典型協議:TCP(可靠)、UDP(高效)。

  5. 會話層(Session Layer)
    ? 核心職責:管理會話的建立、維護和終止,支持同步檢查點和斷點續傳。

    ? 示例場景:遠程會議中的會話恢復。

  6. 表示層(Presentation Layer)
    ? 核心職責:數據格式轉換(如加密、壓縮)、統一語法和語義(如JSON/XML解析)。

  7. 應用層(Application Layer)
    ? 核心職責:直接面向用戶提供網絡服務接口(如HTTP網頁訪問、FTP文件傳輸)。

    ? 典型協議:HTTP、SMTP、DNS。


分層協作與數據封裝
? 數據流向:發送端數據從應用層逐層向下封裝(添加協議頭/尾),接收端則逆向解封裝。例如:

? 應用層數據 → 表示層加密 → 傳輸層分段 → 網絡層路由 → 物理層比特流傳輸。

? 對等通信:每層僅與目標設備的對應層交互(如發送端網絡層與接收端網絡層通過IP協議通信)。


常見誤解與對比
? 八層模型的誤區:實際OSI模型為七層,可能混淆了其他擴展模型(如TCP/IP四層模型,將OSI高三層合并為應用層)。

? TCP/IP與OSI的關系:TCP/IP是實際應用的協議棧,其網絡接口層對應OSI的物理+數據鏈路層,應用層涵蓋OSI的會話/表示/應用層。


總結回答示例
“OSI模型是國際標準化的七層網絡架構,通過分層設計解決異構系統互聯問題。從底層到頂層依次是物理層(比特流傳輸)、數據鏈路層(幀與MAC尋址)、網絡層(IP路由)、傳輸層(端到端通信)、會話層(會話管理)、表示層(數據格式轉換)和應用層(用戶服務接口)。它通過分層封裝與對等通信機制,實現了復雜網絡任務的模塊化協作。”

加分點:可補充分層設計優勢(如職責分離、易于擴展)或與TCP/IP模型的實踐差異。


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

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

相關文章

我用Deepseek + 亮數據爬蟲神器 1小時做出輿情分析器

我用Deepseek 亮數據爬蟲神器 1小時做出輿情分析器 一、前言二、Web Scraper API 實戰&#xff08;1&#xff09;選擇對應的URL&#xff08;2&#xff09;點擊進入對應url界面&#xff08;3&#xff09;API結果實例和爬取結果展示&#xff08;4&#xff09;用戶直接使用post請…

機器學習實戰:歸一化與標準化的選擇指南

在機器學習實戰中——是否需要歸一化&#xff08;Normalization&#xff09;或標準化&#xff08;Standardization&#xff09;&#xff0c;取決于所使用的模型類型。 ? LightGBM / XGBoost 是否需要歸一化或標準化&#xff1f; 不需要。 &#x1f527; 原因&#xff1a; L…

磁珠特點,原理與應用

什么是磁珠&#xff1f; 磁珠在1930年由日本東京工業大學的加藤與五郎和武井武兩位教授發明&#xff0c;TDK首次生產&#xff0c;是電感的一種&#xff0c;區別就是&#xff1a;電感外面包裹著鐵氧體材質。 因鐵氧體具有高電阻率&#xff0c;低渦流損耗&#xff0c;高頻時依舊…

【連載14】基礎智能體的進展與挑戰綜述-多智能體系統設計

基礎智能體的進展與挑戰綜述 從類腦智能到具備可進化性、協作性和安全性的系統 【翻譯團隊】劉軍(liujunbupt.edu.cn) 錢雨欣玥 馮梓哲 李正博 李冠諭 朱宇晗 張霄天 孫大壯 黃若溪 在基于大語言模型的多智能體系統&#xff08;LLM-MAS&#xff09;中&#xff0c;合作目標和合…

React Native踩坑實錄:解決NativeBase Radio組件在Android上的兼容性問題

React Native踩坑實錄&#xff1a;解決NativeBase Radio組件在Android上的兼容性問題 問題背景 在最近的React Native項目開發中&#xff0c;我們的應用在iOS設備上運行良好&#xff0c;但當部署到Android設備時&#xff0c;進入語言設置和隱私設置頁面后應用崩潰。我們遇到了…

[Windows] 網絡檢測工具InternetTest v8.8.2.2503 單文件版_支持查詢IP_DNS_WIFI密碼一鍵恢復

InternetTest&#xff08;詳情請戳 官網 / 作者項目地址&#xff09;是一款免費開源的網絡檢測實用工具&#xff0c;其可實現監控、診斷互聯網網絡連接&#xff0c;例如進行 ping 測試、延遲測試、WiFi 密碼查看、IP 地址或域名信息查詢等算是搭建網站及服務器的實用維護工具。…

配置Hadoop集群-集群配置

以下是 Hadoop 集群的核心配置步驟&#xff0c;基于之前的免密登錄和文件同步基礎&#xff0c;完成 Hadoop 分布式環境的搭建&#xff1a; 1. 集群規劃 假設集群包含 3 個節點&#xff1a; master&#xff1a;NameNode、ResourceManagerslave1&#xff1a;DataNode、NodeMana…

Spring Bean有哪幾種配置方式?

大家好&#xff0c;我是鋒哥。今天分享關于【Spring Bean有哪幾種配置方式&#xff1f;】面試題。希望對大家有幫助&#xff1b; Spring Bean有哪幾種配置方式&#xff1f; 1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網 Spring Bean的配置方式主要有三種&#xff…

Webpack中Compiler詳解以及自定義loader和plugin詳解

Webpack Compiler 源碼全面解析 Compiler 類圖解析&#xff1a; 1. Tapable 基類 Webpack 插件系統的核心&#xff0c;提供鉤子注冊&#xff08;plugin&#xff09;和觸發&#xff08;applyPlugins&#xff09;能力。Compiler 和 Compilation 均繼承此類&#xff0c;支持插件…

HAProxy + Keepalived + Nginx 高可用負載均衡系統

1. 項目背景 在現代Web應用中&#xff0c;高可用性和負載均衡是兩個至關重要的需求。本項目旨在通過HAProxy實現流量分發&#xff0c;通過Keepalived實現高可用性&#xff0c;通過Nginx提供后端服務。該架構能夠確保在單點故障的情況下&#xff0c;系統仍然能夠正常運行&#…

Kubernetes控制平面組件:Kubelet詳解(一):API接口層介紹

云原生學習路線導航頁&#xff08;持續更新中&#xff09; kubernetes學習系列快捷鏈接 Kubernetes架構原則和對象設計&#xff08;一&#xff09;Kubernetes架構原則和對象設計&#xff08;二&#xff09;Kubernetes架構原則和對象設計&#xff08;三&#xff09;Kubernetes控…

VIC-2D 7.0 為平面樣件機械試驗提供全視野位移及應變數據軟件

The VIC-2D系統是一個完全集成的解決方案&#xff0c;它基于優化的相關算法為平面試樣的力學測試提供非接觸、全場的二維位移和應變數據&#xff0c;可測量關注區域內的每個像素子集的面內位移&#xff0c;并通過多種張量選項計算全場應變。The VIC-2D 系統可測量超過 2000%變形…

多線程訪問Servlet如何謹慎處理共享資源

1. 避免共享狀態&#xff08;最佳實踐&#xff09; 核心思想&#xff1a;Servlet 本身應設計為無狀態&#xff08;Stateless&#xff09;&#xff0c;不依賴實例變量存儲請求相關數據。 實現方式&#xff1a; 將變量聲明在方法內部&#xff08;局部變量&#xff09;&#xff0…

從Windows到Mac的過渡:學習筆記與心得

作為一名長期使用Windows操作系統的用戶&#xff0c;當我決定轉換到Mac時&#xff0c;心中充滿了期待與好奇。Mac以其獨特的操作系統和設計風格著稱&#xff0c;雖然有許多相似之處&#xff0c;但仍有不少差異需要適應。為了幫助其他有類似轉換需求的朋友&#xff0c;我總結了一…

TestNG接口自動化

第一章、 Rest assured接口測試框架 一、概述 接口自動化的框架&#xff0c;主要是用來做接口自動化測試&#xff0c;返回的報文都是JSON 語法比較簡單&#xff0c;只需要掌握常用的方法 用例運行的速度非常快 斷言的機制 Json 封裝相關方法&#xff0c;jsonpath&#xff0c;x…

【速寫】KV-cache與解碼的再探討(以束搜索實現為例)

文章目錄 1 Beam Search 解碼算法實現2 實現帶KV Cache的Beam Search解碼3 關于在帶kv-cache的情況下的use_cache參數 1 Beam Search 解碼算法實現 下面是一個使用PyTorch實現的beam search解碼算法&#xff1a; 幾個小細節&#xff1a; 束搜索可以加入length_penalty&#…

ABP-Book Store Application中文講解 - 前期準備 - Part 3:Acme.BookStore項目模塊詳解之二

1. 匯總 ABP-Book Store Application中文講解-匯總-CSDN博客 2. 前一章 ABP-Book Store Application中文講解 - 前期準備 - Part 3:Acme.BookStore項目模塊詳解 項目之間的引用關系。 目錄 1. .Domain.Shared 2. .Domain 3. .Application.Contracts 4. .Application 5…

【Leetcode刷題隨筆】349. 兩個數組的交集

1. 題目描述 給定兩個數組nums1和nums2&#xff0c;返回它們的交集。輸出結果中的每個元素一定是唯一的。我們可以不考慮輸出結果的順序。 示例1: 輸入:nums1 [1,2,2,1], nums2 [2,2] 輸出&#xff1a;[2] 題目條件&#xff1a; 1 < nums1.length, nums2.length < 10…

Unity打包安卓失敗 Build failure 解決方法

【Unity】打包安卓失敗 Build failure 的解決方法_com.android.build.gradle.internal.res.linkapplicat-CSDN博客 unity在打包時設置手機屏幕橫屏豎屏的方法_unity打包默認橫屏-CSDN博客

Window、CentOs、Ubuntu 安裝 docker

Window 版本 網址&#xff1a;https://www.docker.com/ 下載 下載完成后&#xff0c;雙擊安裝就可以了 Centos 版本 卸載 Docker &#xff08;可選&#xff09; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-log…