SmartX 前端面经

const fn = (...args) => {
  for (const arg of args) {
    console.log(arg);
  }
};
const [a, b] = [1, 2];
fn`${a} + ${b} = ${a + b}`; 
setTimeout(() => {
  console.log(1)
}, 0);

const promise = new Promise((resolve, reject) => {
  console.log(2)
  reject(3)
  console.log(4)
})

promise
.then(() => console.log(5))
.catch(() => console.log(6))
.then(() => console.log(7))
.catch(() => console.log(8))
.then(() => console.log(9))  console.log(10) 

例如你有构造了一个对象 user // { age: 10 },
那么 user.age // 11 user.age // 12 ... 如何构造一个这样的对象,让它的属性值每次被访问时就 + 1  

let executeCount = 0;
const targetFn = async nums => {
  executeCount++;
  return nums.map(num => 2 * num + 1);
};

const batcher = (fn) => {
  // todo batch logic
}

const batchedFn = batcher(targetFn);

const main = async () => {
  const [result1, result2, result3] = await Promise.all([
    batchedFn([1, 2, 3]),
    batchedFn([4, 5]),
    batchedFn([6, 7]),
  ]);

  console.log(result1, result2, result3)
  console.log(executeCount)  // 预期为 1
} 

main() 

batch 一个函数,让它在并发调用时只被执行一次

快排非递归实现




#面经##SmartX##前端工程师##校招#
全部评论
1. 第一题考了ES6 的标签模板,没用过不怎么会 2. 第二题问输出,注意 Promise.then() 返回的状态 3. 第三题 通过 重写get 4. 第四题 通过补充batcher函数完成两个需求:打印出 result1,result2,result3和打印executeCount;只做出来需求一,需求二问了前师兄,主要是考作用域 5. 第五道题 用非递归的方式实现快排
2 回复 分享
发布于 2021-02-09 12:06
然后我问了前师兄,他是通过作用域这么写的,我不知道面试官是不是想考察这个知识点,面试官跟我说什么拦截它,只去执行一次,然后给我举了打车的例子:我和室友去一个地方,然后有一个司机来接我们,先接我,然后把我送到了目的地之后再来接我室友。现在希望一下子把我们两个都一块接走
点赞 回复 分享
发布于 2021-02-13 20:26
第四题,我当时只写到这一步,但这样 executeCount 必然是3,
点赞 回复 分享
发布于 2021-02-13 20:24
楼主第四题的做法可以分享一下吗。
点赞 回复 分享
发布于 2021-02-13 12:02
楼主你好,请问你是实习、校招还是社招?
点赞 回复 分享
发布于 2021-02-09 12:05

相关推荐

1. 自我介绍2. 项目经历3. 为什么选择前端?为什么对前端感兴趣?4. 两个项目都是Vue,为什么都是用的Vue没有用React5. 我说我开始学习vue的时候是不知道vue和react的区别的,追问那你现在知道了吗。T_T还是不知道6. 讲一下JS的事件循环7. 有了解过 requestAnimationFrame() 这个方法吗  或者 requestIdleCallback() 8. 说一下防抖和节流之间的差异9. 除了在服务器请求用到防抖和节流,还有哪些地方会用到 输入框防抖 滚动条节流10. 是不是可以在输入框失焦的时候去进行搜索?感觉不像是问题11. 怎么实现虚拟滚动的12. 虚拟滚动分成两种类型 一种是虚拟列表有固定高度,另一种是不定高度,渲染之后才能拿到高度的话,如何实现虚拟滚动? 13. 虚拟滚动时 假设滑得很快的话这部分怎么处理14. 为什么要使用animate.css这个动画库?动画实现的方式有几种?你为什么选择这个?15. Emit加状态共享实现数据共享同步和websocket实现数据同步,这个具体是怎么实现的websocket具体实现真的没怎么看......瞎编了一个http2.0被揪着问http2.0是双向通信吗,感觉不是。。16. Websocket可以实现双向通信,如何异常情况进行做处理?比如网络波动的使用断连了,或者是如何去监听说你服务端还仍在等待的一些状态?17. 怎么保证websocket的在线连接(应该是想问我这个)18. 就例如说可能在发送服务端的时候网络波动,导致我这个请求没发出去,然后你的 ACK 可能没返回,但是我可能连接了,然后这个请求就是丢失了吗?还有没有另外一种方式说可以让这个网络抖动的一个情况,然后这个请求还能再发送到服务端?19. 持久化使用的localStorage,那么了解过indexedDB吗20. 讲一下SessionStorage和LocalStorage的差异,为什么要使用LocalStorage?21. 其他框架没有了解过吗22. 假设说你让你学习一个技术框架的话,你要怎么去学习呢?就可能就你可能进来一个公司,然后发现这些可能跟你过往的一些经验可能不是很匹配。就可能你之前都没有接触过,然后让你怎么就让你去接触一些新的一些东西?你要怎么去学23. 有用过一些AI工具吗24. 因为前面我讲到红宝书。然后你有了解过,红宝书就里面有写一些什么设计模式,就你在项目里面是会用到这些设计模式的,你可以简单举一两个例子。是设计模式代码的一个组织方式,就是一些测试模式,类似于工厂模式或者是一些结构,就工厂模式,然后有什么单例或者是什么观察者、订阅者,乱七八糟,就这些几个模式有用到吗?  md没看到这呢,这玩意。反问:* 如何回答Vue的响应式原理* 应该在面试里面有哪些改进的方向呢最早的几场面试之一,答得超级烂,慢慢总结经验
查看25道真题和解析
点赞 评论 收藏
分享
06-01 18:36
已编辑
南昌大学 前端工程师
## 时长 70 分钟 北京合思招聘系统### 1.自我介绍环节### 2.做题环节(20 分钟左右)有 22 道选择(html,css,js,数据结构),一道算法题:字符串去重,我和面试官简单说了一下思路(new Set),然后他让我随便写一点交卷了### 3.项目,场景和八股环节(这个环节持续太长了,有些我实在是忘了)1.你是如何做到首屏优化的2.讲讲 CI/CD 是如何实现的3.项目中有使用过 webpack 和 vite 吗4.webpack 和 vite 有什么区别5.有没有使用过什么状态管理工具6.项目使用了什么缓存机制这里我展开讲讲。关于缓存数据,蜀黍使用了缓存头(Cache-Control)和 localStorge。项目中使用了 Promise.all 来进行并发请求,同时从服务器和本地缓存请求数据7.怎么获取的缓存数据localStorge,状态码 3048.缓存的过期时间9.NextJS 中如何设置代码在客户端运行10.NextJS 如何设置服务端运行(好像是这个问法)11.useEffect 中如何进行数据请求(丝滑切换至场景题)12.如果不同 useEffect 中相互依赖过多怎么办(反问面试官,竟然是退化至使用类式组件)13.如果我想让我的 useRef 使用外部的 props 应该怎么办(forwardRef)14.当我的父组件将一个可能会经常变化的 props 传递给子组件时,应该怎么办(useMemo)15.我想全局管理 props,并且防止出现 props drill 的问题,应该怎么办(useContext)16.我想使用 useRef 来实现一个可以返回窗口顶部的功能,应该怎么实现,使用哪些 API17.我想将一个二维数组转换为一维数组怎么办18.如果我的二维数组中不完全都是数组怎么办(instanceof、Array.isArray)19.实现 add(1)(2) === 3 (函数柯里化)20.如何实现 string 和 number 之间的相互转换21.如何改变 this 的指向22.你有没有用过什么 ES6 的新特性23.Promise 打印顺序```javascriptconst promise = new Promise((resolve, reject) => {  console.log(1)  resolve()  console.log(2)})promise.then(() => {  console.log(3)})console.log(4)```24.有没有使用过 typeof25.flex 布局中如何实现水平垂直居中26.如何消除 float 带来的影响27.给定一个完整的 URL,如何获取其查询参数28.React 19 和 React 18 有什么区别29.项目中是否有采用什么对静态资源的优化可能还有,但是暂时想不起来了## 时长 15 分钟 洋葱学园1.对于一个列表,我们通常会给其添加一个 key,可以不添加吗,如果不添加是否有什么问题?2.对于一个 H5 页面加载过慢,如何优化3.将 URL 输入搜索栏,浏览器会做什么4.如何实现进入视窗才进行懒加载5.如何在一个 JS 文件中白屏时返回 Loading 组件(我直接说了 React 和 NextJS 中如何实现哈哈)6.移动端适配7.如何处理重复的请求(本人说了 axios cancelToken、防抖和节流解决这个问题)我确实记得应该还有,但是想不起来(
点赞 评论 收藏
分享
评论
3
28
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务