阿里CTO国际化中台前端实习一面
时间:2022年4月6日,形式:电话面,没有写代码
面试内容
1.项目中有什么挑战性问题?怎么分析?怎么解决?项目中用到的规范是自己定的还是什么?
2.做的项目现在别人有在使用吗?别人使用后有什么反馈吗?
3.在这个项目中有什么收获吗?
4.我们做的平台,如果要让第三方开发者继续增加他们的自定义控件要怎么实现?并且可以添加到可拖拽的列表中,有什么实现方案?
5.针对4所说的问题,如果想针对现有的控件再做进一步的快速开发要进行哪些改造?(一般怎么加载第三方组件?加载后怎么编译成的一个组件?怎么拿脚本导出的组件对象?我说会约定一个全局对象名,面试官这个存在问题,然后
问有没有了解webpack的模块加载机制,后面又扯到webpack的按需加载,有什么库可以实现按需加载,AMD,CMD。项目里有多个webpack会相互污染?)
6.浏览器输入网址到页面渲染,主要发生了哪些事情?页面渲染时下载资源的时候会继续渲染页面吗?为什么JS会阻塞页面渲染?JS修改DOM树有什么后果?加载CSS不阻塞页面渲染,但是JS也会修改CSS?
7.如果已经知道JS不会修改DOM树有什么办法让他不阻塞页面渲染?(设置async、defer或者放在页面的最后面引入)
8.js脚本对于浏览器来讲就是字符串,为什么浏览器可以执行它?引擎是怎么去解析执行JS的?
9.c++也有面向对象的特点。面向对象能解决什么问题?为什么要用面向对象?
10.C++和JS都有类定义和继承,那JS的继承是怎么实现的?JS的原型链实现继承和属性共享,C++是怎么实现的,它为啥不要原型链?(或者说C++和JS有什么区别导致JS需要原型链,答:动态类型语言和静态类型语言、JS可随时修改对象)
11.没有ES6的语法糖怎么实现继承?其实我知道很多种方式,就挑了一个经典继承,然后面试官就一直说这种方式的弊端。然后我又说原型链实现继承,怎么避免这种同时创建父类实例的问题,我猜测是想问最理想的寄生组合继承,早说啊,我知道这个😪。还问A继承B,A的构造函数参数要和B一样吗?
function Parent(name){ this.name=name } function Child(name,age){ Parent.call(this,name) this.age=age } //弊端;创建子类的实例时同时也会创建父类的实例12.怎么实现bind函数?(这里注意了,bind函数返回的函数可以做构造函数,那就得做原型链的连接,和让原函数的属性和方法传递给实例对象)
13.Vue的组件可以的属性可以写默认值,这些属性默认值是放在组件对象上还是组件原型链上?(正确答案:面试官说会把默认属性放在组件对象上,组件会bind)
反问
建议:看webpack的编译原理、看优秀库的源码(看之前先学会使用,挑关心的地方学习)、框架:react+typescript
#阿里巴巴##内推##实习##面经##前端#