百度前端面经

百度搜推前端
#发面经攒人品#

前端一般的DOM结构页面布局?
HTML常用的标签,哪些是行内元素,哪些是块级元素?
display的几个属性?
几种让页面元素隐藏的方式?
vue中v-if和v-show以及两者的不同
如何让元素垂直居中,使用flex布局怎么做?
flex设置为1的效果
position的集中定位的值和特点?
BFC的特点
css中常用的长度单位(px,em,rem,vw,vh,vmax,vmin,百分比)
css几种导入方式
如何导入js
js操作dom,使用dom操作向body标签中插入一个span标签
闭包的理解,以及什么时候使用闭包
var let const,以及变量提升的理解,声明和定义
webpack中如何配置编译一个less文件
vite的特点以及和webpack的区别

手撕:实现一个深层比较 isEqual函数,判断两个值是否相等
全部评论
base 南京,机会多多
点赞 回复 分享
发布于 09-06 14:42 贵州

相关推荐

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道真题和解析
点赞 评论 收藏
分享
不问项目不问实习,就问一点八股和场景题,两道手撕都写出来了,思路没问题,说第二道写的有点绕。感觉一道easy一道mid,第一道判断两个字符串用到的字符是否完全一样;第二道判断是否是满且平衡的二叉树也是非常好的一款面试官,一直点头表示肯定,比那个字节老登好多了😾问react中性能优化,首先一些react的hook,然后经典各种懒加载,骨架屏,打包过程中的优化,流式渲染之类问深拷贝,讲讲。问不同数据类型相加,如何返回结果,隐式类型转换相关。我只知道字符串和数字加起来会变成字符串啊啊啊问一个自适应大小的父元素,如何让子元素的宽高比一直是2:1,浏览器应该有一个api可以做到,但我不知道叫啥也不知道咋用,回答的是那内边距全部占满,然后再根据绝对定位调整展现的大小问css的width/offsetwidth/scrollwidth这些分别是啥问ai对话的时候,如何实现一个字一个字的这种效果,答流式传输sse,一个字一个字的是动画效果就记得这几个⬆️,回答的时候想到啥说啥,能说多少说多少,避免问出来我不会的问题。感觉没说几个字就直接手撕了,感觉手撕也没花多长时间就一个小时了,怕不是被kpi了😭但面试官很好,kpi我也面的很舒服也不会不高兴,最后说如果推进的话会有HR联系您(居然用了您,比密码的字节好多了,体验感拉满)最后问了一下,有三轮技术面一轮hr,第二轮依旧不是具体的组,还是混着面的,感觉能推进的话下一轮会很难
查看8道真题和解析
点赞 评论 收藏
分享
评论
8
18
分享

创作者周榜

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