温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

web前端高频知识点面试题有哪些

发布时间:2023-03-07 09:50:03 来源:亿速云 阅读:102 作者:iii 栏目:web开发

Web前端高频知识点面试题有哪些

目录

  1. HTML
  2. CSS
  3. JavaScript
  4. ES6+
  5. TypeScript
  6. Vue.js
  7. React
  8. Node.js
  9. Webpack
  10. 性能优化
  11. 浏览器原理
  12. 网络协议
  13. 安全
  14. 数据结构与算法
  15. 设计模式
  16. 前端工程化
  17. 跨平台开发
  18. 其他

HTML

1. HTML5 新特性有哪些?

HTML5 引入了许多新特性,主要包括:

  • 语义化标签:如 <header><footer><article><section> 等,使得页面结构更加清晰。
  • 表单增强:新增了 <input> 类型如 emailurldate 等,以及 placeholderrequired 等属性。
  • 多媒体支持:新增了 <audio><video> 标签,使得在网页中嵌入音频和视频更加方便。
  • Canvas 和 SVG:提供了 <canvas> 标签用于绘制图形,以及 <svg> 标签用于矢量图形。
  • 本地存储:引入了 localStoragesessionStorage,用于在客户端存储数据。
  • Web Workers:允许在后台运行 JavaScript 代码,避免阻塞主线程。
  • WebSocket:提供了全双工通信协议,使得客户端和服务器之间的实时通信更加高效。

2. 什么是语义化标签?为什么要使用语义化标签?

语义化标签是指使用具有明确含义的 HTML 标签来描述页面内容的结构。例如,使用 <header> 表示页面的头部,使用 <footer> 表示页面的底部。

为什么要使用语义化标签?

  • 提高可读性:语义化标签使得代码更加清晰易懂,便于开发者理解和维护。
  • SEO 优化:搜索引擎更容易理解页面的结构,从而提高页面的搜索排名。
  • 无障碍访问:屏幕阅读器等辅助工具可以更好地解析页面内容,提升用户体验。

3. HTML 中的 <meta> 标签有哪些常见用途?

<meta> 标签用于提供页面的元数据,常见的用途包括:

  • 字符编码<meta charset="UTF-8"> 指定页面的字符编码。
  • 视口设置<meta name="viewport" content="width=device-width, initial-scale=1.0"> 用于移动端页面适配。
  • 页面描述<meta name="description" content="页面描述"> 提供页面的简短描述。
  • 关键词<meta name="keywords" content="关键词1, 关键词2"> 提供页面的关键词,有助于 SEO。
  • 作者信息<meta name="author" content="作者名"> 提供页面的作者信息。

4. HTML 中的 <script> 标签的 asyncdefer 属性有什么区别?

<script> 标签的 asyncdefer 属性都用于控制脚本的加载和执行顺序,但它们的行为有所不同:

  • async:脚本会异步加载,加载完成后立即执行。多个 async 脚本的执行顺序不确定。
  • defer:脚本会异步加载,但会在文档解析完成后按照顺序执行。

使用场景:

  • async:适用于不依赖其他脚本的独立脚本,如广告、统计代码等。
  • defer:适用于需要按顺序执行的脚本,如依赖其他脚本的库。

5. HTML 中的 <iframe> 标签有什么作用?如何使用?

<iframe> 标签用于在页面中嵌入另一个 HTML 页面。常见的用途包括嵌入地图、视频、广告等。

基本用法:

<iframe src="https://www.example.com" width="600" height="400"></iframe>

常用属性:

  • src:指定嵌入页面的 URL。
  • widthheight:指定嵌入页面的宽度和高度。
  • frameborder:指定是否显示边框,通常设置为 0 以去除边框。
  • sandbox:用于限制嵌入页面的行为,如禁止脚本执行、表单提交等。

6. HTML 中的 <canvas><svg> 有什么区别?

<canvas><svg> 都用于在网页中绘制图形,但它们的工作原理和适用场景有所不同:

  • <canvas>

    • 基于像素的绘图 API,适合处理复杂的图形和动画。
    • 通过 JavaScript 动态绘制图形,适合游戏、数据可视化等场景。
    • 不支持事件处理,需要手动实现交互逻辑。
  • <svg>

    • 基于矢量的图形格式,适合处理简单的图形和图标。
    • 通过 XML 描述图形,适合图标、图表等场景。
    • 支持事件处理,可以直接添加交互逻辑。

7. HTML 中的 <form> 标签有哪些常用属性?

<form> 标签用于创建表单,常见的属性包括:

  • action:指定表单提交的 URL。
  • method:指定表单提交的 HTTP 方法,如 GETPOST
  • enctype:指定表单数据的编码类型,如 application/x-www-form-urlencoded(默认)、multipart/form-data(文件上传)等。
  • target:指定表单提交后响应的显示位置,如 _blank(新窗口)、_self(当前窗口)等。
  • autocomplete:指定是否启用表单的自动填充功能。

8. HTML 中的 <input> 标签有哪些常用类型?

<input> 标签用于创建各种输入控件,常见的类型包括:

  • text:单行文本输入框。
  • password:密码输入框。
  • email:电子邮件输入框。
  • url:URL 输入框。
  • number:数字输入框。
  • date:日期选择器。
  • checkbox:复选框。
  • radio:单选框。
  • file:文件上传控件。
  • submit:提交按钮。
  • reset:重置按钮。
  • button:普通按钮。

9. HTML 中的 <label> 标签有什么作用?

<label> 标签用于为表单控件添加标签,提升用户体验和可访问性。通过 for 属性将 <label> 与对应的表单控件关联起来,点击标签时可以聚焦到对应的控件。

示例:

<label for="username">用户名:</label>
<input type="text" id="username" name="username">

10. HTML 中的 <table> 标签有哪些常用子标签?

<table> 标签用于创建表格,常见的子标签包括:

  • <thead>:表头部分。
  • <tbody>:表体部分。
  • <tfoot>:表尾部分。
  • <tr>:表格行。
  • <th>:表头单元格。
  • <td>:表格单元格。

示例:

<table>
  <thead>
    <tr>
      <th>姓名</th>
      <th>年龄</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>25</td>
    </tr>
    <tr>
      <td>李四</td>
      <td>30</td>
    </tr>
  </tbody>
</table>

CSS

1. CSS 盒模型是什么?标准盒模型和 IE 盒模型有什么区别?

CSS 盒模型是用于描述元素在页面中占据空间的模型,包括内容区域、内边距、边框和外边距。

标准盒模型(W3C 盒模型): - 元素的宽度和高度只包括内容区域,不包括内边距、边框和外边距。 - 计算公式:width = content width

IE 盒模型(怪异盒模型): - 元素的宽度和高度包括内容区域、内边距和边框,但不包括外边距。 - 计算公式:width = content width + padding + border

如何切换盒模型:

/* 标准盒模型 */
box-sizing: content-box;

/* IE 盒模型 */
box-sizing: border-box;

2. CSS 中的 position 属性有哪些值?它们有什么区别?

position 属性用于指定元素的定位方式,常见的值包括:

  • static:默认值,元素按照正常的文档流进行布局。
  • relative:相对定位,元素相对于其正常位置进行偏移。
  • absolute:绝对定位,元素相对于最近的已定位祖先元素进行定位。
  • fixed:固定定位,元素相对于浏览器窗口进行定位,不随页面滚动而移动。
  • sticky:粘性定位,元素在滚动到特定位置时变为固定定位。

3. CSS 中的 display 属性有哪些常用值?它们有什么区别?

display 属性用于指定元素的显示方式,常见的值包括:

  • block:块级元素,独占一行,可以设置宽度和高度。
  • inline:行内元素,不独占一行,不能设置宽度和高度。
  • inline-block:行内块元素,不独占一行,但可以设置宽度和高度。
  • none:元素不显示,且不占据空间。
  • flex:弹性盒子布局,用于创建灵活的布局。
  • grid:网格布局,用于创建复杂的网格布局。

4. CSS 中的 float 属性有什么作用?如何清除浮动?

float 属性用于使元素浮动在页面的左侧或右侧,常用于实现文字环绕图片的效果。

清除浮动的方法:

  • 使用 clear 属性:在浮动元素后面添加一个空元素,并设置 clear: both;
  • 使用 overflow 属性:在父元素上设置 overflow: hidden;overflow: auto;
  • 使用伪元素:在父元素上使用 ::after 伪元素清除浮动。
.clearfix::after {
  content: "";
  display: block;
  clear: both;
}

5. CSS 中的 flexbox 布局有哪些常用属性?

flexbox 是一种弹性盒子布局模型,常用的属性包括:

  • display: flex;:将容器设置为弹性盒子布局。
  • flex-direction:指定主轴的方向,如 row(水平)、column(垂直)。
  • justify-content:指定主轴上的对齐方式,如 flex-startcenterspace-between
  • align-items:指定交叉轴上的对齐方式,如 flex-startcenterstretch
  • flex-wrap:指定是否换行,如 nowrap(不换行)、wrap(换行)。
  • align-content:指定多行内容在交叉轴上的对齐方式。

6. CSS 中的 grid 布局有哪些常用属性?

grid 是一种网格布局模型,常用的属性包括:

  • display: grid;:将容器设置为网格布局。
  • grid-template-columns:指定列的宽度。
  • grid-template-rows:指定行的高度。
  • grid-gap:指定网格之间的间距。
  • grid-columngrid-row:指定元素在网格中的位置。
  • justify-itemsalign-items:指定网格项在单元格内的对齐方式。
  • justify-contentalign-content:指定网格在容器内的对齐方式。

7. CSS 中的 BEM 命名规范是什么?

BEM 是一种 CSS 命名规范,全称为 Block Element Modifier,用于提高 CSS 代码的可维护性和可读性。

  • Block:独立的模块或组件,如 .header.menu
  • Element:块中的子元素,如 .header__logo.menu__item
  • Modifier:块或元素的状态或变体,如 .header--fixed.menu__item--active

示例:

<div class="header">
  <div class="header__logo"></div>
  <div class="header__menu">
    <div class="header__menu__item header__menu__item--active"></div>
  </div>
</div>

8. CSS 中的 伪类伪元素 有什么区别?

  • 伪类:用于选择元素的特定状态,如 :hover:focus:nth-child()
  • 伪元素:用于创建不在 DOM 中的虚拟元素,如 ::before::after::first-line

示例:

/* 伪类 */
a:hover {
  color: red;
}

/* 伪元素 */
p::before {
  content: "前缀";
}

9. CSS 中的 媒体查询 是什么?如何使用?

媒体查询用于根据设备的特性(如屏幕宽度、分辨率)应用不同的样式,常用于响应式设计。

示例:

/* 当屏幕宽度小于 600px 时应用此样式 */
@media (max-width: 600px) {
  body {
    background-color: lightblue;
  }
}

10. CSS 中的 动画过渡 有什么区别?

  • 动画:通过 @keyframes 定义动画的关键帧,可以控制动画的每一帧。
  • 过渡:通过 transition 定义元素在状态变化时的过渡效果,如颜色、大小等。

示例:

/* 动画 */
@keyframes slide {
  from { transform: translateX(0); }
  to { transform: translateX(100px); }
}

.element {
  animation: slide 2s infinite;
}

/* 过渡 */
.element {
  transition: background-color 0.5s ease;
}

.element:hover {
  background-color: red;
}

JavaScript

1. JavaScript 中的数据类型有哪些?

JavaScript 中的数据类型分为两大类:原始类型引用类型

  • 原始类型

    • number:数字,包括整数和浮点数。
    • string:字符串。
    • boolean:布尔值,truefalse
    • null:表示空值。
    • undefined:表示未定义的值。
    • symbol:表示唯一的标识符(ES6 新增)。
  • 引用类型

    • object:对象,包括数组、函数、日期等。

2. JavaScript 中的 ===== 有什么区别?

  • ==:宽松相等,会进行类型转换后再比较。
  • ===:严格相等,不会进行类型转换,只有类型和值都相同时才返回 true

示例:

1 == '1';  // true
1 === '1'; // false

3. JavaScript 中的 闭包 是什么?有什么作用?

闭包是指函数能够访问其词法作用域中的变量,即使函数在其词法作用域之外执行。

作用:

  • 数据封装:可以创建私有变量,避免全局污染。
  • 函数柯里化:通过闭包实现函数的柯里化,即部分应用函数参数。

示例:

function createCounter() {
  let count = 0;
  return function() {
    count++;
    return count;
  };
}

const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2

4. JavaScript 中的 原型链 是什么?

原型链是 JavaScript 中实现继承的机制。每个对象都有一个原型对象,通过 __proto__ 属性指向其原型对象。当访问对象的属性或方法时,如果对象本身没有该属性或方法,JavaScript 会沿着原型链向上查找,直到找到该属性或方法或到达原型链的顶端(null)。

示例:

function Person(name) {
  this.name = name;
}

Person.prototype.sayHello = function() {
  console.log(`Hello, ${this.name}`);
};

const person = new Person('Alice');
person.sayHello(); // Hello, Alice

5. JavaScript 中的 this 指向什么?

this 的指向取决于函数的调用方式:

  • 全局上下文:在全局作用域中,this 指向 window(浏览器)或 global(Node.js)。
  • 函数调用:在普通函数中,this 指向 window(非严格模式)或 undefined(严格模式)。
  • 方法调用:在对象方法中,this 指向调用该方法的对象。
  • 构造函数:在构造函数中,this 指向新创建的对象。
  • 箭头函数:箭头函数没有自己的 thisthis 指向外层作用域的 this

示例:

const obj = {
  name: 'Alice',
  sayHello: function() {
    console.log(`Hello, ${this.name}`);
  }
};

obj.sayHello(); // Hello, Alice

6. JavaScript 中的 事件循环 是什么?

事件循环是 JavaScript 处理异步操作的机制。JavaScript 是单线程的,但通过事件循环可以实现非阻塞的异步操作。

事件循环的工作流程:

  1. 执行同步代码:首先执行所有的同步代码。
  2. 处理微任务:执行所有的微任务(如 Promisethen 回调)。
  3. 处理宏任务:执行一个宏任务(如 setTimeout 回调)。
  4. 重复:重复上述步骤,直到所有任务执行完毕。
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI