前端面試場景題

目錄

1.項目第一次加載太慢優化?/ vue 首屏加載過慢如何優化

2.說說了解的es6-es10的東西有哪些

ES6(ES2015)之后,JavaScript 新增了許多實用的數組和對象方法,下面為你詳細介紹:

3.常見前端安全性問題

XSS:攻擊者通過注入惡意腳本,在用戶瀏覽器中執行,竊取 Cookie、會話令牌等敏感信息

跨站請求偽造(CSRF)

跨域資源共享(CORS)與安全

前端如何處理密碼安全?需要

如何避免 URL 中的敏感信息泄露?? ?

其他常見安全問題

總結:前端安全核心原則

4.vite和webpack在熱更新上有啥區別?

5.在項目中,webpack使用過哪些常見的plugin(插件)和loader(加載器)

?Loader(加載器)

Plugin(插件)

常用loader

常用plugin


1.項目第一次加載太慢優化?/ vue 首屏加載過慢如何優化

????????首屏加載慢的常見原因,比如有打包后的文件過大、資源加載順序不合理,素材資源一次性加載過多等等。

  • 首先從代碼層面優化,路由懶加載,分模塊加載文件,合理使用路由懶加載可使首屏 JS 體積減少 40%-60%然后對于工具庫,盡量采用按需引入的方式。然后合理使用v-if和v-show合理使用watch和computed,使用v-for必須添加key
  • 然后從資源層面優化,圖片壓縮(Squoosh)+ WebP 格式 + 懶加載(Intersection Observer),優先使用字體圖標,大文件放在cdn上,比如阿里云七牛云
  • ?然后構建配置優化,使用骨架屏,開啟Brotli?、gzip壓縮代碼,減少代碼包的大小,使用Tree Shaking移除 JavaScript 上下文中未被引用代碼(它通過分析代碼中的導入(import)和導出(export)語句,判斷哪些代碼是 “活的”(被引用),哪些是 “死的”(未被引用),從而在打包時剔除 “死代碼”。作用:大幅減少打包后的代碼體積,提升應用加載速度,尤其對使用大型第三方庫的項目優化效果顯著。)

2.說說了解的es6-es10的東西有哪些

????????塊級作用域:let/const?解決?var?的變量提升和閉包問題

????????箭頭函數(Arrow Functions)綁定外層?this,簡化回調

????????類(Class)語法糖:基于原型鏈的面向對象封裝

????????模塊(ES Module)標準化導入導出

????????解構賦值(Destructuring)、擴展運算符

ES6(ES2015)之后,JavaScript 新增了許多實用的數組和對象方法,下面為你詳細介紹:
  1. Array.from():可將類數組對象或可迭代對象轉換為真正的數組。
  2. Array.find():返回數組中滿足提供的測試函數的第一個元素的值,否則返回?undefined。
  3. Array.findIndex():返回數組中滿足提供的測試函數的第一個元素的索引,若沒有找到則返回 -1。
  4. Object.assign():用于將一個或多個源對象的所有可枚舉屬性復制到目標對象,返回目標對象。
  5. Object.keys():返回一個由一個給定對象的自身可枚舉屬性組成的數組,數組中屬性名的排列順序和正常循環遍歷該對象時返回的順序一致。
  6. Object.values():返回一個給定對象自身的所有可枚舉屬性值的數組,值的順序與使用?for...in?循環的順序相同。

3.常見前端安全性問題

????????前端安全的主要領域,比如 XSS、CSRF、SQL 注入(雖然更多是后端,但前端也可能涉及)、點擊劫持、跨域問題、密碼安全、文件上傳安全等等。然后,每個領域下有哪些常見的問題,比如 XSS 的類型、預防措施,CSRF 的原理和防護方法,這些都是面試中常問的。

XSS攻擊者通過注入惡意腳本,在用戶瀏覽器中執行,竊取 Cookie、會話令牌等敏感信息

????????預防措施:1.輸入輸出轉碼對用戶輸入(如表單、URL 參數)和輸出(如 HTML、URL、JavaScript)進行編碼(如使用textContent代替innerHTML?2.Cookie 安全屬性:設置HttpOnly(防止 JS 讀取 Cookie)、Secure(僅 HTTPS 傳輸)

跨站請求偽造(CSRF)

????????攻擊者誘導用戶執行非自愿的操作(如轉賬、修改密碼),利用用戶已登錄的會話憑證。
攻擊原理:用戶登錄 A 網站后,瀏覽器攜帶 Cookie 訪問惡意網站 B,B 向 A 發送偽造請求(如隱藏的表單提交或自動發送的 GET 請求)。

????????防御措施Token 驗證:提交時校驗 Token 與用戶會話是否匹配。設置CookieSameSite=Strict/Lax,限制跨站請求攜帶 Cookie(Strict完全禁止,Lax允許部分安全場景)。

跨域資源共享(CORS)與安全

????????限制允許的源:使用Access-Control-Allow-Origin指定單一可信域名(如https://api.example.com),避免使用*(通配符)。

????????預檢請求(Preflight):對復雜請求(如含Content-Type: application/json的 POST 請求),瀏覽器先發送 OPTIONS 請求驗證權限,需確保服務端正確響應。

前端如何處理密碼安全?需要
  • ?輸入強度校驗:通過正則表達式檢查密碼復雜度(如大小寫、數字、特殊字符,長度限制)。
  • 掩碼顯示:使用input type="password"隱藏輸入內容,避免明文泄露。
  • 避免本地存儲:絕不將密碼明文存儲在localStorage/sessionStorage或 Cookie 中(應通過 HTTPS 傳輸,由后端加密處理)。
  • 防暴力破解:前端配合后端限制登錄嘗試次數,或添加驗證碼。
如何避免 URL 中的敏感信息泄露?? ?
  • 避免明文參數:絕不通過 URL 傳遞密碼、Token 等敏感信息(如https://api.com/login?token=xxx),應通過 POST 請求體或 Header 傳輸。
  • URL 編碼:對用戶輸入的參數進行編碼(如encodeURIComponent),防止特殊字符導致的注入攻擊(如路徑遍歷../)。
  • 路由參數校驗:對動態路由參數(如/user/123)進行合法性校驗,防止越權訪問(如篡改 ID 訪問他人數據)。?

其他常見安全問題

  • 如何理解 Web 安全中的 “同源策略”?它的作用是什么?答:瀏覽器限制不同源(協議、域名、端口均相同)的頁面之間交互,防止惡意網站竊取數據,作用是:阻止跨域讀取 Cookie、DOM、AJAX 請求,是瀏覽器的核心安全機制。

  • 什么是依賴項安全?如何防范 npm 包的漏洞?答:避免使用未維護的庫,選擇下載量高、社區活躍的包。使用package-lock.jsonyarn.lock鎖定依賴版本,防止版本劫持。

  • 簡述 HTTPS 的作用及前端相關配置 :作用:加密傳輸數據,防止中間人攻擊、數據篡改和竊聽。確保證書有效(非自簽名),使用 HSTS(HTTP Strict Transport Security)頭強制瀏覽器僅通過 HTTPS 連接。

總結:前端安全核心原則

  1. 輸入輸出校驗:永遠不信任用戶輸入,對所有輸入進行嚴格過濾和轉義。
  2. 最小權限原則:限制資源訪問范圍(如 CORS、CSP),避免過度開放權限。
  3. 關注最新漏洞:定期學習 XSS、CSRF、依賴漏洞等最新攻擊手段及防御方案(如 2023 年的 CORS 漏洞confusion attacks)。

4.vite和webpack在熱更新上有啥區別?

? ? ? ? 1.實現機制,vite使用瀏覽器原生的ES模塊導入功能,可以實現模塊級別的熱更新,即只更新修改的模塊,而不需要刷新整個頁面。這樣可以提供更快的開發迭代速度。而在webpack中,熱更新是基于文件級別的,Webpack 會對整個項目進行打包,需要重新構建并刷新整個頁面。(Webpack 的熱更新(HMR,Hot Module Replacement)機制不依賴特定的模塊導入規范,而是通過?HotModuleReplacementPlugin?插件和 開發服務器(如 webpack-dev-server)實現,其核心原理是在模塊更新時,通過注入運行時代碼來替換舊模塊)

? ? ? ? 2.熱更新速度,由于 Vite 在開發環境下不需要打包,所以熱更新速度非常快。當修改一個模塊時,Vite 只需要重新編譯該模塊,并將更新后的模塊發送給瀏覽器,幾乎可以實現即時更新。而webpack?需要重新編譯整個模塊或部分相關模塊,然后再將更新后的代碼推送給瀏覽器。尤其是在項目規模較大、依賴關系復雜時,重新編譯的時間會明顯增加。

? ? ? ??綜上所述,Vite 在熱更新方面具有速度快、配置簡單等優勢,更適合現代前端開發的快速迭代需求;而 Webpack 雖然熱更新配置相對復雜,但它的生態系統成熟,對于復雜項目的熱更新也能提供有效的支持。

5.在項目中,webpack使用過哪些常見的plugin(插件)和loader(加載器)

?Loader 主要專注于文件的轉換,將不同類型的文件轉換為 Webpack 可處理的模塊;而 Plugin 的功能更廣泛,可在 Webpack 構建過程的各個階段執行各種任務。???????

?Loader(加載器)

  • 作用:Loader 的功能就是對不同類型的文件(如 CSS、圖片、字體等)進行轉換,讓 Webpack 能夠理解并處理這些文件。簡單來說,Loader 就是將非 JavaScript 文件轉化成 Webpack 可處理的模塊。
  • 使用方式:在 Webpack 配置文件里,借助module.rules屬性來配置 Loader。每個規則包含testuse兩個關鍵屬性,test用于匹配文件類型,use用于指定要使用的 Loader。
  • 示例:處理 CSS 文件時,一般會用到style-loadercss-loadercss-loader的作用是解析 CSS 文件里的@importurl()語句,style-loader則把 CSS 代碼注入到 HTML 文件的<style>標簽中。
module.exports = {module: {rules: [{test: /\.css$/,use: ['style-loader', 'css-loader']}]}
};

?

Plugin(插件)

  • 作用:Plugin 能夠在 Webpack 構建過程的各個階段執行特定的任務,它的功能更為廣泛,可用于優化打包結果、管理資源、注入環境變量等。
  • 使用方式:在 Webpack 配置文件里,通過plugins屬性來配置 Plugin。首先要引入 Plugin,接著在plugins數組里創建 Plugin 實例。
  • 示例HtmlWebpackPlugin可自動生成 HTML 文件,并把打包后的 JavaScript 文件注入其中。
const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = {plugins: [new HtmlWebpackPlugin({template: './src/index.html'})]
};

常用loader

  • css-loader:解析 CSS 文件里的@importurl()語句,把 CSS 文件轉化為 JavaScript 模塊。
  • less-loader:將 Less 文件編譯成 CSS 文件,同樣常與css-loaderstyle-loader配合。
  • file-loader:處理文件資源,像圖片、字體等,將文件復制到輸出目錄,并返回文件的公共 URL
  • babel-loader:借助 Babel 將 ES6 + 代碼轉換為向后兼容的 JavaScript 代碼,以確保在舊版本瀏覽器中也能正常運行。

常用plugin

  • HtmlWebpackPlugin:自動生成 HTML 文件,并且把打包后的 JavaScript 和 CSS 文件注入到 HTML 文件中。
  • TerserPlugin:壓縮和混淆 JavaScript 代碼,減少文件大小,提高加載速度。
  • CopyWebpackPlugin:將指定的文件或目錄復制到輸出目錄,適用于處理靜態資源。
  • MiniCssExtractPlugin:將 CSS 提取到單獨的文件中,而非將其注入到 JavaScript 文件里,從而提升性能。

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

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

相關文章

Spring JDBC 的開發步驟(注解方式)

Spring JDBC 的開發步驟主要包括以下關鍵環節&#xff0c;結合代碼示例說明如下&#xff1a; 1. 添加依賴 在 pom.xml 中引入 Spring JDBC 和數據庫驅動依賴&#xff08;以 HikariCP 連接池和 MySQL 為例&#xff09;&#xff1a; <!-- Spring JDBC --> <dependency…

Java面試:探索Spring Boot與微服務的深度挑戰

場景&#xff1a;互聯網大廠Java求職者面試 在一個陽光明媚的下午&#xff0c;趙大寶來到了知名互聯網大廠的面試現場。他面臨的是一個嚴肅的面試官&#xff0c;準備對他的技術能力進行全面考核。 第一輪提問&#xff1a;基礎知識與Spring Boot應用 面試官&#xff1a;趙先生…

Spring Boot中的監視器:Actuator的原理、功能與應用

在 Spring Boot 應用中&#xff0c;監視器通常指 Spring Boot Actuator&#xff0c;一個內置的生產就緒工具&#xff0c;用于監控和管理運行中的應用。Actuator 提供了一系列 RESTful 端點&#xff0c;暴露應用的運行時信息&#xff0c;如健康狀態、性能指標、日志配置和環境變…

GitHub創建遠程倉庫

使用GitHub創建遠程倉庫&#xff1a;從零開始實現代碼托管與協作 前言 在當今軟件開發領域&#xff0c;版本控制系統已成為開發者必備的核心工具。作為分布式版本控制系統的代表&#xff0c;Git憑借其強大的分支管理和高效的協作能力&#xff0c;已成為行業標準。而GitHub作為…

Manus技術架構、實現內幕及分布式智能體項目實戰 線上高級實訓班

Manus技術架構、實現內幕及分布式智能體項目實戰 線上高級實訓班 模塊一&#xff1a;解密Manus分布式多智能體工作原理和架構內幕 ? 基于Claude和Qwen的大模型智能體Manus為何能夠迅速成為全球討論熱度最高、使用體驗最好、產業界最火爆的大模型智能體產品&#xff1f; ? Ma…

JS通過GetCapabilities獲取wms服務元數據信息并在SuperMap iClient3D for WebGL進行疊加顯示

獲取wms服務元數據信息并在三維webgl客戶端進行疊加顯示 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><tit…

【刷題Day21】TCP(淺)

說說 TCP 的四次揮手&#xff1f; TCP的四次揮手事用于安全關閉一個已建立的連接的過程&#xff0c;它確保雙方都能完成數據傳輸并安全地釋放連接資源。 簡述步驟&#xff1a; 第一次揮手&#xff08;FIN --> ACK&#xff09;&#xff1a;客戶端主動關閉連接&#xff0c;…

Springboot整合Redis主從

Springboot整合Redis主從 前言原配置現配置測試LettuceConnectionFactory.setShareNativeConnection 方法的作用 前言 SpringBoot版本&#xff1a;2.3.2.RELEASE 原配置 原yml配置內容&#xff1a; spring:# Redis服務器配置redis:host: 127.0.0.1# Redis服務器連接端口por…

git撤銷最近一次commit

在Git中&#xff0c;在撤銷最近一次的提交時&#xff0c;有幾種不同的方法&#xff0c;這取決于你想要的結果。下面是一些常見的方法&#xff1a; 1. 取消最近的提交&#xff08;但不刪除改動&#xff09; 如果你想要取消最近的提交&#xff0c;但是保留這些改動&#xff0c;以…

解決Docker 配置 daemon.json文件后無法生效

vim /etc/docker/daemon.json 在daemon中配置一下dns {"registry-mirrors": ["https://docker.m.daocloud.io","https://hub-mirror.c.163.com","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","ht…

QML--全局對象Qt

在 QML 中&#xff0c;Qt 是一個內置的全局對象&#xff0c;提供了許多核心功能、工具函數、環境信息和類型構造方法。以下是 Qt 全局對象的詳細分類和常見用途&#xff1a; 1. 工具函數 1.1 格式化與轉換 Qt.formatDate(date, format) / Qt.formatTime(date, format) 格式化…

前端筆記-Vue3(下)

學習參考視頻&#xff1a;尚硅谷Vue3入門到實戰&#xff0c;最新版vue3TypeScript前端開發教程_嗶哩嗶哩_bilibili vue3學習目標&#xff1a; VUE 31、Vue3架構與設計理念2、組合式API&#xff08;Composition API&#xff09;3、常用API&#xff1a;ref、reactive、watch、c…

Git遠程操作與標簽管理

目錄 1.理解分布式版本控制系統 2.遠程倉庫 3.新建遠程倉庫 4.克隆遠程倉庫 5.向遠程倉庫推送 6.拉取遠程倉庫 7.配置Git 7.1.忽略特殊文件 7.2.給命令配置別名 8.標簽管理 8.1.理解標簽 8.2.創建標簽 8.3.操作標簽 1.理解分布式版本控制系統 Git是目前世界上…

Vue3:component(組件:uniapp版本)

目錄 一、基本概述二、基本使用(父傳子)三、插槽四、子傳父 一、基本概述 在項目的開發過程中&#xff0c;頁面上井場會出現一些通用的內容&#xff0c;例如頭部的導航欄&#xff0c;如果我們每一個頁面都去寫一遍&#xff0c;那實在是太繁瑣了&#xff0c;所以&#xff0c;我…

C#語言實現PDF轉Excel

實現效果 第三方庫 ClosedXML iTextSharp 實現源碼 using System.Text; using iTextSharp.text.pdf; using iTextSharp.text.pdf.parser; using System.Text.RegularExpressions; using ClosedXML.Excel;namespace PdfToExcel_winform {public partial class MainForm : For…

如何將IDP映射屬性添加,到accountToken中 方便項目獲取登錄人信息

? 目標 你想要&#xff1a; 用戶通過 IdP 登錄&#xff08;SAML 或 OAuth2&#xff09;Keycloak 自動將 IdP 返回的屬性&#xff08;如&#xff1a;email、name、role 等&#xff09;映射到用戶賬戶中并把這些屬性加入到用戶登錄返回的 Access Token 中&#xff0c;供業務系…

JSON-RPC遠程控制

文章目錄 &#x1f310; 一、什么是 JSON-RPC&#xff1f;&#x1f4ec; 二、通信過程1?? 客戶端發起請求2?? 服務端處理請求&#xff0c;調用方法&#xff0c;返回結果 &#x1f4d1; 三、重要字段說明&#x1f6e0;? 四、核心函數與概念&#xff08;結合你的代碼&#x…

芝法醬躺平攻略(21)——kafka安裝和使用

本節內容比較初級&#xff0c;故接著躺平攻略寫 一、官網的下載 1.1 下載解壓 首先&#xff0c;去官網下載jar包&#xff0c;放進linux中&#xff0c;解壓到對應位置。 我的位置放在/WORK/MIDDLEWARE/kafka/4.0 1.2 常見配置 # 每個topic默認的分片數 num.properties4 # 數…

AutoSAR從概念到實踐系列之MCAL篇(二)——Mcu模塊配置及代碼詳解(上)

歡迎大家學習我的《AutoSAR從概念到實踐系列之MCAL篇》系列課程,我是分享人M哥,目前從事車載控制器的軟件開發及測試工作。 學習過程中如有任何疑問,可底下評論! 如果覺得文章內容在工作學習中有幫助到你,麻煩點贊收藏評論+關注走一波!感謝各位的支持! 根據上一篇內容中…

easypoi 實現word模板導出

特此非常致謝&#xff1a;easypoi實現word模板 基礎的可以參考上文&#xff1b; 但是我的需求有一點點不一樣。 這是我的模板&#xff1a;就是我的t.imgs 是個list 但是很難過的是easy poi 我弄了一天&#xff0c;我都沒有弄出來嵌套list循環怎么輸出顯示&#xff0c;更難過…