「前端」快手二面面经(已约三面)
整体感觉面试官非常不友善,从最开始的自我介绍环节就开始了,我每次面试自我介绍的时间都控制在 5min 左右,即使有打断的我也没觉得有什么态度上的问题,毕竟人家可能是真的对项目很感兴趣才会打断问你;结果这个面试官在我介绍完项目后,有个部分也就两句话就能说完的也不让我说,整体讲完之后还说“别的面试官是会打断你还是让你说完”,整体给我的感觉就是非常不耐烦。
然后开始正式的面试环节,他说看到一面的面评说我的coding能力很强,但是对于一些原理方面的理解偏弱,于是就开始了对我的简历进行关键词提取,挨个问原理的拷打之路。
- 针对我项目中集成了 Sentry,问了一些性能指标的含义,然后问我 sentry 具体是如何进行性能分析和错误处理的?
- 这里之前好像也被问到过,写面经写完了忘了总结这个点了,现在总结一下
- 性能分析:像LCP和TTFB这样的指标是通过BOM的Performace API和Resource Timing API来进行测量的,具体来说他们都提供了对应的事件,只需要通过js来监听这些事件来捕获时间点即可;
- 错误处理:可以通过
window.onerror
window.onunhandledrejection
这样的api来对错误/未处理的Promise reject
进行捕获,然后通过Error.stack
这样的来提供对应错误的上下文;包括打包工具可能会对原始代码进行压缩和混淆从而导致报错信息难以阅读,sentry还支持上传source map对错误信息进行优化
- 你用 tailwindcss 的时候如果有很多组件需要同时修改样式怎么办?
- 封装成一个类就行
- 这个封装类是如何实现的?
- 当时答的有点答非所问
- 通过原生的 css 类选择器加上 @apply 操作符去应用 tailwindcss 的原子类
- 用过什么状态管理库,为什么用,为什么不用 Provider
- 用的 pinia,因为 Vue 官方推荐的就是这个,Provider 其实也可以,只是当时这么实现了
- 看你用了 MongoDB,为什么选择这个?
- 因为 NoSQL 的数据库非常适合使用 Vercel 这样有微服务的平台去做部署
- 对结构化数据库和非结构化数据库有了解吗
- 不了解
- 前者就是 mysql 这样的数据库,以表格形式存储,使用 sql 语句进行查询;后者就是 mongoDB 这样的数据库,以 JSON 格式存储,结构灵活,容易扩展
- 看你 node 涉及的比较少,为什么不自己写个 node 服务?
- 尽量还是专注于前端,其余的部分先使用轻量化的东西顶顶,后续有精力了再去做
- 手撕
- 链表反转
- 实现一个线程池,有固定的线程数,每次发起时如果小于上限则直接执行,如果大于等于上限则等待空闲再执行
- 前端的学习路线
- 三大件+框架,然后写项目练手,提到最近在看红宝书加深一下对 js 的理解,质疑我红宝书是用来练深度的吗?(我发现压力面的面试官都非常喜欢质疑,不管你说啥不是否定就是质疑)
- 原型链相关八股
- 这里开始拷打,我答的一点问题没有,他就非要纠结 _proto_ 和 Prototype 的中文翻译,甚至有的问题自己都没搞清楚
- 反问环节
当时面完我觉得已经凉了,没想到就在写面经的过程中收到了约三面的电话;真的很奇怪,有时候你面完觉得稳了,跟面试官聊的和和气气,面试官也全程面带笑容,然后面完就把你挂了;有时候面试官又压力拉满,不苟言笑,但又给你过了,真是让人有点啼笑皆非。
#快手##前端##快手求职进展汇总##秋招#