前端-钉钉一面
1.写个防抖函数, 有什么问题
function debounde(handler, delay) {
var time;
return function() {
var _self = this;
var _args = arguments;
time && clearTimeout(time);
time = setTimeout(() => {
handler.call(_self, _args);
}, delay)
}
} 2.封装个组件, Vue / React / 原生JS 3.怎么学前端的,vue双向绑定
4.表单中的input,id和name的区别
5.跨域,解决方案
6.css引入方式,选择器优先级
7.原型链
8.JS的模块化方案,CommonJS, ES6 Modle区别
9.http请求方法,post和put区别
10.异步请求方案
11.垂直居中
12.算法:区间合并
输入: [[1,6],[2,7],[23,34],[8,15]]
输出: [[1,7],[8,15],[23,34]]
var merge = function(arr) {
if (arr.length <= 1) {
return arr;
}
var arr1 = arr.sort((a, b) => {return a[0] - b[0]});
var res = [];
let j = 1;
let cur = arr1[0];
while (j < arr1.length) {
let next = arr1[j];
if (cur[0] <= next[0] && cur[1] >= next[0]) {
if (next[1] >= cur[1]) {
cur = [cur[0], next[1]];
} // 前后能合并
j++; // 前者包含后者,跳过
} else if (cur[1] < next[0]) {
res.push(cur);
cur = arr[j];
j += 1;
if (j == arr1.length) {
res.push(cur);
break;
}
}
}
return res;
}
/**
* input = [[1,3], [2,6], [15,18], [8,10]]
* output = [[1,6],[8,10],[15,18]]
*/
var input = [[1,3], [2,6], [15,18], [8,10]];
var output = merge(input);
console.log(output)
查看22道真题和解析
