Moka前端日常实习一面+hr面(已oc)

一面-3.8 1h

上午11点开始

1.自我介绍

2.先写两个题吧,判断两个区间是否有重叠

/**
 * @param {{start: number, end: number}} first - 第一个区间
 * @param {{start: number, end: number}} second - 第二个区间
 * start end 是number 且需要考虑 小数情况
 * @return {boolean} 是否有交集
 */

function isOverlapped(first, second) {
  // TODO
  first.start > second.start ? ([first, second] = [second, first]) : '';
  if (second.start > first.end) return false;
  return true;
}

// test case
const a = { start: 3, end: 5 };
const b = { start: 9, end: 10 };
const c = { start: 4, end: 6 };
const d = { start: 5, end: 8 };

const r1 = isOverlapped(a, b);
const r2 = isOverlapped(c, d);
console.log(r1, r2); // false true

3.那再写一个区间合并 // 写完之后面试官问之前是不是写过,我当然说没写过,我说看到这题的时候想到了最小生成树算法第一步的排序

/**
 * @param {Range[]} intervals - 若干个区间
 * @return {Range[]} 合并后的区间
 */

function isOverlapped(first, second) {
  // TODO
  first.start > second.start ? ([first, second] = [second, first]) : '';
  if (second.start > first.end) return false;
  return true;
}

function merge(interval) {
  // TODO
  interval = interval.sort((a, b) => {
    if (a.start === b.start) {
      return a.end - b.end;
    }
    return a.start - b.start;
  });

  const res = [];

  let now = interval[0];
  for (let i = 1; i < interval.length; i++) {
    if (isOverlapped(now, interval[i])) {
      now.end = interval[i].end;
    } else {
      res.push(now);
      now = interval[i];
    }
  }
  res.push(now);
  return res;
}

// test case
const e = [
  { start: 3, end: 5 },
  { start: 9, end: 10 },
  { start: 4, end: 6 },
  { start: 5, end: 8 },
  { start: 10, end: 12 },
  { start: 11, end: 14 },
];

const f = [
  { start: 4, end: 7 },
  { start: 6, end: 9 },
  { start: 1, end: 3 },
  { start: 8, end: 10 },
];
const g = [
  { start: 4, end: 7 },
  { start: 9, end: 10 },
  { start: 7, end: 9 },
];

console.log(merge(e)); // [{start: 3, end: 8}, {start: 9, end: 14}]
console.log(merge(f)); // [{start: 1, end: 3}, {start: 4, end: 10}]
console.log(merge(g)); // [{start: 4, end: 10}]

4.说一下JS的事件循环吧

5.普通函数和箭头函数有什么区别

6.那怎么判断函数的this指向呢

7.你刚才那两题A的太快了,再写个防抖节流吧

8.说一下发布订阅模式和观察者模式的区别

9.Vue响应式实现原理

10.Vue里面的key有什么作用

12.Vue3它为什么快呢

13.vue-router有哪些模式

14.event-bus是什么

15.回流和重绘说一下

16.http2

17.http缓存

18..Vue里面scoped有什么作用

19scoped的实现原理

20.webpack里面,loader是做什么的

21.webpack怎么开启多线程打包 // 忘记了

22.ts里面泛型是怎么用的

23.组件库有UI设计吗

24.nodejs有用过吗

25.vite为什么比webpack快呢

26.反问

  • 面试过程中有什么需要改进的地方。 // 已经很好了,没有什么问题
  • 公司的技术栈、组内环境 // React,维护组件库
  • 实习工作内容
#我的实习求职记录#
2023年实习面试记录 文章被收录于专栏

记录一下2023年上半年找实习工作的面试情况。

全部评论
请问这是后端面试?
1 回复 分享
发布于 2023-03-09 11:45 湖北
请问大佬去了吗
点赞 回复 分享
发布于 2023-04-27 22:22 四川
太强了,感觉比面我问的难多了
点赞 回复 分享
发布于 2023-03-08 14:48 天津

相关推荐

评论
12
19
分享

创作者周榜

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