快手前端一面涼經【全程不好意思的懵逼】

面試官小哥哥人態度巨好,我啥都不會也沒有不耐煩。。
但是真的是我太菜了。。
題也記不清了

1.網絡的協議層次知道嗎,xxx協議都是什麼層的
TCP 應用層(+三握四揮)
DNS應用層
FTP應用層
。。。對不起我基本上不會亂答
2.操作系統,死鎖怎麼形成,怎麼解決?
死鎖是由於兩個或以上的線程互相持有對方需要的資源,導致這些線程處於等待狀態,無法執行。

1.互斥性:線程對資源的佔有是排他性的,一個資源只能被一個線程佔有,直到釋放。
2.請求和保持條件:一個線程對請求被佔有資源發生阻塞時,對已經獲得的資源不釋放。
3.不剝奪:一個線程在釋放資源之前,其他的線程無法剝奪佔用。
4.循環等待:發生死鎖時,線程進入死循環,永久阻塞。

解決:

1.破壞“請求和保持”條件 想辦法,讓進程不要那麼貪心,自己已經有了資源就不要去競爭那些不可搶佔的資源。比如,讓進程在申請資源時,一次性申請所有需要用到的資源,不要一次一次來申請,當申請的資源有一些沒空,那就讓線程等待。不過這個方法比較浪費資源,進程可能經常處於飢餓狀態。還有一種方法是,要求進程在申請資源前,要釋放自己擁有的資源。
2.破壞“不可搶佔”條件 允許進程進行搶佔,方法一:如果去搶資源,被拒絕,就釋放自己的資源。方法二:操作系統允許搶,只要你優先級大,可以搶到。
3.破壞“循環等待”條件 將系統中的所有資源統一編號,進程可在任何時刻提出資源申請,但所有申請必須按照資源的編號順序(升序)提出

3.react傳值
redux、mobx、hooks
父傳子,直接props
子傳父,props傳遞方法給子
4.三欄式佈局
將就着寫了個大體的聖盃,但是面試沒有辦法調所以面試官一直在說有問題,畢竟我真的沒辦法全背下來
然後寫了一個flex方法實現
講了一下雙飛翼的大概實現,沒寫
5.html的四種隱藏
visibility: hidden 佔據空間 會被繼承 綁定的事件無效
display:none 不佔據空間 不可獲取 不會被子元素繼承 不綁定事件
opacity:0 只是顏色透明 會被繼承
tranform:scale(0) 佔據文檔流
6.實現整數千分位
最簡單的肯定是正則,但是我真的記不住這個正則,剛剛找了一個
看起來好理解的

let reg=/\d{1,3}(?=(\d{3})+$)/g
"1800000".replace(reg,(...args)=>{console.log(args);return(args[0]+',')})

我自己挖坑想寫魔除存數組,一直在處理補零和邊界情況,負值還沒調整完畢就被喊停了。
然後面試官:你可以從右往左遍歷加進去(我一拍腦袋,,,)
7.問了一個function作用域的問題,說了一下詞法作用域和非詞法的動態作用域情況

var value = 1;
function foo() {
    console.log(value);
}
function bar(fn) {
    var value = 2;
    fn();
}
bar(foo);//1,詞法作用域在全局

詞法作用域:函數的作用域在函數定義的時候就決定了。
`
動態作用域:函數的作用域是在函數調用的時候才決定的。動態作用域並不關心函數和作用域是如何聲明以及在何處聲明的,只關心他們從何處調用。換句話說,作用域鏈是基於調用棧的,而不是代碼中的作用域嵌套。

面試官說非詞法作用域我們用在call、apply、bind、箭頭函數上邊,使用執行時的上下文(依賴this)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章