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年上半年找实习工作的面试情况。
查看18道真题和解析
