杭州-公司A
1. 自动化构建原理
2. webpack打包优化
- 路由懒加载
- 去除console
- tree shaking
- 多线程打包
- exclude 和 extranal
- 小图片 采用base64
- 分包chunk
3. 函数式编程的理解
4. 聊一聊柯里化
5. react性能优化
6. 虚拟dom 变成 dom 过程
7. 说一说 ts 的函数重载
8. 说一说 ts 的泛型
9. 说一说 ts 的泛型约束
10.说一说 ts 泛型工具
11. 说一说axios封装
12. 箭头函数和普通函数的区别?
13. 团队怎么带,大项目立项,独立负责时要考虑什么问题?
杭州-公司B
1. 算法: 查最长子串
2. 算法: 查重复元素最多的前k个
3. 算法: 实现两种排序
4. 算法: promise.all 两种实现方式
- 遍历
- 递归
上海-公司A
1. 关于小程序 和 h5 的区别?
2.写一个函数, 匹配ipv4
把当天的思路写出来了,顺便补充了ipv6,有优化的欢迎指教
var validIPAddress = function(queryIP) {
if (!queryIP) return 'Neither'
if (queryIP.indexOf('.') === 0 || queryIP.lastIndexOf('.') === 0) return 'Neither'
if (queryIP.indexOf(':') === 0 || queryIP.lastIndexOf(':') === 0) return 'Neither'
if (queryIP.indexOf('.') !== -1) {
var res = queryIP.split('.')
if (res.length !==4 ) return 'Neither'
var flag = 0
for (let i = 0; i< res.length; i++) {
var item = res[i]
switch(item.length) {
case 1:
reg = /^\d$/
if(!reg.test(item)) {
return 'Neither';
} else {
flag++
}; break;
case 2:
reg = /^[1-9]\d{1}$/
if(!reg.test(item)) {
return 'Neither';
} else {
flag++
}; break;
case 3:
reg = /^(1\d{2}|2[0-4]\d{1}|25[0-5])$/
if(!reg.test(item)) {
return 'Neither';
} else {
flag++
}; break;
default: return 'Neither'; break;
}
}
if (flag === 4) return 'IPv4'
} else if (queryIP.indexOf(':') !== -1) {
var res = queryIP.split(':')
if (res.length !==8 ) return 'Neither'
for (let i = 0; i< res.length; i++) {
var item = res[i]
if (item.length < 1 || item.length > 4) return 'Neither'
for (let j = 0 ; j < item.length; j++) {
var reg = /[A-F]/
var chat = item[j]
if(reg.test(item[j])) {
chat = item[j].toLowerCase()
}
reg0 = /[0-9]|[a-f]/
if (!reg0.test(chat)) {
return 'Neither'
}
}
}
return 'IPv6'
} else {
return 'Neither'
}
};