前端-钉钉一面
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)