前端八股Day5——XHS某中廠實習前端一面

沒寫完,睡醒補

CSS盒模型

//出現頻率好高,感覺每次寫面經都遇到

W3C標準盒模型(content-box):盒子寬高=width/height+padding+border+margin

IE怪異盒模型(border-box):盒子寬高=width/heigth(包括padding和border)+margin

默認標準切換怪異:box-sizing:border-box

對BFC有了解嗎

BFC全稱Block Formatting Context,塊級格式化上下文,具有隔離性,BFC內部元素完全與外部隔離不會互相影響布局,內部默認垂直排布間距由margin決定,BFC會自動包裹浮動元素,不會造成高度塌陷問題,不同BFC間外邊距不會合并

/* 常用觸發方式 */
.element {display: flow-root;        /* 最干凈的BFC觸發方式 */overflow: hidden/auto;     /* 非visible值(慎用可能造成內容裁剪) */float: left/right;         /* 非none值 */position: absolute/fixed;  /* 絕對定位 */display: inline-block;     /* 行內塊元素 */contain: layout/content/paint; /* CSS Containment規范 */
}

CSS選擇器,優先級

!important > 內聯 > id > 類 = 偽類 = 屬性 > 標簽 = 偽元素 = 后代??> 子 = 相鄰?> 通配

用到過哪些布局

?1.?文檔流布局(Normal Flow)

特點:元素按HTML順序自然排列
痛點:難以實現復雜布局

2.?浮動布局(Float)

應用場景:早期多欄布局
缺陷:需手動清除浮動(clearfix hack)

3.?定位布局(Position)

典型應用:懸浮元素、模態框

1.?Flexbox(彈性盒子)

核心優勢:

  • 一維布局(主軸方向控制)

  • 動態分配剩余空間

  • 完美垂直居中方案

2.?Grid(網格布局)

核心優勢:

  • 二維布局(行列雙向控制)

  • 精準控制網格軌道尺寸

  • 支持命名網格區域

3.?多列布局(Multi-column)

應用場景:報紙式文本排版

Flex布局有哪些屬性

?

響應式怎么實現的

?

水平垂直居中的方法

//出現過好多次
//#1 絕對定位
.container{
position: absolute,
left: 50%,
top: 50%,
transform: translate(-50%,-50%),
}
//#2 flex
.container{
display: flex,
justify-content: center,
align-items: center,
}
//#3 grid
.container{
display: grid,
place-items: center,
}
//#4 行內塊
.parent{
display: inline-block,
.child{
text-align: center,
vertical-align: center,
}
}
//#5 水平 margin
.container{
margin: 0 auto,
}

閉包

函數嵌套,內層函數變量可訪問外層函數變量,并于內層函數返回接口,導致外層函數變量一直存在,未被銷毀,主要應用場景為防抖節流,濫用易造成內存泄漏

閉包使用場景

防抖節流

防抖和節流

防抖:觸發事件回調,n秒后執行,若n秒內再次觸發則重新計時

節流:頻繁觸發事件回調,單位時間內只執行一次,適用于滾動條

箭頭函數和普通函數的區別

?語法簡潔,無構造函數,不能調用

箭頭函數this指向

父級作用域,無父級指向Windows

無論普通函數還是箭頭函數this指向機制

普通函數,構造即隱式綁定this指向自己

箭頭函數,指向外層作用域

事件監聽回調函數,即誰動指向誰

顯示綁定: call apply bind

顯示綁定指向箭頭函數本身,無效

深拷貝和淺拷貝

一、核心概念對比

淺拷貝(Shallow Copy)

  • 定義:僅復制對象的一層屬性

  • 引用處理:嵌套對象復制引用地址(新舊對象共享嵌套層)

  • 內存占用:較少(僅復制第一層)

  • 修改影響:修改嵌套對象會影響原對象

深拷貝(Deep Copy)

  • 定義:遞歸復制對象的所有層級屬性

  • 引用處理:嵌套對象完全新建獨立副本

  • 內存占用:較多(全層級獨立存儲)

  • 修改影響:新舊對象完全獨立,互不影響


四、使用場景對比

  1. 簡單對象且無嵌套引用

    • 推薦方案:淺拷貝

    • 原因:性能高效,實現簡單

  2. 配置對象/狀態管理

    • 推薦方案:深拷貝

    • 原因:避免意外修改原始數據

  3. 含函數/特殊類型(如Date、RegExp)的對象

    • 推薦方案:Lodash.cloneDeep

    • 原因:第三方庫處理復雜類型更完善

  4. 需要極致性能的大數據操作

    • 推薦方案:不可變數據結構(如Immutable.js)

    • 原因:深拷貝成本過高時,通過結構共享優化性能

      //淺拷貝
      // 方法1:Object.assign
      const obj = { a: 1, b: { c: 2 } };
      const shallowCopy1 = Object.assign({}, obj);// 方法2:展開運算符
      const shallowCopy2 = { ...obj };// 方法3:數組淺拷貝
      const arr = [1, { d: 3 }];
      const shallowArr = arr.slice(); // 或 arr.concat()
      //深拷貝
      // 方法1:JSON序列化(有局限性)
      const deepCopy1 = JSON.parse(JSON.stringify(obj));// 方法2:遞歸實現(基礎版)
      function deepClone(source) {if (typeof source !== 'object' || source === null) return source;const target = Array.isArray(source) ? [] : {};for (const key in source) {if (source.hasOwnProperty(key)) {target[key] = deepClone(source[key]);}}return target;
      }// 方法3:使用第三方庫 lodash
      import _ from 'lodash';
      const deepCopy3 = _.cloneDeep(obj);

基本數據類型和引用數據類型指的哪些

基本:String Number Boolean Null Undefined Symbol BigInt

引用:Object

事件循環

宏任務和微任務

console.log('Script Start'); // 同步任務(宏任務)setTimeout(() => { console.log('setTimeout'); // 宏任務回調
}, 0);Promise.resolve().then(() => {console.log('Promise 1'); // 微任務1}).then(() => {console.log('Promise 2'); // 微任務2});console.log('Script End'); // 同步任務(宏任務)/* 輸出順序:
Script Start
Script End
Promise 1
Promise 2
setTimeout
*/

怎樣處理跨域

http緩存策略

響應式原理

組件通信

從url輸入到頁面渲染的過程

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

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

相關文章

INP指標

什么是INP(Interaction to Next Paint) 參考網站:webVital-INP文檔 定義與核心目標 INP 是一項穩定的 Core Web Vitals 指標,通過統計用戶訪問期間所有符合條件的互動約定時間,評估網頁對用戶操作的總體響應能力。最…

剖析擴散模型(Denoising Diffusion Probabilistic Models)

文章目錄 1. 前言2. 前向擴散過程(Forward Diffusion)3. 反向生成過程(Reverse Process)4. 訓練和推理過程中的偽代碼5. 訓練過程代碼實現(Training)5.1 時間嵌入模塊——TimeEmbedding5.2 前向擴散過程——GaussianDiffusionTrai…

基于 Spring Boot 瑞吉外賣系統開發(九)

基于 Spring Boot 瑞吉外賣系統開發(九) 保存菜品 菜品管理頁面提供了一個“新增菜品”按鈕,單擊該按鈕時,會打開新增菜品頁面。 請求路徑/dish,請求方法POST,參數使用DishDto類接收。 DishDto 添加f…

w317汽車維修預約服務系統設計與實現

🙊作者簡介:多年一線開發工作經驗,原創團隊,分享技術代碼幫助學生學習,獨立完成自己的網站項目。 代碼可以查看文章末尾??聯系方式獲取,記得注明來意哦~🌹贈送計算機畢業設計600個選題excel文…

【Agent搭建】利用coze平臺搭建一個AI銷售?

目錄 一、關于coze 核心功能 二、搭建屬于你自己智能體 備注:(以下說明比較需要調整的板塊) 1、從Prompt工程開始 2、搭建工作流 3、添加知識 三、總結 一、關于coze Coze是字節跳動推出的AI應用開發平臺,專注于幫助用戶快速…

Sharding-JDBC分庫分表中的熱點數據分布不均勻問題及解決方案

引言 在現代分布式應用中,使用Sharding-JDBC進行數據庫的分庫分表是提高系統性能和擴展性的常見策略。然而,在實際應用中,某些特定的數據(如最新訂單、熱門商品等)可能會成為“熱點”,導致這些部分的數據處…

DSP48E2 的 MAC模式功能仿真

DSP48E2 仿真代碼: 測試的功能為 P i ( A D ) ? B P i ? 1 P_{i} (AD) * B P_{i-1} Pi?(AD)?BPi?1? timescale 1ns / 1nsmodule dsp_tb;// 輸入reg CLK;reg CE;reg SCLR;reg signed [26:0] A, D;reg signed [17:0] B;// 輸出wire signed [47:0] P;par…

抽象工廠模式(Abstract Factory Pattern)

很好!你現在已經開始接觸設計模式了,而**抽象工廠模式(Abstract Factory Pattern)是一種常用于“創建一系列相關產品”**的經典設計模式。 我會一步步幫你理解: 🧠 一句話解釋 抽象工廠模式:提…

Thymeleaf模板引擎從入門到實戰:Spring Boot整合與核心用法詳解

在 Java Web 開發的世界里,模板引擎是連接后端數據與前端展示的重要橋梁。Thymeleaf 憑借其強大的功能和簡潔的語法,逐漸成為眾多開發者的首選。如果你正在尋找一款能夠讓你的 Web 應用開發更加高效、代碼更加優雅的模板引擎,那么 Thymeleaf …

【HarmonyOS】作業三 UI

目錄 一. 單選題(共10題,10分) 1. (單選題, 1分)關于Tabs組件頁簽的位置設置,下面描述錯誤的是 2. (單選題, 1分)下面哪個組件不能包含子組件? 3. (單選題, 1分)ArkTS語言的實現計數器功能的組件名稱是以下哪個? 4. (單選題…

《算法筆記》10.6小節——圖算法專題->拓撲排序 問題 C: Legal or Not

題目描述 ACM-DIY is a large QQ group where many excellent acmers get together. It is so harmonious that just like a big family. Every day,many "holy cows" like HH, hh, AC, ZT, lcc, BF, Qinz and so on chat on-line to exchange their ideas. When so…

博客信息管理/博客管理

🛠 博客管理模塊:設計建議 你應該以To B 的后臺系統思路來設計,但保持簡單、輕量級、自己易維護是關鍵。下面是針對你這個場景的建議。 🧱 前端頁面結構(React/Vue 可用) 頁面 說明 博客列表頁 展示所有博…

全平臺開源即時通訊IM框架MobileIMSDK:7端+TCP/UDP/WebSocket協議,鴻蒙NEXT端已發布,5.7K Stars

一、基本介紹 MobileIMSDK是一套全平臺原創開源IM通信層框架: 超輕量級、高度提煉,lib包50KB以內;精心封裝,一套API同時支持UDP、TCP、WebSocket三種協議(可能是全網唯一開源的);客戶端支持iOS…

SpringBoot商城平臺系統設計與開發

概述 SpringBoot商城平臺系統實現了商品展示、購物車、訂單管理等商城核心功能,適合作為計算機專業設計項目或商城項目開發參考,實現商城平臺的核心功能,學習商品管理、訂單處理、支付集成等關鍵技術實現。 主要內容 1. 前臺用戶功能模塊 …

【網絡原理】深入理解HTTPS協議

本篇博客給大家帶來的是網絡原理的知識點, 由于時間有限, 分三天來寫, 本篇為線程第三篇,也是最后一篇. 🐎文章專欄: JavaEE初階 🚀若有問題 評論區見 ? 歡迎大家點贊 評論 收藏 分享 如果你不知道分享給誰,那就分享給薯條. 你們的支持是我不斷創作的動…

【C語言練習】018. 定義和初始化結構體

018. 定義和初始化結構體 018. 定義和初始化結構體1. 定義結構體示例1:定義一個簡單的結構體輸出結果2. 初始化結構體示例2:在聲明時初始化結構體輸出結果示例3:使用指定初始化器初始化結構體(C99及以上標準支持)輸出結果3. 結構體數組示例4:定義和初始化結構體數組輸出結…

3D版同步幀游戲

以下是實現一個3D版同步幀游戲的詳細步驟與完整代碼示例。我們將以第一人稱射擊游戲(FPS)為原型,重點講解3D空間中的同步機制優化。 項目升級:3D版核心改動 1. 3D坐標系與消息結構 // common/messages.go type Vector3 struct {X float32 `json:"x"`Y float32 `…

卷積神經網絡進化史:從LeNet-5到現代架構的完整發展脈絡

摘要 本文系統梳理卷積神經網絡(CNN)從誕生到繁榮的發展歷程。從1998年Yann LeCun開創性的LeNet-5出發,重點解析2012年引爆深度學習革命的AlexNet,并詳細拆解后續演進的五大技術方向:網絡深度化(VGG)、卷積功能強化(ResNet)、檢測任務遷移(F…

在 Windows 中安裝 Pynini 的記錄

#工作記錄 概述 Pynini 是一個用于加權有限狀態文法編譯的 Python 庫,廣泛應用于自然語言處理(NLP)領域。以下記錄旨在用于回顧和幫助大家在 Windows 系統中安裝 Pynini。 安裝思路: 優先用conda虛擬環境 或 在python3.12的vir…

深挖Java之:運算符與輸入器

今天我要介紹的是在Java中對于運算符與輸入器的一些基礎語法運算符與輸入器的代碼示例以及應用場景,他們在應用上的優勢與劣勢作說明介紹: 介紹:運算符與輸入器是兩個基礎且關鍵的概念,它們共同構成了程序與用戶、程序與數據之間…