高德面试总结
因为没有想着可以通过,所以也没有怎么准备,本想着一轮游,竟然面完了三轮。
一面面试官,上来就说你做的项目都一般般啊,让说一下在工作中最大的项目,怎么Hold住的,从中学习到了什么。然后才是一些正常基础性的问题。
二面面试官,上来问你对css比较熟悉还是js比较熟悉,我说js,然后问了一堆js的东西,后面加上react生命周期、diff,和其他框架渲染上的优点,和模板引擎渲染上有什么优点。
三面面试官,技术上问的比较少,都是一些开放性的问题,下面会罗列一下
- 垂直居中布局, position * 3 + flex + table
- nth-child(4n + 3)
- 要实现一个水印,应该怎么去做,答用background-img去做,问用z-index行不行,为什么
- 在使用less过程中遇到过哪些坑,使用calc应该注意什么 
 -_-
 网上说的- calc(100% - 30px)并没有发生- 1 
 2- // width: calc(~"100% - 210px") 
 width: calc(100% - 30px)
- flex: 1 的三个子元素,是不是一定会均分 
 如果有3个子元素,中间的元素文字特别多,这个时候是三个还是等分父元素总宽度还是中间元素会多一些?
 试了一下还是三个均分的-_-,当时答对叕改错了。
- 怎么开启gpu加速,gpu加速是什么
 除了transform的一些3d还有啥?
- var let const 区别,const obj = {}; obj.a = ‘a’会不会报错 适用哪些数据类型 - const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量 
- 闭包,应用 
 应用:1 参考12题,2 循环+异步操作
- promise除了处理异步还可以用来做什么
- es6的 genarator函数,应用场景
- 箭头函数和普通函数有什么区别,会不会随外层的this改变而改变 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10- let o1 = {name: 'o1'}; 
 let o2 = {name: '02'};
 var name = 'window';
 function say() {
 let sing = () => console.log(this.name);
 sing();
 }
 say(); // window
 say.call(o1); // o1
 say.call(o2); // o2
- 改变this的方式,自己实现一个bind 
 bind有两种传参方式,因为用的不深,所以遗漏了。- 1 
 2
 3
 4
 5
 6
 7
 8- Function.prototype.bind2 = function(context) { 
 var args1 = [].slice.call(arguments, 1);
 var _this = this;
 return function() {
 var args2 = [].slice.call(arguments);
 _this.apply(context, args1.concat(args2));
 }
 };
- 跨域方式,jsonp跨域原理,使用jsonp跨域时用 - <img />行不行,为什么
 jsonp跨域原理是利用script标签的src属性没有限制,script标签可以将请求文本放到全局作用域中执行。而img不会去处理响应体,但确实可以发送。
 这种方式叫做图片ping,可以向服务器发送错误日志。因为收集错误的服务器并不是你的系统服务器。
- 克隆一个数组方法,用=为什么不行,如果数组项都是数组,怎么去深克隆 
 自己写了一个deepClone,当时写的- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13- function deepClone(arr) { 
 var i;
 var len = arr.length;
 var newArr = [];
 for(i = 0; i < len; i++) {
 if (arr[i] instanceof Array) {
 newArr.push(deepClone(arr[i]));
 } else {
 newArr.push(arr[i]);
 }
 }
 return newArr;
 }
- http状态码问了301 302 304 当时304卡壳了,后来想起来了,是服务端响应没有变化而导致的重定向 
- 浏览器的缓存问题 
- 自己实现一个require([…args], cb) 
- 封装一个react组件,实现1w张图片轮播
- 高阶函数应用:如果实现防止连续提交
- react生命周期,特别详细,每个都说到了,可以在里面做些什么,state和props合并在哪里处理,constructor作用
- react的事件,事件是绑定在真实dom上还是虚拟dom上
- react的性能优势表现什么地方,和vue相比,和模板引擎相比
- react的diff算法
- 函数式编程了解过没有,有什么优点
- position值有哪些,相对于谁定位的
 这个坑主要在于,元素默认是static定位的,如下图1 
 2
 3
 4
 5
 6
 7<div class="lv1"> <!-- relative定位 --> 
 <div class="lv2"> <!-- 显式为static定位 -->
 <div class="lv3"> <!-- 设置定位后,是相对于谁的? -->
 3
 </div>
 </div>
 </div>
除了常见的五个值外还有initial unset sticky等值
initial是默认值
unset是取消设置,这个时候,样式如果是可继承的就使用继承的属性值inherit,如果是非继承的就是initial
开放性问题
- 想过前端会发展成什么样吗
- 公司现在成型的开发体系,现在老板让开发一个新的功能,现在流行的一种新的技术特别适合,但是可能对老项目有些不友好的地方,如果让我怎么取舍
- 自己规划是什么,如果实现自己的目标
- 自己的优势是什么,在团队中发挥怎样的作用,希望加入的团队是什么样子的
- 自己下班后干什么,看过什么书
一些hr的问题
- 毕业后为什么选择第一家公司(言下之意是为什么选择了一个不出名的公司)
- 为什么选择用友公司作为第二家公司,当时除了用友还考虑了哪些公司,说了几家,问为什么不选择互联网公司
- 为什么选择我们公司,除了我们公司外还投了哪公司
- 未来有什么计划,具体到1-3年要达到一个什么目标,为了达到目标计划怎么做
- 平常是怎么学习的,是项目驱动还是其他,自己对前端学习体系是怎么理解的
- 优缺点各说2个
- 计划在北京待多久,还有没有亲人在北京
忧伤ing…
