面经总结
字节商业变现
一面
1 | new Promise(function(resolve) { |
DOM事件机制
target/currentTarget
1 | 比如现在有如下结构: |
tcp三次握手、四次挥手
1 | 三次挥手: |
new Function()过程
1 | 首先,会创建一个对象实例,该实例的__proto__属性指向Function的property属性,创建之后,将Function的this指向绑定为该对象,进行执行,若Function返回结果是引用类型,则会返回该引用类型给,否则会返回该实例。 |
编程实现
还原扁平的树结构,结构如下,id表示当前节点id,parentId表示其父节点id。
1 | const listTree = [ |
二面
为什么 JS 的基本数据类型能够拥有方法,为什么对基本数据类型添加属性或者方法不生效
1 | let str = 'test' |
1 | 对于基本类型,js会对该基本类型进行包装,其实其方法均在String.prototype上,对基本数据类型添加属性不生效是因为,在调用结束后会销毁改包装类型,要想添加方法,可以在String.prototype上添加,这样在调用普通字符串方法时,js会创建一个临时的实例,该实例在找自定义的这个方法时,就会去原型对象上去找,然后在摧毁这个临时实例。 |
看输出
1 | // Q1 |
期间聊了关于 symbol、BigInt、==、===
1 | symble可以生成一个独一无二的值,Symbol()和Symbol.for()虽然都是创建独一无二的值,但for会事先在全局表中查括号里面的值对应的独一无二,若找到,则不再创建。 |
写题,一道插花的贪心题
1 | function insideFlowers(num, tem) { |
写 bind 方法
1 | Function.prototype.myBind = function (ctx, ...args1) { |
三面
1 | let str = 'my name is {{name}}, age is {{age}}' |
4、箭头函数有哪些不适用的场景?
构造函数
this 绑定
与 this 相关都需要注意
5、HTTP 常用响应码介绍
1:表示服务器收到,需要进一步操作
2:表示响应成功
200: ok
3:表示重定向(304表示资源未改变)
301: 永久重定向
302:临时重定向
304:资源未更改(在缓存中使用)
4:表示客户端发生错误
400:客户端错误
401:身份认证错误
403:资源不允许访问
404:资源未找到
5**:表示服务器发生错误
500:服务器内部错误
6、TCP 和 UDP 区别
TCP 可靠,面向链接, 1对1, 字节流 HTTP
UDP 不可靠,尽全量交付 1对1 1对多,面向bao’w DNS
7、HTTPS过程 ?
http + ssl
对称加密
非对称加密
CA机构
8、实现一个自己 axois()
用 Promise 封装 xhr 写了一下
9、fetch 和 xhr 区别?
fetch返回 promise
xhr 有 abort
fetch 需要调用 json text方法才能获取数据,链式;
10、常用的设计模式介绍? 实现一个发布订阅;
单例
发布订阅/观察者
代理