由于放假前收到YY电商部门的面试邀请,抱着试一试的心态接收了面试邀请。最终结果应该是凉凉了,但是还是有所得,趁着过年期间进行一下总结。
一面:技术面
是两位前端技术人员进行面试,此时气氛比较轻松,聊到的东西也比较广,有几个问题比较深刻。
因为简历上写到一个Git的子模块的使用,询问了一下子模块的使用,Git的工作流,为什么不用私有npm(其实后来有搭)
现在有一个类似webpack那样的项目(我的解读是有一个核心功能+各种loader/plugin),会怎么对这个项目进行代码管理?
- 目录怎样划分?
- 内置的一些功能(loader/plugin)怎么划分?
如果有一个大型项目(类似内部到处用的脚手架那种),如果这个大包的线上版本有问题,其所依赖的一个包是有问题的,怎么去解决这个问题?我的回答是,这个项目在设计之初,就要提供一个“自检”的阶段
说一下VUE的特性,双向绑定的原理(粗略带过),提到Object.defineProperity,依赖收集等等,其实是比较含糊的
socket和websocket是一样吗?(直接说不清楚,大概说了一下是长连接),还提了一下Web-CRT是什么,跟web-socket有啥不一样?
提到了一个之前被DNS劫持的,怎么解决的。页面被嵌套iframe。展开发问,遇到DNS劫持,有什么办法解决。
http 1.0、1.1、2.0 之间的区别?
有一个实时性需要很高且很高并发的列表,在node-SSR的项目中,怎么维持这个列表的实施性?
二面:技术面(组长/负责人 面)
- VUE 的双向绑定怎么实现,需要非常详细说,整个源码级别的理解。
- 依赖收集是怎么实现的
- 动态化
- Vue的生命周期,只是简单地说了有那些周期,没有述说他们的区别,也是做得不够好的地方。
- 画出构造函数+原型之间+实例的关系。关于原型链的一个普通问题,没有答出来,其实很不应该。
- 从2展开的一个问题,有一个A的function(内含一个字段+一个方法),现在B想要继承A,直接functionB去call一下A。同样要求描述一下B跟题目2中间的关系链条,也是没有答出来
- 说一下对docker的了解
三面:HR面
- 为什么想离开原有的公司?
- 觉得自己是一个怎样的人?
- 希望去到一个怎样的环境/团队?
总结
- http 各个版本的区别确实基本上等于空白,只知道http协议的请求头+请求体,缓存控制字段
- Vue的原理不够清晰,表达含糊
- JS的原型和构造函数等几个之间的关系