頭條內推麵補坑 更新中

2021-08-17 14:25:08 字數 2494 閱讀 2740

老樣子,答的好的這裡就不寫了。只記錄答的不好的的。

這次暴露出來的問題就是要多做專案,多實踐。

###1.改這個**

//目標**

const obj = , 0)

console.log(i);}}

};obj.say();

第二種:

同時在node和瀏覽器(chrome)中都可以實現的:

const obj = )

})(i)

console.log(i);}}

};obj.say();

結果是這樣

兩種結果雖然取到了我們想要的結果,但是和外層的console.log(i)出現了順序的差異。第二種寫法先列印完這個,再依次列印()()自執行函式的。

應該是執行第乙個script巨集任務的時候,遇到了三個()(),把這三個推進了微任務,當第乙個巨集任務結束之後,依次執行完本次遇到的所有的微任務。

第一種順序列印,是因為每個settimeout即是一次巨集任務。但如果把settimeout包括起來就是微任務了。

const obj = ,0)

})},

say2:function(),0,i,this.skill[i]);}},

say3:function ()

}settimeout(self_shift,0);

}};obj.say();

obj.say2();

obj.say3();

// 閉包了,裡面的i跟外面的i不是同乙個,加上自執行

const obj =

})(i), 0)

console.log(i);}}

};obj.say();

const obj = , 0)

console.log(i);}}

};obj.say();

###2.手寫bind,bind還有其他什麼作用?

這個問題挺好的,我單獨開了另一篇部落格來談談這個問題:

###3.什麼時候304什麼時候200,相關瀏覽器快取問題?

在瀏覽器第一次請求某乙個url時,伺服器端的返回狀態會是200,內容是你請求的資源,同時有乙個last-modified的屬性標記此檔案在服務期端最後被修改的時間,:

last-modified: fri, 12 may 2006 18:53:33 gmt

客戶端第二次請求此url時,根據 http 協議的規定,瀏覽器會向伺服器傳送 if-modified-since 報頭,詢問該時間之後檔案是否有被修改過:

if-modified-since: fri, 12 may 2006 18:53:33 gmt

伺服器端的程式先取得這個欄位的值,然後與伺服器上的資料最後修改時間對比,如果伺服器端的資源沒有變化,就直接返回 304 not modified 狀態碼,然後停止。這樣就節省了傳輸資料量,達到節省頻寬的目的。當伺服器端**發生改變或者重啟伺服器時,則重新發出資源,返回和第一次請求時類似。(傳送200?)從而保證不向客戶端重**出資源,也保證當伺服器有變化時,客戶端能夠得到最新的資源。

但是last-modified不是全能的,後來在http1.1加入了etag來標記,etag的精確度更高

想象在這個乙個情景——客戶端上某個資源儲存的快取時間過期了,但這時候其實伺服器並沒有更新過這個資源,如果這個資源資料量很大,客戶端要求伺服器再把這個東西重新發一遍過來,是否非常浪費頻寬和時間呢?

所以就有了etag:

當你第一次請求乙個資源的時候,server會同時生成並返回乙個字串在響應頭里,叫etag。

瀏覽器接到資源後,快取資源的同時也會把這個etag儲存下來,成為if-none_match 。etag可以看作是乙個資源的唯一標識,當你第二次請求這個資源的時候,請求頭里會帶著這個etag,server會拿server該資源現在的etag跟請求頭中的if-none_match做對比,然後看看if-modified-since過沒過期,如果一樣,直接告訴他:你就用本地的吧,我沒變,就不給你返回了。所以返回了304,304就是這樣。

200 from cache

這個雖然是200,但他根本就沒有跟server做互動,直接拉的本地快取。

與瀏覽器快取相關的還有expires欄位,這個字段儲存的時間是相對伺服器而言,無法保證和客戶端時間統一」的問題,http1.1新增了 cache-control 來定義快取過期時間,若報文中同時出現了 pragma、expires 和 cache-control,會以 cache-control 為準。last-modified之後的etag就是為了解決,因為如果在伺服器上,乙個資源被修改了,但其實際內容根本沒發生改變,會因為last-modified時間匹配不上而返回了整個實體給客戶端(即使客戶端快取裡有個一模一樣的資源)。

###4.手寫乙個jsonp,怎麼返回資料的?

頭條內推麵補坑 更新中

老樣子,答的好的這裡就不寫了。只記錄答的不好的的。這次暴露出來的問題就是要多做專案,多實踐。目標 const obj 0 console.log i obj.say 第一種 const obj i 0 console.log i obj.say 結果 面試官當時就讓我寫在瀏覽器裡的,但是我當時使用的...

今日頭條18年內推

1,p為給定的二維平面整數點集。定義 p 中某點x,如果x滿足 p 中任意點都不在 x 的右上方區域內 橫縱座標都大於x 則稱其為 最大的 求出所有 最大的 點的集合。所有點的橫座標和縱座標都不重複,座標軸範圍在 0,1e9 內 如下圖 實心點為滿足條件的點的集合。請實現 找到集合 p 中的所有 最...

2015阿里實習內推三面 HR面

經過幾天的阿里面試,現在來回憶總結下。一面技術面 1 自我介紹 2 static的用法 包括靜態變數和成員函式 3 extern的用法 變數,函式,c 和c之間的介面規範 4 a,b互換,不用輔助空間。加法或者異或解決 5 虛函式,多型等方面的應用,記憶體分布。6 知道那些偵錯程式,怎麼應用 gdb...