0906 一面手写防抖节流。基本的该有的写出来了,写获取返回值的时候出了点问题,调试不出来(获取返回值需要用一个promise对象包裹起来)。CSS 的盒子模型垂直居中一个元素的方式有哪些重排和重绘实现一个三角形的方法(只答出了一种)计算机网络分层http2,解决了什么问题,与 http1 的区别。说说JS中数组常见的API 手写 indexOf 、并能满足 [1,2,3].indexOf() 算法:需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?(简单动规)0912 二面三个子元素纵向排列,总高度小于视图高度时,header 固定在顶部,footer 固定在底部,content 撑满剩余空间;三个子元素总高度大于视图高度时,header 固定在顶部,footer 随着content一起滚动。(写了个大概)<div class="box"> <div class="header">header</div> <div class="content">content</div> <div class="footer">footer</div></div><style>.box{ min-height: 100vh; display: flex; flex-direction: column; position: relative; overflow: scroll;}.header{ position: absolute; top: 0; height: 100px;}.content{ flex: 1;}.footer{ height: 100px;}</style>经典看代码说输出:(结果脑子抽了没答对)var length = 10;function fn() { console.log(this.length);}var obj = { length: 5, method: function (fn) { fn(); arguments[0](); }}obj.method(fn, 1);给出 一个时间范围 target,再给出一组时间范围 current,判断 current 覆盖的时间段是否 包含了 target时间段const target = ["1979/06", "2001/10"];// current1 为全覆盖const current1 = [ ["1985/09","1995/08"], ['1979/06', '1981/10'], ['1981/06', '1985/09'], ['1993/11', '1994/06'], ["1995/08", "2001/10"],];// current2 为不全覆盖const current2 = [ ['1979/06', '1981/10'], ['1981/12', '1985/09'], ["1985/09","1995/08"], ['1993/11', '1994/06'], ["1995/08", "2001/10"],];function fn(target, current){ let cur = current.sort((a, b)=>{ return a[0] < b[0] ? -1:1; }); let min = cur[0][0] let max = cur[0][1]; for(let i=1; i<cur.length; i++){ if(min <= target[0] && max >= target[1]) return true; if(cur[i][0] <= max){ max = cur[i][1] < max ? max : cur[i][1]; continue; }else{ return false; } } if(min <= target[0] && max >= target[1]) return true; else return false;}console.log(fn(target, current2))然后就是简历上项目以及实习相关的事情。0921 三面简历上项目以及实习相关。简单手写:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1str = "abcsdas"result:1str = "leet"result:0 function findDuplicate(str){ if(str.length < 1) return 0; let map = {}; for(let i = 0; i < str.length; i++){ let s = str.charAt(i); if(map.hasOwnProperty(s)){ map[s] += 1; }else{ map[s] = 0; } } for(let i = 0; i < str.length; i++){ let s = str.charAt(i); if(map[s] == 0) return i; else continue; } return -1;}console.log(findDuplicate('leet'))总的来说一二面的八股和手撕都还行(除了二面看代码说输出有点匡瓢)。三面项目经历有点回答得含糊不清,到 09/27 还一直在泡池子。许愿能有个 hr 面吧。