沐游虞笔记
  • 前端面试题

    • HTML面试题汇总(无答案)
    • HTML面试题汇总
    • CSS 面试题汇总(无答案)
    • CSS 面试题汇总
    • javascript 面试题汇总(无答案)
    • javascript 面试题汇总
    • promise 面试题(无答案)
    • promise 面试题
    • 浏览器面试题汇总(无答案)
    • 浏览器面试题汇总
    • 网络面试题汇总(无答案)
    • 网络面试题汇总
    • 工程化面试题汇总(无答案)
    • 工程化面试题汇总
    • VUE面试题汇总(无答案)
    • VUE面试题汇总
  • 直播课文件

    • 静态页面学习指导
    • 属性的计算过程
    • 层叠继承规则总结
    • BFC
    • JS基础知识回顾
    • DOM 事件的传播机制
    • DOM 事件的注册和移除
    • 阻止事件默认行为
    • 基础领航考试题
    • 基础领航考试题(答案)
    • 2024前端发展
    • JS核心概念学习指导
    • 第三方库与工程化学习指导
    • Vue入门学习指导
    • vue进阶学习指导
    • 前端性能优化
  • 笔面试环节知识讲解

    • 目录
    • 图像处理
    • 图像处理(面试)
    • Webpack构建优化
    • Webpack构建优化(面试)
    • TTS性能优化
    • TTS性能优化(面试)
    • 实时协作
    • 实时协作(面试)
    • 网页复制图片到剪贴板
    • 网页复制图片到剪贴板(面试)
    • vite插件
    • vite插件(面试)
    • 表单数据同步与保持
    • 表单数据同步与保持(面试)
    • 优化虚拟列表
    • 优化虚拟列表(面试)
    • 微前端解决巨石应用
    • 微前端解决巨石应用(面试)
    • DNS解析与优化
    • DNS解析与优化(面试)
    • 前端监控
    • 前端监控(面试)
    • 12.跨标签页通信
    • 12.跨标签页通信(面试)
    • 13.Vite相关优化
    • 13.Vite相关优化(面试)
    • 14.计时器节流问题
    • 14.计时器节流问题(面试)
    • 15.多文件预览支持
    • 15.多文件预览支持(面试)
    • 16.defer优化白屏时间
    • 16.defer优化白屏时间(面试)
  • Vue3整体变化
  • Vue2响应式回顾
  • Vue3响应式变化
  • nextTick实现原理
  • 两道代码题
  • Vue运行机制
  • 渲染器核心功能
  • 事件绑定与更新
  • computed面试题
  • watch面试题
  • 图解双端diff
  • 图解快速dff
  • 最长递增子序列
  • 模板编译器
  • 模板编译提升
  • 组件name作用
  • 路由传参方式
  • 基础篇

    • 序章React介绍
    • JSX基础语法
    • React基本介绍
    • 表单
    • 生命周期
    • 组件与事件绑定
    • 组件状态与数据传递
    • Hooks
    • React--redux介绍
    • React-router介绍
  • 就业篇

    • 属性默认值和类型验证
    • 高阶组件
    • Ref
    • Context
    • Render Props
    • Portals
    • 错误边界
    • 组件渲染性能优化
    • 前端框架的理解
    • Reacti和Vue描述页面的区别
    • 前端框架的分类
    • 虚拟DoM
    • React整体架构
    • React渲染流程
    • Fiber双缓冲
    • MessageChannel
    • Scheduleri调度普通任务
    • Scheduleri调度延时任务
    • 最小堆
    • React中的位运算
    • beginWork工作流程
    • completeWork工作流程
    • 图解diff算法
    • commit工作流程
    • lane模型
    • React中的事件
    • Hooks原理
    • useStateuseReducer.
    • effect相关hook
    • useCallbackuseMemo
    • useRef
    • Update
    • 性能优化策略之eagerState
    • 性能优化策略之bailout
    • bailoutContextAPl
    • 性能优化对日常开发启示
  • 前端监控概述
  • 错误监控
  • 数据上报
  • 页面性能监控
  • 用户行为收集与埋点
  • CSS3手册
  • HTML5手册
  • JavaScript语言提升

    • es补充
    • 事件循环
    • promise基础
    • Promise的链式调用
    • Promise的静态方法
    • async和await
    • Promise相关面试题
  • 网络

    • 客户端与服务器
    • 关于 Apifox 的使用
  • git文档
  • 工程化

    • CommonJS
    • ES module
    • npm文档(包管理)
    • Lass笔记
    • webpack工具
  • canvas详解
  • uinapp笔记
  • 自动化测试
  • oauth2令牌

    • 认识Oauth2
    • 三方应用实现github授权
    • 微信三方应用登录实现
    • 支付宝沙箱支付功能
  • 前端面试题

    • HTML面试题汇总(无答案)
    • HTML面试题汇总
    • CSS 面试题汇总(无答案)
    • CSS 面试题汇总
    • javascript 面试题汇总(无答案)
    • javascript 面试题汇总
    • promise 面试题(无答案)
    • promise 面试题
    • 浏览器面试题汇总(无答案)
    • 浏览器面试题汇总
    • 网络面试题汇总(无答案)
    • 网络面试题汇总
    • 工程化面试题汇总(无答案)
    • 工程化面试题汇总
    • VUE面试题汇总(无答案)
    • VUE面试题汇总
  • 直播课文件

    • 静态页面学习指导
    • 属性的计算过程
    • 层叠继承规则总结
    • BFC
    • JS基础知识回顾
    • DOM 事件的传播机制
    • DOM 事件的注册和移除
    • 阻止事件默认行为
    • 基础领航考试题
    • 基础领航考试题(答案)
    • 2024前端发展
    • JS核心概念学习指导
    • 第三方库与工程化学习指导
    • Vue入门学习指导
    • vue进阶学习指导
    • 前端性能优化
  • 笔面试环节知识讲解

    • 目录
    • 图像处理
    • 图像处理(面试)
    • Webpack构建优化
    • Webpack构建优化(面试)
    • TTS性能优化
    • TTS性能优化(面试)
    • 实时协作
    • 实时协作(面试)
    • 网页复制图片到剪贴板
    • 网页复制图片到剪贴板(面试)
    • vite插件
    • vite插件(面试)
    • 表单数据同步与保持
    • 表单数据同步与保持(面试)
    • 优化虚拟列表
    • 优化虚拟列表(面试)
    • 微前端解决巨石应用
    • 微前端解决巨石应用(面试)
    • DNS解析与优化
    • DNS解析与优化(面试)
    • 前端监控
    • 前端监控(面试)
    • 12.跨标签页通信
    • 12.跨标签页通信(面试)
    • 13.Vite相关优化
    • 13.Vite相关优化(面试)
    • 14.计时器节流问题
    • 14.计时器节流问题(面试)
    • 15.多文件预览支持
    • 15.多文件预览支持(面试)
    • 16.defer优化白屏时间
    • 16.defer优化白屏时间(面试)
  • Vue3整体变化
  • Vue2响应式回顾
  • Vue3响应式变化
  • nextTick实现原理
  • 两道代码题
  • Vue运行机制
  • 渲染器核心功能
  • 事件绑定与更新
  • computed面试题
  • watch面试题
  • 图解双端diff
  • 图解快速dff
  • 最长递增子序列
  • 模板编译器
  • 模板编译提升
  • 组件name作用
  • 路由传参方式
  • 基础篇

    • 序章React介绍
    • JSX基础语法
    • React基本介绍
    • 表单
    • 生命周期
    • 组件与事件绑定
    • 组件状态与数据传递
    • Hooks
    • React--redux介绍
    • React-router介绍
  • 就业篇

    • 属性默认值和类型验证
    • 高阶组件
    • Ref
    • Context
    • Render Props
    • Portals
    • 错误边界
    • 组件渲染性能优化
    • 前端框架的理解
    • Reacti和Vue描述页面的区别
    • 前端框架的分类
    • 虚拟DoM
    • React整体架构
    • React渲染流程
    • Fiber双缓冲
    • MessageChannel
    • Scheduleri调度普通任务
    • Scheduleri调度延时任务
    • 最小堆
    • React中的位运算
    • beginWork工作流程
    • completeWork工作流程
    • 图解diff算法
    • commit工作流程
    • lane模型
    • React中的事件
    • Hooks原理
    • useStateuseReducer.
    • effect相关hook
    • useCallbackuseMemo
    • useRef
    • Update
    • 性能优化策略之eagerState
    • 性能优化策略之bailout
    • bailoutContextAPl
    • 性能优化对日常开发启示
  • 前端监控概述
  • 错误监控
  • 数据上报
  • 页面性能监控
  • 用户行为收集与埋点
  • CSS3手册
  • HTML5手册
  • JavaScript语言提升

    • es补充
    • 事件循环
    • promise基础
    • Promise的链式调用
    • Promise的静态方法
    • async和await
    • Promise相关面试题
  • 网络

    • 客户端与服务器
    • 关于 Apifox 的使用
  • git文档
  • 工程化

    • CommonJS
    • ES module
    • npm文档(包管理)
    • Lass笔记
    • webpack工具
  • canvas详解
  • uinapp笔记
  • 自动化测试
  • oauth2令牌

    • 认识Oauth2
    • 三方应用实现github授权
    • 微信三方应用登录实现
    • 支付宝沙箱支付功能
  • javascript 面试题汇总
  • let、var、const的区别

    • let、var、const的区别
  • 值和引用

    • 值和引用
  • 包装类型

    • 包装类型
  • 数据类型的转换

    • 数据类型的转换
  • 运算符

    • 运算符
  • 原型和原型链

    • 原型和原型链
  • 执行栈和执行上下文

    • 执行栈和执行上下文
  • 作用域和作用域链

    • 作用域和作用域链
  • this指向

    • this指向
  • 垃圾回收与内存泄漏

    • 垃圾回收与内存泄漏
  • 闭包

    • 闭包
  • DOM事件的注册和移除

    • DOM 事件的注册和移除
  • DOM事件的传播机制

    • DOM 事件的传播机制
  • 阻止事件的默认行为

    • 阻止事件默认行为
  • 递归

    • 递归
  • 属性描述符

    • 属性描述符
  • Class和普通构造器的区别

    • class 和构造函数区别
  • 浮点数精度问题

    • 浮点数精度问题
  • 严格模式

    • 严格模式
  • 函数防抖和节流

    • 函数防抖和节流
  • WeakSet和WeakMap

    • WeakSet 和 WeakMap
  • 深浅拷贝

    • 深浅拷贝
  • 函数柯里化

    • 函数柯里化
  • Node的事件循环

    • Node的事件循环
  • eval

    • eval
  • 尺寸和位置

    • 尺寸和位置
  • 更多知识

    • 更多知识
  • JS面试题汇总
luzhichang
2024-09-18
目录

javascript 面试题汇总(无答案)

# JavaScript 面试题汇总

# 1. 根据下面 ES6 构造函数的书写方式,要求写出 ES5 的

class Example {
  constructor(name) {
    this.name = name;
  }
  init() {
    const fun = () => {
      console.log(this.name);
    };
    fun();
  }
}
const e = new Example('Hello');
e.init();

# 2. 数组去重有哪些方法?(美团 19 年)

# 3. 描述下列代码的执行结果

foo(typeof a);
function foo(p) {
  console.log(this);
  console.log(p);
  console.log(typeof b);
  let b = 0;
}

# 4. 描述下列代码的执行结果

class Foo {
  constructor(arr) {
    this.arr = arr;
  }
  bar(n) {
    return this.arr.slice(0, n);
  }
}
var f = new Foo([0, 1, 2, 3]);
console.log(f.bar(1));
console.log(f.bar(2).splice(1, 1));
console.log(f.arr);

# 5. 描述下列代码的执行结果

01 function f(count) {
02    console.log(`foo${count}`);
03    setTimeout(() => { console.log(`bar${count}`); });
04 }
05 f(1);
06 f(2);
07 setTimeout(() => { f(3); });

# 6. 描述下列代码的执行结果

var a = 2;
var b = 5;
console.log(a === 2 || (1 && b === 3) || 4);

# 7. 描述下列代码的执行结果

export class ButtonWrapper {
  constructor(domBtnEl, hash) {
    this.domBtnEl = domBtnEl;
    this.hash = hash;
    this.bindEvent();
  }
  bindEvent() {
    this.domBtnEl.addEventListener('click', this.clickEvent, false);
  }
  detachEvent() {
    this.domBtnEl.removeEventListener('click', this.clickEvent);
  }
  clickEvent() {
    console.log(`The hash of the button is: ${this.hash}`);
  }
}

# 8. 箭头函数有哪些特点

# 9. 说一说类的继承

# 10. new 操作符都做了哪些事?

# 11. call、apply、bind 的区别 ?

# 12. 事件循环机制(宏任务、微任务)

# 13. 你了解 node 中的事件循环机制吗?node11 版本以后有什么改变

# 14. 什么是函数柯里化?

# 15. promise.all 方法的使用场景?数组中必须每一项都是 promise 对象吗?不是 promise 对象会如何处理 ?

# 16. this 的指向哪几种 ?

# 17. JS 中继承实现的几种方式

# 18. 什么是事件监听

# 19. 什么是 js 的闭包?有什么作用?

# 20. 事件委托以及冒泡原理

# 21. let const var 的区别?什么是块级作用域?如何用?

# 22. ES5 的方法实现块级作用域(立即执行函数) ES6 呢?

# 23. ES6 箭头函数的特性

# 24. 箭头函数与普通函数的区别 ?

# 25. JS 的基本数据类型有哪些?基本数据类型和引用数据类型的区别

# 26. NaN 是什么的缩写

# 27. JS 的作用域类型

# 28. undefined==null 返回的结果是什么?undefined 与 null 的区别在哪?

# 29. 写一个函数判断变量类型

# 30. js 的异步处理函数

# 31. defer 与 async 的区别

# 32. 浏览器事件循环和任务队列

# 33. 原型与原型链 (美团 19 年)

# 34. 作用域与作用域链 (美团 19 年)

# 35. 闭包及应用场景以及闭包缺点 (美团 19 年)

# 36. 继承方式 (美团 19 年)

# 37. 原始值与引用值 (美团 19 年)

# 38. 描述下列代码的执行结果

const first = () =>
  new Promise((resolve, reject) => {
    console.log(3);
    let p = new Promise((resolve, reject) => {
      console.log(7);
      setTimeout(() => {
        console.log(1);
      }, 0);
      setTimeout(() => {
        console.log(2);
        resolve(3);
      }, 0);
      resolve(4);
    });
    resolve(2);
    p.then((arg) => {
      console.log(arg, 5); // 1 bb
    });
    setTimeout(() => {
      console.log(6);
    }, 0);
  });
first().then((arg) => {
  console.log(arg, 7); // 2 aa
  setTimeout(() => {
    console.log(8);
  }, 0);
});
setTimeout(() => {
  console.log(9);
}, 0);
console.log(10);

# 39. 如何判断数组或对象(美团 19 年)

# 40. 对象深拷贝与浅拷贝,单独问了 Object.assign(美团 19 年)

# 42. 说说 instanceof 原理,并回答下面的题目(美团 19 年)

function A() {}
function B() {}
A.prototype = new B();
let a = new A();
console.log(a instanceof B); // true of false ?

#

# 43. 内存泄漏(美团 19 年)

# 44. ES6 新增哪些东西?让你自己说(美团 19 年)

# 45. weakmap、weakset(美团 19 年)

# 46. 为什么 ES6 会新增 Promise(美团 19 年)

# 47. ES5 实现继承?(虾皮)

# 48. 科里化?(搜狗)

# 49. 防抖和节流?(虾皮)

# 50. 闭包?(好未来---探讨了 40 分钟)

# 51. 原型和原型链?(字节)

# 52. 排序算法---(时间复杂度、空间复杂度)

# 53. 浏览器事件循环和 node 事件循环(搜狗)

# 54. 闭包的好处

# 55. let、const、var 的区别

# 56. 闭包、作用域(可以扩充到作用域链)

# 57. Promise

# 58. 实现一个函数,对一个 url 进行请求,失败就再次请求,超过最大次数就走失败回调,任何一次成功都走成功回调

# 59. 冒泡排序

# 60. 数组降维

# 61. call apply bind

# 62. promise 代码题

new Promise((resolve, reject) => {
  reject(1);
  console.log(2);
  resolve(3);
  console.log(4);
})
  .then((res) => {
    console.log(res);
  })
  .catch((res) => {
    console.log('reject1');
  });
try {
  new Promise((resolve, reject) => {
    throw 'error';
  })
    .then((res) => {
      console.log(res);
    })
    .catch((res) => {
      console.log('reject2');
    });
} catch (err) {
  console.log(err);
}

# 63. proxy 是实现代理,可以改变 js 底层的实现方式, 然后说了一下和 Object.defineProperty 的区别

# 64. 使用 ES5 与 ES6 分别实现继承

# 65. 深拷贝

# 66. async 与 await 的作用

# 67. 数据的基础类型(原始类型)有哪些

# 68. typeof null 返回结果

# 69. 对变量进行类型判断的方式有哪些

# 70. typeof 与 instanceof 的区别? instanceof 是如何实现?

# 71. 引用类型有哪些,有什么特点

# 72. 如何得到一个变量的类型---指函数封装实现

# 73. 什么是作用域、闭包

# 74. 闭包的缺点是什么?闭包的应用场景有哪些?怎么销毁闭包?

# 75. JS的垃圾回收站机制

# 76. 什么是作用域链、原型链

# 77. new 一个构造函数发生了什么

# 78. 对一个构造函数实例化后. 它的原型链指向什么

# 79. 什么是变量提升

# 80. == 和 === 的区别是什么

# 81. Object.is 方法比较的是什么

# 82. 基础数据类型和引用数据类型,哪个是保存在栈内存中?哪个是在堆内存中?

# 83. 箭头函数解决了什么问题?

# 84. new 一个箭头函数后,它的 this 指向什么?

# 85. promise 的其他方法有用过吗?如 all、race。请说下这两者的区别

# 86. class 是如何实现的

# 87. let、const、var 的区别

# 88. ES6 中模块化导入和导出与 common.js 有什么区别

# 89. 说一下普通函数和箭头函数的区别

# 90. 说一下 promise 和 async 和 await 什么关系

# 91. 说一下你学习过的有关 ES6 的知识点

# 92. 了解过 js 中 arguments 吗?接收的是实参还是形参?

# 93. ES6 相比于 ES5 有什么变化

# 94. 强制类型转换方法有哪些?

# 95. 纯函数

# 96. JS 模块化

# 97. 看过 jquery 源码吗?

# 98. 说一下 js 中的 this

# 99. apply call bind 区别,手写

# 100. 手写 reduce flat

# 101. == 隐试转换的原理?是怎么转换的

# 102. ['1', '2', '3'].map(parseInt) 结果是什么,为什么 (字节)

# 103. 防抖,节流是什么,如何实现 (字节)

# 104. 介绍下 Set、Map、WeakSet 和 WeakMap 的区别(字节)

# 105. setTimeout、Promise、Async/Await 的区别(字节)

# 106. Promise 构造函数是同步执行还是异步执行,那么 then 方法呢?(字节)

# 107. 情人节福利题,如何实现一个 new (字节)

let Parent = function (name, age) { this.name = name; this.age = age; }; Parent.prototype.sayName = function () { console.log(this.name); }; //自己定义的 new 方法 let newMethod = function (Parent, ...rest) { // 1.以构造器的 prototype 属性为原型,创建新对象; let child = Object.create(Parent.prototype); // 2.将 this 和调用参数传给构造器执行 let result = Parent.apply(child, rest); // 3.如果构造器没有手动返回对象,则返回第一步的对象 return typeof result === 'object' ? result : child; }; //创建实例,将构造函数 Parent 与形参作为参数传入 const child = newMethod(Parent, 'echo', 26); child.sayName() //'echo'; //最后检验,与使用 new 的效果相同 console.log(child instanceof Parent)//true console.log(child.hasOwnProperty('name'))//true console.log(child.hasOwnProperty('age'))//true console.log(child.hasOwnProperty('sayName'))//false

# 108. 实现一个 sleep 函数(字节)

# 109. 使用 sort() 对数组 [3, 15, 8, 29, 102, 22] 进行排序,输出结果 (字节)

# 110. 实现 5.add(3).sub(2) (百度)

# 111. 给定两个数组,求交集

# 112. 为什么普通 for 循环的性能远远高于 forEach 的性能,请解释其中的原因。

# 113. 实现一个字符串匹配算法,从长度为 n 的字符串 S 中,查找是否存在字符串 T,T 的长度是 m,若存在返回所在位置。

# 114. 使用 JavaScript Proxy 实现简单的数据绑定

# 115. 数组里面有 10 万个数据,取第一个元素和第 10 万个元素的时间相差多少(字节)

# 116. 打印出 1~10000 以内的对称数

# 117. 简述同步和异步的区别

# 118. 怎么添加、移除、复制、创建、和查找节点

# 119. 实现一个函数 clone 可以对 Javascript 中的五种主要数据类型(Number、string、 Object、Array、Boolean)进行复制

# 120. 如何消除一个数组里面重复的元素

# 121. 写一个返回闭包的函数

# 122. 使用递归完成 1 到 100 的累加

# 123. Javascript 有哪几种数据类型

# 124. 如何判断数据类型

# 125. console.log(1+'2')和 console.log(1-'2')的打印结果

# 126. JS 的事件委托是什么,原理是什么

# 127. 如何改变函数内部的 this 指针的指向

# 128. JS 延迟加载的方式有哪些?

# 129. 说说严格模式的限制

# 130. attribute 和 property 的区别是什么?

# 131. ES6 能写 class 么,为什么会出现 class 这种东西?

# 132. 常见兼容性问题

# 133. 函数防抖节流的原理

# 134. 原始类型有哪几种?null 是对象吗?

# 135. 为什么 console.log(0.2+0.1==0.3) // false

# 136. 说一下 JS 中类型转换的规则?

# 137. 深拷贝和浅拷贝的区别?如何实现

# 138. 如何判断 this?箭头函数的 this 是什么

# 139. call、apply 以及 bind 函数内部实现是怎么样的

# 140. 为什么会出现 setTimeout 倒计时误差?如何减少

# 141. 谈谈你对 JS 执行上下文栈和作用域链的理解

# 142. new 的原理是什么?通过 new 的方式创建对象和通过字面量创建有什么区别?

# 143. prototype 和 __proto__ 区别是什么?

# 144. 使用 ES5 实现一个继承?

# 145. 取数组的最大值(ES5、ES6)

# 146. ES6 新的特性有哪些?

# 147. Promise 有几种状态, Promise 有什么优缺点 ?

# 148. Promise 构造函数是同步还是异步执行,then 呢 ? Promise 如何实现 then 处理 ?

# 149. Promise 和 setTimeout 的区别 ?

# 150. 如何实现 Promise.all ?

# 151. 如何实现 Promise.finally ?

# 152. 如何判断 img 加载完成

# 153. 如何阻止冒泡?

# 154. 如何阻止默认事件?

# 155. 如何用原生 js 给一个按钮绑定两个 onclick 事件?

# 156. 拖拽会用到哪些事件

# 157. document.write 和 innerHTML 的区别

# 158. jQuery 的事件委托方法 bind 、live、delegate、one、on 之间有什么区别?

# 159. $(document).ready 方法和 window.onload 有什么区别?

# 160. jquery 中$.get()提交和$.post()提交有区别吗?

# 161. await async 如何实现 (阿里)

# 162. clientWidth,offsetWidth,scrollWidth 的区别

# 163. 产生一个不重复的随机数组

# 164. continue 和 break 的区别

# 165. 如何在 jquery 上扩展插件,以及内部原理(腾讯)

# 166. async/await 如何捕获错误

# 167. Proxy 对比 Object.defineProperty 的优势

# 168. 原型链,可以改变原型链的规则吗?

# 169. 讲一讲继承的所有方式都有什么?手写一个寄生组合式继承

# 170. JS 基本数据类型有哪些?栈和堆有什么区别,为什么要这样存储。(快手)

# 171. setTimeout(() => {}, 0) 什么时候执行

# 172. js 有函数重载吗(网易)

# 173. 给你一个数组,计算每个数出现的次数,如果每个数组返回的数都是独一无二的就返回 true 相反则返回的 flase

# 174. 封装一个能够统计重复的字符的函数,例如 aaabbbdddddfff 转化为 3a3b5d3f

# 175. 写出代码的执行结果,并解释为什么?

function a() {
  console.log(1);
}
(function () {
  if (false) {
    function a() {
      console.log(2);
    }
  }
  console.log(typeof a);
  a();
})();

# 176. 写出代码的执行结果,并解释为什么?

alert(a);
a();
var a = 3;
function a() {
  alert(10);
}
alert(a);
a = 6;
a();

# 177. 写出下面程序的打印顺序,并简要说明原因

setTimeout(function () {
  console.log('set1');
  new Promise(function (resolve) {
    resolve();
  }).then(function () {
    new Promise(function (resolve) {
      resolve();
    }).then(function () {
      console.log('then4');
    });
    console.log('then2');
  });
});
new Promise(function (resolve) {
  console.log('pr1');
  resolve();
}).then(function () {
  console.log('then1');
});

setTimeout(function () {
  console.log('set2');
});
console.log(2);

new Promise(function (resolve) {
  resolve();
}).then(function () {
  console.log('then3');
});

# 178. javascript 中什么是伪数组?如何将伪数组转换为标准数组

# 179. array 和 object 的区别

# 180. jquery 事件委托

# 181. JS 基本数据类型

# 182. 请实现一个模块 math,支持链式调用math.add(2,4).minus(3).times(2);

# 183. 请简述 ES6 代码转成 ES5 代码的实现思路。

# 184. 下列代码的执行结果

async function async1() {
  console.log('async1 start');
  await async2();
  console.log('async1 end');
}
async function async2() {
  console.log('async2');
}
console.log('script start');
setTimeout(function () {
  console.log('setTimeout');
}, 0);
async1();
new Promise(function (resolve) {
  console.log('promise1');
  resolve();
}).then(function () {
  console.log('promise2');
});
console.log('script end');

# 185. JS 有哪些内置对象?

# 186. DOM 怎样添加、移除、移动、复制、创建和查找节点

# 187. eval 是做什么的?

# 188. null 和 undefined 的区别?

# 189. new 操作符具体干了什么呢?

# 190. 去除字符串中的空格

# 191. 常见的内存泄露,以及解决方案

# 192. 箭头函数和普通函数里面的 this 有什么区别

# 193. 设计⼀个⽅法(isPalindrom)以判断是否回⽂(颠倒后的字符串和原来的字符串⼀样为回⽂)

# 194. 设计⼀个⽅法(findMaxDuplicateChar)以统计字符串中出现最多次数的字符

# 195. 设计⼀段代码,使得通过点击按钮可以在 span 中显示⽂本框中输⼊的值

# 196. map 和 forEach 的区别?

# 197. Array 的常用方法

# 198. 数组去重的多种实现方式

# 199. 什么是预解析(预编译)

# 200. 原始值类型和引用值类型的区别是什么?

# 201. 冒泡排序的思路,不用 sort

# 202. symbol 用途

# 203. 什么是函数式编程,应用场景是什么

# 204. 事件以及事件相关的兼容性问题

# 205. JS 小数不精准,如何计算

# 206. 写一个 mySetInterVal(fn, a, b),每次间隔 a,a+b,a+2b 的时间,然后写一个 myClear,停止上面的 mySetInterVal

# 207. 合并二维有序数组成一维有序数组,归并排序的思路

# 208. 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。

# 209. 有一堆整数,请把他们分成三份,确保每一份和尽量相等(11,42,23,4,5,6 4 5 6 11 23 42 56 78 90)(滴滴 2020)

# 210. 手写发布订阅(头条 2020)

# 211. 手写用 ES6proxy 如何实现 arr[-1] 的访问(滴滴 2020)

# 212. 下列代码执行结果

console.log(1);
setTimeout(() => {
  console.log(2);
  process.nextTick(() => {
    console.log(3);
  });
  new Promise((resolve) => {
    console.log(4);
    resolve();
  }).then(() => {
    console.log(5);
  });
});
new Promise((resolve) => {
  console.log(7);
  resolve();
}).then(() => {
  console.log(8);
});
process.nextTick(() => {
  console.log(6);
});
setTimeout(() => {
  console.log(9);
  process.nextTick(() => {
    console.log(10);
  });
  new Promise((resolve) => {
    console.log(11);
    resolve();
  }).then(() => {
    console.log(12);
  });
});

# 213. Number() 的存储空间是多大?如果后台发送了一个超过最大自己的数字怎么办

# 214. 事件是如何实现的?(字节 2020)

# 215. 下列代码执行结果

Promise.resolve()
  .then(() => {
    console.log(0);
    return Promise.resolve(4);
  })
  .then((res) => {
    console.log(res);
  });

Promise.resolve()
  .then(() => {
    console.log(1);
  })
  .then(() => {
    console.log(2);
  })
  .then(() => {
    console.log(3);
  })
  .then(() => {
    console.log(5);
  })
  .then(() => {
    console.log(6);
  });

# 216. 判断数组的方法,请分别介绍它们之间的区别和优劣

# 217. JavaScript 中的数组和函数在内存中是如何存储的?

# 218. JavaScript 是如何运行的?解释型语言和编译型语言的差异是什么?

# 219. 列举你所了解的编程范式?

# 220. 什么是面向切面(AOP)的编程?

# 221. JavaScript 中的 const 数组可以进行 push 操作吗?为什么?

# 222. JavaScript 中对象的属性描述符有哪些?分别有什么作用?

# 223. JavaScript 中 console 有哪些 api ?

# 224. 简单对比一下 Callback、Promise、Generator、Async 几个异步 API 的优劣?

# 225. Object.defineProperty 有哪几个参数?各自都有什么作用

# 226. Object.defineProperty 和 ES6 的 Proxy 有什么区别?

# 227. intanceof 操作符的实现原理及实现

# 228. 强制类型转换规则?

# 229. Object.is( ) 与比较操作符 “===”、“==” 的区别

# 230. + 操作符什么时候用于字符串的拼接?

# 231. object.assign 和扩展运算法是深拷贝还是浅拷贝

# 232. const 对象的属性可以修改吗

# 233. 如果 new 一个箭头函数的会怎么样

# 234. 扩展运算符的作用及使用场景

# 235. Proxy 可以实现什么功能?

# 236. 对象与数组的解构的理解

# 237. 如何提取高度嵌套的对象里的指定属性?

# 238. Unicode、UTF-8、UTF-16、UTF-32 的区别?

# 239. 为什么函数的 arguments 参数是类数组而不是数组?如何遍历类数组?

# 240. escape、encodeURI、encodeURIComponent 的区别

# 241. use strict 是什么意思 ? 使用它区别是什么?

# 242. for...in 和 for...of 的区别

# 243. ajax、axios、fetch 的区别

# 244. 下面代码的输出是什么?( D )

function sayHi() {
  console.log(name);
  console.log(age);
  var name = 'Lydia';
  let age = 21;
}

sayHi();
  • A: Lydia 和 undefined
  • B: Lydia 和 ReferenceError
  • C: ReferenceError 和 21
  • D: undefined 和 ReferenceError

# 245. 下面代码的输出是什么?( C )

for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1);
}

for (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1);
}
  • A: 0 1 2 和 0 1 2
  • B: 0 1 2 和 3 3 3
  • C: 3 3 3 和 0 1 2

# 246. 下面代码的输出是什么?( B )

const shape = {
  radius: 10,
  diameter() {
    return this.radius * 2;
  },
  perimeter: () => 2 * Math.PI * this.radius,
};

shape.diameter();
shape.perimeter();
  • A: 20 和 62.83185307179586
  • B: 20 和 NaN
  • C: 20 和 63
  • D: NaN 和 63

# 247. 下面代码的输出是什么?( A )

+true;
!"Lydia";
  • A: 1 和 false
  • B: false 和 NaN
  • C: false 和 false

# 248. 哪个选项是不正确的?( A )

const bird = {
  size: 'small',
};

const mouse = {
  name: 'Mickey',
  small: true,
};
  • A: mouse.bird.size
  • B: mouse[bird.size]
  • C: mouse[bird["size"]]
  • D: 以上选项都对

# 249. 下面代码的输出是什么?( A )

let c = { greeting: 'Hey!' };
let d;

d = c;
c.greeting = 'Hello';
console.log(d.greeting);
  • A: Hello
  • B: undefined
  • C: ReferenceError
  • D: TypeError

# 250. 下面代码的输出是什么?( C )

let a = 3;
let b = new Number(3);
let c = 3;

console.log(a == b);
console.log(a === b);
console.log(b === c);
  • A: true false true
  • B: false false true
  • C: true false false
  • D: false true true

# 251. 下面代码的输出是什么?( D )

class Chameleon {
  static colorChange(newColor) {
    this.newColor = newColor;
  }

  constructor({ newColor = 'green' } = {}) {
    this.newColor = newColor;
  }
}

const freddie = new Chameleon({ newColor: 'purple' });
freddie.colorChange('orange');
  • A: orange
  • B: purple
  • C: green
  • D: TypeError

# 252. 下面代码的输出是什么?( A )

let greeting;
greetign = {}; // Typo!
console.log(greetign);
  • A: {}
  • B: ReferenceError: greetign is not defined
  • C: undefined

# 253. 当我们执行以下代码时会发生什么?( A )

function bark() {
  console.log('Woof!');
}

bark.animal = 'dog';
  • A 什么都不会发生
  • B: SyntaxError. You cannot add properties to a function this way.
  • C: undefined
  • D: ReferenceError

分析:

因为函数也是对象!(原始类型之外的所有东西都是对象)

函数是一种特殊类型的对象,我们可以给函数添加属性,且此属性是可调用的。

# 254. 下面代码的输出是什么?( A )

function Person(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

const member = new Person('Lydia', 'Hallie');
Person.getFullName = () => this.firstName + this.lastName;

console.log(member.getFullName());
  • A: TypeError
  • B: SyntaxError
  • C: Lydia Hallie
  • D: undefined undefined

# 255. 下面代码的输出是什么?( A )

function Person(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

const lydia = new Person('Lydia', 'Hallie');
const sarah = Person('Sarah', 'Smith');

console.log(lydia);
console.log(sarah);
  • A: Person { firstName: "Lydia", lastName: "Hallie" } 和 undefined
  • B: Person { firstName: "Lydia", lastName: "Hallie" } 和 Person { firstName: "Sarah", lastName: "Smith" }
  • C: Person { firstName: "Lydia", lastName: "Hallie" } 和 {}
  • D: Person { firstName: "Lydia", lastName: "Hallie" } 和 ReferenceError

# 256. 事件传播的三个阶段是什么?( D )

  • A: 目标 > 捕获 > 冒泡
  • B: 冒泡 > 目标 > 捕获
  • C: 目标 > 冒泡 > 捕获
  • D: 捕获 > 目标 > 冒泡

# 257. 下面代码的输出是什么?( C )

function sum(a, b) {
  return a + b;
}

sum(1, '2');
  • A: NaN
  • B: TypeError
  • C: "12"
  • D: 3

# 258. 下面代码的输出是什么?( C )

let number = 0;
console.log(number++);
console.log(++number);
console.log(number);
  • A: 1 1 2
  • B: 1 2 2
  • C: 0 2 2
  • D: 0 1 2

# 259. 下面代码的输出是什么?( B )

function getPersonInfo(one, two, three) {
  console.log(one);
  console.log(two);
  console.log(three);
}

const person = 'Lydia';
const age = 21;

getPersonInfo`${person} is ${age} years old`;
  • A: Lydia 21 ["", "is", "years old"]
  • B: ["", "is", "years old"] Lydia 21
  • C: Lydia ["", "is", "years old"] 21

# 260. 下面代码的输出是什么?( C )

function checkAge(data) {
  if (data === { age: 18 }) {
    console.log('You are an adult!');
  } else if (data == { age: 18 }) {
    console.log('You are still an adult.');
  } else {
    console.log(`Hmm.. You don't have an age I guess`);
  }
}

checkAge({ age: 18 });
  • A: You are an adult!
  • B: You are still an adult.
  • C: Hmm.. You don't have an age I guess

# 261. 下面代码的输出是什么?( C )

function getAge(...args) {
  console.log(typeof args);
}

getAge(21);
  • A: "number"
  • B: "array"
  • C: "object"
  • D: "NaN"

# 262. 下面代码的输出是什么?( C )

function getAge() {
  'use strict';
  age = 21;
  console.log(age);
}

getAge();
  • A: 21
  • B: undefined
  • C: ReferenceError
  • D: TypeError

# 263. 下面代码的输出是什么?( A )

const sum = eval('10*10+5');
  • A: 105
  • B: "105"
  • C: TypeError
  • D: "10*10+5"

# 264. cool_secret 可以访问多长时间?( B )

sessionStorage.setItem('cool_secret', 123);
  • A:永远,数据不会丢失。
  • B:用户关闭选项卡时。
  • C:当用户关闭整个浏览器时,不仅是选项卡。
  • D:用户关闭计算机时。

# 265. 下面代码的输出是什么?( B )

var num = 8;
var num = 10;

console.log(num);
  • A: 8
  • B: 10
  • C: SyntaxError
  • D: ReferenceError

# 266. 下面代码的输出是什么?( C )

const obj = { 1: 'a', 2: 'b', 3: 'c' };
const set = new Set([1, 2, 3, 4, 5]);

obj.hasOwnProperty('1');
obj.hasOwnProperty(1);
set.has('1');
set.has(1);
  • A: false true false true
  • B: false true true true
  • C: true true false true
  • D: true true true true

# 267. 下面代码的输出是什么?( C )

const obj = { a: 'one', b: 'two', a: 'three' };
console.log(obj);
  • A: { a: "one", b: "two" }
  • B: { b: "two", a: "three" }
  • C: { a: "three", b: "two" }
  • D: SyntaxError

# 268. 下面代码的输出是什么?( C )

for (let i = 1; i < 5; i++) {
  if (i === 3) continue;
  console.log(i);
}
  • A: 1 2
  • B: 1 2 3
  • C: 1 2 4
  • D: 1 3 4

# 269. 下面代码的输出是什么?( A )

String.prototype.giveLydiaPizza = () => {
  return 'Just give Lydia pizza already!';
};

const name = 'Lydia';

name.giveLydiaPizza();
  • A: "Just give Lydia pizza already!"
  • B: TypeError: not a function
  • C: SyntaxError
  • D: undefined

# 270. 下面代码的输出是什么?( B )

const a = {};
const b = { key: 'b' };
const c = { key: 'c' };

a[b] = 123;
a[c] = 456;

console.log(a[b]);
  • A: 123
  • B: 456
  • C: undefined
  • D: ReferenceError

# 271. 下面代码的输出是什么?( B )

const foo = () => console.log('First');
const bar = () => setTimeout(() => console.log('Second'));
const baz = () => console.log('Third');

bar();
foo();
baz();
  • A: First Second Third
  • B: First Third Second
  • C: Second First Third
  • D: Second Third First

# 272. 单击按钮时 event.target 是什么?( C )

<div onclick="console.log('first div')">
  <div onclick="console.log('second div')">
    <button onclick="console.log('button')">Click!</button>
  </div>
</div>
  • A: div 外部
  • B: div 内部
  • C: button
  • D: 所有嵌套元素的数组

# 273. 单击下面的 html 片段打印的内容是什么?( A )

<div onclick="console.log('div')">
  <p onclick="console.log('p')">Click here!</p>
</div>
  • A: p div
  • B: div p
  • C: p
  • D: div

# 274. 下面代码的输出是什么?( D )

const person = { name: 'Lydia' };

function sayHi(age) {
  console.log(`${this.name} is ${age}`);
}

sayHi.call(person, 21);
sayHi.bind(person, 21);
  • A: undefined is 21 Lydia is 21
  • B: function function
  • C: Lydia is 21 Lydia is 21
  • D: Lydia is 21 function

# 275. 下面代码的输出是什么?( B )

function sayHi() {
  return (() => 0)();
}

typeof sayHi();
  • A: "object"
  • B: "number"
  • C: "function"
  • D: "undefined"

# 276. 下面这些值哪些是假值?( A )

0;
new Number(0);
('');
(' ');
new Boolean(false);
undefined;
  • A: 0 "" undefined
  • B: 0 new Number(0) "" new Boolean(false) undefined
  • C: 0 "" new Boolean(false) undefined
  • D: 所有都是假值。

# 278. 下面代码的输出是什么?( B )

console.log(typeof typeof 1);
  • A: "number"
  • B: "string"
  • C: "object"
  • D: "undefined"

# 279. 下面代码的输出是什么?( C )

const numbers = [1, 2, 3];
numbers[10] = 11;
console.log(numbers);
  • A: [1, 2, 3, 7 x null, 11]
  • B: [1, 2, 3, 11]
  • C: [1, 2, 3, 7 x empty, 11]
  • D: SyntaxError

# 280. 下面代码的输出是什么?( A )

(() => {
  let x, y;
  try {
    throw new Error();
  } catch (x) {
    (x = 1), (y = 2);
    console.log(x);
  }
  console.log(x);
  console.log(y);
})();
  • A: 1 undefined 2
  • B: undefined undefined undefined
  • C: 1 1 2
  • D: 1 undefined undefined

# 281. JavaScript 中的所有内容都是…( A )

  • A:原始或对象
  • B:函数或对象
  • C:技巧问题!只有对象
  • D:数字或对象

# 282. 下面代码的输出是什么?

[
  [0, 1],
  [2, 3],
].reduce(
  (acc, cur) => {
    return acc.concat(cur);
  },
  [1, 2]
);
  • A: [0, 1, 2, 3, 1, 2]
  • B: [6, 1, 2]
  • C: [1, 2, 0, 1, 2, 3]
  • D: [1, 2, 6]

# 283. 下面代码的输出是什么?( B )

!!null;
!!'';
!!1;
  • A: false true false
  • B: false false true
  • C: false true true
  • D: true true false

# 284. setInterval 方法的返回值什么?( A )

setInterval(() => console.log('Hi'), 1000);
  • A:一个唯一的 id
  • B:指定的毫秒数
  • C:传递的函数
  • D:undefined

# 285. 下面代码的返回值是什么?( A )

[...'Lydia'];
  • A: ["L", "y", "d", "i", "a"]
  • B: ["Lydia"]
  • C: [[], "Lydia"]
  • D: [["L", "y", "d", "i", "a"]]

# 286. document.write 和 innerHTML 有哪些区别?

# 287. 假设有两个变量 a 和 b,他们的值都是数字,如何在不借用第三个变量的情况下,将两个变量的值对调?

# 288. 前端为什么提倡模块化开发?

# 289. 请解释 JSONP 的原理,并用代码描述其过程。

# 290. 列举几种 JavaScript 中数据类型的强制转换和隐式转换。

# 291. 分析以下代码的执行结果并解释为什么。

var a = { n: 1 };
var b = a;
a.x = a = { n: 2 };

console.log(a.x);
console.log(b.x);

# 292. 分析以下代码的执行结果并解释为什么。

// example 1
var a = {},
  b = '123',
  c = 123;
a[b] = 'b';
a[c] = 'c';
console.log(a[b]);

// example 2
var a = {},
  b = Symbol('123'),
  c = Symbol('123');
a[b] = 'b';
a[c] = 'c';
console.log(a[b]);

// example 3
var a = {},
  b = { key: '123' },
  c = { key: '456' };
a[b] = 'b';
a[c] = 'c';
console.log(a[b]);

# 293. 下面的代码打印什么内容?为什么?

var b = 10;
(function b() {
  b = 20;
  console.log(b);
})();

# 294. 下面代码中,a 在什么情况下会执行输出语句打印 1 ?

var a = ?;
if(a == 1 && a == 2 && a == 3){
 	console.log(1);
}

# 295. 介绍前端模块化的发展。

# 296. 请指出 document.onload 和 document.ready 两个事件的区别

# 297. 表单元素的readonly 和 disabled 两个属性有什么区别?

# 298. 列举几种你知道的数组排序的方法。

# 299. 区分什么是“客户区坐标”、“页面坐标”、“屏幕坐标”?

# 300. 如何编写高性能的 JavaScript?

# 301. 下面的代码输出什么?

var a = function () {
  return 5;
};
a.toString = function () {
  return 3;
};
console.log(a + 7);
Theme by Vdoing | Copyright © 2021-2024 蜀ICP备2024068710号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式