蚂蚁前端一面

蚂蚁一面:

Js和ts的区别

  1. TS的元组和数组有啥区别

  2. TS的联合类型晓得不,给你一个联合类型怎么转换为一个tuple元组,写一个函数实现。

 UnionToTuple //实现 type UnionToTuple<Union> = {}  type tuple = UnionToTuple<'a' | 'b'>;
  1. Qiankun框架的样式隔离怎么做的,除了shadowdom还有什么能实现。

除了shadowdom可以通过添加选择器范围来解决样式冲突。

img

也就是子应用在子应用类下的某个盒子,相当于 div span指代div下的span,和这种方式一样

  1. Js沙箱隔离有没有了解的,讲一下。

  2. npm的tag策略

这就要说npm的version和tag的区分了,你可以理解为tag是version的一个标签,npm仓库版本的默认标签为latest。 比如当你在项目里直接 npm i xxx 的时候,就是安装最新的latest标签的版本,一般还有beta,next等tag,beta一般是用来测试,next则一般是用来做破坏性更新的大版本更新,npm i安装包的时候包名后面除了可以跟版本号,也可以跟标签tag,比如@next或者@beta

image-20220329104854598

下面讲几个常用的命令。

发布普通版本

 npm publish 

发布测试包

 npm publish --tag=beta

发布next包

 npm publish --tag=next
  1. 从npm库中拉取一个包,包的版本号为pkg@1.0.1,pkg@1.1.0,在npm i的时候拉的是哪一个包。

拉取的是相对新版本的包即标签为latest的包,即pkg@1.1.0。

通过npm view pkg version来查看安装的是哪个版本的包。

image-20220329095018600

通过npm view pkg versions来查看安装的这个包的所有版本号。

image-20220329095103161

  1. Vuex说下怎么用,目前都有哪些通信手段。

  2. 手写一个节流函数。

  3. 前端手写业务场景题:高频触发的事件,怎么只执行第一次和最后一次的事件(从防抖角度来写)

  4. 算法题:这个面试老问!不含有重复字符的最长子串

input: abcabcbb output: 3

input: bbbbb output: 1

iwwkee output : wke 3

// UnionToTuple

type UnionToTuple<Union> = {

}

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


#阿里面试##实习##面经##前端#
全部评论
什么时候面的呀
点赞 回复 分享
发布于 2022-04-21 21:52
楼主没有选择蚂蚁吗
点赞 回复 分享
发布于 2022-09-29 22:09 广东

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
点赞 评论 收藏
分享
2 8 评论
分享
牛客网
牛客企业服务