一面
路由的两种模式(history&&hash)
从输入url到浏览器渲染的全过程,接着问回流和重绘
宏任务微任务的执行顺序,然后给了一个题目,看代码说结果,分析原理。
async function async1() { console.log('async1 start'); await async2(); console.log('asnyc1 end'); } async function async2() { console.log('async2'); } console.log('script start'); setTimeout(() => { console.log('setTimeOut'); }, 0); async1(); new Promise(function (reslove) { console.log('promise1'); reslove(); }).then(function () { console.log('promise2'); }) console.log('script end');
三次握手的过程,为什么要三次,不能两次?四次?
https和http区别?ca证书里面有什么?
接上一问,引发性问了我一个题目:要是https在传公钥的时候被劫持了怎么办?
这样还会比http安全么?
其实这,我当时没想到,还是后面百度了才知道,简要的来说是 其实是CA证书机构会对其进行一个签名的操作,而我们拿到之后本地浏览器会进行验证签名。判断是不是真实的CA公钥,而不是被人劫持之后改过的。
代码题:一个爬楼梯(一个经典的简单题目)。还问了如何优化
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 核心实现 public int JumpFloor(int target) { if(target <= 2){ return target; }else{ return JumpFloor(target-1) + JumpFloor(target-2); } } 优化:我是加了一个记忆化数组。
场景题:假设有10个接口,封装一个工具,实现10个接口并发请求,但保证最后的结果按顺序输出。
第一时间就想到promise.all 写了一个promise.all的实现。
反问:
- 部门:西瓜视频
- base:厦门
- 对我的评价的什么巴拉巴拉的。
小结:这是我秋招面的第一家,还是字节好啊,给机会面试。不像有些中小厂,提前批根本不给面试机会。这一面其实时间比较短,大概我50分钟,问的问题也不多,但是字节喜欢问的比较深,会问了相关的问题,考察我们的知识广度,看是不是背的八股文。这次的算法题倒是比较简单,都知道字节考算法考的难,我上半年面试暑假实习,可是没少让我难受。
二面
自我介绍
判断数组的方法?说一下instanceof的原理? 所有类型都能准确判断出来么?
看代码写结果
var length = 10; function fn() { return this.length+1; } var obj = { length: 5, test1: function() { return fn(); } }; obj.test2=fn; console.log(obj.test1()) console.log(fn()===obj.test2())
es6新特性:箭头函数 、let const、promise
手撕函数柯里化。
手撕promise实现。
手写寄生组合式继承(一次手撕三个,不愧是字节)
作用域和作用域链
谈谈你对原型链的理解
说一下vue组件的有哪些通信方式?eventbus了解过么?和vuex从原理上有什么区别?
Flex布局(flex:1 flex:auto区别)
BFC?
有做过哪些性能优化么
然后就开始扯项目了。
小结:二面比较奇怪,没有问算法。可能是让我手撕了几个代码感觉比较费时间,就不问算法了吧。
全部评论
(4) 回帖