Blog

JavaScript 面试题整理

JavaScript 常见面试题:事件委托、线程进程、负载均衡、函数调用模式、内存泄漏

事件委托,目的,功能,写法

  1. 把一个或者一组元素的事件委托到它的父层或者更外层元素上

  2. 优点,减少内存消耗,动态绑定事件

  3. target 是触发事件的最具体的元素,currenttarget是绑定事件的元素(在函数中一般等于this)

  4. JavaScript 事件委托详解

线程,进程

  1. 线程是最小的执行单元,进程是最小的资源管理单元

  2. 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程(一般情况)

  3. 一个进程对应多个线程最为常见,Linux、Windows等是这么实现的。其实理论上这种关系并不是一定的,可以存在多个进程对应一个线程,例如一些分布式操作系统的研究使用过这种方式,让线程能从一个地址空间转移到另一个地址空间,甚至跨机器调用不同的进程入口

负载均衡

  1. 当系统面临大量用户访问,负载过高的时候,通常会使用增加服务器数量来进行横向扩展,使用集群和负载均衡提高整个系统的处理能力

  2. 服务器集群负载均衡原理

JavaScript 中有哪些不同的函数调用模式?请详细解释。

有四种模式,函数调用、方法调用、.call() 和.apply()。

javascript 中常见的内存泄露陷阱

  1. 内存泄露会导致一系列问题,比如:运行缓慢,崩溃,高延迟

  2. 内存泄露是指你用不到(访问不到)的变量,依然占居着内存空间,不能被再次利用起来

  3. 意外的全局变量,这些都是不会被回收的变量(除非设置 null 或者被重新赋值),特别是那些用来临时存储大量信息的变量

  4. 周期函数一直在运行,处理函数并不会被回收,jq 在移除节点前都会,将事件监听移除

  5. js 代码中有对 DOM 节点的引用,dom 节点被移除的时候,引用还维持

  6. JavaScript 中 4 种常见的内存泄露陷阱