【前端23校招面经】瓜子二手车一面

  1. 自我介绍
  2. git mergegit rebase的区别
  3. 多人用git同时开发, 讲一下线上发布流程, 如何保证团队成员安全 merge 代码
  4. 讲一下CDN回源策略
  5. https协议
  6. VueReact区别
  7. cookie/localStorage/sessionStorage区别
  8. 浏览器缓存原理
  9. http 状态码
  10. 跨域方案
  11. 手写Promise.all
function myAll(iterators) {
  const promises = Array.from(iterators);
  const values = [];
  return new Promise((resolve, reject) => {
    promises.forEach(p => {
      p.then((data, err) => {
        if (err) {
          reject(err);
        }
        values.push(data);
        if (values.length === promises.length) {
          resolve(values);
        }
      });
    });
  });
}
  1. 算法题: 查找两个数组的交集元素
function intersection<T>(arr1: T[], arr2: T[]): T[] {
  const shortArr = arr1.length < arr2.length ? arr1 : arr2;
  const longArr = shortArr === arr1 ? [...arr2] : [...arr1]; // 防止后续 splice 操作直接破坏传入的 arr 参数
  const result = [];
  shortArr.forEach(item => {
    const index = longArr.findIndex(i => i === item);
    if (index !== -1) {
      result.push(item);
    }
    longArr.splice(index, 1);
  });
  return result;
}

console.log(intersection([1, 2, 2, 1], [2, 2]));
console.log(intersection([1, 2, 1], [2, 2]));

测试用例:

[1, 2, 2, 1], [2, 2] --> [2, 2]
[1, 2, 1], [2, 2] --> [2]

注意不能直接用 Set 莽干, 因为有些情况下不能去重

#面经##校招##前端##瓜子二手车##面试#
全部评论
数组求交(非去重)的解法可以做个标记优化一下,也可以省去上述的判断长短的问题
点赞 回复
分享
发布于 2022-11-09 16:28 北京
lz 约二面了嘛
点赞 回复
分享
发布于 2022-11-19 19:11 广东
小红书
校招火热招聘中
官网直投
好兄弟们,安排hr面了吗
点赞 回复
分享
发布于 2022-11-24 19:40 山西
昨晚给的意向。
点赞 回复
分享
发布于 2022-11-26 16:06 北京

相关推荐

2 13 评论
分享
牛客网
牛客企业服务