字节跳动前端搜索方向一面面经

自我介绍

- 蓝桥杯是什么
- 问两个开源项目: 
  - Threejs 那个怎么说
  - 某音乐网站嵌入 tauri 二次开发(扯了一下写的 vite 插件,实现了把外部网站嵌入到脚手架内实现的直接开发,还有重写部分热重载代码,以及代理后端,实现内容覆盖与整个网站的控制权,以及扯了一下这种跨平台开发要注意的是什么,然后就扯了一下ipc通信与序列化的性能)
    - 做了这些插件最终的意义?(提升开发体验与效率)
  - 这些是自己做的还是实验室做的(第一个跟隔壁实验室哥们一起做的,第二个是自己做的,2023年7月 -> 2024年8月,有GitHub提交可查)
- 说一下你对前端工程化的理解(尽可能地实现非业务部分过程自动化,使得开发者可以专注开发)
- 用过webpack吗,没有,直接 vite 上手
- 说一下你对 vite 的认知,越多越好,尽可能地说(esbuild 开发环境,rollup 生产环境,vite 在加速方面做了哪些努力(esbuild 构建开发环境js,预构建依赖,对源码更新采用链失活处理(仅概念)))
- esm cjs(同步与异步导入,import 静态分析)
- url 到页面呈现(合法判断,cache,dns,tcp,dom树,cssom,js 阻塞,render tree,绘制,部分 css 送入 gpu 处理)
- 说一下用 Astro 的原因(vite 作为底层驱动支持,内容驱动静态网站生成,支持SSG,SSR)
- 除了 SSG,SSR 还有什么渲染,区别是什么(ISR,CSR,边缘计算)
- Astro SSR 还有哪些应用场景(扯了一下官网文档的电商平台,用户可以先看到页面商品内容,具有交互性质的按钮可以在后续注水激活)
- 说一下 yjs 是干什么的(以CRTD为核心思想的并发冲突解决库)
- 在线演示平台,平台有多少人在用(不多,给内部人员编辑使用)
- 做这个遇到最难的地方是什么(服务端崩溃上下文丢失后内容恢复,说了目前的实现与未来最好实现)
- VSCode 插件看一下效果(演示了一下并说了转 ast 做处理的简单流程)

笔试:
- html css js 基础
- lodash.get
- 树遍历

本来要反问了,感觉节奏不对,继续跟面试官扯完了简历上的后两点:
- 页面预览实现?
  成本有点高,目前思路是转发脚手架页面

  曾经做过的努力:
  - 用 astro 的编译器看看能不能 build 一些组件并拼接完整页面(不能,必须依赖 node 环境或在浏览器实现需要的 api)
  - 用 SSR (审查了 astro 部分源码发现对于 markdown 编译逻辑都是写在 vite 插件内,打包时是直接把 markdown 编译成 js,SSR执行时直接静态出字符串,没有运行时编译过程)
  - 11月14号新出的 content layer api,去官方文档看了milestone,其中写清楚了不把运行时编译 markdown 放在目标内,与 astro 的 baseline 与解决问题场景不一致
- jsx 编写通用组件?
  曾经做过的努力:
  - 调研 tinyMVC,在示例仓库里发现他针对各个框架都写了一套 renderless 逻辑,还为此写了一个专门抹平框架差异的函数
  - taro,基于编译器实现,背后有编译团队,运行时团队,小程序团队和跨平台团队支持,对于小团队开发成本太高了

反问:
- base 北京上海
- 二面什么时候
- 主要业务
- 需要改进的地方
全部评论
base是北京的吗
点赞 回复 分享
发布于 2024-12-24 21:01 江西
跪了
点赞 回复 分享
发布于 2024-12-05 17:02 北京
代劳啊🙀🙀🙀
点赞 回复 分享
发布于 2024-12-02 20:04 浙江
26前端第一人
点赞 回复 分享
发布于 2024-12-01 19:08 广东
26前端第一人
点赞 回复 分享
发布于 2024-12-01 00:58 广东
26前端第一人
点赞 回复 分享
发布于 2024-12-01 00:11 广东
很强!
点赞 回复 分享
发布于 2024-11-30 23:55 北京
大佬
点赞 回复 分享
发布于 2024-11-30 20:56 上海
宝宝无敌了!
点赞 回复 分享
发布于 2024-11-30 00:13 湖南
真跪了
点赞 回复 分享
发布于 2024-11-30 00:01 黑龙江
太强了
点赞 回复 分享
发布于 2024-11-29 23:58 广东
真跪了啊
点赞 回复 分享
发布于 2024-11-29 23:56 广东
宝宝无敌了!
点赞 回复 分享
发布于 2024-11-29 23:43 浙江

相关推荐

1.手撕:数组中第k个最大元素2.浏览器拿到HTML响应之后,渲染页面过程3.CSS 是什么时候加载的?是等 DOM 树构建完才开始吗4.HTML 解析过程中碰到一个 <script> 标签,浏览器会怎么处理5.你刚才提到MutationObserver,那如果浏览器不支持这个 API,你会用什么方式实现类似功能6.我们看这一段代码:图1 这段代码打印的结果是什么?为什么不是local?7.如果我把刚才那个var name = 'local' 改成let,那输出结果会变吗8.解释一下什么是“暂时性死区”为什么let声明变量之前不能访问9.讲一下js的作用域有哪几种10.我们现在有一个全局变量是 let a = 1,页面上有个按钮绑定了一个 onclick 事件打印 a,我把 a 从浏览器控制台删掉了,会报错吗?为什么11.讲一下作用域链,为什么在try-catch 里 catch(err) 中的 err 是块级作用域,但try里不是?12. 果我有一个变量在 setTimeout 里修改了值,而外部同时访问这个值,能保证拿到最新值吗为什么13.我给你两个连续的style标签,里面写了两个相同选择器但不同样式,渲染时到底谁生效?为什么?14.如果我动态用innerHTML插入一段 <script>,它会执行吗?和用createElement的方式插入有什么不同15.我页面上用了iframe做内嵌组件,结果一个按钮点击事件怎么都监听不到,为什么16.讲讲webpack的loader和plugin的执行顺序17.react 的 useEffect 和 useLayoutEffect 有什么区别?哪个先执行18. vue 的响应式是怎么实现的?那我问你,Object.defineProperty 为什么不能监听数组的 push?Vue2 是怎么解决的19.如果我在页面里创建了一个超大的数组 new Array(1e9),但没赋值,也不访问,浏览器会卡死吗20.我页面上只放了 1 张图,但 Lighthouse 跑出来提示资源加载过大,啥原因?
查看20道真题和解析
点赞 评论 收藏
分享
10-31 01:52
已编辑
门头沟学院 前端工程师
查看10道真题和解析
点赞 评论 收藏
分享
评论
17
28
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务