面经(10)————美团到店一面
面试时长90mins+,面试官人很好,很帅很爱笑,项目 + 八股答得还不错,代码有点崩,数据结构和算法这边没太准备,面试官评价还可以,应该问题不大
面试官自己部门的业务介绍
自我介绍
- 感觉项目经历很丰富,为什么选择来做前端?
项目:
- wecrush是跨端的一个应用,那当时为什么没有考虑使用一些跨端的技术,而是使用react去做一个web应用的开发?
- 答了RN的移动端开发和web在并行的推进,然后根据后续产品的一些决策,把研发的精力投入到了web这边来
- 组件库的设计和使用这边,为什么不使用Ant Design、ElementUI等更加成熟的组件,而是自己手写?
- 答了开发过程中其实有参考这些组件的设计和代码,当时是为了满足一些定制化的需求。并且也有从人才培养的角度去回答,可以自己了解一些组件库的底层实现原理
- 然后问到了这种公共组件如果需要修改,所有引用了这个组件的页面都需要重新做测试,这种问题是怎么解决的?
- 回答了目前暂时没有太好的解决方案,只能对公共组件的编写、测试、CR等提出更加严格的要求,尽量不出问题,并且也要对之前的页面做全量的测试
- 面试官有提出可以使用module wrapper + npm的技术把不同的页面、组件库等进行单独的封装,一定程度上可以解决这个问题
- 问了项目中遇到的最大的困难以及如何解决的
- 看到使用了hooks问我项目中是否主要使用的是函数式组件,得到肯定答复后,问了函数式组件相较于类式组件的好处
- 答了更便于组件的拆分,可以把组件的粒度封装的很细,便于代码的编写、维护和组件的复用。
- wecrush是跨端的一个应用,那当时为什么没有考虑使用一些跨端的技术,而是使用react去做一个web应用的开发?
八股:
问了进程和线程的区别
问了浏览器都有哪些进程
问了JS代码的处理是在哪个进程中的?
问了JS是单线程还是多线程
问事件循环
看代码说结果,就是Promise + setTimeout + 同步
问闭包的概念
看代码说结果
let x = 5 function fn (x) { return function f (y) { console.log(y + ++x); } } const f = fn(6) f(7) console.log(x);
问了HTTP和HTTPS的区别
代码
- 实现一个Math.sqrt(使用二分实现)
- 面试官后面改要求,要把结果由整数改为保留两位(忘记toFixed这个api了,面试官提示后才想起来)
- 问了知道哪些排序算法
- 实现一个归并或者快排
完全没准备,最后也没写出来,面试官就简单问了下思路然后就作罢了
- 实现一个Math.sqrt(使用二分实现)
反问
- 今天面试有哪些可以提升的点
- 感觉其实今天发挥的很好,答得都还不错,也有一定的深度,然后也能感受到对前端的热情,说在项目中我应该会是那个积极推进的人,代码题虽然没有写出来,但是他更想看到的是如何去debug。然后有交流说这个webIDE不能打断点,log也看不太出来,然后尴尬一笑。有交流平时项目里面用断点和log还是很频繁的,面试官这边接话意思说遇到问题尽量要多去尝试,尽力用不同的方法去解决。
- 今天面试有哪些可以提升的点
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 软件工程专业技术分享!
评论