iframe懶加載_前端常見問題

原地址:https://blog.csdn.net/Mr_JavaScript/article/details/84311068

1. flex布局:又叫做彈性布局

任何一個容器都可以指定flex布局,如display:flex 或 display:inline-flex

注意:設置了flex布局以后,子元素的float,clear,vertical-align屬性將失效

容器的屬性:

flex-direction flex-wrap flex-flow justify-content align-items align-content

2. js有哪些遍歷數組的方法

es5方法:

(1)for循環:通過下標遍歷數組的每一項

(2)array.forEach(item, index, array)

(3) array.map(item, index, array => return 格式化數組)

(4) array.filter(item, index, array => return 過濾條件)

(5) array.every(((item, index, array)=>{ return //判斷條件 }))

如果每個元素都符合條件,則返回true,否則返回false;

6)array.some(((item, index, array)=>{ return //判斷條件 }))

只要有一個元素符合條件,就返回true,否則返回false;

7)array.reduce((prev,cur,index,array)=>{})

從左到右遍歷數組,并返回回調函數的值(應用于求和,求冪等);prev為上一輪函數執行結果(previousResult),cur為當前值(currentValue)

8)array.reduceRight((prev,cur,index,array)=>{})

從右到左遍歷數組,并返回回調函數的值;

ES6方法:

1)for(let item of array){? //等到每個元素? }

for(let index of array.keys()) {? ?//keys()返回數組的鍵(index)? }

for(let keyAndValue of array.entries()){? ?//entries()返回數組的鍵值對(index:element)? }

2)array.find((value, index, array)=>{ return //條件 }

返回第一個符合條件的元素,如果沒找到返回undefined(找到第一個符合條件的元素,則停止遍歷)

3)array.findIndex((value, index, array)=>{ return //條件 }

返回第一個符合條件的元素下標,如果沒找到則返回-1(找到第一個符合條件的元素,則停止遍歷)

3、箭頭函數的特性

1)箭頭函數是匿名函數,自身沒有this和arguments,它的this從上下文捕捉而來;

2)箭頭函數不能作為構造函數,和 new 一起用就會拋出錯誤;

3)箭頭函數沒有原型屬性(prototype);

4)箭頭函數不能當做Generator函數,不能使用yield關鍵字;

5、MVVM模式介紹

MVVM 是Model-View-ViewModel 的縮寫,它是一種基于前端開發的架構模式,其核心是提供對View 和 ViewModel 的雙向數據綁定,這使得ViewModel 的狀態改變可以自動傳遞給 View,即所謂的數據雙向綁定。

beforeCreate() 創建組件

created() 創建完成

beforeMounte() 組件被掛載前

mounted() 組件掛載完成

beforeUpdate() 組件更新前

updated() 組件更新后

beforeDestory() 組件摧毀前

destoryed() 組件摧毀后

7、Vue數據雙向綁定原理

vue.js是采用數據劫持結合發布者-訂閱者模式的方式實現數據雙向綁定,通過Object.defineProperty()來劫持各個屬性的setter,getter,在數據變動時發布消息給訂閱者,觸發相應的監聽回調,從而更新視圖層的數據。

vue的數組如何實現的雙向綁定

9、web緩存

http請求頭緩存

1)強制緩存:

第一次請求即把數據緩存起來,在緩存數據未失效的情況下,之后的請求都直接使用緩存數據。

緩存規則(header里配置) Cache-Control,參數:private(客戶端可以緩存),public(客戶端和代理服務器都可緩存),max-age=xxx 緩存時長(s),no-cache使用緩存前,再向服務器發送驗證請求,no-store禁止緩存。

2)協商緩存:

第一次請求時拿到緩存數據和緩存標識,再次請求時向服務器發送緩存標識,服務器判斷緩存是否有效,若有效則返回304狀態碼,請求數據從緩存讀取,若無效則返回202,需要重新發送http請求數據。

緩存數據的修改時間(header里配置) Last-Modified(第一次請求) 數據最后修改時間,If-Modified-Since(再次請求)上次請求時的最后修改時間。

緩存標識(header里配置):Etag(第一次請求)由服務器生成的唯一標識,If-None-Match(再次請求)第一次請求獲取的唯一標識。

常用瀏覽器緩存

1)Cookie主要用于用戶信息的存儲,Cookie的內容可以自動在請求的時候被傳遞給服務器;

2)LocalStorage的數據將一直保存在瀏覽器內,直到用戶清除瀏覽器緩存數據為止;

3)SessionStorage的其他屬性同LocalStorage,只不過它的生命周期同標簽頁的生命周期,當標簽頁被關閉時,SessionStorage也會被清除;

4)IndexDB主要用在前端有大容量存儲需求的頁面上,例如,在線編輯瀏覽器或者網頁郵箱。

10、web跨域方式

同源策略:協議,域名,端口三者中有一個不同就算跨域。

跨域方式:

1)JSONP,通過

2)CORS “跨域資源共享”(Cross-origin resource sharing),它允許瀏覽器向跨源服務器,發出XMLHttpRequest請求。分為簡單請求和非簡單請求;(瀏覽器自動完成)

3)WebSocket(網絡通信協議),不受同源的限制,可在客戶端和服務器端之間雙向通信;(客戶端可以向服務器發送請求,服務器也可以向客戶端發送請求,而http只能由客戶端向服務器發送請求,不能反過來)

4)postMessage(),H5新增的跨域通信方法。應用場景:窗口 A (http:A.com)向跨域的窗口 B (http:B.com)互通信息;

5)Hash,原理:Hash的改變,頁面不會刷新。應用場景:A 通過iframe或frame嵌入了跨域的頁面 B,A與B間可以通過hash通信。(A和B的domain相同)

12、大數的加減乘除

1)使用插件:如bignumber.js、bigInteger.js

13.?判斷兩個單鏈表是否相交及找到第一個交點

如果兩個單鏈表有共同的節點,那么從第一個共同節點開始,后面的節點都會重疊,直到鏈表結束。

因為兩個鏈表中有一個共同節點,則這個節點里的指針域指向的下一個節點地址一樣,所以下一個節點也會相交,依次類推。所以,若相交,則兩個鏈表呈“Y”字形。如下圖:

a028f3f6dac4

1.暴力解法。

從頭開始遍歷第一個鏈表,遍歷第一個鏈表的每個節點時,同時從頭到尾遍歷第二個鏈表,看是否有相同的節點,第一次找到相同的節點即第一個交點。若第一個鏈表遍歷結束后,還未找到相同的節點,即不存在交點。時間復雜度為O(n^2)。這種方法顯然不是寫這篇博客的重點。。。不多說了。

2.使用棧。

我們可以從頭遍歷兩個鏈表。創建兩個棧,第一個棧存儲第一個鏈表的節點,第二個棧存儲第二個鏈表的節點。每遍歷到一個節點時,就將該節點入棧。兩個鏈表都入棧結束后。則通過top判斷棧頂的節點是否相等即可判斷兩個單鏈表是否相交。因為我們知道,若兩個鏈表相交,則從第一個相交節點開始,后面的節點都相交。

若兩鏈表相交,則循環出棧,直到遇到兩個出棧的節點不相同,則這個節點的后一個節點就是第一個相交的節點。

3.遍歷鏈表記錄長度。

同時遍歷兩個鏈表到尾部,同時記錄兩個鏈表的長度。若兩個鏈表最后的一個節點相同,則兩個鏈表相交。

有兩個鏈表的長度后,我們就可以知道哪個鏈表長,設較長的鏈表長度為len1,短的鏈表長度為len2。

則先讓較長的鏈表向后移動(len1-len2)個長度。然后開始從當前位置同時遍歷兩個鏈表,當遍歷到的鏈表的節點相同時,則這個節點就是第一個相交的節點。

4.哈希表法。

既然連個鏈表一旦相交,相交節點一定有相同的內存地址,而不同的節點內存地址一定是不同的,那么不妨利用內存地址建立哈希表,如此通過判斷兩個鏈表中是否存在內存地址相同的節點判斷兩個鏈表是否相交。具體做法是:遍歷第一個鏈表,并利用地址建立哈希表,遍歷第二個鏈表,看看地址哈希值是否和第一個表中的節點地址值有相同即可判斷兩個鏈表是否相交。

我們可以采用除留取余法構造哈希函數。

構造哈希表可以采用鏈地址法解決沖突。哈希表沖突指對key1 != key2,存在f(key1)=f(key2),鏈地址法就是把key1和key2作為節點放在同一個單鏈表中,這種表稱為同義詞子表,在哈希表中只存儲同義詞子表的頭指針,如下圖:

a028f3f6dac4

14. 一行代碼實現數組去重?

[...new Set([1,2,3,1,'a',1,'a'])]

15.?怎么判斷兩個對象相等?

最開始的思路是遍歷來判斷,但是最后好像沒有說清楚,查了下,好像可以轉換為字符串來判斷。

JSON.stringify(obj)==JSON.stringify(obj2);//trueJSON.stringify(obj)==JSON.stringify(obj3);//false

16.?項目做過哪些性能優化?

1、減少HTTP請求數

2、減少DNS查詢

3、使用CDN

4、避免重定向

5、圖片懶加載

6、減少DOM元素數量

7、減少DOM操作

8、使用外部JavaScript和CSS

9、壓縮JavaScript、CSS、字體、圖片等

10、優化CSS?Sprite

11、使用iconfont

12、字體裁剪

13、多域名分發劃分內容到不同域名

14、盡量減少iframe使用

15、避免圖片src為空

16、把樣式表放在 中

17、把腳本放在頁面底部 歡迎補充。。。

17.?模塊化開發是怎么做的?

使用命名空間。

18.?Vue router 跳轉和 location.href 有什么區別?

router是hash改變location.href是頁面跳轉,刷新頁面

19.?Set 和 Map 數據結構

ES6提供了新的數據結構Set它類似于數組,但是成員的值都是唯一的,沒有重復的值。

ES6提供了Map數據結構。它類似于對象,也是鍵值對的集合,但是“鍵”的范圍不限于字符串,各種類型的值(包括對象)都可以當作鍵。也就是說,Object結構提供了“字符串—值”的對應,Map結構提供了“值—值”的對應,是一種更完善的Hash結構實現。

20. 實現一個deepclone函數

function deepClone(obj) {

let objClone = Array.isArray(obj) ? [] : {};

if (obj && typeof obj === "object") {

for (key in obj) {

if (obj.hasOwnProperty(key)) {

//判斷ojb子元素是否為對象,如果是,遞歸復制

if (obj[key] && typeof obj[key] === "object") {

objClone[key] = deepClone(obj[key]);

} else {

//如果不是,簡單復制

objClone[key] = obj[key];

}

}

}

}

return objClone;

}

// 測試代碼

let a = [1, 2, [1,5], 4],

b = deepClone(a);

a[0] = 2;

a[2][0] = 5;

console.log(a, b);

21. diff比較方式

a028f3f6dac4

22. vuex

a028f3f6dac4

a028f3f6dac4

a028f3f6dac4

a028f3f6dac4

a028f3f6dac4

23. cookie

a028f3f6dac4

24. computed methods watch

a028f3f6dac4

a028f3f6dac4

25. css js預加載

a028f3f6dac4

26. 實現繼承的幾種方式

a028f3f6dac4

a028f3f6dac4

a028f3f6dac4

a028f3f6dac4

27. 原型 原型鏈

a028f3f6dac4

a028f3f6dac4

28. 事件循環

a028f3f6dac4

29. 數組方法

a028f3f6dac4

30. 請求頭 響應頭

a028f3f6dac4

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

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

相關文章

手機運行服務器無響應,《最強蝸牛》服務器無響應怎么辦 服務器無響應解決方法...

導讀最強蝸牛服務器無響應怎么辦?本作在今日迎來了正式的公測,這會導致大批量的玩家同時涌入進來,而服務器也因此而遭受到了非常大的符合,所以會導致后續加入進來的玩家出現服務器無響應進不去的現象。下面就為大家帶...最強蝸牛服…

Android 開源框架Universal-Image-Loader學習

Android 開源框架Universal-Image-Loader完全解析(一)--- 基本介紹及使用 Android 開源框架Universal-Image-Loader完全解析(二)--- 圖片緩存策略詳解 Android 開源框架Universal-Image-Loader完全解析(三)…

自己動手寫操作系統--個人實踐

近期開始看于淵的《自己動手寫操作系統》這本書,剛開始看就發現做系統的引導盤居然是軟盤!心里那個汗啊! 如今都是U盤了,誰還用軟盤。于是考慮用U盤。 于是開始下面步驟: 1、既然書上說給先要把軟盤做引導盤&#xff0…

蔻馳和mk哪個更大牌_mk和coach哪個好?mk和coach包包是一個檔次嗎?

說到包包,mk和coach可謂是輕奢界的兩大巨頭了。因此,兩個品牌的包包不可避免的會被經常拿來作比較。那么,從各個角度來講mk和coach那款包包更好呢?這兩款包包又有哪些本質上的區別呢?mk和coach哪個好價格對比大致上&am…

Linux 配置 swap 區

Linux 配置 swap 區 很多時候我們需要配置 swap 主要的原因是物理內存太貴了, 服務器也是一樣, 當內存不夠用時, 系統會卡死, 因此我們寧愿犧牲一點性能也要讓系統正常運行。 當然, 在系統物理內存足夠的條件下&#x…

嵊州職教中心計算機多少分數,嵊州中考考試分數線

每年六月份最熱鬧的大概就是中考了,很多人都想提前知道中考分數線,下面是百分網小編整理的嵊州2017年中考考試分數線,歡迎閱讀借鑒!嵊州2017年中考分數線2017年嵊州中考考試時間嵊州中考錄取情況1. 第一批 嵊州中學、馬寅初中學實驗班&#x…

12月和12年

剛剛撇了一眼,注冊博客園已經12年了。時間有時只是個數字,有沒有意義呢,自己去判斷啦。 像博客園這樣的技術社區,很是難得,雖然這個社區里.NET開發者才是一等公民。 我最喜歡的是它的博客系統的高度可Diy性。經常訪問我…

【2011-6】【奇數】

Description 鍵盤輸入一個奇數 P (P<50)&#xff0c;其個位數字不能是5&#xff0c;求一個整數 S&#xff0c;使 P*S 1111...1&#xff0c;即乘積各位都是1。要求用兩行依次輸出以下結果: ①S的全部數字&#xff1b;②乘積中數字1的個數。 例&#xff1a;輸入P3&#xff0c…

sql加上唯一索引后批量插入_阿里大佬總結的52條SQL語句性能優化策略,建議收藏...

你知道的越多&#xff0c;不知道的就越多&#xff0c;業余的像一棵小草&#xff01;你來&#xff0c;我們一起精進&#xff01;你不來&#xff0c;我和你的競爭對手一起精進&#xff01;編輯&#xff1a;業余草cnblogs.com/SimpleWu/p/9929043.html推薦&#xff1a;https://www…

Web緩存技術

本章導讀 緩存主要是為了提高數據的讀取速度。因為服務器和應用客戶端之間存在著流量的瓶頸&#xff0c;所以讀取大容量數據時&#xff0c;使用緩存來直接為客戶端服務&#xff0c;可以減少客戶端與服務器端的數據交互&#xff0c;從而大大提高程序的性能。 本章從緩存所在的命…

神武4手游服務器維護,神武4手游勢不可擋開服時間表_神武4手游新區開服預告_第一手游網手游開服表...

2020-06-1910:00新服天涯刀客已經開服2020-06-0510:00新服飛仙摘星已經開服2020-05-2910:00新服踏雪無痕已經開服2020-05-2210:00新服因緣際會已經開服2020-05-1910:00新服龍的傳人已經開服2020-05-1510:00新服鸞鳳和鳴已經開服2020-05-1211:40新服其疾如風已經開服2020-05-081…

BZOJ 4066 簡單題 ——KD-Tree套替罪羊樹

【題目分析】 直接x,y二維輪番劃分&#xff0c;暴力即可。 套上替罪羊&#xff0c;打碎重構&#xff0c;對于時間復雜度有了保證。 寫起來好麻煩&#xff0c;重構的技巧很棒&#xff01; 【代碼】 #include <cstdio> #include <cstring> #include <iostream>…

【HTML5初探之繪制圖像(上)】看我canvas元素引領下一代web頁面

弧度一塊可能有誤&#xff0c;需要再研究 導航 【初探HTML5之使用新標簽布局】用html5布局我的博客頁&#xff01; 【HTML5初探之form標簽】解放表單驗證、增加文件上傳、集成拖放 【HTML5初探之繪制圖像&#xff08;上&#xff09;】看我canvas元素引領下一代web頁面 【HTML5初…

或運算

邏輯或 ||int i, j, k;i 0x15;j 0x41;k i || j;反匯編代碼如下:MOV DWORD PTR SS:[EBP-4], 15MOV DWORD PTR SS:[EBP-C], 41CMP DWORD PTR SS:[EBP-4], 0JNZ SHORT asm_OR.00401029CMP DWORD PTR SS:[EBP-C], 0JNZ SHORT asm_OR.00401029MOV DWORD PTR SS:[EBP-10], 0JMP SH…

構造方法的調用順序和成員變量的初始化時機以及動態綁定

構造方法的調用順序&#xff1a;子類構造器中&#xff0c;JVM會自動的先調用父類的構造方法&#xff0c;然后再執行子類構造方法。在JVM自動調用父類構造方法的時候&#xff0c;會完成父類中擁有的成員變量的值的初始化操作&#xff0c;此時子類的成員變量并未初始化&#xff0…

Python interview_python

https://github.com/taizilongxu/interview_python 1 Python的函數參數傳遞 strings, tuples, 和numbers是不可更改的對象&#xff0c;而list,dict等則是可以修改的對象 2 Python中的元類(metaclass) 3 staticmethod和classmethod python 三個方法&#xff0c;靜態方法&#xf…

突然不能 ip訪問服務器文件夾,用友U8 工作站連接不到服務器,ping IP及服務器名都正常,訪問服務器共享文件夾也正常...

用友U8 U8存貨采購入庫單存貨現存量與存貨核算中的明細帳數量不符用友U8 U8存貨采購入庫單存貨現存量與存貨核算中的明細帳數量不符問題原因:錯誤原因見下面解決方案中的分析。解決方法:在查詢存貨明細帳和現存量09倉庫存貨510241數量為123&#xff0c;但在添采購入庫單紅字時卻…

rocketmq 消息 自定義_RocketMQ消息軌跡-設計篇

RocketMQ 消息軌跡主要包含兩篇文章&#xff1a;設計篇與源碼分析篇&#xff0c;本節將詳細介紹RocketMQ消息軌跡-設計相關。RocketMQ消息軌跡&#xff0c;主要跟蹤消息發送、消息消費的軌跡&#xff0c;即詳細記錄消息各個處理環節的日志&#xff0c;從設計上至少需要解決如下…

再次獻給那些心軟的人!!!

上次那篇日志朋友看了評論說&#xff1a;別太悲觀……為那些壞人成為壞人才是最不值得的&#xff01;而且好人說要當壞人就只是說說而已&#xff0c;真碰到啥事&#xff0c;依舊會傻傻的幫……沒錯&#xff0c;我還是傻傻的幫了&#xff0c;最初會表現出一點不樂意&#xff0c;…

手機做服務器性能咋樣,服務器性能不足 怎樣才能逼出最強狀態

而且&#xff0c;服務器的節能不僅僅意味著節省了電費&#xff0c;其后續的散熱降溫等工作都可以得到更好的節約。同時&#xff0c;服務器的在長時間工作的情況下&#xff0c;保持較低溫度有利于降低其承載負荷&#xff0c;最大限度發揮其能力&#xff0c;保障服務器工作運行的…