基於TOP-K的面試題解總結(5)
阿新 • • 發佈:2022-04-08
21.移動端適配有哪些方案?
- rpx
- rem,em
- 百分比
- 獲取當前瀏覽器視窗寬度高度等資訊
- Hybrid
- Flutter框架
- localstorage:
- 主要作為本地儲存使用,瀏覽器支援5M儲存大小,屬於永久性儲存
- 可以將第一次請求的資料直接儲存到本地
- 不會被爬蟲抓取到
- cookie:
- 只能儲存文字,大小限制4KB左右
- 數量限制:一個瀏覽器大概50條左右
- 面向會話儲存,一般會在會話結束後刪除。可以設定過期時間
- sessionstorage:
- 擴大型cookie
- 面向會話層,會話結束後自動刪除
- 預設繫結:
- 嚴格模式下,預設this指向為undefined
- 非嚴格模式下,預設this指向全域性,即windows
- 顯式繫結:
- call(obj, arg1, arg2,...)
- apply(obj,[arg1, arg2,...])
- bind(obj,...args)
- 隱式繫結:
- 在宣告的函式體內,this指向被引用的函式物件
- new繫結:
- 通過new生成的例項中,this指向該例項物件
- 箭頭函式:
- 箭頭函式的this指向父級作用域
- HTML中圖片通過<img>引入,由src屬性請求。所以懶載入就是在圖片沒有進入到可視區的時候不給src賦值,等圖片區域進入可視區的時候,再給src賦值去請求圖片。
- 將圖片的地址放在data-set屬性中,由於圖片並沒有在src中,並不會傳送http請求。比較圖片到整個頁面距離(Y)和 頁面滑動的距離 (X) + 瀏覽器可視區域的大小(Z) ,Y小於兩者之和,則圖片就顯示出來,將圖片的data-set屬性換為src屬性
- 跨域原因:
-
瀏覽器從一個域名的網頁去請求另一個域名的資源時,域名、埠、協議任一不同,都會產生跨域問題
-
由於瀏覽器的同源策略限制,同源即為兩個頁面具有相同的協議,主機和埠號
- 跨域:當一個請求url的協議、域名、埠三者之間任意一個與當前頁面url不同即為跨域
- 解決方法:
- 使用Nginx代理進行埠監聽,然後將請求代理轉發到相同埠
- 使用Ajax的jsonp
- 缺點:請求方式只能是get請求
- 使用jQuery的jsonp
- 優點:get請求和post請求
- 缺點:返回的仍是jsonp格式
- 標記清除:
- 垃圾收集器給記憶體中的所有變數都加上標記,然後去掉環境中的變數以及被環境中的變數引用的變數的標記。在此之後被加上標記的變數即為需要回收的變數。
- 引用技術(廢棄)
- 跟蹤記錄每個值被引用的次數。當聲明瞭一個變數並將一個引用型別賦值給該變數時,則這個值的引用次數就是1。相反,如果包含對這個值引用的變數又取得了另外一個值,則這個值的引用次數就減1。當這個引用次數變成0時,則說明沒有辦法再訪問這個值了,因而就可以將其所佔的記憶體空間給收回來。這樣,垃圾收集器下次再執行時,它就會釋放那些引用次數為0的值所佔的記憶體。該方式會引起記憶體洩漏的原因是它不能解決迴圈引用的問題
- V8的垃圾回收機制
- 分為新生代和老生代兩個垃圾回收器
- 新生代:物件存活時間短,經過兩次垃圾回收還存活的物件將會移到老生區中
- 老生代:物件佔用空間大,存活時間長