美文网首页iOS面试总结JavaScript
字节跳动前端一面凉经

字节跳动前端一面凉经

作者: CRJ997 | 来源:发表于2019-03-23 16:35 被阅读1018次

今天下午面试了字节跳动,嗯.....,面完三分钟出结果,被刷了,准备不够充分啊
然后作一下总结先:

自我介绍

这一边自己好像讲了不到30秒,太简短了,得加强一下.

基础问题

  1. TCP的三次握手(太紧张讲晕了)
  2. https的原理和通信过程.(好像把C/S讲反了)
  3. JS的基本类型(不包括引用类型,null,undefined,Number,String,Symbol)
  4. 引用类型有哪几种(function,Object,Array)
  5. 基本类型和引用类型的存储方式有什么不同(可以看看这个)

接下来直接做题

1.实现一个自适应的搜索框,搜索按钮固定宽度,搜索框内容自适应填充父容器的剩余空间.
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

  • 这边按照主->微->宏的顺序去想就可以,不断地按照这个次序进行循环.

  • 这边问了个小问题: 宏任务和微任务有什么关系和不同.(没答上来)

3.考察闭包
给你一个函数头如下:
const repeat = function (func, times, wait) {};
要求能够实现如下的情况:
repeat函数返回一个函数,使之可以这样子执行

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

我的实现如下:

  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){          //这边是发现无法重用,然后修改的,也是面试官提醒.
                      i=0;break;
                   }
              }
        }
  };

好的,眼尖的应该已经发现了,我这道题完全写错了,3秒后四次会同时执行.并不是间隔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秒一次

之后要求修改为:
传入的函数func有多个不同的参数,要求在多参数条件下也能进行实现.
例如这个func为:

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

然后我就想到了arguments,但是我发现我搞不清楚作用域,捂脸.
然后就写下了这样的代码

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.类数组对象和数组

  • 先问了两者差异
  • 然后是类数组转成数组的方法
[...arguments]
Array.from(arguments);
Array.prototype.slice.call(arguments);//建议乖乖写Array,不要写[]

5.JS实现单链表
这个就不讲了...自己写就行了,记得维护一个尾部的对象引用就行,方便插入

项目

因为写了vue项目,所以问了vue的虚拟DOM树的原理,也就是vue怎么进行dom动态更新的.
这个东西可以看这个.

最后就是面试官问有什么想问的嘛?
我问他第一题有么有更好的实现,然后他说flex,好吧,我想到了没有写,因为觉得实现不了....感觉问这个问题好傻逼,捂脸

大致先总结如下

相关文章

  • 手撕面经 - 精准打击

    校招2篇,实习1篇,会及时做出调整 字节跳动前端一面面经(感觉凉凉) [字节]一面凉经 腾讯暑期实习前端面经

  • 字节跳动前端一面凉经

    今天下午面试了字节跳动,嗯.....,面完三分钟出结果,被刷了,准备不够充分啊然后作一下总结先: 自我介绍 这一边...

  • 字节跳动一面凉经

    【每日一语】如果这世界上真有奇迹,那只是努力的另一个名字。生命中最难的阶段,不是没有人懂你,而是你不懂你自己。——...

  • 字节跳动 一面 凉经

    1.自我介绍 2. 简历中的项目深挖: (1)主要工作,具体落实流程。 (2)我说我负责用例设计,她问用例设计上遇...

  • 前端一面又挂了?学习总结经验,别再让面试止步一面!

    前端一面又挂了?为什么考察基础知识的一面总是失败?一起来总结总结吧! 前端一面面经(凉) 字节一面 ① CSS 相...

  • 字节跳动后台实习一面凉经

    记录一下昨天的面试,感觉是凉了。字节跳动嘛,早有耳闻面试很难,尤其是算法题部分,所以特地准备了很久算法,没想到最后...

  • 字节跳动前端面经

    人生第一次面试,投了头条前端,总共经历了四轮技术面试和一轮hr面,不多说,直接上题: 一面 自我介绍,然后问了为什...

  • 字节跳动(前端一面)

    你觉得你做的项目里面,哪个成长比较大? 除了你提到的使用新技术以外,你有没有遇到过那些需要请教他人才能解决的问题?...

  • 字节跳动 前端 面经总结

    【前言】 内推熊来简书给大家分享字节跳动的面经干货啦!请大家一定要务必看完哦~ 看到就是赚到,优秀的你还在等什么,...

  • 字节跳动面试题

    字节跳动面试题 历经4面,“跳进”字节跳动 字节跳动一面: 自我介绍 tcp和udp区别,应用场景 tcp三次握手...

网友评论

    本文标题:字节跳动前端一面凉经

    本文链接:https://www.haomeiwen.com/subject/fwjsvqtx.html