抖音前端校招一面1小时20分钟
1.看你在重构一个项目,你讲讲你重构的心得?你如何保证你重构后的功能逻辑是完整的?你如何让以后来维护你重构的代码的人能清晰明了的知道你写了什么?
2.进程和线程的区别?同一进程不同线程的哪些数据段是共享的?
3.http响应header中的cache-control有哪些常规值?
4.http中get/post在请求参数上有什么区别?get参数的长度有限制吗?文件上传一般是post请求,那么在body里我们用什么类型的数据?
5.编程题:给定形如 www.toutiao.com 的 URL,将其转换成 com.toutiao.www 的形式,要求必须原地操作。(就只能在给定的string上进行操作,不能新建变量来缓存操作结果,不能用split、splice、slice等会新建一个缓存变量的东东。反正这里我一点头绪都没有。)
6.编程题: Semantic Versioning 是一个前端通用的版本规范。
格式为“{MAJOR}.{MINOR}.{PATCH}-{alpha|beta|rc}.{number}”,
要求实现 compare(a, b) 方法,比较 a, b 两个版本大小,
当 a > b 是返回 1;
当 a = b 是返回 0;
当 a < b 是返回 -1;
其中,rc > beta > alpha,major > minor > patch;
例子,1.2.3 < 1.2.4 < 1.3.0-alpha.1 < 1.3.0-alpha.2 < 1.3.0-beta.1 < 1.3.0-rc.1 < 1.3.0
7.CSS的盒子模型简单介绍一下;padding和margin设置百分比是基于什么计算的?
8.布局题:CSS三栏布局实现,左右固宽200px,中间自适应, 高度相等。当top没有设置的时候,left和right元素的高度是基于什么去计算的?
9.this判断题,写出输出结果。
var length = 10; function fn() { return this.length+1; } var obj = { length: 5, test1: function() { return fn(); } }; obj.test2=fn; //下面代码输出是什么 console.log(obj.test1()) console.log(fn()===obj.test2())10.DOM操作题
给一个元素Element,找出这个元素的全部Input子元素。 function findAllInputElement (element) { }
console.log('begin') setTimeout(() => { console.log('setTimeout 1') Promise.resolve().then(() => { console.log('promise 1') setTimeout(() => { console.log('setTimeout2 between promise1&2') }) }).then(() => { console.log('promise 2') }) }, 0) console.log('end')