js 面试

说说对原生 JavaScript 的理解

  1. JavaScript 实现包含的几个部分
  2. JavaScript 的语言类型特性
  3. 解释性脚本语言(对标编译性脚本语言)
  4. 面向对象(面向过程)
  5. 事件驱动 / 异步 IO
  6. 缺少的关键性功能等(块级作用域 、模块、子类型等)

JavaScript ( JS ) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发 Web 页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,例如 Node.js. JavaScript 是一种基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。了解更多 JavaScript。

谈谈你对 TypeScript 的理解

  1. 类型批注和编译时类型检查
  2. 接口
  3. 模块
  4. 装饰器
  5. 声明文件(类似于 C 中的头文件)
  6. 对 ES 6 的支持
  7. 语法提示

比较一下 TypeScript 和 JavaScript,在什么情况下你觉得需要 TypeScript

JavaScript 中几种迭代语法在 Chrome 等现代浏览器中的性能差异

  1. 考察 for、for...of、for...in、forEach、while、do...while 等
  2. 可以使用 console.time 和 console.timeEnd 进行测试
  3. 注意现代浏览器多次执行的性能优化问题
  4. ++ 和 -- 有没有区别
  5. 遍历的时候是否存在查找原型链的过程
  6. 字面量 / 数组 / 对象存储性能有没有什么区别?
  7. 条件比较多的时候 if-else 和 switch 性能哪个高?
  8. 高性能的 JavaScript 开发在语法层面你觉得有哪些可以提升性能?
  9. 如何在代码中减少迭代次数
  10. 如何实现一个 Duff 装置

如何提升 JavaScript 变量的存储性能

  1. 访问字面量和局部变量的速度最快,访问数组元素和对象成员相对较慢
  2. 由于局部变量存在于作用域链的起始位置,因此访问局部变量比访问跨作用域变量更快,全局变量的访问速度最慢
  3. 避免使用 with 和 catch,除非是有必要的情况下
  4. 嵌套的对象成员会明显影响性能,尽量少用,例如 window.loacation.href
  5. 属性和方法在原型链中的位置越深,则访问它的速度也越慢
  6. 通常来说,需要访问多次的对象成员、数组元素、跨作用域变量可以保存在局部变量中从而提升 JavaScript 执行效率

在 JavaScript 中如何实现对象的私有属性

async / await 和 Promise 的区别

  1. await 会等待异步代码执行,会阻塞代码(使用时要考虑性能)
  2. async / await 在调试方面会更加方便

在 JavaScript 可以有哪几种形式实现继承,各有什么优缺点

变量作用域链

介绍 DOM 树对比

项目中如何应用数据结构

加上 CORS 之后从发起到请求正式成功的过程

Xsrf 跨域攻击的安全性问题怎么防范

JS 变量类型分为几种,区别是什么

JS 里垃圾回收机制是什么,常用的是哪种,怎么处理的

一般怎么组织 CSS(Webpack)

上述数组随机取数,每次返回的值都不一样

如何找 0-5 的随机数,95-99 呢

页面上有 1 万个 Button 如何绑定事件

如何判断是 Button

页面上生成一万个 Button,并且绑定事件,如何做(JS 原生操作 DOM)

循环绑定时的 Index 是多少,为什么,怎么解决

页面上有一个 input,还有一个 p 标签,改变 input 后 p 标签就跟着变化,如何处理

监听 input 的哪个事件,在什么时候触发

对闭包的看法,为什么要用闭包

手写数组去重函数

手写数组扁平化函数

两道手写算法题

说一下闭包

网站 SEO 怎么处理

前端性能优化(JS 原生和 React)

用户体验做过什么优化

对 PWA 有什么了解

对安全有什么了解

介绍下数字签名的原理

前后端通信使用什么方案

RESTful 常用的 Method

介绍下跨域

Access-Control-Allow-Origin 在服务端哪里配置

csrf 跨站攻击怎么解决

前端和后端怎么联调

Prototype 和 Proto 区别

_construct 是什么

new 是怎么实现的

前端性能优化(1JS、CSS;2 图片;3 缓存预加载; 4 SSR; 5 多域名加载;6 负载均衡)

并发请求资源数上限(6 个)

base64 为什么能提升性能,缺点

介绍 Webp 这个图片文件格式

Ajax 如何处理跨域

CORS 如何设置

Jsonp 为什么不支持 Post 方法

介绍同源策略

介绍 Immuable

介绍原型链

如何继承

介绍 JS 数据类型,基本数据类型和引用数据类型的区别

Array 是 Object 类型吗

数据类型分别存在哪里

var a = {name: "前端开发"}; var b = a; a = null 那么 b 输出什么

var a = {b: 1}存放在哪里

var a = {b: {c: 1}}存放在哪里

栈和堆的区别

垃圾回收时栈和堆的区别

数组里面有 10 万个数据,取第一个元素和第 10 万个元素的时间相差多少

栈和堆具体怎么存储

介绍闭包以及闭包为什么没清除

闭包的使用场景

发布-订阅和观察者模式的区别

JS 执行过程中分为哪些阶段

词法作用域和 this 的区别

平常是怎么做继承

深拷贝和浅拷贝

loadsh 深拷贝实现原理

虚拟 DOM 主要做了什么

虚拟 DOM 本身是什么(JS 对象)

304 是什么

堆和栈的区别

介绍闭包

闭包的核心是什么

JS 的继承方法

介绍垃圾回收

如何解决跨域问题

使用 Canvas 绘图时如何组织成通用组件

formData 和原生的 Ajax 有什么区别

介绍下表单提交,和 FormData 有什么关系

JS 继承方案

如何判断一个变量是不是数组

变量 a 和 b,如何交换

事件委托

多个
  • 标签生成的 Dom 结构是一个类数组
  • 类数组和数组的区别

    dom 的类数组如何转成数组

    介绍单页面应用和多页面应用

    介绍 Localstorage 的 API

    对闭包的理解

    工程中闭包使用场景

    介绍 this 和原型

    使用原型最大的好处

    单例、工厂、观察者项目中实际场景

    项目中树的使用场景以及了解

    单例、工厂、观察者项目中实际场景

    项目中树的使用场景以及了解

    添加原生事件不移除为什么会内存泄露

    还有哪些地方会内存泄露

    介绍箭头函数和普通函数的区别

    介绍 defineProperty 方法,什么时候需要用到

    for..in 和 object.keys 的区别

    介绍闭包,使用场景

    使用闭包特权函数的使用场景

    Get 和 Post 有什么区别

    算法:前 K 个最大的元素

    JS 是什么范式语言(面向对象还是函数式编程)

    进程和线程的区别(一个 Node 实例就是一个进程,Node 是单线程,通过事件循环来实现异步)

    介绍下 DFS 深度优先

    浏览器和 Node.js 的事件循环机制有什么区别?

    results matching ""

      No results matching ""