首页 > 400个最常见的 JavaScript 面试问答(6)
头像
海拥
编辑于 08-03 16:58
+ 关注

400个最常见的 JavaScript 面试问答(6)

本文正在参与【[ 面霸养成记 ] 】 征文活动,一起来聊聊校招的那些事吧,牛客周边和百元京东卡等你来领~

写在前面的

大家好,我是 海拥 ,专注于前端知识的分享。今天将给大家带来的是 400 个最常见的 JavaScript 面试问答第六部分。接下来我会持续更新(争取日更,也可能每周3-5篇),每小节大概 10 道题左右,总共会有 400 多道。

大家一定要记得点赞收藏呀!!!

编号 问题
1 在 JavaScript 中创建对象的可行方法有哪些?
2 什么是原型链?
3 call、apply、bind有什么区别?
4 什么是 JSON 及其常见操作?
5 数组slice()方法的目的是什么?
6 数组splice()方法的目的是什么?
7 slice()和splice()有什么区别?
8 你如何比较 Object 和 Map
9 == 和 === 运算符有什么区别?
10 什么是 lambda 或 箭头函数?
11 什么是头等函数?
12 什么是一阶函数?
13 什么是高阶函数?
14 什么是一元函数?
15 什么是柯里化函数?
16 什么是纯函数?
17 let 关键字的用途是什么?
18 let 和 var 有什么区别?
19 为什么选择 let 这个名字作为关键字?
20 你如何在没有错误的情况下重新声明 switch 块中的变量?
21 什么是暂时性死区?
22 什么是IIFE(立即执行函数表达式)?
23 使用模块有什么好处?
24 什么是memoization(记忆)?
25 什么是Hoisting(变量提升)?
26 ES6 中的类是什么?
27 什么是closures(闭包)?
28 什么是modules(模块)?
29 为什么需要模块?
30 javascript 中的作用域是什么?
31 什么是Service Worker?
32 如何使用 Service Worker 操作 DOM?
33 如何在 Service Worker 重新启动时重用信息?
34 什么是 IndexedDB?
35 什么是 web storage?
36 什么是 post message?
37 什么是 Cookie ?
38 为什么需要 Cookie ?
39 cookie 中有哪些选项 ?
40 你如何删除cookie ?
41 cookie、本地存储和会话存储有什么区别 ?
42 localStorage 和 sessionStorage 的主要区别是什么?
43 你如何访问web 存储?
44 会话存储有哪些可用的方法?
45 什么是存储事件及其事件处理程序?
46 为什么需要web 存储?
47 你如何检查 Web 存储浏览器支持?
48 你如何检查web workers浏览器支持?
49 举个 web worker 的例子
50 web worker 对 DOM 的限制是什么?
51 什么是promise?
52 为什么需要promise?
53 promise的三种状态是什么?
54 什么是回调函数?
55 为什么我们需要回调?
56 什么是回调地狱?
57 什么是服务器发送事件?
58 你如何接收服务器发送的事件通知?
59 你如何检查浏览器对服务器发送事件的支持?
60 服务器发送的事件有哪些可用的事件?

51.什么是promise?

promise是一个对象,它可能会在未来的某个时间产生一个单一的值,其中有一个已解决的值或一个未解决的原因(例如,网络错误)。它将处于 3 种可能状态之一:已完成、已拒绝或未决。

Promise 创建的语法如下所示,

 const promise = new Promise(function(resolve, reject) {
      // promise description
    })

承诺的用法如下,

const promise = new Promise(resolve => {
  setTimeout(() => {
    resolve("I'm a Promise!");
  }, 5000);
}, reject => {

});

promise.then(value => console.log(value));

⬆ 返回顶部


52.为什么需要promise?

Promise 用于处理异步操作。它们通过减少回调地狱和编写更干净的代码为回调提供了一种替代方法。

⬆ 返回顶部


53.promise的三种状态是什么?

Promise 具有三种状态:

  • Pending:这是操作开始前 Promise 的初始状态
  • 已完成:此状态表示指定的操作已完成。
  • Rejected:此状态表示操作未完成。在这种情况下,将抛出错误值。

⬆ 返回顶部


54.什么是回调函数?

回调函数是作为参数传递给另一个函数的函数。这个函数在外部函数内部调用以完成一个动作。

我们举一个简单的例子来说明如何使用回调函数

function callbackFunction(name) {
  console.log('Hello ' + name);
}

function outerFunction(callback) {
  let name = prompt('Please enter your name.');
  callback(name);
}

outerFunction(callbackFunction);

⬆ 返回顶部


55.为什么我们需要回调?

回调是必需的,因为 javascript 是一种事件驱动的语言。这意味着 javascript 将在侦听其他事件的同时继续执行,而不是等待响应。
让我们举一个例子,第一个函数调用 API 调用(由 setTimeout 模拟)和下一个函数记录消息。

function firstFunction(){
  // 模拟代码延迟
  setTimeout( function(){
    console.log('第一个函数调用');
  }, 1000 );
}
function secondFunction(){
  console.log('第二个函数调用');
}
firstFunction();
secondFunction();

Output
// 第二个函数调用
// 第一个函数调用

从输出中可以看出,javascript 没有等待第一个函数的响应,并且执行了剩余的代码块。因此,回调用于确保某些代码在其他代码完成执行之前不会执行。

⬆ 返回顶部


56.什么是回调地狱?

回调地狱是一种具有多个嵌套回调的反模式,这使得在处理异步逻辑时代码难以阅读和调试。回调地狱看起来像下面,

async1(function(){
    async2(function(){
        async3(function(){
            async4(function(){
                ....
            });
        });
    });
});

⬆ 返回顶部


57.什么是服务器发送事件?

服务器发送事件 (SSE) 是一种服务器推送技术,使浏览器能够通过 HTTP 连接从服务器接收自动更新,而无需求助于轮询。这些是一种单向通信通道 - 事件仅从服务器流向客户端。可以用于博客更新、股票价格更新、新闻提要等。

⬆ 返回顶部


58.如何接收服务器发送的事件通知?

EventSource 对象用于接收服务器发送的事件通知。例如,您可以从服务器接收消息,如下所示,

if(typeof(EventSource) !== "undefined") {
  var source = new EventSource("sse_generator.js");
  source.onmessage = function(event) {
    document.getElementById("output").innerHTML += event.data + "<br>";
  };
}

⬆ 返回顶部


59.如何检查浏览器对服务器发送事件的支持?

你可以在使用之前对服务器发送的事件执行浏览器支持,如下所示,

if(typeof(EventSource) !== "undefined") {
  // 支持服务器发送的事件,在这里会有一些代码
} else {
  // 不支持服务器发送的事件
}

⬆ 返回顶部


60.服务器发送的事件有哪些可用的事件?

以下是可用于服务器发送事件的事件列表

活动 说明
open 它在打开与服务器的连接时使用
message 收到消息时使用此事件
error 发生错误时发生

⬆ 返回顶部


最近牛客在搞一个秋招同行计划,邀请大家一起记录自己的笔试,面试经历,写一篇讨论帖@周周~ 就可以得100牛币

反正不限制字数和题材,写的好的还可以拿到50京东卡、周边、一些技术书等,大家冲起来!

活动详情:https://www.nowcoder.com/link/bgzz2023

最后,不要忘了❤或📑支持一下哦,你的支持是海海更新的动力!关注我后面会持续分享面试经验 & 前端相关的专业知识。

最后祝大家都能找到满意的实习和 offer!

全部评论

(8) 回帖
加载中...
话题 回帖

近期热帖

近期精华帖

热门推荐