字节跳动-国际化内容安全平台-前端面试经验
自我介绍
(面试开始先进行了自我介绍)
技术问题
1. 包管理工具
- pnpm 和 npm 有什么区别?
- pnpm 相比 npm 有哪些优势?
2. 操作系统
- 硬链接和软链接的区别是什么?
- 硬连接共享同一个inode,同一份数据。源文件删除后仍然能访问。
- 软连接是特殊的文件,指向另一个文件的路径。删除后成为断链。
- 硬链接的优势是什么?
- 共享同一个inode,数据一致性,空间一致性
- 硬连接都被删除的时候,源文件才会被删除
3. 前端性能优化
- 首屏优化思路
- 浏览器缓存静态资源的机制
- 有哪些 HTTP 请求头在缓存中可能会用到?
- 场景题:如果有大量的图片应该如何设置相应的缓存策略?
4. WebSocket 深度问题
- WebSocket 和长轮询、gRPC Streaming、SSE 的区别是什么?
- WebSocket 有什么好处?
- 场景题:当客户端设备需要和多个服务器实例建立连接,如何处理?
- 场景题:如何完成事件广播?服务端一个 emit 如何让所有客户端都接受到?
- 场景题:服务端如果连接了多个客户端实例,怎么能让消息进行可控的分发?
- WebSocket 基于 HTTP 协议通过101进行升级,有些请求头是 hop-by-hop 而不是 end-to-end 的,能说一下对这个的了解吗?
- 如果 WebSocket 需要配置请求头的话,需要配置什么请求头?
5. 编程题
- 大数相加
- TS 伪构造消息订阅
6. 数据处理相关
- 除了前端以外,有没有做过 ETL (数据处理)的事情?
- 有没有使用过 ClickHouse?
- 有没有了解过 pivot?
- 场景题:有很大很大的数据表,希望做一些数据的任务,希望放在 SQL 中进行查询。如何把一个表中的部分数据通过中间表放入另外一个表中?有没有优化策略?思路是什么?
- 场景题:埋点上报,用户量非常大,观察用户行为是否有问题时,如何处理会比较好?思路是什么?