我们来谈一下node.js面试

作者: 肆意木 | 来源:发表于2017-06-14 21:13 被阅读225次

    <h4>1.为什么使用 Node ?(面腾讯时被问答)</h4>

    我当时简历有写到 node ,腾讯的小姐姐就问到了这个问题,当时复习的还不是很透彻,回答的比较模糊,下面是我找到的参考答案:

    总结起来 node 有以下几个特点:
    简单强大,轻量可扩展.简单体现在node使用的是 javascript,json 来进行码,人人都会;
    强大体现在非阻塞IO,可以适应分块传输数据,较慢的网络环境,尤其擅长高并发访问;
    轻量体现在 node 本身既是代码,又是服务器,前后端使用统一语言;
    可扩展体现在可以轻松应对多实例,多服务器架构,同时有海量的第三方应用组件.

    <h4>2.你是怎么理解 node 的非阻塞?</h4>

    这也是腾讯小姐姐提及到的问题,我模糊了非阻塞与异步的概念,没有很好的给出小姐姐想要的答案,然后小姐姐温柔的给我分析了一波,下面是我当时理解的小姐姐的答案,可能没有理解透彻,如果有错,求原谅。

    node 的特点是非阻塞异步处理,提到异步有一个很好的例子,就是你在烧水的同时还在写作业,然后水烧好了发出“滴滴”收到这个信号你去处理烧好的水,可是在 node 里面这是有一个前提的,什么是非阻塞,就是说写作业是一个线程在处理,收到水烧好后, node 会调用另一个线程去处理这个事件,不会阻断写作业这个事件,这就是 node 的非阻塞,异步机制。

    <h4>3. node 的构架是什么样子的?</h4>

    主要分为三层,应用 app >> V8 及 node 内置架构 >> 操作系统. V8 是 node
    运行的环境,可以理解为 node 虚拟机. node 内置架构又可分为三层: 核心模块( javascript 实现) >> c++ 绑定 >> libuv + CAes + http .

    <h4>4. node 有哪些核心模块?</h4>

    EventEmitter, Stream, FS, Net和全局对象

    <h4> 5. node 的网络模块架构是什么样子的?</h4>

    node全面支持各种网络服务器和客户端,包括tcp, http/https, tcp, udp, dns, tls/ssl等.

    <h4>6. node 是怎样支持 https,tls 的?</h4>

    主要实现以下几个步骤即可: 1) openssl 生成公钥私钥 2) 服务器或客户端使用 https 替代 http 3) 服务器或客户端加载公钥私钥证书

    <h4>7. node 中的异步和同步怎么理解</h4>

    node是单线程的,异步是通过一次次的循环事件队列来实现的.同步则是说阻塞式的IO,这在高并发环境会是一个很大的性能问题,所以同步一般只在基础框架的启动时使用,用来加载配置文件,初始化程序什么的.

    <h4>8.有哪些方法可以进行异步流程的控制?</h4>

    1. 多层嵌套回调 2) 为每一个回调写单独的函数,函数里边再回调 3) 用第三方框架比方 async , q , promise 等

    <h4>小结:平时虽然有用到 Node.js 但是真正面试问到的时候发现自己了解到的那些根本不值一提,所以简历上面写熟悉、了解这些字眼一定要慎重。</h4>
    <h3>参考资料:https://github.com/jimuyouyou/node-interview-questions</h3>

    相关文章

      网友评论

      本文标题:我们来谈一下node.js面试

      本文链接:https://www.haomeiwen.com/subject/bmueqxtx.html