前端面试题(九)

45. Web 安全

  • 常见的 Web 安全问题有哪些?

    1. 跨站脚本攻击 (XSS):通过在网页中注入恶意脚本,攻击者可以窃取用户的敏感信息,劫持用户会话等。

      • 防御措施:对用户输入进行严格的校验和过滤,使用 Content Security Policy (CSP),避免直接渲染不可信的 HTML。
    2. 跨站请求伪造 (CSRF):攻击者通过伪造请求,诱导用户在不知情的情况下执行未授权操作。

      • 防御措施:使用 CSRF Token,验证请求的来源,设置 SameSite Cookie 属性。
    3. SQL 注入:攻击者通过向 SQL 查询中注入恶意代码来访问或篡改数据库中的数据。

      • 防御措施:使用预编译语句或 ORM,避免拼接 SQL 查询,严格验证输入。
  • 如何防止用户输入的 XSS 攻击?

    • 编码输出:对所有的用户输入进行 HTML 编码,避免直接插入到 DOM 中。
    • 使用安全的库:例如使用 React 和 Vue 这样的框架,它们默认会对动态插入的内容进行编码,减少 XSS 攻击的风险。

46. Babel

  • Babel 是什么?

    • Babel 是一个 JavaScript 编译器,用于将现代 JavaScript 代码(ES6+)转换为向后兼容的代码,以便在较老的浏览器中运行。
  • Babel 是如何工作的?
    Babel 的工作流程包括三个主要阶段:

    1. 解析 (Parse):将源代码转换为抽象语法树 (AST)。
    2. 转换 (Transform):遍历 AST 并应用各种转换规则(例如将 ES6 语法转换为 ES5)。
    3. 生成 (Generate):将经过转换的 AST 重新生成代码。
  • 如何配置 Babel?
    Babel 的配置文件通常是 .babelrc,里面可以配置不同的插件和预设。例如,@babel/preset-env 是一个非常常用的预设,用于根据目标浏览器环境转换 JavaScript 代码。

    {"presets": ["@babel/preset-env"]
    }
    

47. 代码规范

  • 为什么前端开发中需要遵循代码规范?

    1. 提高代码可读性:统一的代码风格使得团队中的所有成员能够轻松阅读和理解代码。
    2. 减少代码错误:规范的代码结构可以避免常见的编程错误,提高代码的质量。
    3. 便于维护:良好的代码规范使得代码在以后维护时更容易理解和修改。
  • 常用的代码规范工具有哪些?

    1. ESLint:JavaScript 代码的静态分析工具,帮助开发者找到代码中的潜在问题。
      • 可以通过 .eslintrc 文件来配置 ESLint 规则,或者使用社区提供的预设(例如 eslint:recommended)。
    2. Prettier:一个自动格式化代码的工具,保证代码风格一致,尤其适合在团队协作中使用。
    3. Stylelint:用于检查 CSS 代码规范的工具,可以帮助开发者确保样式表的书写符合团队要求。
  • 如何在项目中集成 ESLint 和 Prettier?

    1. 安装依赖:
      npm install --save-dev eslint prettier
      
    2. 配置 ESLint 和 Prettier,确保两个工具可以无冲突地协同工作。可以使用 eslint-plugin-prettier 将 Prettier 规则集成到 ESLint 中,保证代码在格式化时符合 lint 规则。

48. 服务端渲染 (SSR)

  • 什么是服务端渲染 (SSR)?

    • 服务端渲染 (Server-Side Rendering) 是指在服务器端生成完整的 HTML 页面并发送到客户端,而不是让浏览器在客户端通过 JavaScript 动态生成页面内容。SSR 可以显著提升页面首次加载的速度和 SEO 友好性。
  • 服务端渲染的优势是什么?

    1. SEO 友好:SSR 页面在服务端就生成了完整的 HTML 文档,因此搜索引擎爬虫可以更好地抓取页面内容。
    2. 首次加载速度更快:SSR 在服务端生成了完整的 HTML 文件,可以减少浏览器渲染和加载的时间。
    3. 提升用户体验:由于页面内容在服务端生成,用户可以更快地看到页面内容,尤其适合内容密集型的网站。
  • SSR 和客户端渲染 (CSR) 的区别?

    1. SSR:服务器生成 HTML 页面,浏览器直接展示。
    2. CSR:浏览器下载 HTML 和 JavaScript 文件,然后由 JavaScript 动态生成页面内容。
  • 如何在 React 中实现服务端渲染?
    使用 Next.js 这样的框架可以帮助开发者快速实现 SSR。Next.js 默认支持服务端渲染,开发者只需配置页面和 API 路由即可。

49. 单页应用 (SPA) 与多页应用 (MPA)

  • 什么是单页应用 (SPA)?

    • 单页应用 (Single Page Application, SPA) 是一种网页应用,它只有一个 HTML 页面,所有的内容和功能通过 JavaScript 动态加载并更新,用户在使用过程中不会刷新整个页面。
  • SPA 的优点和缺点是什么?

    • 优点

      1. 用户体验流畅:由于页面不需要刷新,用户的交互体验更加顺畅。
      2. 前后端分离:前后端开发可以独立进行,提升开发效率。
    • 缺点

      1. SEO 差:由于内容是动态加载的,搜索引擎爬虫难以抓取页面内容。
      2. 首次加载慢:因为需要加载大量的 JavaScript 代码,SPA 的首次加载时间可能较长。
  • 什么是多页应用 (MPA)?

    • 多页应用 (Multi-Page Application, MPA) 是一种传统的网页应用架构,每次用户请求都会加载一个新的页面,页面之间的跳转需要重新向服务器请求完整的 HTML 文档。
  • MPA 的优点和缺点是什么?

    • 优点

      1. SEO 友好:每个页面都是独立的,搜索引擎可以很容易地抓取和索引内容。
      2. 加载速度快:每个页面都只加载与当前页面相关的资源,减少了首次加载时间。
    • 缺点

      1. 用户体验不如 SPA 流畅:页面跳转时会有明显的加载和刷新过程。
      2. 开发复杂:每个页面都需要独立开发和维护,前后端耦合较高。

50. 模块化开发

  • 什么是模块化开发?

    • 模块化开发 是将代码拆分为独立的、可复用的模块,每个模块专注于实现一个功能或业务逻辑,模块之间通过定义的接口进行通信。
  • 模块化开发的优势是什么?

    1. 代码复用:模块化使得功能可以在不同的项目或页面中重复使用,减少代码冗余。
    2. 便于维护:将代码分离成小模块后,便于进行维护和调试,当某个模块出现问题时,能够快速定位并修复。
    3. 提升开发效率:模块化允许开发者同时开发多个模块,提升团队协作的效率。
  • 如何在 JavaScript 中实现模块化?

    1. ES6 模块:使用 importexport 关键字实现模块之间的引入和导出。
      // module.js
      export const greeting = "Hello, World!";// main.js
      import { greeting } from './module.js';
      console.log(greeting);  // 输出 "Hello, World!"
      
    2. CommonJS 模块:在 Node.js 环境中使用的模块系统,使用 requiremodule.exports
      // module.js
      module.exports = { greeting: "Hello, World!" };// main.js
      const { greeting } = require('./module.js');
      console.log(greeting);  // 输出 "Hello, World!"
      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1550639.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

软件设计(实验三):经典软件体系结构风格(二)

实验目的: 本实验旨在帮助学生理解和实现两种常见的软件体系结构风格:事件的隐式调用软件体系结构、层次软件体系结构。通过编写具体的代码,学生将能够掌握这两种风格的基本原理,并能够评估它们在不同场景下的适用性和优劣。 基…

string类的使用(上)

目录 1.string类的概念 2.string的构造函数(实现初始化) 3.对string类容量获取和操作 4.string类对象的访问和遍历 4.1operator[] 4.2begin和end 4.3 rbegin 和 rend 4.4迭代器分类 4.5范围for(自动实现遍历) 5.string类…

http请求过程 part-2

http请求过程 http应用层 实体 实体分为实体首部和实体主体,实体首部是用来描述主体的 实体部分是可选的,它被用来运送请求或者响应的数据 传输层-TCP HTTP连接是建立在TCP连接的基础上 以流形式通过一条已经打开的TCP连接,按顺序进行…

next 从入门到精通

next 从入门到精通 相关链接 演示地址 演示地址 源码地址 源码地址 获取更多 获取更多 hello 大家好,我是 数擎科技,今天来跟大家聊聊 Next.js 如果你遇到任何问题,欢迎联系我 m-xiaozhicloud 什么是 Next.js Next.js 是一个基于 Reac…

27 C 语言标准库 <stdio.h> 中的两个字符串函数:sprintf、sscanf,不同编码方式的中文字符长度

目录 1 sprintf 1.1 函数原型 1.2 功能说明 1.3 案例演示 1.4 注意事项 2 sscanf 2.1 函数原型 2.2 功能说明 2.3 案例演示 2.4 使用 %s 解析字符串的易错点 2.4.1 空白符问题 2.4.2 顺序问题 2.4.3 中文字符长度问题 2.5 注意事项 1 sprintf 1.1 函数原型 spri…

求恰好为k 的区间数量(滑动窗口进阶版)

前言:之前做的滑动窗口都是可以直接一遍过,然后每次右边确定了以后,左边不断缩小寻找最优解 但是这个题目呢我们不仅要保证我们的辅音字母的个数恰好为k,其他元音字母的个数只要每个都出现了就行,这个就导致我们不能用…

【IEEE PDF eXpress】格式不对

目录 一、问题二、解决方法 一、问题 word的文档,用IEEE PDF eXpress网站生成pdf后,提交论文出现错误: Document validation failed due to the following errors: Content exceeds IEEE template margins for its format (Page 1:Bottom).…

Java_TestNg

TestNg 前言支持特性 使用步骤1.引入库 常用注解Test注解BeforeSuite AfterSuiteAfterClass BeforeClassAfterTest BeforeTestAfterGroups BeforeGroupsBeforeMethod AfterMethodDataProviderFactoryListenersPatameters断言相等 不相等true/falsenull / !nullequals / !equals…

Leetcode 887. 鸡蛋掉落

1.题目基本信息 1.1.题目描述 给你 k 枚相同的鸡蛋&#xff0c;并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑。 已知存在楼层 f &#xff0c;满足 0 < f < n &#xff0c;任何从 高于 f 的楼层落下的鸡蛋都会碎&#xff0c;从 f 楼层或比它低的楼层落下的鸡蛋都…

AIGC时代,大模型微调如何发挥最大作用?

人工智能的快速发展推动了大模型的广泛应用&#xff0c;它们在语言、视觉、语音等领域的应用效果已经越来越好。但是&#xff0c;训练一个大模型需要巨大的计算资源和时间&#xff0c;为了减少这种资源的浪费&#xff0c;微调已经成为一种流行的技术。微调是指在预训练模型的基…

DVWA | File Inclusion(文件包含)渗透测试

概念&#xff1a; 漏洞产生原因&#xff1a; 主要是由于开发人员没有对用户输入的文件路径进行严格的过滤和验证。例如&#xff0c;如果一个 Web 应用程序接受用户输入的文件路径&#xff0c;然后使用这个路径进行文件包含&#xff0c;而没有对用户输入进行任何检查&#xff0c…

【笔记】数据结构12

文章目录 2013年408应用题41方法一方法二 看到的社区的一个知识总结&#xff0c;这里记录一下。 知识点汇总 2013年408应用题41 解决方法&#xff1a; 方法一 &#xff08;1&#xff09;算法思想 算法的策略是从前向后扫描数组元素&#xff0c;标记出一个可能成为主元素的元…

【YOLO目标检测二维码数据集】共3112张、已标注txt格式、有训练好的yolov5的模型

目录 说明图片示例 说明 数据集格式&#xff1a;YOLO格式 图片数量&#xff1a;3112 标注数量(txt文件个数)&#xff1a;3112 标注类别数&#xff1a;1 标注类别名称&#xff1a;qrcode 数据集下载&#xff1a;二维码数据集 图片示例 数据集图片&#xff1a; 数据集…

yolov8/9/10模型在垃圾分类检测中的应用【代码+数据集+python环境+GUI系统】

yolov8/9/10模型在垃圾分类检测中的应用【代码数据集python环境GUI系统】 yolov8/9/10模型在垃圾分类检测中的应用【代码数据集python环境GUI系统】 背景意义 随着计算机视觉技术和深度学习算法的快速发展&#xff0c;图像识别、对象检测、图像分割等技术在各个领域得到了广泛…

C++类和对象(下) 初始化列表 、static成员、友元、内部类等等

1.再探构造函数 之前使用构造函数时都是在函数体内初始化成员变量&#xff0c;还有一种构造函数的用法&#xff0c;叫做初始化列表&#xff1b;那么怎么使用呢&#xff1f; 使用方法用冒号开始(" : ")要写多个就用逗号(" , ")隔开数据成队列每个成员变量后…

谷歌收录批量查询,如何批量查询谷歌收录以及提交网站进行收录的方法

在SEO优化过程中&#xff0c;了解并监控网站在谷歌搜索引擎中的收录情况至关重要。本文将详细介绍如何批量查询谷歌收录以及提交网站进行收录的方法&#xff0c;帮助网站管理员和SEO专家更有效地管理和优化网站。 一、谷歌收录批量查询方法 1.使用搜索引擎的site指令 …

前端考核总结

目录 JavaScript的基本数据类型有哪些&#xff1f;JavaScript中数据类型的检测方法JavaScript如何判断对象中的属性存在自身还是原型链上flex布局HTML5新标签Vue的基本概念Vue生命周期JavaScript中闭包的基本概念防抖节流双等号与三等号的区别显式转换 JavaScript的基本数据类型…

fastadmin搜索刷新列表,怎么限制用户频繁点击?

文章目录 fastadmin搜索刷新列表&#xff0c;怎么限制用户频繁点击&#xff1f;解决方案fastadmin事件方法实现完结 fastadmin搜索刷新列表&#xff0c;怎么限制用户频繁点击&#xff1f; fastadmin目前有个很致命的问题&#xff0c;就是用户可以频繁的点击搜索等按钮&#xf…

Qt --- 界面优化 --- QSS和绘图API

界面优化 》美化 一个程序的界面是否好看&#xff0c;是否重要呢。 有些面向专业领域的程序&#xff0c;界面好看与否&#xff0c;不是看关键&#xff0c;更关键的是实际的效果。有些面向普通用户领域的程序&#xff0c;界面好看&#xff0c;还是很大的加分项。 界面优化 Qt…

奖金高达 110 万元,Spatial Joy 2024 全球 AR 应用开发大赛启动

今年是AR应用开发大赛第三届&#xff0c;恰逢Rokid成立十周年&#xff0c;我们推出全新的大赛品牌“Spatial Joy”&#xff0c;引领开发者享受开发乐趣&#xff0c;为其打造充满挑战和惊喜的开发之旅&#xff0c;逐渐成为空间计算时代全球最大AR应用开发大赛。回顾大赛发展&…