摘要:是什么是異步編程的一種解決方案所謂,簡單說就是一個容器,里面保存著某個未來才會結束的事件通常是一個異步操作的結果。
1,講講淺拷貝、深拷貝之間的區別最近也在準備換工作了,然后收集了一些我覺得今年面試會遇到常見的問題。
如果有機會,記得也幫忙分享我一下。
2019的行情確實很糟糕??吹竭@么多人收藏點贊。我的內心也是哇涼哇涼的。
我也給一些除了面試題之外的經驗吧我相信不景氣也是相對的,提升自我也是必要的。我說說我最近在準備些什么。
首先優化自己的博客。有技術博客的求職者,必定會給面試官篩選簡歷時一個很好的印象
針對你想求職的企業規模,乘著這段時間,深入的了解一些源碼。如中型企業大多都偏愛vue。我最近也在研究其中的源碼。
更高bigger的,可以在研究框架源碼中,得出一些經驗,寫一套自己框架。目前我也正在準備。
還有自己的npm的組件包。
核心:引用類型和非引用類型的拷貝結果是不同的
淺拷貝只是拷貝基本類型的數據,如果父對象的屬性等于數組或另一個對象,那么實際上,子對象獲得的只是一個內存地址,因此存在父對象被篡改的可能,淺拷貝只復制指向某個對象的指針,而不復制對象本身,新舊對象還是共享同一塊內存
//簡單的淺拷貝 var a = 1; var b = a;//賦值 console.log(b) //1 a = 2;//改變a的值 console.log(b) //1
如果要實現深拷貝,用什么方法來實現
JSON.parse() + JSON.stringify()(缺點:只能處理可以被枚舉的屬性);
for in 循環遞歸遍歷;
深拷貝就是能夠實現真正意義上的數組和對象的拷貝。遞歸調用"淺拷貝"。(深拷貝會另外創造一個一模一樣的對象,新對象跟原對象不共享內存,修改新對象不會改到原對象)
如果你想要實現支持setter和getter特性的拷貝,該怎么實現?
Object.defineproperties (定義屬性)、Object.getOwnPropertyDescriptors(es2017,獲取對象的多個屬性)、Object.getOwnPropertyDescriptor(老一點,獲取對象的單個屬性的屬性),但babel可以解決。
2、原型鏈的prototype和__proto__的區別;prototype 在 new 示例后會被轉為 __proto__
__proto__是非標準化的;
所有東西的原型鏈向上延伸到原型鏈的頂端,是什么;
Object.prototype.__proto__,結果是null.
Function本身就是函數, Function.__proto__ 是標準的內置對象Function.prototype, Function.prototype.__proto__ 是標準的內置對象Object.prototype3、如果想實現繼承,說幾種你知道的方法?
原型鏈繼承、構造繼承、實例繼承、拷貝繼承、組合繼承、寄生組合繼承
原型鏈繼承
3、var、let、const的區別;var 會變量提升;
let 聲明的變量只在它所在的代碼塊有效;
const 聲明后不能再修改其指向的目標,假如const 指向的是一個對象/數組,那么雖然不能更改指向目標,但是可以更改對象和數組內部的值;
進階一:說到變量提升,class 聲明一個類時,存在變量提升么?為什么?
不存在。因為要方便類的繼承,先聲明子類再聲明父類;
進階二:const 聲明一個對象,如何讓對象內部的屬性的值也無法改變?
使用Object.freeze()鎖死(es5新增特性);
對數組等引用類型的值,還是能修改的;
進階三:全局作用域?函數作用域?塊級作用域?作用域鏈?
js有哪些基本數據類型?Boolean、Null、Undefined、Number、String、Object;
Symbol(es6新增)
進階:es6新增的原型數據類型Symbol,特點是什么;
表示獨一無二的值;
聲明時不能使用new Symbol(),而是 Symbol();
聲明時可以加參數,用于描述;
作為key時不能被遍歷;
進階2:如何聲明兩個相等的Symbol變量?
使用Symbol.for,參數相同時;
let a = Symbol.for("a");
let b = Symbol.for("a");
a === b; // true
#### Promise是什么? * 是異步編程的一種解決方案; * 所謂Promise,簡單說就是一個容器,里面保存著某個未來才會結束的事件(通常是一個異步操作)的結果。從語法上說,Promise 是一個對象,從它可以獲取異步操作的消息。 一般什么時候使用? * 處理異步請求時使用,比如ajax請求; 有哪些狀態? * 狀態有pending、resolved、rejected; 怎么捕獲他的錯誤? * 最后寫catch; * then里面第二個參數可以捕獲; 如果內部拋錯,但是沒有被捕獲,這個沒被捕獲的錯誤接下來會發生什么事情? * 冒泡; 能不能被try catch捕獲?為什么? * 不能,因為是異步編程。 能不能被window.onerror捕獲? * 不能 new Promise((resolve,reject)=>throw new Error("a")).then(fn1).then(fn2,fn3).catch(fn4) 這個函數,會執行哪些函數 * fn3,沒了4,從輸入URL到瀏覽器顯示頁面發生了什么。(特別注意)
這題可以了解一下,盡管面試時候造飛船,真的干活可能還是擰螺絲。
1.在瀏覽器中輸入url(解析IP地址)
2.應用層DNS解析域名
3.應用層客戶端發送HTTP請求
4.傳輸層TCP傳輸報文(3次握手)
5.網絡層IP協議查詢MAC地址
6.數據到達數據鏈路層
7.服務器接收數據
8.服務器響應請求
9.服務器返回相應文件
二、頁面渲染:現代瀏覽器渲染頁面的過程是這樣的:解析HTML以構建DOM樹 –> 構建渲染樹 –> 布局渲染樹 –> 繪制渲染樹。
在瀏覽器還沒接收到完整的HTML文件時,它就開始渲染頁面了,在遇到外部鏈入的腳本標簽或樣式標簽或圖片時,會再次發送HTTP請求重復上述的步驟。在收到CSS文件后會對已經渲染的頁面重新渲染,加入它們應有的樣式,圖片文件加載完立刻顯示在相應位置。在這一過程中可能會觸發頁面的重繪或重排。5、async、await 的使用場景是什么?
連續的異步請求,下一步的異步請求依賴于前一步的異步請求結果;
進階一:假如有A、B、C三個異步請求,異步請求C依賴于異步請求A和B的結果(即A和B完成后再發起C),那么你會如何實現它?
Promise.all();
設置狀態分別標記A和B,A、B完成后會去修改自己的完成標記,然后檢查所有的狀態標記,假如都是完成狀態,然后去執行異步請求C。
是異步編程的一種解決方案;
所謂Promise,簡單說就是一個容器,里面保存著某個未來才會結束的事件(通常是一個異步操作)的結果。從語法上說,Promise 是一個對象,從它可以獲取異步操作的消息。
一般什么時候使用?
處理異步請求時使用,比如ajax請求;
有哪些狀態?
狀態有pending、resolved、rejected;
怎么捕獲他的錯誤?
最后寫catch;
then里面第二個參數可以捕獲;
如果內部拋錯,但是沒有被捕獲,這個沒被捕獲的錯誤接下來會發生什么事情?
冒泡;
能不能被try catch捕獲?為什么?
不能,因為是異步編程。
能不能被window.onerror捕獲?
不能
new Promise((resolve,reject)=>throw new Error("a")).then(fn1).then(fn2,fn3).catch(fn4) 這個函數,會執行哪些函數 * fn3,沒了
0.30000000000000004(能回答出來不是0.3,而是0.3后有若干個0和一個數字即可)
進階一:為什么?
原因是浮點數和整數,在存儲時的方法是不同的,因此相加的規則也是不同的;
進階二:浮點數是怎么存儲的(本問題比較難)(可以跳到進階三,比本題簡單)
而double類型就是雙精度浮點數,這種指使用64位(8字節)來存儲一個浮點數。 根據規定,這64位bit里,分為三部分: 第一部分(1bit): 符號位,表示正負,正數為0,負數為1。 第二部分(11bit): 階碼位,也可以稱為指數位。 第三部分(52bit) 尾數位,即表示實際數字的。 假如正負符號的值為S,正數S為1,負數S為-1; 假如指數位表示的值為E(計算后),指數位表示的值為2的E次方; 假如尾數位表示的值為M,尾數位表示的值為M; 根據科學表示法,任何一個范圍內的浮點數可以通過以下方法來表示:(別問我為啥,我沒去谷歌……) 浮點數 = S * Math.pow(2,E) * M;
進階三:我們在實際開發中,如果遇見了這種浮點數計算的情況,怎么處理比較合適?
8、移動端開發的時候,一般怎么實現自適應?rem
vw和vh
媒體查詢(bootstrap);
進階一:他們的特點分別是什么?或者說實現原理是什么?
rem 根據 html 的 font-size;
vw是瀏覽器窗口寬度,vh是高度;
媒體查詢是根據瀏覽器窗口寬度或高度,進行響應式選擇顯示哪個css;
進階二:彈出輸入框會發生定位錯誤,fixed布局,怎么解決?
9、在我們將開發好的頁面,進入線上環境的時候,肯定要最大化性能優化,那么我們常見的做法有哪些?https://csspod.com/frontend-performance-best-practices/
gzip、雪碧圖、減少http請求數、減少DNS請求、避免重定向、緩存ajax請求、延遲加載、預加載、減少DOM數、使用框架例如React的虛擬DOM樹、減少DOM操作、使用CDN、減少 css 里 @import 寫法、
10、圖片使用 雪碧圖 和 base64字符串 你覺得哪個好?為什么?雪碧圖可以緩存;
base64可以減少請求數;
進階一:如果你決定使用雪碧圖/base64字符串,你會怎么做?
webpack 配 url-loader(base64);
webpack 的雪碧圖插件 webpack-spritesmith;
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/117481.html
摘要:是什么是異步編程的一種解決方案所謂,簡單說就是一個容器,里面保存著某個未來才會結束的事件通常是一個異步操作的結果。 最近也在準備換工作了,然后收集了一些我覺得今年面試會遇到常見的問題。 如果有機會,記得也幫忙分享我一下。2019的行情確實很糟糕。看到這么多人收藏點贊。我的內心也是哇涼哇涼的。我也給一些除了面試題之外的經驗吧 我相信不景氣也是相對的,提升自我也是必要的。我說說我最近在準...
摘要:是什么是異步編程的一種解決方案所謂,簡單說就是一個容器,里面保存著某個未來才會結束的事件通常是一個異步操作的結果。 最近也在準備換工作了,然后收集了一些我覺得今年面試會遇到常見的問題。 如果有機會,記得也幫忙分享我一下。2019的行情確實很糟糕??吹竭@么多人收藏點贊。我的內心也是哇涼哇涼的。我也給一些除了面試題之外的經驗吧 我相信不景氣也是相對的,提升自我也是必要的。我說說我最近在準...
摘要:獲取的對象范圍方法獲取的是最終應用在元素上的所有屬性對象即使沒有代碼,也會把默認的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對于一個光禿禿的元素,方法返回對象中屬性值如果有就是據我測試不同環境結果可能有差異而就是。 花了很長時間整理的前端面試資源,喜歡請大家不要吝嗇star~ 別只收藏,點個贊,點個star再走哈~ 持續更新中……,可以關注下github 項目地址 https:...
摘要:每天會折騰一道及以上題目,并將其解題思路記錄成文章,發布到和微信公眾號上。三匯總返回目錄在月日月日這半個月中,做了匯總了數組知識點。或者拉到本文最下面,添加的微信等會根據題解以及留言內容,進行補充,并添加上提供題解的小伙伴的昵稱和地址。 LeetCode 匯總 - 2019/08/15 Create by jsliang on 2019-08-12 19:39:34 Recently...
閱讀 2592·2023-04-25 22:09
閱讀 2837·2021-10-14 09:47
閱讀 1889·2021-10-11 11:10
閱讀 2677·2021-10-09 09:44
閱讀 3372·2021-09-22 14:57
閱讀 2493·2019-08-30 15:56
閱讀 1614·2019-08-30 15:55
閱讀 775·2019-08-30 14:13