# 蓝湖
- 给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[ s1 , e1 ] ,[ s2 , e2 ],…] (si < ei) ,为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。 例如: 输入: [[0, 30],[5, 10],[15, 20]] 输出: 2 面试现场讨论了算法原理,未有时间编码调试:
function fn(arr) {
const sortArr = arr.sort((a,b) => a[0] - b[0]);
console.log(sortArr);
let number = 1;
let end = sortArr[0][1];
for (let i = 1; i < sortArr.length; i++) {
if (sortArr[i][0] < end) {
end !== sortArr[i][0] ? number++ : '';
}
end = sortArr[i][1];
}
return number;
}
console.log(fn([[0, 30],[5, 10],[15, 20], [10,35], [20, 30]]));
- 技术点---项目一些细的技术点
- 如果自己实现一个百度地图应该怎么做?
- react单向数据流
二面
jsBridge原理(callback) node 进程管理fork、exec()区别 算法
- 数组转对象
var arr = [
{node: 'a', children: ['b', 'c']},
{node: 'b', children: ['d', 'e']},
{node: 'c', children: ['e', 'f']}
]
=>
{
a: {
b: {
d:{}
e: {}
},
c: {
e:{}
f:{}
}
}
}
function dfs(data, result, node) {
for (const item of data) {
if (item.node === node) {
for (const m of item.children) {
result[m] = {}
dfs(data, result[m], m)
}
}
}
}
function arrayToTree(data) {
let result = {a: {}}; // 找到第一个节点,方法不写了
dfs(data, result.a, 'a');
return result;
}
console.log(arrayToTree(arr))
// dier
var arr = [
{node: 'a', children: ['b', 'c']},
{node: 'b', children: ['d', 'e']},
{node: 'c', children: ['e', 'f']}
]
function reverserFlat(arr) {
let map = {};
for (let item of arr) {
map[item.node] = {}
}
for (const item of arr) {
const node = item.node;
const children = item.children;
for (const m of children) {
if (map[m]) {
map[node][m] = map[m]
} else {
map[node][m] = {}
}
}
}
return {a: map.a};
}
console.log(reverserFlat(arr))
- promise并发最大限制,前面执行了后面才可以执行
var p = new asyncPool(max)
p.ajax({url, data});
p.ajax({url, data});
# 牛客网
jquery的链式调用实现
var myJq = function() {} myJq.prototype = { css: function() { console.log('设置样式'); return this; }, show: function() { console.log('将元素显示'); return this; }, hide: function() { console.log('将元素隐藏'); return this; } } var myjq = new myJq(); myjq.css().show().hide();canvas 分层实现 canvas叠加???
# 网易
vue双向绑定原理、$nextTick()原理demo
vue 模板字符串解析?正则
https? http通道
protype-原型链-闭包
indexOf实现(正则、subStr)
归并排序
react-usememo
webgl、three.js渲染过程
前端监控白屏?
前端模块化
二面
页面渲染过程
前端监控 app点击-白屏
后端接口监控
前端监控为什么用图片
组件按需加载问题?怎么第三方做按需加载
正则匹配ip、手机号
10个红球 10个白球 随机取出来10个球 要求红球不相连 有多少种方法???
koa/express/egg不同
fn() fn();第一个函数没有执行完后续阻塞?回调 (opens new window)、异步处理?
node-cli流程?test.baidu.com/index.html
前端安全(详细攻击、防御)scp postmessage selft.window === top.window
webpack原理
# 阿里生活
会议室问题
链表反转
canvas性能优化
htmltocanvas 图片模糊
查找一个字符串中最长的回文子串
const longReverseStr = str => {
if (str.length < 2>) return str;
const len = str.length;
let res = str[0];
const dp = Array.from(Array(len), () => Array(len).fill(0));
for (let i = 0; i < len; i++) {
dp[i][i] = true;
}
for(let i = 1; i < len; i++) {
for (let j = 0; j < i; j++) {
if (j - i == 1 && str[i] === str[j]) {
dp[i][j] = true;
} else if(str[j] === str[j] && str[i] === str[j]) {
dp[i][j] = true;
}
if (dp[i][j] && j - i + 1 > res.length) {
res = str.substring(i, j + 1);
}
}
}
return res;
}
js实现找出字符串中的最长回文串 (opens new window)
两个非空链表两数相加--链表
剪头函数有arguments吗?(没有this, arguments, super new target)
vue3 和react hook区别
react hoos和类组件
# 其他
- h5和app区别
- webpack按需加载实现、webpack多入口
- 堆栈
- webpack chunk split?
- vue 父子组件、minxin声明周期顺序 (opens new window)
# 问题
项目一些细的技术点
- ts分片404问题,巡游视角卡顿问题、地图功能封装、微前端实践
- 项目中引入ts问题
window.BMAPGL_FORCE_RATIO = 1; // 是控制2.5D清晰度的
window.TGIS_FORCE_RATIO = 1; // 这个是TGIS清晰度
- 87年 大厂带人
- 职级低 高潜 hold不住专家岗?
京东60多 将近70 京东是一个offer,其他流程在走,对去**业务也挺兴趣 有机会还想过来的