字节前端二面

介绍实习的postmessage难点,有没有遇到什么问题?
介绍下sse流式输出hook,介绍下SSE,EventSource,SSE的优点
介绍下秒传机制,介绍下BFF层大文件上传的流程
为什么按分片存储?分片存储有什么问题?
怎么优化?(数据库)
用什么类型的数据库?为什么?关系型和非关系型数据库有什么优缺点?
介绍下RBAC权限管理是怎么做的?页面级权限管理怎么做?动态路由权限管理?
为什么选择pnpm workspace?pnpm的优点?硬链接和软链接
vue2和vue3的区别?为什么要改成组合式?
介绍下react fiber架构
页面dom元素很多,怎么用fiber优化?有哪些hook?
介绍下主流的跨端方案原理,假如现在你的项目需要支持跨端,你会怎么选型?
跨端框架中怎么实现js调用原生的
taro的原理
让你实现一个跨端框架,你会怎么做?怎么把DSL转化成目标语言?
了解微前端吗
讲一下对闭包的理解

做题
两道闭包相关
驼峰转连字符,用正则怎么做

最近在学什么新技术
怎么学的
你身边人对你的评价是怎样的
全部评论
为啥这么难
点赞 回复 分享
发布于 昨天 02:01 广东
佬是广告吗
点赞 回复 分享
发布于 昨天 23:37 浙江

相关推荐

点赞 评论 收藏
分享
1.浏览器从输入url到页面渲染的过程2.浏览器做了哪些工作解析HTML最终形成页面展示(渲染过程)3.对js的解析是解析什么内容4.就是假设我们已经解析完了,不管它是解析什么内容,那解析完之后的话,它其实会有一个事件循环的机制,介绍一下js的事件循环机制5.事件循环在nodejs和浏览器的区别- 宏任务:浏览器是 “单队列”,Node.js 是 “多阶段队列”(按 timers → poll → check 等顺序执行);- 微任务:Node.js 比浏览器多一个 nextTick 队列,且优先级最高;- 执行节奏:浏览器是 “1 个宏任务 → 所有微任务”- Node.js 是 “1 个阶段的宏任务 → nextTick → 其他微任务 → 下一阶段”。6.vue3的vue2响应式的话有哪些区别7.vue3实现一个自定义的响应式的数据应该怎么实现日常开发优先用 Vue 内置的 reactive/ref,兼容性和功能更完善8.对于引用类型和基础类型的ref 实现上有什么区别基础类型通过包装对象实现响应式,引用类型则借助 reactive 转换为代理对象,两者最终都通过 .value 访问,但内部处理机制不同。基础类型(如 number、string)会被包装成含 value 属性的对象,ref 直接对这个 value 属性用 Proxy 拦截 get/set,确保修改时触发响应。引用类型(如对象、数组)传入 ref 后,会先被 reactive 转为响应式代理对象,此时 ref 的 value 指向这个代理对象,修改属性时实际触发的是 reactive 的响应逻辑。9.vite的热更新为什么比webpack快10.vite是怎么支持解析所有文件的为什么11.性能优化的方式,首屏加载优化- 资源层面,优先压缩和拆分资源,如用 Vite/Webpack 拆分代码(Code Splitting),大文件分片加载;- 图片懒加载非首屏图片- 通过 CDN 分发静态资源- 代码层面,路由懒加载(如 React.lazy、Vue 异步组件),移除未使用代码(Tree Shaking),避免大型库全量引入(如用 lodash-es 按需导入)- 缓存层面,设置 HTTP 缓存(强缓存 Cache-Control,协商缓存 ETag),利用 Service Worker 缓存关键资源12.大文件进行分片加载是如何实现的?首先前端获取文件总大小,按固定尺寸(如 1MB)计算分片数量;然后通过 HTTP Range 请求头,每次请求一个分片(如Range: bytes=0-1048575);服务端根据 Range 返回对应片段;前端接收所有分片后,用 Blob 或 ArrayBuffer 合并成完整文件。实际开发中,可结合 Promise.all 控制并发数,避免请求过多阻塞;用 localStorage 记录已下载分片,支持断点续传。例如视频网站加载大视频时,会按时间分片,用户观看时只加载当前需要的片段,既节省带宽也提升加载速度。13.强缓存的,就是说要用强缓存。那你如果强化了之后,那你怎么更新呢?就比如我发了个紧急的 V3版本,你是当前可能强化才能 V1,那我怎么更新到 V3给静态资源(JS/CSS/ 图片等)添加版本标识,如在文件名后加哈希值(app.8f3d2.js)或版本号(app.v3.js)。构建工具(Webpack/Vite)可自动生成哈希,哈希值随文件内容变化而变。当发布 V3 版本时,修改的资源会生成新哈希文件名,浏览器请求时发现是新路径,不命中强缓存,会从服务器拉取最新文件;未修改的资源因哈希不变,仍可利用缓存,兼顾性能与更新。14.标识是在哪里做的?构建工具(如 Webpack、Vite)会在打包时,根据文件内容生成唯一哈希值(如 MD5),并添加到文件名中(如index.abc123.js)。这一步由构建工具的配置实现,比如 Webpack 的contenthash、Vite 的rollupOptions.output.assetFileNames。同时,HTML 文件作为入口,引用这些带哈希的资源路径(如<script src="index.abc123.js">)。当文件内容更新,哈希值变化,HTML 中引用的路径也会更新,浏览器会识别为新资源,触发重新请求。15.那如何要设置html的强缓存,如何做到强制更新?1. 配置html的强缓存响应头(catche-control、expires)2. 叠加协商缓存(ETag、Last-Modified)(强缓存过期后,浏览器会主动请求服务器。此时需通过「协商缓存」让服务器判断 HTML 是否有更新:若未更新,返回304 Not Modified,浏览器继续用缓存;若已更新,返回200 OK和新 HTML。)3. 若发布紧急版本(如从 V1 更到 V3),即使强缓存没过期,也需让浏览器立刻放弃旧缓存、请求新 HTML。关键是让浏览器认为 “新 HTML 是一个完全不同的资源”,具体有两种落地方式:方式 1:给 HTML 文件名加版本 / 哈希(推荐,无兼容问题)直接修改 HTML 的文件名,在发布新版本时添加版本号或哈希,例如:- 旧版本:index.html → 新版本:index.v3.html- 同时,需修改服务器的 “默认访问路径”:用户访问https://xxx.com/时,服务器默认返回index.v3.html(而非旧的index.html)。原理:浏览器缓存是按 “资源 URL” 存储的,index.html和index.v3.html是两个不同的 URL,即使旧的index.html还在强缓存时效内,浏览器访问新 URL 时也会直接请求服务器,获取最新 HTML。方式 2:给 HTML 路径加查询参数(简单,但需注意服务器配置)不修改文件名,而是在 HTML 的访问路径后加版本参数,例如:- 旧版本:https://xxx.com/index.html → 新版本:https://xxx.com/index.html?v=316.RAG(检索增强生成)到底是什么东西,工作原理怎么样17.为什么要做向量化的过程18.RAG减少的原因是什么,还有什么方式可以减少幻觉19.就是你是如何去了解一个全新的一个技术领域的,就是你是怎么去做对应的一个学习的?有没有一些学习的方法论可以分享一下20.分享一下Mi-BRAG21.手撕:要实现支持并发限制和先进先出(FIFO)的异步任务调度器class TaskScheduler {constructor(concurrency) { }addTask(task) { }runTasks() { }22.追问:task返回什么类型任务执行失败了上面功能能执行么,promise如何处理失败,但是不阻塞队列->finally()catch的时候,能否将其重新加入队列重试📍面试公司:字节跳动-今日头条💻面试岗位:前端开发
查看24道真题和解析
点赞 评论 收藏
分享
评论
1
15
分享

创作者周榜

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