字節(jié)跳動前端一面涼經(jīng)

今天下午面試了字節(jié)跳動,嗯.....,面完三分鐘出結果,被刷了,準備不夠充分啊
然后作一下總結先:

自我介紹

這一邊自己好像講了不到30秒,太簡短了,得加強一下.

基礎問題

  1. TCP的三次握手(太緊張講暈了)
  2. https的原理和通信過程.(好像把C/S講反了)
  3. JS的基本類型(不包括引用類型,null,undefined,Number,String,Symbol)
  4. 引用類型有哪幾種(function,Object,Array)
  5. 基本類型和引用類型的存儲方式有什么不同(可以看看這個)

接下來直接做題

1.實現(xiàn)一個自適應的搜索框,搜索按鈕固定寬度,搜索框內容自適應填充父容器的剩余空間.
2.考察eventloop

console.log("begin");
setTimeout(function(){
    console.log("setTimeout");
    promise.resolve().then(()=>{
        console.log("promise1");
    });
    setTimeout(function(){
      promise.resolve().then(()=>{
          console.log("promise between promise1 & promise2");
      })
   });
  promise.resolve().then(()=>{
        console.log("promise2");
  });
},0);
console.log("end");

正確輸出為(運行結果):
begin
end
setTimeout
promise1
promise2
promise between promise1 & promise2

  • 這邊按照主->微->宏的順序去想就可以,不斷地按照這個次序進行循環(huán).

  • 這邊問了個小問題: 宏任務和微任務有什么關系和不同.(沒答上來)

3.考察閉包
給你一個函數(shù)頭如下:
const repeat = function (func, times, wait) {};
要求能夠實現(xiàn)如下的情況:
repeat函數(shù)返回一個函數(shù),使之可以這樣子執(zhí)行

let repeatFunc = repeat(alert,4,3000);
repeatFunc("hello world"); //alert "hello world" 四次,每次之間間隔3秒,并且repeatFunc可以再次使用.

我的實現(xiàn)如下:

  const repeat = function (func, times, wait) {
        let i=0;
        return function (message) {
              while(i<times){
                    setTimeout(function () {
                            func(message);      //這邊一開始寫成了alert(message),捂臉,被面試官糾正了.
                    },wait);
                    i++;
                    if(i===times){          //這邊是發(fā)現(xiàn)無法重用,然后修改的,也是面試官提醒.
                      i=0;break;
                   }
              }
        }
  };

好的,眼尖的應該已經(jīng)發(fā)現(xiàn)了,我這道題完全寫錯了,3秒后四次會同時執(zhí)行.并不是間隔3秒來一次.

//改動
  const repeat = function (func, times, wait) {
        let i=0;
        return function (message) {
              let i=0;
              while(i<times){
                    setTimeout(function () {
                            func(message);    
                    },(i+1)*wait);
                    i++;
              }
        }
  };
 
let repeatFunc = repeat(alert,4,3000);
repeatFunc("helloWorld"); //輸出四次hello world,間隔3秒一次

之后要求修改為:
傳入的函數(shù)func有多個不同的參數(shù),要求在多參數(shù)條件下也能進行實現(xiàn).
例如這個func為:

function logSum(a,b,c){
  console.log(a+b+c);
}

然后我就想到了arguments,但是我發(fā)現(xiàn)我搞不清楚作用域,捂臉.
然后就寫下了這樣的代碼

const repeat = function (func, times, wait) {
        let i=0;
        return function (message) {
              let arg = this.arguments; //this亂指問題.....算是低級錯誤了吧
              while(i<times){
                    setTimeout(function () {
                            func(...arg);  
                    },wait);
                    i++;
                    if(i===times){ 
                      i=0;break;
                   }
              }
        }
  };

好的,因為那個this和setTimeout,這題完全涼了.

修改如下:

const repeat = function (func, times, wait) {
        let i=0;
        return function (message) {
              let arg = arguments; //去掉this
              while(i<times){
                    setTimeout(function () {
                            func(...arg);  
                    },wait);
                    i++;
                    if(i===times){ 
                      i=0;break;
                   }
              }
        }
  };
let repeatFunc = repeat(function(a,b,c){
        console.log(a+b+c);
    },4,3000);
repeatFunc(1,2,3); //四次6,但是并非間隔3秒一次

4.類數(shù)組對象和數(shù)組

  • 先問了兩者差異
  • 然后是類數(shù)組轉成數(shù)組的方法
[...arguments]
Array.from(arguments);
Array.prototype.slice.call(arguments);//建議乖乖寫Array,不要寫[]

5.JS實現(xiàn)單鏈表
這個就不講了...自己寫就行了,記得維護一個尾部的對象引用就行,方便插入

項目

因為寫了vue項目,所以問了vue的虛擬DOM樹的原理,也就是vue怎么進行dom動態(tài)更新的.
這個東西可以看這個.

最后就是面試官問有什么想問的嘛?
我問他第一題有么有更好的實現(xiàn),然后他說flex,好吧,我想到了沒有寫,因為覺得實現(xiàn)不了....感覺問這個問題好傻逼,捂臉

大致先總結如下

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌析藕,老刑警劉巖瘤礁,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡泣栈,警方通過查閱死者的電腦和手機眨猎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門抑进,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人睡陪,你說我怎么就攤上這事寺渗。” “怎么了兰迫?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵信殊,是天一觀的道長。 經(jīng)常有香客問我汁果,道長涡拘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任据德,我火速辦了婚禮鳄乏,結果婚禮上,老公的妹妹穿的比我還像新娘棘利。我一直安慰自己汞窗,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布赡译。 她就那樣靜靜地躺著仲吏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蝌焚。 梳的紋絲不亂的頭發(fā)上裹唆,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音只洒,去河邊找鬼许帐。 笑死,一個胖子當著我的面吹牛毕谴,可吹牛的內容都是我干的成畦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼涝开,長吁一口氣:“原來是場噩夢啊……” “哼循帐!你這毒婦竟也來了?” 一聲冷哼從身側響起舀武,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤拄养,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后银舱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瘪匿,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡跛梗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了棋弥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片核偿。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖顽染,靈堂內的尸體忽然破棺而出宪祥,到底是詐尸還是另有隱情,我是刑警寧澤家乘,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布蝗羊,位于F島的核電站,受9級特大地震影響仁锯,放射性物質發(fā)生泄漏耀找。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一业崖、第九天 我趴在偏房一處隱蔽的房頂上張望野芒。 院中可真熱鬧,春花似錦双炕、人聲如沸狞悲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摇锋。三九已至,卻和暖如春站超,著一層夾襖步出監(jiān)牢的瞬間荸恕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工死相, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留融求,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓算撮,卻偏偏與公主長得像生宛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子肮柜,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容