24年里,经历了无数次前端面试,我发现,面试官们的问题越来越贴近实际工作场景,传统的“八股文”式考题已不再是主流。
他们开始热衷于抛出各种复杂且贴近业务的场景题,比如:“如何在高并发情况下优化页面加载速度?”“如何在保证用户体验的前提下,实现图片的懒加载和异步加载?”这些问题不仅考验着我们的技术深度,更在无形中测试着我们的思维能力和问题解决策略。
所以我连夜整理出来近期面试常问的场景题,快背!都开始背就没有优势了!
因为篇幅原因,下面就只能截图部分内容展示了,有想要的可以点赞+转发后,私信我【前端】即可
- 当QPS达到峰值时,该如何处理?
答案:当QPS达到峰值时,可以从以下几个方面来进行优化:
1.数据库优化:数据库的优化包括优化SQL语句、使用索引、避免全表扫描、分表分库等措施,以提高数据库的读写性能。
2.缓存优化:缓存可以降低对数据库的访问频率,提高响应速度。可以使用Redis、Memcached等缓存技术,减轻服务器负载。
3.代码优化:优化代码可以提高代码的执行效率,减少不必要的开销。可以通过一些优化手段,如减少不必要的代码执行、避免循环嵌套、避免不必要的递归调用等来提高代码的性能。
4.负载均衡:负载均衡可以将请求分发到多个服务器上,减少单个服务器的负载,提高整个系统的性能和可用性。
5.异步处理:将一些计算量大、耗时长的操作异步处理,减少对主线程的阻塞,提高响应速度。
6.CDN加速:使用CDN技术可以将静态资源缓存到CDN节点上,提高资源的加载速度,减少服务器的负载。
7.硬件升级:可以通过升级服务器硬件,增加带宽等方式来提高系统的处理能力。
以上是一些常见的优化手段,需要根据具体情况进行选择和实施。
- js 超过 Number 最大值的数怎么处理?
- 使用同一个链接,如何实现 PC 打开是 web 应用、手机打开是一个 H5 应用?
- 如何保证用户的使用体验
- 如何解决页面请求接口大规模并发问题
答案:如何解决页面请求接口大规模并发问题,不仅仅是包含了接口并发,还有前端资源下载的请求并发。应该说这是一个话题讨论了;
个人认为可以从以下几个方面来考虑如何解决这个并发问题:
1.后端优化:可以对接口进行优化,采用缓存技术,对数据进行预处理,减少数据库操作等。使用集群技术,将请求分散到不同的服务器上,提高并发量。另外可以使用反向代理、负载均衡等技术,分担服务器压力。
2.做BFF聚合:把所有首屏需要依赖的接口,利用服务中间层给聚合为一个接口。
3.CDN加速:使用CDN缓存技术可以有效减少服务器请求压力,提高网站访问速度。CDN缓存可以将接口的数据存储在缓存服务器中,减少对原始服务器的访问,加速数据传输速度。使用 WebSocket:使用 WebSocket 可以建立一个持久的连接,避免反复连接请求。WebSocket
4.可以实现双向通信,大幅降低服务器响应时间。
5.使用 HTTP2 及其以上版本,使用多路复用。
6.使用浏览器缓存技术:强缓存、协商缓存、离线缓存、Service Worker 缓存 等方向。
7.聚合一定量的静态资源: 比如提取页面公用复用部分代码打包到一个文件里面、对图片进行雪碧图处理,多个图片只下载一个图片。
8.采用微前端工程架构: 只是对当前访问页面的静态资源进行下载,而不是下载整站静态资源。
9.使用服务端渲染技术:从服务端把页面首屏直接渲染好返回,就可以避免掉首屏需要的数据再做额外加载和执行。
- 设计一套全站请求耗时统计工具
- 大文件上传了解多少
- H5 如何解决移动端适配问题
- 站点一键换肤的实现方式有哪些?
- 如何实现网页加载进度条?
- 常见图片懒加载方式有哪些?
- cookie 构成部分有哪些
- 扫码登录实现方式
- DNS 协议了解多少
- 函数式编程了解多少?
- 前端水印了解多少?
- 什么是领域模型
- 一直在 window 上面挂东西是否有什么风险
- 深度 SEO 优化的方式有哪些,从技术层面来说
答案:深度 SEO 优化涉及到一些技术层面的优化策略,以下是一些常见的方式:
1.网站结构优化:优化网站的结构,确保每个页面都可以被搜索引擎爬取和索引。使用合适的 HTML标签和语义化的内容结构,使搜索引擎能够更好地理解页面的内容。
2.网站速度优化:提升网站的加载速度对 SEO很重要。通过压缩和合并CSS 和 JavaScript 文件、优化图像、使用浏览器缓存、使用 CDN(内容分发网络)等技术手段来减少页面加载时间。
3.页面渲染优化:确保搜索引擎可以正常渲染和索引使用 JavaScript技术构建的单页面应用(SPA)或动态生成的内容。使用服务端渲染(SSR)或预渲染技术,确保搜索引擎能够获取到完整的页面内容。
4.URL 优化:使用短、描述性的 URL,并使用关键词来优化 URL结构。避免使用动态参数或过长的URL。
5.链接优化:内部链接和外部链接都对 SEO有影响。在网站内部设置相关性强的链接,使页面之间相互连接。外部链接是获取更多外部网站链接指向自己网站的重要手段,可以通过内容创作和社交媒体推广来获得更多高质量的外部链接。
6.Schema标记:使用结构化数据标记(SchemaMarkup)来标识网页内容,帮助搜索引擎更好地理解和展示网页信息。可以使用JSON-LD、Microdata 或 RDFa等标记格式。
7.XML网站地图:创建和提交 XML网站地图,提供网站的结构和页面信息,帮助搜索引擎更好地索引网站内容。
8.Robots.txt 文件:通过 Robots.txt 文件来指示搜索引擎哪些页面可以被爬取和索引,哪些页面不可访问。
9.HTTPS 加密:使用 HTTPS 协议来加密网站通信,确保数据安全和用户隐私,同时搜索引擎更倾向于收录和排名使用 HTTPS 的网站。
10.移动友好性:优化网站在移动设备上的显示和用户体验,确保网站具备响应式设计或移动版网站,以及快速加载和友好的操作性。
这些是深度 SEO 优化的一些常见技术层面的策略,通过综合运用这些策略,可以提升网站的搜索引擎可见性和排名。需要根据具体情况和搜索引擎的最佳
- 小程序为什么会有两个线程
- web 应用中如何对静态资源加载失败的场景做降级处理
- htm| 中前缀为 data-开头的元素属性是什么?
- 移动端如何实现上拉加载,下拉刷新?
- 如何判断dom元素是否在可视区域
- 前端如何用 canvas 来做电影院选票功能
- 如果不使用脚手架,如果用 webpack 构建一个自己的 react 应用
- 用 nodejs 实现一个命令行工具,统计输入目录下面指定代码的行数
- package.json 里面 sideEffects 属性的作用是啥
- script 标签上有那些属性,分别作用是啥?
- 为什么 SPA 应用都会提供一个 hash 路由,好处是什么?
- [React] 如何进行路由变化监听
- 单点登录是是什么,具体流程是什么
- web 页面如何禁止别人移除水印
- 用户访问页面白屏了,原因是啥,如何排查?
- 如何理解数据驱动视图,有哪些核心要素?
- vue-cli 都做了哪些事儿,有哪些功能?
- js 执行 100 万个任务,如何保证浏览器不卡顿?
- Js 放在 head 里和放在 body 里有什么区别?
- Eslint 代码检查的过程是啥?
- 虚拟混动加载原理是什么,用JS代码简单实现一个虚拟滚动加加载
- html的行内元素和块级元素的区别
- 介绍一下 requestldleCallback api
- documentFragment api是什么,有哪些使用场景?
- git pul 和 git fetch 有啥区别?
- 前端如何做页面主题色切换
- 前端视角-如何保证系统稳定性
- 如何统计长任务时间、长任务执行次数
- V8 里面的 JT 是什么?
- 用 JS 写一个 cookies 解析函数,输出结果为一个对象
- vue 中 Scoped styles 是如何实现样式隔离的,原理是啥?
- 样式隔离方式有哪些
- 在 S 中,如何解决递归导致栈溢出问题?
- 站点如何防止爬虫?
- ts 项目中,如何使用 node_modules 里面定义的全局类型 包到自己项目 src 下面使用?
- 不同标签页或窗口间的 【主动推送消息机制】的方式有哪 些?(不借助服务端)
- 浏览器对队头阻塞有什么优化?
- Webpack 项目中通过 script 标签引入资源,在项目中如何处理?
- 应用上线后,怎么通知用户刷新当前页面?
- Eslint 代码检查的过程是啥?
- HTTP是一个无状态的协议,那么Web应用要怎么保持用户的登录态呢?
- 如何检测网页空闲状态(一定时间内无操作)
- 为什么 vite 速度比 Webpack 快?
- 列表分页,快速翻页下的竞态问题
- git 仓库迁移应该怎么操作
- 如何禁止别人调试自己的前端页面代码
- web 系统里面,如何对图片进行优化?
- OAuth2.0 是什么登录方式
- 单点登录是如何实现的?
- 常见的登录鉴权方式有哪些?
- 需要在跨域请求中携带另外一个域名下的 Cookie 该如何操作?
- vite 和 webpack 在热更新上有啥区别?
Vite 和 Webpack 在热更新上有一些区别:
1.模块级别的热更新:Vite 使用浏览器原生的 ES 模块系统,可以实现模块级别的热更新,即只更新修改的模块,而不需要刷新整个页面。这样可以提供更快的开发选代速度。而在Webpack中,热更新是基于文件级别的,需要重新构建并刷新整个页面。
2.开发环境下的无构建:Vite 在开发环境下不会对代码进行打包构建,而是直接利用浏览器原生的模块导入功能,通过 HTTP 服务器提供模块的即时响应。这样可以避免了构建和重新编译的时间,更快地反映出代码的修改。而在 Webpack中,每次修改代码都需要重新构建和编译,耗费一定的时间。
3.构建环境下的优化:尽管 Vite 在开发环境下不进行打包构建,但在生产环境下,它会通过预构建的方式生成高性能的静态资源,以提高页面加载速度。而Webpack 则通过将所有模块打包成bundle 文件,进行代码压缩和优化,以及使用各种插件和配置来优化构建结果。
总的来说,Vite 在热更新上比 Webpack 更加快速和精细化,能够在开发过程中提供更好的开发体验和更快的反馈速度。但是,Webpack在构建环境下有更多的优化和功能,适用于更复杂的项目需求。
- 封装一个请求超时,发起重试的代码
- 前端如何设置请求超时时间 timeout
- nodeis 如何充分利用多核 CPU?
- 后端一次性返回树形结构数据,数据量非常大,前端该如何处理?
- 你认为组件封装的一些基本准则是什么?
- 页面加载速度提升(性能优化)应该从哪些反向来思考?
- 前端日志埋点 SDK 设计思路
- token 进行身份验证了解多少?
- 在前端应用如何进行权限设计?
- [低代码] 代码平台一般渲染是如何设计的?
- [低代码] 代码平台一般底层协议是怎么设计的
- [Webpack] 有哪些优化项目的手段?
- IndexedDB 存储空间大小是如何约束的?
- 浏览器的存储有哪些?
有想要的可以点赞+转发后,私信我【前端】即可