字节跳动抖音/火山------一二三面+hr面、已offer

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

Q:知道线程和进程吗
答:布拉布拉

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

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

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

Q:知道tcp和udp的区别吗
答:布拉布拉

Q:知道tcp的主要用途吗
说了一下tcp3次握手,其他就布拉布拉

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

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

答:可以弹出Hello

.Q: for in 和for of的区别
答:因为忘了一些,就说了一下map和forEach
Q:那forEach可以打断吗
答:不可以,布拉,好像说的有些问题

.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分钟后开始二面了。


收拾了一下东西,准备开始二面了,看到面试官,感觉有点严肃,开始紧张了。

Q:自学前端多久了
Q:过去有哪些学习的方法
Q:书籍都看过那些

Q:学习前端的过程中遇到过什么难点
答:这个问题说了之后,被深追了问了好多。怎么解决的,具体栗子什么的。
Q:遇到问题通过书籍什么的没有解决吗
答:布拉布拉

Q:具体介绍一下项目的亮点和难点
答:说了好多,各种问题都问了,以及难点自己是如何解决的,具体解决方法等等。

Q:Date的一些API
答:说了一两个,不太熟悉。 Date.now() //获取当前时间毫秒数 。dt.getTime() //获取毫秒数。 dt.getFullYear() //年
Q:那说一下这个构造函数的原型链,及它的好处
答:我说了函数的原型链,没有说时间的

Q:项目中正则用过那些特性
答:说了分组和量词

Q:对修饰符和断言有了解吗
答:修饰符布拉,不知道断言

Q:对/g有什么了解,带不带它有什么区别
答:布拉布拉,说了一下

Q:用了修饰符在for循环中有哪些影响
答:emmm,不太会

Q:知道正则中的last-index属性吗
答:用于规定下次匹配的起始位置。

Q:状态管理除了redux使用过其他的吗,以及优缺点
答:没有用过其他的,就没有问了

Q:redux使用过程中有哪些困难
答:布拉布拉

Q:了解过单向数据流撤消的功能吗,就是状态回滚
答:emmm,不太了解。下来自己查了一下,感觉触及知识盲区

Q:觉得redux写起来有没有难用的点
答:就说了一下关于数据的处理的问题,用到了ImmutableJS,就造成性能浪费

Q:ImmutableJS的好处以及他的用处
感觉给自己挖了一个坑。就大概说了一下,返回新的对象

Q:主要使用它哪些属性和方法
答:使用了Map,其他的使用不多。

Q:关于pureComponent的了解
答:布拉布拉

Q:关于shouldComponentUpdate()有使用过吗
答:因为没有用过就没有说

Q:styled-component对比其他的库有什么有点
答:布拉布拉

Q:如何从组件中抽取全局的样式
答:就说了injectGlobal废除了,现在是creactGlobalStyle

Q:说一下http的幂等性
答:这个不知道,所以没有说

Q:说一下https密钥交互过程
答:布拉布拉

Q:http的协商缓存说一下吧
答:布拉布拉
Q:返回304的时候,还会更新哪些内容
答:这个当时说错了,emmm

Q:webpack中hash的配置,三种hash的差异及应用场景
答:没有配置过hash,说了hash,chunkhash,contenthash

Q:es6中let和const解决了es5里面的那些缺陷
答:布拉布拉

Q:变量提升做了那些事情
答:布拉布拉

Q:说一下事件循环吧
答:布拉布拉,说了好多
Q:同步任务放在哪里(执行队列还是事件队列)
答:布拉布拉
Q:那看个题

console.log('1');
setTimeOut(()=>{
	console.log('2');
});
console.log('3');

答:1.2.3,,后来发现错了是1,3,2.

Q:看一下这个题

实现一个函数sum,运算结果可以满足如下预期结果:
sum(1,2,3).valueOf();       //6
sum(2,3)(2).valueOf();      //7
sum(1)(2)(3)(4).valueOf();  //10
sum(2)(4,1)(2).valueOf();   //9

答:这个就函数柯里化的问题,然后开始手写

function sum(){
   var _args = Array.from(arguments);
   var _add = function(){
       _args.push(...arguments);
       return _add;
   };
   _add.valueOf = function(){
       return _args.reduce((a,b)=>a+b);
   }
   return _add
}
console.log(sum(1,2,3).valueOf());

Q:最后看一道题吧
我(心理):太好了

   1
 2     3
7   6 5   4
输出 1234567

答:开始写

function Print(pRoot){
   const lists =[];
   if(pRoot === null){
       return lists;
   }
   const stack1 = [];
   const stack2 = [];
   stack2.push(pRoot);
  let i = 1;
  while(stack1.length !== 0 || stack2.length !== 0){
     const list = [];
     if((i&1) ===1){
        while(stack2.length !== 0){
               const tmp = stack2[stack2.length -1];
               stack2.pop();
               list.push(tmp.val);
               if(tmp.left !== null){
                   stack1.push(tmp.left);
               }
               if(tmp.right !== null){
                   stack1.push(tmp.right);
               }
           }
       }
       else{
           while(stack1.length !== 0){
               const tmp = stack1[stack1.length -1];
               stack1.pop();
               list.push(tmp.val);
               if(tmp.right !== null){
                   stack2.push(tmp.right);
               }
               if(tmp.left !== null){
                   stack2.push(tmp.left);
               }
           }
       }
       ++i;
       lists.push(list);
   }
   return lists;
}

面试了一个半小时,终于结束了,感觉好累,自我感觉有点悬,收拾东西回宿舍,祈祷过了。在回去的路上接到hr小姐姐的面试,告诉我准备3面,开心,准备下周面试。加油。


3.9,周二,三面开始了
13:30就开始坐在电脑面前等面试官,紧张ing

Q:说一下什么时候开始学习前端的吧
答:布拉布拉

Q:说一下学习前端的心得
答:布拉布拉

Q:博客大概多久更新一次

Q:最近总结过什么吗

Q:看书和看网站有什么差异吗

Q:最近从书上学到过哪些知识点

Q:聊一下项目

Q:为什么写这个项目,项目写之前的拆解

Q:代码的设计,以及设计流程

Q:使用了哪些技术,为什么用这个技术

Q:介绍一下style-component使用和其他对比的优点

Q:使用的是react,那有对比过vue吗

Q:你觉得用react写和纯js写有什么区别

Q:redux是解决什么问题的

Q:如果不使用redux呢

Q:介绍一下redux整个数据的流向

Q:订阅组件和redux更新的实现

Q:那redux是怎么进行更新组件中的数据,是更新state,还是props
答:state,布拉布拉

Q:那这个更新的是redux中的数据,那怎么映射到组件中
答:connect([mapStateToProps],[mapDispatchToProps],[mergeProps],[options]) :连接React组件与 Redux store

Q:hooks这块大概用来做什么

Q:如果不使用hook呢,有什么不好

Q:项目中技术的难点是什么
答:说了一下字符串解析的问题。提到了正则

Q:那正则还了解过其他吗,举个栗子

Q:项目用了多久

Q:那之后会对项目进行优化吗

Q:项目有没有部署到对外的服务吗,了解过部署吗

面完之后,面试官就说去找hr了,让我等会继续面,10分钟左右hr小姐姐就接着面了


Q:自我介绍一下
Q:有读研的准备吗
Q:到岗时间和实习时长
Q:有转正的需求吗
Q:自己的规划
Q:为什么会选择前端方向
Q:前端自学的渠道有哪些
Q:评价一下项目的亮点以及角色收获
Q:有没有难点,如何解决的
Q:了解字节的工作节奏吗
Q:如果工作不轻松的话有没有顾虑
Q:如果遇到比自己强的同学会怎么样
Q:还投过其他的公司吗
Q:offer选择看重哪些维度呢
Q:那你觉得氛围怎么样是比较好的
Q:在一个组织当中你会主动承担领导者的角色吗
Q:和同学之间的关系怎么样
Q:你觉得自己的短板是什么

结果hr小姐姐说过两天给,嘿嘿,整体感觉面下来就是开心,整个过程还是很轻松的,也比较幸运吧。接下来就是许愿offer。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值