撩課-Web大前端每天5道面試題-Day14

撩課學院發表於2018-12-21

1. 請寫出至少5個html5新增的標籤,並說明其語義和應用場景?

section:定義文件中的一個章節;

nav:定義只包含導航連結的章節;
header:定義頁面或章節的頭部;
它經常包含 logo、頁面標題和導航性的目錄。

footer:定義頁面或章節的尾部;
它經常包含版權資訊、法律資訊連結和反饋建議用的地址。

aside:定義和頁面內容關聯度較低的內容,
如果被刪除,剩下的內容仍然很合理。

 

2. get和post請求在快取方面的區別?

get請求類似於查詢的過程,使用者獲取資料,
可以不用每次都與資料庫連線,所以可以使用快取。

post不同,post做的一般是修改和刪除的工作,
所以必須與資料庫互動,所以不能使用快取。

因此get請求適合於請求快取。

 

3. 如何解決非同步回撥地獄?

promise、generator、async/await

 

4. 圖片的懶載入和預載入?

預載入:提前載入圖片,
當使用者需要檢視時可直接
從本地快取中渲染。

懶載入:懶載入的主要目的
是作為伺服器前端的優化,
減少請求數或延遲請求數。

兩種技術的本質:
兩者的行為是相反的,
一個是提前載入,
一個是遲緩甚至不載入。

懶載入對伺服器前端有一定
的緩解壓力作用,
預載入則會增加伺服器前端壓力。

 

5. bind,apply,call的區別?

通過apply和call改變函式的this指向,
這兩個函式的第一個引數都是一樣的,
表示要改變指向的那個物件,
第二個引數,apply是陣列,
而call則是arg1,arg2...這種形式。

通過bind改變this作用域
會返回一個新的函式,
這個函式不會馬上執行。

 

6. js怎麼控制一次載入一張圖片,載入完後再載入下一張?

方法一:
<script type="text/javascript">
var obj=new Image();
obj.src="http://www.itlike.com/21.jpg";
obj.onload=function(){
    document.getElementById("pic")
    .innnerHTML="<img src=`"+this.src+"` />";
}
</script>
<div id="pic">載入中……</div>


方法二:
<script type="text/javascript">
var obj=new Image();
obj.src="http://www.itlike.com/21.jpg";
obj.onreadystatechange=function(){
   if(this.readyState=="complete"){
       document.getElementById("pic")
       .innnerHTML="<img src=`"+this.src+"` />";
  }
} 
</script>
<div id="pic">載入中……</div>

 

相關文章