面试记@YY

由于放假前收到YY电商部门的面试邀请,抱着试一试的心态接收了面试邀请。最终结果应该是凉凉了,但是还是有所得,趁着过年期间进行一下总结。

一面:技术面

是两位前端技术人员进行面试,此时气氛比较轻松,聊到的东西也比较广,有几个问题比较深刻。

  1. 因为简历上写到一个Git的子模块的使用,询问了一下子模块的使用,Git的工作流,为什么不用私有npm(其实后来有搭)

  2. 现在有一个类似webpack那样的项目(我的解读是有一个核心功能+各种loader/plugin),会怎么对这个项目进行代码管理?

    1. 目录怎样划分?
    2. 内置的一些功能(loader/plugin)怎么划分?
  3. 如果有一个大型项目(类似内部到处用的脚手架那种),如果这个大包的线上版本有问题,其所依赖的一个包是有问题的,怎么去解决这个问题?我的回答是,这个项目在设计之初,就要提供一个“自检”的阶段

  4. 说一下VUE的特性,双向绑定的原理(粗略带过),提到Object.defineProperity,依赖收集等等,其实是比较含糊的

  5. socket和websocket是一样吗?(直接说不清楚,大概说了一下是长连接),还提了一下Web-CRT是什么,跟web-socket有啥不一样?

  6. 提到了一个之前被DNS劫持的,怎么解决的。页面被嵌套iframe。展开发问,遇到DNS劫持,有什么办法解决。

  7. http 1.0、1.1、2.0 之间的区别?

  8. 有一个实时性需要很高且很高并发的列表,在node-SSR的项目中,怎么维持这个列表的实施性?

二面:技术面(组长/负责人 面)

  1. VUE 的双向绑定怎么实现,需要非常详细说,整个源码级别的理解。
    1. 依赖收集是怎么实现的
    2. 动态化
  2. Vue的生命周期,只是简单地说了有那些周期,没有述说他们的区别,也是做得不够好的地方。
  3. 画出构造函数+原型之间+实例的关系。关于原型链的一个普通问题,没有答出来,其实很不应该。
  4. 从2展开的一个问题,有一个A的function(内含一个字段+一个方法),现在B想要继承A,直接functionB去call一下A。同样要求描述一下B跟题目2中间的关系链条,也是没有答出来
  5. 说一下对docker的了解

三面:HR面

  1. 为什么想离开原有的公司?
  2. 觉得自己是一个怎样的人?
  3. 希望去到一个怎样的环境/团队?

总结

  1. http 各个版本的区别确实基本上等于空白,只知道http协议的请求头+请求体,缓存控制字段
  2. Vue的原理不够清晰,表达含糊
  3. JS的原型和构造函数等几个之间的关系