nodejs面试总结

一:Node 好处: 处理高并发 事件驱动 轻量  要用于搭建高性能的web服务器,

    1. 它是一个Javascript运行环境

  2. 依赖于Chrome V8引擎进行代码解释

  3. 事件驱动

  4. 非阻塞I/O

  5. 轻量、可伸缩,适于实时数据交互应用

  6. 单进程,单线程

 

二:Express 和 koa的区别?     

异步 摆脱回调地域

对response 和request进行了封装 content

Express主要基于Connect中间件框架,功能丰富,随取随用,并且框架自身封装了大量便利的功能,比如路由、视图处理等等。而koa主要基于co中间件框架,框架自身并没集成太多功能,大部分功能需要用户自行require中间件去解决,但是由于其基于ES6 generator特性的中间件机制,解决了长期诟病的“callback hell”和麻烦的错误处理的问题,大受开发者欢迎。

三:事件驱动模型和事件循环:

事件驱动模型:当服务端收到请求时,就把它关闭 然后处理下一个请求 当第一个请求处理完毕后 就放回处理队列 当达到队列开头 将结果返回给用户  好处:高效 扩展性强 因为服务端一直接受请求 不等待任何读写操作

事件循环:查看队列里面是否有队列里面有待处理的 如果有 交给主线程执行

四:Redis:

使用场景:支持string、list、set、zset和hash类型数据。

  1. 配合关系型数据库做高速缓存
  • 缓存高频次访问的数据,降低数据库io
  • 分布式架构,做session共享
  1. 可以持久化特定数据。
  • 利用zset类型可以存储排行榜
  • 利用list的自然时间排序存储最新n个数据

五:mysql 和mongodb的区别 

mysql 关系型数据库 mongodb是非关系数据库(主要)

六:MySQL索引
七:闭包应该注意的地方
八:进程和线程

进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位     

进程是线程的容器

十:mysql存储引擎 和区别

InnoDB存储引擎:事务型数据库首选,支持事务安全表(ACID),支持行锁定和外键  是mysql 5.5之后的默认引擎

MyISAM 存储引擎:不支持事务和外键,访问速度较快,是mysql5.5 之前的默认引擎

MEMORY: 保存在内存中的数据表 ,每个memory表对应一个磁盘文件。格式是.frm  访问速度很快 缺点是:mysql服务关闭,数据丢失,另外对数据表大小有限制。
十一:如何判断一个字符串是另一个字符串的子串

 indexof       es6:include    startWith   endWith
十二:单点登录
十三:oauth2.0
十四:type of 和instance of 区别 
十五:pm2 restart 和reload的区别(配置文件的重载 重启)
十六:MySQL 读写分离
十七:pm2如何查看指定三个项目的日志
十八:深拷贝 浅拷贝
十九:路由机制
二十:MySQL 批量更新
二十一:登录流程
二十二:cookie 和session
二十三:基本数据类型 引用数据类型  区别
二十四:防止sql 注入

1.使用escape() 对传入参数进行编码

2.使用connection.query ()的查询参数占位符

3.使用escapeId()编码SQL查询标识符

4.使用mysql.format()转义参数:

二十五:require()模块加载机制

先判断是否存在文件缓存区中,存在直接导入,没有的话,在判断是否是原生模块,

如果是原生模块,再看是否在原生模块缓存区中,如果有直接导入,没有的话加载原生模块,缓存原生模块,在导入

如果不是原生模块,先查找文件模块,根据扩展名载入文件模块,缓存文件模块,在导入

nodejs面试总结_第1张图片

你可能感兴趣的:(nodejs面试总结)