高德面试总结

因为没有想着可以通过,所以也没有怎么准备,本想着一轮游,竟然面完了三轮。

一面面试官,上来就说你做的项目都一般般啊,让说一下在工作中最大的项目,怎么Hold住的,从中学习到了什么。然后才是一些正常基础性的问题。
二面面试官,上来问你对css比较熟悉还是js比较熟悉,我说js,然后问了一堆js的东西,后面加上react生命周期、diff,和其他框架渲染上的优点,和模板引擎渲染上有什么优点。
三面面试官,技术上问的比较少,都是一些开放性的问题,下面会罗列一下

  1. 垂直居中布局, position * 3 + flex + table
  2. nth-child(4n + 3)
  3. 要实现一个水印,应该怎么去做,答用background-img去做,问用z-index行不行,为什么
  4. 在使用less过程中遇到过哪些坑,使用calc应该注意什么
    -_-
    网上说的calc(100% - 30px)并没有发生

    1
    2
    // width: calc(~"100% - 210px")
    width: calc(100% - 30px)
  5. flex: 1 的三个子元素,是不是一定会均分
    如果有3个子元素,中间的元素文字特别多,这个时候是三个还是等分父元素总宽度还是中间元素会多一些?
    试了一下还是三个均分的-_-,当时答对叕改错了。

  6. 怎么开启gpu加速,gpu加速是什么
    除了transform的一些3d还有啥?
  7. var let const 区别,const obj = {}; obj.a = ‘a’会不会报错 适用哪些数据类型

    const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量

  8. 闭包,应用
    应用:1 参考12题,2 循环+异步操作

  9. promise除了处理异步还可以用来做什么
  10. es6的 genarator函数,应用场景
  11. 箭头函数和普通函数有什么区别,会不会随外层的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
  12. 改变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));
    }
    };
  13. 跨域方式,jsonp跨域原理,使用jsonp跨域时用<img />行不行,为什么
    jsonp跨域原理是利用script标签的src属性没有限制,script标签可以将请求文本放到全局作用域中执行。而img不会去处理响应体,但确实可以发送。
    这种方式叫做图片ping,可以向服务器发送错误日志。因为收集错误的服务器并不是你的系统服务器。

  14. 克隆一个数组方法,用=为什么不行,如果数组项都是数组,怎么去深克隆
    自己写了一个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;
    }
  15. http状态码问了301 302 304 当时304卡壳了,后来想起来了,是服务端响应没有变化而导致的重定向

  16. 浏览器的缓存问题

  17. 自己实现一个require([…args], cb)

  18. 封装一个react组件,实现1w张图片轮播
  19. 高阶函数应用:如果实现防止连续提交
  20. react生命周期,特别详细,每个都说到了,可以在里面做些什么,state和props合并在哪里处理,constructor作用
  21. react的事件,事件是绑定在真实dom上还是虚拟dom上
  22. react的性能优势表现什么地方,和vue相比,和模板引擎相比
  23. react的diff算法
  24. 函数式编程了解过没有,有什么优点
  25. 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

开放性问题

  1. 想过前端会发展成什么样吗
  2. 公司现在成型的开发体系,现在老板让开发一个新的功能,现在流行的一种新的技术特别适合,但是可能对老项目有些不友好的地方,如果让我怎么取舍
  3. 自己规划是什么,如果实现自己的目标
  4. 自己的优势是什么,在团队中发挥怎样的作用,希望加入的团队是什么样子的
  5. 自己下班后干什么,看过什么书

一些hr的问题

  1. 毕业后为什么选择第一家公司(言下之意是为什么选择了一个不出名的公司)
  2. 为什么选择用友公司作为第二家公司,当时除了用友还考虑了哪些公司,说了几家,问为什么不选择互联网公司
  3. 为什么选择我们公司,除了我们公司外还投了哪公司
  4. 未来有什么计划,具体到1-3年要达到一个什么目标,为了达到目标计划怎么做
  5. 平常是怎么学习的,是项目驱动还是其他,自己对前端学习体系是怎么理解的
  6. 优缺点各说2个
  7. 计划在北京待多久,还有没有亲人在北京

忧伤ing…

avatar

changzhn`s blog

中国人睡觉时,美国人大多数人在工作