主頁 >  其他 > 前端面試題總結

前端面試題總結

2020-10-27 14:14:19 其他

link和@import的區別

1.link是html標簽,@import在css里是值匯入外部樣式表
2.頁面被加載時,link會被同時加載,而import會等它先加載完再加載
3.import只支持IE5以上才支持,而link是html標簽,沒有兼容問題
4.link比import權重要大
5.link支持javascript改變樣式,而import不支持

javescript原型和原型鏈

每一個函式物件里都有一個prototype屬性,被稱為顯示原型
每一個實體物件里都有一個_ _ proto _ _屬性,被稱為隱式原型
每一個prototype里都有一個constructor指向它關聯的建構式
原型鏈
獲取物件屬性時,如果物件本身沒有這個屬性,那么就會去它的原型_proto_上去找,如果沒找到,就會去它原型的原型上去找,一直找到(Object.prototype),直到找到屬性為止,Object.prototype也有原型,值為null

作用域和自由變數

作用域有:全域作用域,區域作用域,塊級作用域(ES6新增只支持let,const)
自由變數:當前作用域中沒有定義,但被使用了,就會一層一層往上級作用域去找,直到找到為止,如果到全域作用域還沒找到,就報錯
作用域鏈:自由變數向上級作用域去查找,一層一層查找,直到找到為止,最高到全域作用域,就形成了作用域鏈

this的五大呼叫場景

普通函式呼叫(this指向windows)
物件方法呼叫(this指向當前物件)
class呼叫(this指向實體物件物件)
call,aplly,bind呼叫(this指向被傳入系結的物件)
箭頭函式呼叫(this指向背景關系的this)

閉包

定義:函式嵌套函式,內部函式可以訪問外部函式時,就產生了閉包
特性:1.函式嵌套函式
2.內部函式可以訪問外部函式的變數或引數
3.不會被垃圾回識訓制回收
優點:1.變數長期駐扎在記憶體中
2.避免全域變數的污染
3.私有成員的存在
缺點:變數長期駐扎在記憶體中,增大了記憶體使用量,使用會造成記憶體泄漏
應用場景:回呼和封裝私有變數,防抖節流

宏任務和微任務

宏任務:setTimeout setInterval Ajax DOM事件
微任務:promise,async/await
微任務比宏任務執行要早

異步和單執行緒

異步和單執行緒是相輔相成的,javescript是一門單執行緒腳本語言,需要異步的輔助
異步和同步的區別:
異步不會阻塞程式的運行
同步會阻塞程式的執行
為什么會有同步和異步:
js是一門單執行緒腳本語言,js任務也是一個接一個來執行的,如果一個任務執行過久,后面的任務就只能等著它執行完畢,用戶體驗極差,所以就有了同步任務和異步任務

scr和href的區別

scr指向的是外部資源檔案,指定的內容將會嵌套到檔案中標簽所在的位置
href指的是網路資源檔案,可以將元素和檔案之間形成一個鏈接,比如超鏈接

let、var、const的區別

var存在變數提升,let,const不存在
var不存在暫時性死區,let,const存在
var允許重復宣告變數,let,const不存在
var不存在塊級作用域,let,const存在
var和let允許修改宣告的變數,const不允許

深拷貝和淺拷貝如何實作

深拷貝是層層拷貝,淺拷貝是只拷貝一層
深拷貝:深拷貝復制變數值,將非基本資料型別轉換為基本資料型別,再復制,拷貝過的物件與原來物件相互隔絕互不影響
淺拷貝:是將物件的每個屬性依次復制,物件是參考資料型別時,就不是復制而是參考,參考指向的值改變,它也會跟著變

遞回實作深拷貝

1.將要拷貝的資料obj以引數的形式進行傳參
2.宣告一個變數來存盤拷貝出來的內容
3.判斷obj是否為參考資料型別,如果不是,則直接賦值(用instanceof判斷)
4.根據判斷不同的型別,再給之前的變數賦予不同的型別
5.回圈obj中的每一項,如果里面有復雜的資料型別,則用遞回再次呼叫copy函式
6.最后return出來這個變數

設計模式

單例模式:保證一個類只有一個實體,并為它提供一個全域的訪問點
工廠模式:用工廠方法代替new操作的一種模式
觀察者訂閱模式:vue.js 則是采用資料劫持結合發布者-訂閱者模式的方式,通過Object.defineProperty()來劫持各個屬性的setter,getter,在資料變動時發布訊息給訂閱者,觸發相應的監聽回呼,

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

1.箭頭函式是匿名函式,不能作為建構式來使用,不能使用new
2.箭頭函式不系結arguments,取而代之需要用從展開的擴展運算子
3.箭頭函式不系結this,則獲取背景關系的this作為自己的this來使用
4.箭頭函式通過cell()和aplly()呼叫函式時,只能傳入一個引數,對this沒有影響
5.箭頭函式沒有原型屬性

Ajax是什么?

Ajax是異步javaScript和XML的相結合
ajax并不是一種全新的技術,而是已有技術的相結合,主要用來實作客戶端和服務器之間的異步通信效果,實作頁面的區域重繪,早期瀏覽器不支持ajax,可以用隱藏幀變相實作異步通信效果,后來的瀏覽器支持了對ajax的支持
ajax原生發送請求只要是通過xmlhttpRequest(標準瀏覽器)ActiveXobject(IE瀏覽器)實作異步通信

如何創建一個Ajax

1.創建一個XMLHtthReques物件,也就是一個異步呼叫物件
2.創建一個新的http請求,并指定該請求的方法URL及驗證資訊
3.設定回應Http請求狀態變化的函式
4.發送Http請求
5.獲取異步呼叫回傳的物件
6.使用JavaScript和DoM實作區域重繪

前端瀏覽器兼容問題

1.不同的瀏覽器marrgin和padding不同

解決方法:
1.CSS里 *{margin:0;padding:0;} 但是性能不好
2.一般我們會引入reset.css樣式重置;

2.css3的新屬性得加前綴才能兼容早期瀏覽器

-moz- 火狐瀏覽器
-webkit- / Safari, 谷歌瀏覽器等使用Webkit引擎的瀏覽器
-o- Opera瀏覽器(早期)

-ms- IE *

3. 超鏈接訪問過后hover樣式就不出現的問題

解決方案:改變瀏覽器的順序

vue常用指令

v-moudel雙向資料系結
v-for回圈
v-if添加或者洗掉
v-show顯示或隱藏
v-text決議文本
v-html決議html標簽

陣列方法

push()向陣列追加元素
delete()洗掉陣列
pop()洗掉陣列最后一個元素
splice()指定洗掉
sort()排序
toString()陣列轉字串

跨域

協議、域名、埠都相同叫同域,否則就是跨域
解決跨域的方案:jsonp原理 代理 CORS
jsonp原理: 主要利用動態創建的script標簽請求后端介面地址,然后傳遞callback引數,后端接收callback,后端經過資料處理,回傳callback引數,后端接收callback,后端經過資料處理,回傳callback函式呼叫的形式,callback中的引數就是json

cookie

cookie是用來和服務器通訊的,而不是本地存盤,它只是被借用到本地存盤里
cookie優點:
1.控制保存cookie中session物件大小
2.通過MD5加密和安全傳輸,減少cookie被盜的可能性
3.只有在cookie中存放不重要的資訊,被盜也沒事
4.控制cookie生命周期,讓它不會永遠有效,讓偷盜者拿到的可能是過期的cookie
cookie缺點:
1.有長度限制,每個domain最多只能存放20條cookie,長度不能超過4kb,否則會被截掉
2.安全性差,cookie被盜,session資訊也會被盜,加密也沒用
3.有些狀態不可保存在客戶端,不起作用,例如:重復提交表單

陣列去重

1.ES6-set
2.利用map資料結構去重
3.利用遞回去重
4.forEach+indexof

vue2.0和vue3.0

更快更小更易維護,讓開發者更輕松
更精準的變更通知
3.0新加了Typescript以及PWA的支持
創建專案和啟動專案不同

for…in和for…of的區別

1.遍歷陣列的時候用for…of,遍歷物件用for…in
2.for…in遍歷的是key,for…of遍歷的是value
3.for…of是新增特性,修復了ES5中for…in的不足
4.for…of不能回圈普通的物件,需要和object.keys一起使用

ES6解構賦值

解構賦值就是提取陣列和物件中的值,對變數進行賦值,這種方法稱為解構賦值
定義和賦值必須放在一起,否則就會報錯取不到資料
它可以讓我快速的從復雜的物件中提取我們想要的值

vue常用的事件修飾符

.prevent: 提交事件不再多載頁面;
.stop: 阻止單擊事件冒泡;
.self: 當事件發生在該元素本身而不是子元素的時候會觸發;
.capture: 事件偵聽,事件發生的時候會呼叫

Vue.js中this.$nextTick()

this.$nextTick()將回呼延遲到下次 DOM 更新回圈之后執行,在修改資料之后立即使用,然后等待 DOM 更新,它跟全域方法
Vue.nextTick 一樣,不同的是回呼的 this 自動系結到呼叫它的實體上,

vue中key的作用

Key值具有唯一性,用于管理可復用的元素,key的作用主要是為了高效的更新虛擬DOM,vue總高效的渲染元素而不是從頭渲染,這個時候只需添加一個具有唯一值的 key 屬性即可,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/193571.html

標籤:其他

上一篇:JavaScript進階教程(7)-正則運算式

下一篇:AdminLTE的介紹與使用(詳細流程)-----前端框架

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more