字节商业化技术提前批前端一二三面,已oc
一面8.4,二面8.5,三面8.12,oc 8.18
人生第一次面试,其实挺紧张的,问的感觉都知道,但是我太菜了说着说着就不知道还有啥可以说了,然后就和面试官面面相觑(感谢面试小哥不杀之恩)
面了40min左右,题目如下,顺序不固定(有些忘记了,想到什么写什么)
1、css盒模型,对应css属性和值是啥
2、常见状态码及其含义
3、get/post的区别
4、xss攻击原理及其防御方式
5、vue中key的作用
6、回流重绘含义,如何优化
7、代码题:请为所有数组对象添加findDuplicate(n)方法,用于返回该数组中出现频率大于等于n的元素列表
8、问输出
var F = function () { } Object.prototype.a = function () { console.log('a') } Function.prototype.b = function () { console.log('b') } var f = new F(); f.a();//a f.b();//会报错,因为没有没有f.b F.a();//a F.b();//b9、问输出
var A = { n: 1 }; var B = function () { this.n = 2 }; var C = function () { var n = 3 }; B.prototype = A; C.prototype = A; var b = new B(); var c = new C(); A.n++ console.log(b.n);//2 console.log(c.n);//210、箭头函数和普通函数的区别
11、Map和Set的区别(就说了一点存储数据的区别,别的还真不知道)
接着又问Map和Weakmap的区别,null能不能作为Weakmap的键(我还是不知道,一会去试试看)
12、常用的git命令及其含义
12、常用的git命令及其含义
13、应该还有啥的,但是我不太记得了,就酱吧qwq
补:1、还问了如何不使用额外变量交换变量a,b的值
2、vue中组建通信的几种方式
-----------------------------我是分隔符----------------------------------
二面约的8.5,人生第二次面试,充分体验到了自己的菜,觉得面试小哥都已经看不下去了qwq
1、自我介绍
2、做过哪些项目,说一说
3、咦?你不是来应聘实习?那给你出几个题目吧
给定一棵树,请你输出所有从根节点到叶子节点的路径组成的数字之和 let tree = { val: 1, left: { val: 2, left: { val: 4, left: null, right: null }, right: { val: 5, left: null, right: null } }, right: { val: 3, left: null, right: null } } // 例如以上的树,总共有从根节点到叶子节点的路径3条,分别为:1->2->4,1->2->5,1->3 // 则计算方法为:124+125+13=262原谅我一开始看错题目了,组成的数字之和是124而不是1+2+4=7,然后又跑回去改,磨磨蹭蹭下写完了
4、问输出
async function async1(){ console.log('async1 start'); await async2(); console.log('async1 end') } async function async2(){ console.log('async2') } console.log('script start'); setTimeout(function(){ console.log('setTimeout') },0); async1(); new Promise(function(resolve){ console.log('promise1'); resolve(); }).then(function(){ console.log('promise2') }); console.log('script end')5、写代码
实现一个EventBus(发布订阅模式),具有on, emit, off 方法 ``` const emitter = new EventBus(); function onFoo(e) { console.log('foo', e); } function onBar(e) { console.log('bar', e); } emitter.on('type', onFoo); emitter.on('type', onBar); emitter.emit('type', {a: 'b'}); // foo {a: "b"} bar {a: "b"} emitter.off('type', onBar); emitter.emit('type', {a: 'b'}); // foo {a: "b"}6、嗯,既然你写完了那我们来问问基础?
7、BFC知道吧,讲讲
8、vue源码看过没(没看过,但看过一些对源码的分析)
9、vue3源码看过没,它相比于vue2有哪些优势?(讲了点composition api的好处,响应式的区别,但其实我真没特别了解过)
10、vue3的性能优化了解吗(不了解)
11、node用过没(没用过),express,koa框架知道不(不知道)
12、serverless xxxx(没听清)听说过没(没听说)
13、微前端有了解吗(不了解)
14、有写过公共组件库吗?(没写过)
15、ES6的模块化,AMD,CMD知道吗(不知道)
反问:说实话最后几题下来我已经没脸反问了,问啥啥不会,知道自己大概率是凉了,但还是反问了一下对以后学习的建议,就建议多了解了解业内的新技术,拓宽视野,不要只局限在基础
qwq秋招加油吧,这段时间要好好学习新技术相关的,还要多了解了解node
------------------------我是又一个分隔符--------------------------------
hr打电话来约三面了,没想到我能过二面,好好准备吧,下周五下午四点,冲冲冲
-------------------------------分隔符++--------------------------------------------------------
三面提前了一天,毫无思想准备就突然被拉上去面试了😂
1、自我介绍
2、项目+项目追问
3、浏览器输入url之后发生的全过程,这是主问题,后面的问题全是追问
DNS解析开始,这部分我仓促之下一开始答错了,本地域名服务器应该先去找根服务器,一激动说成了顶级域名服务器,后面才反应过来
追问3.1:顶级域名服务器是一个集群吗?(emm,之前有了解域名服务器分为主域名服务器,和辅域名服务器,不知道是不是想问这个,但是看反应好像是答歪了qwq)
追问3.2:HTTPS握手的过程
追问3.3:TCP握手过程
追问3.4:https加密方式
追问3.5:我提到了非对称加密要比对称加密的时间代价更高,问为什么更高,有了解过非对称加密的原理吗?
追问3.6:客户端断开连接的时机?(这块我不太明白,我以为是问tcp四次挥手,然后我就说客户端数据发完了就可以断开连接了,小哥笑了笑,于是就有了下一个问题,其实还是不太明白 ̄□ ̄||)
追问3.7:http1.1中connection:keep-alive有什么作用(为了使http请求能够复用已经建立的TCP连接)
追问3.8:http2多路复用解决了什么问题(引入帧的概念,解决队头阻塞)
追问3.9:http3了解过吗,也叫QUIC协议
追问3.10:https数字证书的作用说一下(解决中间人攻击,然后说了说数字证书的操作方式)
追问3.11:那如果中间人攻击不是更换客户的公钥,而是劫持了数字证书,发了个假证书过去怎么办呢(啊这。。。。我试图说明这样好像是不合理的,但是小哥举了个例子说这也是可能发生的,emm)
追问3.12:知道CSRF攻击吗,有哪些防御方式,我说了Referer,小哥说这个字段也是可以被更改的,于是又说了samesite的几种模式,以及双重认证(token或者干脆把cookie放到url里带上),有问CSRF具体是怎么操作的,我举了个例子说明了一下,但是不知道举得恰不恰当。。。
大概是这么多追问,一直想不起来更多的了
4、为什么想来字节?
5、为什么想学前端?
6、之后的学习规划?
反问:部门业务+技术栈+面评,之前项目追问问到后端的一些东西,不知道该怎么回答,说也要对服务端的知识做了解
面试的时候全程脑袋有点懵,希望能过吧,其实应该再问一下为什么三面不考算法的,不考算法我总觉得很慌😂,希望能有个好结果~
#字节跳动内推提前批##面经##校招##字节跳动##前端工程师#