- 你觉得你做的项目里面,哪个成长比较大?
- 除了你提到的使用新技术以外,你有没有遇到过那些需要请教他人才能解决的问题?
问下基础问题:
- 一个输入框和一个图片,怎么实现水平对齐?(display: flex; | display: inline-block; vertical-align: middle; | line-height: parentHeight;)
- js怎么去实现继承?(我先说了寄生组合继承,然后他问我组合继承解决了原型链继承的哪些问题?)
- 你能说一下for of 和for in的区别吗?
- for of 你提到Symbol.iterator,那么你能不能说一下你对iterator的理解?(迭代器模式在js里面的实现)
- iterator和generator的关系是什么?你说iterator能自动执行,那么是怎么实现自动执行的?(这里我应该讲错了,async和await才是自动的generator)
- typescript的联合类型和交叉类型是什么?
- typescript的Interface和type有什么区别?
- 讲一下你知道的网络安全问题吧,例如你介绍一下XSS和CSRF?分别怎么防御?
- 你讲到token,那么前端一般情况下怎么发送token呢?(带在Authorization头部这边)
- token存到哪里?前端各种存储方式你知道吗?会话生存期的存储有哪些(sessionStorage和cookie)?
- cookie都有哪些字段?cookie怎么删除?sameSite的具体值和用途是什么?
- 你知道网页资源加载的优先级嘛?
- js和css会不会阻塞dom的渲染?(两个都会)
- 如果要避免js阻塞dom渲染,有什么做法?
- 问下网络相关的内容,你能不能说一下https怎么实现握手的?
- 在这过程中,我们是可以通过软件抓包的嘛,为什么加密过,但是我还是可以抓到明文包呢?(证书链信任问题)
- 所以抓包的时候,这个抓包软件实际上是相当于服务器,我们是客户端对吧?(不太确定,没讲,但是应该是作为服务器才对)。
- 对于长任务的js,你提到说使用分片的方式去加载,那你是基于什么判断这个内容是可以进行分片的?(感觉是根据功能判断是否可以并行执行,如果可以,那么直接拆分为多个setTimeout,最终输出结果。如果不行,但是整体可以异步,那么整个丢到worker中执行。另外的话可以考虑使用generator函数)
- 我接下来说一个问题,md5是对称加密算法嘛?你首先判断一下这个问题是正确还是错误的,才回答。(我说不是对称加密算法,准确来讲是摘要算法)。
- 写题:
(1)实现Vue的花括号替换功能,题目不写了,看一下Vue的花括号语法也就知道什么意思了。
(2)实现数组转树。
// 第(2)提题目
const arr = [
{
pid: 0,
id: 1,
name: 'xxx'
},
{
pid: 1,
id: 2,
name: 'xxx'
},
{
pid: 1,
id: 3,
name: 'xxx'
},
{
pid: 3,
id: 4,
name: 'xxx'
},
{
pid: 4,
id: 5,
name: 'xxx'
}
];
// 转成:
[
{
id: 1,
name: 'xxx',
children: [
{
id :2,
name: 'xxx',
children: []
},
{
id: 3,
name: 'xxx',
children: [
{
id: 4,
name: 'xxx',
children: [
{
id: 5,
name: 'xxx',
children: []
}
]
}
]
}
]
}
]