2023前端大厂高频面试题之项目篇

news/2024/10/29 5:28:54/

系列文章:
2023前端大厂面试题之JavaScript篇(1)
2023前端大厂面试题之JavaScript篇(2)
2023前端大厂面试题之JavaScript篇(3)
2023前端大厂面试题之JavaScript篇(4)
2023前端大厂高频面试题之CSS篇
2023前端大厂高频面试题之Vue篇(1)
2023前端大厂高频面试题之Vue篇(2)
2023大厂高频面试题之HTTP篇
2023前端大厂高频面试题之浏览器篇
2023大厂高频面试题之操作系统篇
2023大厂高频面试题之计算机网络篇

📒博客首页:若年封尘
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
🙏作者水平很有限,如有不妥,不吝赐教!
❤️期待一起交流,共同进步!

文章目录

    • 如何减少前端页面的首屏加载时间?
    • 网站性能优化
    • 说一下你在前端项目中遇到印象深刻的项目场景,并且怎么解决的?
    • 前端攻击有哪些,抵御前端攻击的方式有哪些
    • 前端工程化
    • 在做完前端项目之后,一般都会写哪些文档,readme里面写一些什么?

如何减少前端页面的首屏加载时间?

降低前端页面的首屏加载时间可以提高用户体验,增强用户留存率。以下是一些可能的方法:

  • gzip资源压缩:服务器把资源先压缩成.gz文件,然后浏览器下载之后再进行解压,从而达到提高访问效率。
  • 延迟加载非必要资源:一些网页组件,比如图片、音频和视频,可能不需要在加载初始页面时就被下载。通过延迟加载这些组件,可以减少初始页面的加载时间,提高页面速度。
  • 减少HTTP请求:减少网页加载时需要的HTTP请求,可以使用CSS Sprites(将多个图像合并为一个),合并和压缩JavaScript和CSS文件等方式。
  • 使用CDN:使用内容分发网络(CDN)可以通过将内容分布在多个服务器上来加快资源的加载速度。这可以提高首次页面加载的速度,尤其是对于全球用户。
  • 预取和缓存优化:合理使用浏览器缓存,包括HTTP缓存、资源缓存和数据缓存,以减小服务器压力,提升页面加载速度,以缩短页面加载时间。
  • 优化代码:优化前端代码,包括避免使用阻塞JavaScript、删除未使用的代码和资源、使用响应式图片等方法,可以优化性能,减少加载时间。

网站性能优化

1、采用图片的懒加载(延迟加载),减少页面第一次加载过程中http的请求次数
 具体步骤:
  1、页面开始加载时不去发送http请求,而是放置一张占位图
  2、当页面加载完时,并且图片在可视区域再去请求加载图片信息
2、使用雪碧图或者是说图片精灵。把所有相对较小的资源图片,绘制在一张大图上,只需要将大图下载下来,然后利用图片定位来讲小图展现在页面中(background-position:百分比,数值)。
3、能用css做的效果,不要用js做,能用原生js做的,不要轻易去使用第三方插件。避免引入第三方大量的库。而自己却只是用里面的一个小功能。
4、可缓存的AJAX
5、推迟加载内容
6、尽量所使用的字体图标或者SVG图标来代替传统png图。
7、减少对DOM操作,主要是减少DOM的重绘与回流(重排)。
8、根据域名划分页面内容
9、使iframe的数量最小
10、在js中尽量减少闭包的使用,因为使用闭包后,闭包所在的上下文不会被释放。
11、使用内容分发网络
12、尽量和并和压缩css和js文件。(将css文件和并为一个,将js合并为一个,可用webpack)减少http请求次数以及减少请求资源的大小。
……
在这里插入图片描述
详细的可以参考Vue项目优化、前端性能优化汇总、文章1、文章2

说一下你在前端项目中遇到印象深刻的项目场景,并且怎么解决的?

在前端项目中,有一次我遇到了一个印象深刻的场景是在一个电商网站项目中,需要处理大量的商品数据和图片展示,但由于数据量庞大,导致页面加载速度较慢,用户体验较差。

解决方案:

  • 图片懒加载:使用图片懒加载技术,即将图片的加载推迟到图片即将进入用户可视区域时再进行加载,减少了页面首次加载时的图片请求数量和页面加载时间。
  • 数据分页加载:采用分页加载的方式,每次加载部分商品数据,减少了一次性加载大量数据导致的页面卡顿和加载速度慢的问题。
  • 图片优化:对商品图片进行压缩和优化,使用合适的图片格式(如 WebP),减小图片文件大小,提高图片加载速度。
  • 缓存策略:合理使用浏览器缓存和CDN缓存,对静态资源进行缓存,减少服务器的请求压力和网络传输时间。
  • 代码优化:对前端代码进行性能优化,如合并、压缩和混淆 JavaScript 和 CSS 文件,减小文件大小,提高加载速度。
  • 响应式设计:采用响应式设计,使网站在不同设备上都能够良好地展示,提供更好的用户体验。
  • 性能监控:引入性能监控工具,监测页面加载性能和用户体验,并根据监测结果进行优化。
  • 用户反馈收集:收集用户反馈,了解用户在使用过程中的体验问题,及时修复和优化。

通过以上一系列的优化措施,成功地提升了网站的加载速度和用户体验,解决了项目中遇到的性能问题。

前端攻击有哪些,抵御前端攻击的方式有哪些

前端攻击指的是利用前端代码中的漏洞进行攻击的行为。以下是几种常见的前端攻击:

1.跨站脚本攻击(XSS):攻击者在页面中注入恶意脚本,从而窃取用户信息或者利用用户身份在网站上执行恶意操作。
2.跨站请求伪造(CSRF):攻击者利用受害者的身份在第三方网站上执行恶意操作,从而窃取用户信息或者以受害者的身份进行恶意操作。
3.点击劫持攻击:攻击者将一个透明的 iframe 放在一个看似正常的页面上,当用户点击页面时,实际上是在点击了 iframe 中的内容,从而执行恶意操作。

为了抵御前端攻击,可以采取以下一些防范措施
1.输入验证:对于所有用户输入的数据,都要进行有效性验证,防止恶意代码的注入。
2.输出编码:在向用户输出数据时,要对特殊字符进行编码,防止恶意代码的注入。
3.HTTP-only Cookie:将 cookie 标记为 HTTP-only,可以防止攻击者窃取用户 cookie。
4.CSP:Content Security Policy(内容安全策略)是一种安全策略,可以限制浏览器加载内容的来源,防止恶意代码的注入。
5.防止点击劫持:可以通过设置 X-Frame-Options 头信息或使用 JavaScript 脚本来防止点击劫持攻击。
6.定期更新依赖库和框架:及时更新使用的依赖库和框架,以保持软件的安全性,修复可能存在的漏洞。
7.跨站请求伪造(CSRF)防御:对于涉及到用户数据修改的操作,需验证请求的来源是否合法,可以通过生成和验证 token、使用 SameSite 标志、检查 Referer 等方式来防御 CSRF 攻击。
8.监控和日志记录:建立日志记录和异常监控系统,及时发现和响应潜在的安全威胁和攻击行为。
9.HTTPS 使用:使用 HTTPS 来加密前端与服务器之间的通信,防止数据被窃听和篡改,确保数据传输的安全性。
10.文件上传安全:对用户上传的文件进行严格的类型、大小、后缀等校验,防止上传恶意文件和文件包含漏洞。

前端工程化

工程化是一种思想,而不是某种技术。其主要目的为了提高效率和降低成本,即提高开发过程中的开发效率,减少不必要的重复工作时间等.

“一切能提升前端开发效率,提高前端应用质量的手段和工具都是前端工程化。”它可以降低大型项目的开发难度,有模块化、组件化、规范化和自动化等特点,已经成为前端发展的主流趋势。

在做完前端项目之后,一般都会写哪些文档,readme里面写一些什么?

在完成前端项目后,一般会写一些文档来记录项目的相关信息和使用说明。README文件是一种常见的文档,通常包含以下内容:

项目介绍:简要介绍项目的背景、目标和功能,让其他人了解项目的基本概况。
安装说明:提供项目的安装步骤和依赖项,包括所需的前端框架、库、工具等的安装方式和版本要求。
使用说明:详细描述项目的使用方法,包括如何运行项目、如何配置项目、如何使用项目的功能等。可以提供示例代码、演示链接或者截图来帮助其他人快速上手项目。
配置说明:介绍项目的配置项,包括环境变量、配置文件等的说明和用法。
功能列表:列出项目的主要功能和特性,以便其他人了解项目的功能范围和使用场景。
贡献指南:提供项目的贡献指南,包括如何参与项目的开发、如何提交问题和建议、如何贡献代码等。
版权信息:包含项目的许可证信息、版权声明等相关信息。
更新日志:记录项目的版本更新历史,包括版本号、更新内容和日期,方便其他人了解项目的发展和变更。

除了README文件,还可以根据项目的具体情况编写其他文档,如API文档、设计文档、测试文档等,以便更好地管理和维护项目。文档的编写应尽量清晰、详细和易懂,以方便其他人理解和使用项目。


http://www.ppmy.cn/news/57281.html

相关文章

【数据库复习】第四章数据库保护 1

数据库安全性: 数据库的一大特点是数据可以共享 数据共享必然带来数据库的安全性问题 数据库系统中的数据共享不能是无条件的共享 用户标识与鉴别 用户名和口令易被窃取,每个用户预先约定好一个计算过程或者函数 存取控制 常用存取控制方法 自主存…

第13章 项目合同管理

文章目录 13.2.1 按信息系统 范围 划分的合同分类 4451、总承包合同2、单项工程承包合同3、分包合同 13.2.2 按项目 付款方式 划分的合同分类 4461、总价合同2、成本补偿合同(卖方有利)3、工料合同 13.3.1 项目合同的内容 44713.3.2 项目合同签订的注意事…

【Java】类和对象,封装

目录 1.类和对象的定义 2.关键字new 3.this引用 4.对象的构造及初始化 5.封装 //包的概念 //如何访问 6.static成员 7.代码块 8.对象的打印 1.类和对象的定义 对象:Java中一切皆对象。 类:一般情况下一个Java文件一个类,每一个类…

时间序列分析-1

时间序列 是指将数值按其发生的时间先后顺序排列而成的数列。时间序列分析的主要目的是根据已有的历史数据对未来进行预测。经济数据中大多数以时间序列的形式给出。根据观察时间的不同,时间序列中的时间可以是年份、季度、月份或其他任何时间形式。如某股票的每天…

SimpleDateFormat以及Date的使用

Date Date currentTime new Date(); 获取当前的时间 输出: System.out.println(currentTime); 就会以这样的格式输出 那我们不想要这样的格式,而是输出格式怎么办呢? SimpleDateFormat闪亮登场 食用方法: SimpleDateForma…

SpringCloud实现电影微服务,也注册到 EurekaServer 中,通过 Http 协议访问已注册到生态圈中的用户微服务

SpringCloud(第 005 篇)电影微服务,也注册到 EurekaServer 中,通过 Http 协议访问已注册到生态圈中的用户微服务 一、大致介绍 1、在 eureka 服务治理框架中,微服务与微服务之间通过 Http 协议进行通信; 2…

hitcontraining_uaf

1,三连 基本信息:x86-32-el,堆题思路; 保护:Partial RELRO。 堆题多看一个Libc: 2,IDA分析 main功能: add_note()功能: malloc了两次: 8字节填充(利用点之一&#xf…

学习笔记:分支结构

✨博文作者:烟雨孤舟 💖 喜欢的可以 点赞 收藏 关注哦~~ ✍️ 作者简介: 一个热爱大数据的学习者 文章目录 目录 文章目录 简介 if循环 if...else 语句 if...else if...else 语句 if语句嵌套 switch 语句 嵌套 switch 语句 简介 顺序结构&am…