寫在前面的話
最近面試,有不少題目還不錯~
分享給大家
面試題如下
https://www.cnblogs.com/imwtr/p/5957391.html
https://juejin.cn/post/6844904046436843527
2、如何獲取強緩存和協(xié)商緩存
https://segmentfault.com/a/1190000021661656
瀏覽器會獲取該緩存資源的?header?中的信息,根據?response header?中的?expires?和?cache-control?來判斷是否命中強緩存,如果命中則直接從緩存中獲取資源。
如果沒有命中強緩存,瀏覽器就會發(fā)送請求到服務器,這次請求會帶上?IF-Modified-Since?或者?IF-None-Match, 它們的值分別是第一次請求返回?Last-Modified或者?Etag,由服務器來對比這一對字段來判斷是否命中。如果命中,則服務器返回 304 狀態(tài)碼,并且不會返回資源內容,瀏覽器會直接從緩存獲取;否則服務器最終會返回資源的實際內容,并更新 header 中的相關緩存字段。
No-cache 和 no-store的區(qū)別
no-cache 可以在本地緩存,可以在代理服務器緩存,但是這個緩存要服務器驗證才可以使用
no-store 徹底得禁用緩沖,本地和代理服務器都不緩沖,每次都從服務器獲取
3、為什么會有OPTIONS請求【預請求】
https://cloud.tencent.com/developer/article/1046663
1)獲取服務器支持的HTTP請求方法;
2)用來檢查服務器的性能。
4、函數柯里化
通過偏函數實現,把多參函數轉換為一個嵌套一元函數的過程
5、頂級域名和子級域名之間的cookie共享
https://blog.csdn.net/u010955166/article/details/78469927
domain
6、為什么TCP連接要三次握手,四次揮手
https://juejin.cn/post/6844903913611591688
第四次揮手??: 客戶端接收到服務端的連接釋放FIN報文后,必須發(fā)出確認報文,ACK=1,ack=z+1,而自己的序列號是seq=x+1,此時,客戶端就進入了TIME-WAIT(時間等待)狀態(tài)。此時服務端收到客戶端發(fā)送過來的確認報文,就立即撤銷自己的傳輸控制塊TCB,進入CLOSED狀態(tài),注意此時的TCP連接還沒有釋放,必須經過2MSL(最長報文段壽命)的時間后,客戶端沒有收到服務端發(fā)來的任何數據,證明服務端已正常關閉,此時客戶端會撤銷相應傳輸控制塊TCB后,進入CLOSED狀態(tài)。至此,TCP的連接才真正的斷開了。(服務端結束TCP連接的時間要比客戶端稍微早一些)
布局如何實現
cnblogs.com/yangshifu/archive/2018/08/22/9518528.html
父組件調用子組件的方法 $refs
子組件調用父組件的方法 $emit
9、Vue父子組件生命周期執(zhí)行順序及鉤子函數的個人理解
https://www.cnblogs.com/yuliangbin/p/9348156.html
10、加載渲染過程
父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted
11、react hook
https://www.ruanyifeng.com/blog/2019/09/react-hooks.html
https://zh-hans.reactjs.org/docs/hooks-intro.html
12、SPA(single page application)
1)SPA這個模型中,是通過動態(tài)地重寫頁面的部分與用戶交互,而避免了過多的數據交換,響應速度自然相對更高。
比如,AngularJS,Vue
2)優(yōu)點
頁面之間的切換非???/p>
一定程度上減少了后端服務器的壓力(不用管頁面邏輯和渲染)
3)SEO【白帽技術】
在每頁使用一個短、獨特和相關的標題。
編輯網頁,用與該頁的主題。有關的具體術語替換隱晦的字眼。這有助于該站訴求的觀眾群,在搜索引擎上搜索而被正確導引至該站。
在該站點增加相當數量的原創(chuàng)內容。
使用合理大小、準確描述的匯標,而不過度使用關鍵字、驚嘆號、或不相關標題術語。
注意網址字眼,有助于搜索引擎優(yōu)化。
確認所有頁可透過正常的鏈接來訪問,而非只能透過Java 、JavaScript或Adobe Flash應用程序訪問。這可透過使用一個專屬列出該站所有內容的網頁達成(網站地圖)
透過自然方式開發(fā)鏈接:Google不花功夫在這有點混淆不清的指南上。寫封電子郵件給網站員,告訴他:您剛剛貼了一篇挺好的文章,并且請求鏈接,這種做法很可能為搜索引擎所認可。
參與其他網站的網絡集團(譯按:web ring 指的是有相同主題的結盟站群)──只要其它網站是獨立的、分享同樣題目和可比較的品質。
4)SSR??
SSR是Server-Side Rendering(服務器端渲染)的縮寫
https://juejin.cn/post/6844903688075509774
SSR常用框架
React 的Next
Vue.js 的Nuxt
13、雙向綁定
http://www.itdecent.cn/p/cdd7dde12786
https://juejin.cn/post/6844903901003513863
14、Vue響應式原理的核心就是Observer、Dep、Watcher。
Observer中進行響應式的綁定,在數據被讀的時候,觸發(fā)get方法,執(zhí)行Dep來收集依賴,也就是收集Watcher。
在數據被改的時候,觸發(fā)set方法,通過對應的所有依賴(Watcher),去執(zhí)行更新。比如watch和computed就執(zhí)行開發(fā)者自定義的回調方法。
15、閉包
源自于函數式編程
由于在Javascript語言中,只有函數內部的子函數才能讀取局部變量,因此可以把閉包簡單理解成"定義在一個函數內部的函數"。 所以,在本質上,閉包就是將函數內部和函數外部連接起來的一座橋梁。?閉包可以用在許多地方。 它的最大用處有兩個,一個是前面提到的可以讀取函數內部的變量,另一個就是讓這些變量的值始終保持在內存中。
js有哪些內存泄漏的方式?
https://juejin.cn/post/6844903917986267143
16、Primise.all()
http://www.itdecent.cn/p/7e60fc1be1b2
在前端開發(fā)請求數據的過程中,偶爾會遇到發(fā)送多個請求并根據請求順序獲取和使用數據的場景,使用Promise.all毫無疑問可以解決這個問題。
17、字符串方法
https://www.runoob.com/js/js-strings.html
es6新增
https://es6.ruanyifeng.com/#docs/string
https://es6.ruanyifeng.com/#docs/string-methods
1)For of
2)ES6 引入了模板字符串
18、數組方法
https://www.runoob.com/jsref/jsref-obj-array.html
數組擴展
https://es6.ruanyifeng.com/#docs/array
https://es6.ruanyifeng.com/#docs/array#Array-from
以上