前端被裁后首面挂了(吐槽+复盘)

63 阅读5分钟

面试公司

非大厂

面试结果

  • 一面通过
  • 二面挂了

一面-面试问题

  1. 个人介绍
  2. 谈谈项目经历中的关键技术点
    • 怎么实现的跨平台小程序开发
    • 为什么使用自己实现的转译方案,而不是使用市面上的框架如Taro等
    • 是否对Taro等框架原理有了解
  3. 是否使用过React Native
  4. 对React的了解程度,使用过哪些hook,说说useEffect
  5. 说说React和Vue的优缺点
  6. 说说虚拟列表的原理
  7. 你有什么问题要问吗

二面-面试问题

  1. 聊聊你们的跨平台实现
  2. 你做的H5项目的性能优化都有哪些手段?
    • 项目是4年前做的,有点忘记具体手段了,只想了一个删除无用代码,资源放CDN,然后就说前端优化的手段不就是那些吗,这块被面试官diss没有get到我说的那些是哪些,最后面试官表示你优化肯定要针对FCP、LCP等指标做针对性的优化,你做的可能就是前端标准化的东西;我之前听过这些名词,但确实没针对这些指标进行针对性的优化过,但是他说的标准化的东西应该也能提升这些指标中的一些数据,不然我当时统计出的优化结果是什么呢,这块后面要针对性的学习,然后又仔细回忆了一下原来做的优化手段:减少资源提交(删除无用类库,使用自有组件替代类库,编译优化),资源懒加载,打包后资源上传 CDN 并启动 gzip 压缩等,这些貌似看起来确实没啥太高尚大的东西。
  3. 你们的小程序性能怎么样?我说了2.6s,面试官震惊,这个我当时确实没描述清楚,这个时间是从冷启动到页面主接口完成且页面渲染出首屏内容(且我们的小程序是低代码配置出来的)为止的,不是指小程序的初始化启动时间,可能让面试官有所误会了,后面面试时要优化话术,阐明情况;
    • 另外掘友们从你们的实践经验来说这个2.6s的数字真的很夸张很不可接受吗?
  4. 这个问题的原题忘记是什么了,但最后讨论的终点是:面试官提出质疑,你没有调研过为什么就说原生小程序开发的性能要比Taro等框架要好?
    • 我的回答是,虽然我没有深入了解过Taro等框架的原理,但是根据经验也可推断出至少在初始化耗时层面,原生是肯定胜于Taro等框架的,这肯定是毋庸置疑的!拿Taro来举例,在同等业务功能的情况下,Taro的初始化阶段肯定要加载一个框架的运行时比如React,这部分就是一定会比原生要增加耗时!面试官说最新版本的Taro的性能是比较好的;
    • 面试官中途笑了好几次,这个笑的性质在我看来不是很正面;
    • 每个人的实践经验都不一样,喜好更不一样,当我只凭自己的实践经验来猜测一件事情的结果而这个结果可能又是不满足对方喜好的时候,无论这件事的真实情况如果,我都将处于下位,这个问题怎么破局呢?掘友们可以提提建议吗?
  • 你还有什么问题想问的吗
  • 你稍等下
  • 好了,今天的面试就先到这吧

关于二面中质疑

我从面试回家的途中就在反复思考,原生的性能难道不比Taro好吗?至少我说的初始化耗时肯定没问题啊?怎么感觉面试官的态度像是他已经实践过了Taro优于原生一样,这这这就算我菜,但我不能菜到这个程度连这个都判断错误吧?

我把自己怀疑了个遍!

最后,还是实践看真理吧,新建个对比项目看看真实数据:

新建两个小程序项目,功能都是完成最简单的TodoList功能,一个用原生实现,一个用Taro3 React实现,看看具体的性能表现,最终的数据结果如下:

多次运行可能数据会有浮动,但原生在AppOnLaunch耗时这一项指标上始终超越Taro3。

测试机型:iPhone12 Pro

框架AppOnLaunch耗时AppOnShow耗时PageOnLoad耗时PageOnReady耗时
原生1ms2ms34ms60ms
Taro320ms20ms39ms60ms

原生.PNG

Taro3.PNG

从我这个粗略项目的对比结果来看,单从初始化耗时这一个指标来说,原生是优于Taro3的,我没有错! 项目源码:github.com/imingyu/mp-…

另外,我还找到了一个其他人做的小程序多端框架性能对比项目,其中大多数指标也是原生优于Taro3的,参见:github.com/hiyuki/mp-f…

面试不足复盘

  • 没有复习旧项目的实践经验(如性能优化),同时对实践的底层其他方面没有深度涉猎,需要补习相关知识;
  • 说服别人要使用实际数据,对于面试中可能发生的质疑要预先准备数据,同时也可避免自己的想当然;
  • 面试话术和心理素质有待加强;
  • 技术广度有待扩展;