蚂蚁前端一面:
Js和ts的区别
-
TS的元组和数组有啥区别
-
TS的联合类型晓得不,给你一个联合类型怎么转换为一个tuple元组,写一个函数实现。
UnionToTuple
//实现
type UnionToTuple<Union> = {}
type tuple = UnionToTuple<'a' | 'b'>;
- Qiankun框架的样式隔离怎么做的,除了shadowdom还有什么能实现。
除了shadowdom可以通过添加选择器范围来解决样式冲突。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eeOxa0Ej-1650544434891)(C:/Users/wang_He/AppData/Local/Temp/ksohtml/wps7C1C.tmp.jpg)]
也就是子应用在子应用类下的某个盒子,相当于 div span指代div下的span,和这种方式一样
-
Js沙箱隔离有没有了解的,讲一下。
-
npm的tag策略
这就要说npm的version和tag的区分了,你可以理解为tag是version的一个标签,npm仓库版本的默认标签为latest。
比如当你在项目里直接 npm i xxx 的时候,就是安装最新的latest标签的版本,一般还有beta,next等tag,beta一般是用来测试,next则一般是用来做破坏性更新的大版本更新,npm i安装包的时候包名后面除了可以跟版本号,也可以跟标签tag,比如@next或者@beta
下面讲几个常用的命令。
发布普通版本
npm publish
发布测试包
npm publish --tag=beta
发布next包
npm publish --tag=next
- 从npm库中拉取一个包,包的版本号为pkg@1.0.1,pkg@1.1.0,在npm i的时候拉的是哪一个包。
拉取的是相对新版本的包即标签为latest的包,即pkg@1.1.0。
通过npm view pkg version来查看安装的是哪个版本的包。
通过npm view pkg versions来查看安装的这个包的所有版本号。
-
Vuex说下怎么用,目前都有哪些通信手段。
-
手写一个节流函数。
-
前端手写业务场景题:高频触发的事件,怎么只执行第一次和最后一次的事件(从防抖角度来写)
-
算法题:这个面试老问!不含有重复字符的最长子串
input: abcabcbb output: 3
input: bbbbb output: 1
iwwkee output : wke 3
// UnionToTuple
type UnionToTuple = {
}
type tuple = UnionToTuple<‘a’ | ‘b’>;
// 节流函数
function solution(callback, delay) {
let time
return function () {
if(time) {
return
}
time = setTimeout(() => {
callback()
time = null
}, delay)
}
}
//第一次执行,和最后一次执行
function solution(callback, delay) {
let time
let flag //用于判断是第一次或不是,第一次时flag为false
return function () {
if(time) {
flag = true
clearTimeout(time)
}
if (!flag) { //第一次的时候flag为undefined,之后就为true了
callback() //第一次
}
time = setTimeout(() => {
callback() //最后一次
}, delay)
}
}
package.json
”pkg“:“^1.0.0”
npm repo
pkg@1.0.1
pkg@1.1.0
// 不含有重复字符的最长子串
// input: abcabcbb output: 3
// input: bbbbb output: 1
// iwwkee output : wke 3
function solution(str: string): number {
let set = new Set()
let length = 0
let maxLength = 0
for (let i = 0; i < str.length; i++) {
if(!set.has(str[i])) { //不存在
set.add(str[i])
length ++
} else { //存在
maxLength = Math.max(maxLength, length)
length = 0
}
}
return maxLength
}