Skip to content

每日一题 - 以下关于Javascript执行引擎描述正确的是

信息卡片

  • 时间:2019-09-24
  • tag:阿里前端校招笔试

题目描述

  1. ECMAScript 2015中规定了执行引擎需要实现EventLoop机制。
  2. V8作为最先进的Javascript执行引擎,可以在执行阶段对所有代码进行优化。
  3. Node.js通过V8实现异步I/O。
  4. Node.js的Buffer类型对象在创建时内存不会分配到V8堆上。
  5. Chakra是Firefox内嵌的Javascript执行引擎。
  6. 代码正确的情况下,垃圾回收不会导致有内存无法回收。

参考答案

  1. 错误。 两者没有任何关系
  2. 执行阶段,V8会先生成字节码(快),再在运行过程中逐步将高频函数转化成优化后的机器码(慢)。
  3. 错误。 V8只是负责解析和运行JS代码。Node.js通过libuv抽象封装层不同平台使用不同方法实现异步I/O,windows是IOCP,*nix是自定义线程池
  4. 正确。Node的Buffer模块性能相关部分有C++实现,所以Buffer对象的内存分配不是在V8的堆内存中,而是在Node的C++层面实现内存申请的(Buffer的内存虽然由Node的C/C++层面实现内存申请,但是变量的回收的还是由V8的GC管理的)
  5. 错误。Chakra是IE的js引擎,Firefox的js引擎是SpiderMonkey。
  6. 错误。这个其实取决于垃圾回收算法的