字节跳动---一面

一面之前大概几天整个人其实很紧张,复习了好几天,周二下午开始了,面试开始的时候,其实没有那么紧张了,就开始了面试之路,啦啦啦啦啦

Q:了解过js的数据类型吗
答:…说的挺完整的

Q:怎么判断是数据类型
答:typeof和instanceOf,布拉布拉

Q:说一下 == 和 === 的区别及用法
答:布拉布拉

.Q:看一下这个能不能弹出

if ("0") {
 alert( 'Hello' );
}

答:可以弹出Hello

.Q: for in 和for of的区别
答:因为忘了一些,就说了一下map和forEach
q:那forEach可以打断吗
答:不可以Q。。。。

.Q:了解那个深拷贝吗?大概说一下
答:说了一下递归的,手写了一个代码
Q:除了递归的还会其他方法吗,简单的两三行代码
答:emmm,不会了,还没有了解过

.Q:看一下这个打印的顺序

<form onclick="alert('form')">
 <div onclick="alert('div')">
  <p onclick="alert('p')"></p>
 </div>
</form>

答:我就说这个应该是事件冒泡,p->div->form,也不知道对不对

Q:看一下这个题输出

let promise = Promise.resolve();
promise.then(() => alert("1"));
alert("2"); 

答:先是2,再是1,布拉布拉

Q:关于promise主要用那些API
答:就之前用过then和promise.all
Q:那promise.all主要实现的功能是什么
答:布拉布拉布拉
Q:那它里面的promise是串行还是并行执行呢
答:并行的

Q:看一下这个继承的题吧

let animal = {
 jumps: null
};
let rabbit = {
 __proto__: animal,
 jumps: true
};
alert( rabbit.jumps ); // ? (1)
delete rabbit.jumps;
alert( rabbit.jumps ); // ? (2)
delete animal.jumps;
alert( rabbit.jumps ); // ? (3)

答:这个是true -》 null -》undefined

Q:用class重写一下这个函数

function Clock({ template }) {
   let timer;
   function render() {
     let date = new Date();
     let hours = date.getHours();
    if (hours < 10) hours = '0' + hours;
     let mins = date.getMinutes();
     if (mins < 10) mins = '0' + mins;
     let secs = date.getSeconds();
     if (secs < 10) secs = '0' + secs;
     let output = template
      .replace('h', hours)
       .replace('m', mins)
       .replace('s', secs);
     console.log(output);
  }  
this.stop = function() {
     clearInterval(timer);
   };
   this.start = function() {
    render();
   timer = setInterval(render, 1000);
};  
}
let clock = new Clock({template: 'h:m:s'});
clock.start();

答:这个题卡了好久,不会写,最后也没有写出来,面试官给我大概讲了一下,引导了好久,感觉人很好

Q:知道http返回的状态码304吗
答:终于离那个改写题远了,开始了网络。大概说了一下

Q:那知道关于缓存的head,就是http的请求头吗
答:这个当时不太了解

Q:那Cache-Control了解过吗
答:缓存控制,布拉布拉,说了一点点,不太清楚

Q:那说一下position的属性吧
答:这个简单,我就说了好多

Q:聊一下居中吧
答:说了水平,垂直,水平垂直居中,布拉布拉。

Q:那说一下css动画都有哪些
答:随便说了几个

Q:那写一个从左向右移动,延迟300ms的动画
答:就开始写了

Q:说一下浏览器渲染的过程
答:这个很熟悉,就布拉布拉

Q:那回流和重绘知道吗
答:布拉布拉

Q:有用过性能优化的东西吗
答:从css,js,缓存方面都说了一些

Q:有用过Chrome DevTools吗
答:当时没有听懂,就说不会了

Q:那最后写一个题吧

"()"              =>  true
")(()))"          =>  false
"("               =>  false
"(())((()())())"  =>  true

答:括号匹配,就是利用栈进行写

const str = "()())";
let show= (str)=>{
  const leftArr = [];
 for(let i =0;i<str.length;i++){
       if(str[i]=='('){
           leftArr.push(i);
       }else if(str[i]==')'){
           if(leftArr.length==0){
               return false;
           }
           leftArr.pop();
       }
   }
  if(leftArr.length!== 0){
      return false;
   }
   return true;
}

整个面试过程感觉挺轻松的,面试官小哥哥人也很好,正在收拾东西回宿舍的时候,hr小姐姐打电话过来了,说让我准备二面,15分钟后开始二面了。

上一篇:【逗老师带你学IT】Kiwi Syslog Server安装和配置教程


下一篇:VIM - jumps 命令