1. 程式人生 > >今日頭條前端面試-2018.03.23

今日頭條前端面試-2018.03.23

不出意外,今天頭條一面就被刷了。也正是這次面試,讓我真正明白了自己弱點在哪裡。哎,時間還有,好好學習天天向上!接下來就總結一下我遇到的這些問題吧。
整次面試40多分鐘,深深的受到了來自大佬的打擊。
(OS:找個實習真的難…)

你有沒有拿到其他公司的offer

沒有….這是我第一次正式面試。

你學習的技術棧

我就扯了扯,html,css,JavaScript,jquery,react,webpack,react-native,node。。。

金額轉換的問題

說實話,剛開始看到演算法題的時候就很慌….自己演算法本來就差…想了一個思路結果被面試官說我這個思路不行…
程式碼有時間再貼出來吧…

function toS(num){
    let reg = /(?=(\B\d{3})+$)/g; ///B表示匹配非單詞邊界的元字元,而/b表示匹配單詞邊界
    console.log(num.match(reg));
    console.log(num.replace(reg,","))
}

toS(1000000000+"");//1,000,000,000

陣列去重的問題

面試官看到我第一個演算法題做的不夠理想,於是就問了我第二個問題。這個我直接回答的是:利用set集合做…面試官說不要這樣,用原生的試試。我就老老實實的說,那就遍歷這個陣列吧。每遍歷一次,就去掉重複的資料,依次往後遍歷。面試官又說這個時間複雜度太高了….好吧,我還是沒有想法。
後來聽同學說可以用排序演算法做,在排序比較的時候去除重複的元素…最快可以是nlogn。後悔當時怎麼沒想到…

大數相加問題

好吧,前面演算法題都不夠理想。又來了一道大數相加的問題。我勒個擦,以前好像看過這一個題目忘了具體怎麼做的了。腦子裡想的是對齊兩個數的位數,然後相加進位這樣子…面試官好像不太滿意。又gg。到這裡我就覺得這個面試怕是要涼了。

JS的資料型別

面試官可能看到我演算法太差了,就轉過頭來問了問JS的基本資料型別。嘿,這個我會:number,boolean,string,undefined,null,object,symbol。

JS中基本資料型別和引用型別在記憶體上有什麼區別?

這個…這個…,我弱弱的說JS中我不太清楚,但是Java中引用型別一般是存在堆區的….好吧面試官就直接說,JS和Java是不太一樣的…妹的,又不會。

tostring和valueof有什麼區別

後來面試官問我,undefined==null嗎?我說是的true,又問為什麼。我說,==導致了兩邊物件進行了隱式資料型別轉換,都變成了number型別的,這裡兩邊都變成了0,所以返回true。
然後面試官就往深層次問了:[0]==0?
what???我知道[]==0是true,但是[0]==0??,我想[0]是陣列物件,強制轉換的時候會呼叫它的valueof方法,這裡應該是返回0,兩邊應該相等吧…結果我並沒有相信自己…就弱弱的說了句返回false吧。。。面試官後來都提示我了valueof返回的是什麼?噗….
我說如果是物件的話會呼叫tostring然後轉換成number進行比較,而陣列物件則是valueof。。。
於是就問了我tostring和valueof的區別,很顯然我答不上來。又gg一波。

2018.04.08更新:
valueof是返回最適合該物件型別的原始值,而tostring則是返回物件的字串表示。

position的值

看來面試官心裡有個底了,於是就開始問我css中position的取值有哪些。
嘿,這個我還是能回答的。
“relative,static,absolute,sticky,fixed,initial,inherit,unset”。。。
面試官問我了,說absolute是相對哪個元素定位的?我依稀記得是相對不為static的元素定位的,但是不太確定。就說了相對父級元素中最近的relative定位。面試官好像不太滿意我的回答…
然後又問了我unset有什麼作用,OS:我沒用過啊…,回答不知道。

2018.04.08更新:
unset是initial和inherit的組合值…哪個屬性有值就是哪個

談一談你對浮動的理解

ok,這個我還是會一點的。就說了浮動時高度塌陷,為了避免這個問題可以使用偽元素清除浮動,或者使用BFC容器。
好吧一提到清除浮動,面試官就問我瞭解過.clearfix這個類嗎?
我說用過。
看過原始碼嗎?
沒有。

2018.04.08更新:

.clearfix:before,.clearfix:after {
  display: table;
  content: " "
}

.clearfix:after {
  clear: both
}

瀏覽器這塊,瞭解過GC嗎?

瞭解過一點,像JS的話就是利用標記清除法來回收記憶體的。然後就說了什麼情況下新增標記,什麼時候去除標記。
“你談談如何給物件新增標記”
what???我快崩潰了,這個還真沒了解過。

2018.04.08更新:
反轉特殊位或者新增物件列表

最近webpack的新版本有什麼新特性

這個問題我直接就直接說課程太多,沒了解過…面試官表示理解。

談談HTTPS

我說了它的預設埠號為443,能夠建立可靠的安全的資訊通道,能夠更加快速的傳遞資料…面試官好像不太滿意.

談談CDN加速

我說,這個是選擇最近的節點返回資源…
面試官說怎麼選擇?有什麼演算法?
我…依稀記得計算機網路組成原理這門課上有講,已經忘了…只好吐了吐舌頭:又不知道了.

除了高程外還看過什麼書嗎?

我說看的那些教程算不算?
不算?
ok,那沒有看過。

好的,你有什麼問題問我的嗎?

面試官您好,這次我的面試是不是非常糟糕啊…
面試官笑了,他笑了…
他說,還是建議你多看看JS高程…

完了,下午就收到拒信了。學習演算法去,這個是硬傷!