前端面试每日3+2(第23天)
冰洋 12/24/2019 每日3+2
当你发现自己的才华撑不起你的野心时,就请安静下来学习吧!
鲁迅说过:
答案仅供参考...
# 1、React Native是什么?React Native比起标准的webApp或者原生开发带来了什么好处?
解析:
- React Native是facebook于2015年4月开源的跨平台移动开发框架,是facebook早先开源的reac在原生移动平台的衍生物,支持IOS和安卓两大平台。
- 使用Javascript和react编写的是原生应用,它的设计理念原理和react一样,通过声明式组件机制搭建页面。
- RN应用是真正的原生应用,不是传统的html应用或者网页应用,也不是混合开发。最终生产的是一个真正的原生应用,从感官上和Object-c和Java编写的应用相比几乎无法区分。RN使用的基础UI组件和原生应用完全一致。
- RN可以快速迭代开发应用,不需要漫长的编译过程,可以瞬间刷新你的应用。
- 完美兼容Object-c、java和Swift编写的组件。同时使用RN组件和原生组件完全是支持的
# 2、什么是NodeJs?
解析:
- 基于Chrome v8引擎运行在服务端端Javascript运行环境
- Nodejs使用了事件驱动、异步非阻塞I/O的模型,其实轻量又便捷
- Nodejs的包管理器npm,是世界上最大的开源库生态系统
- 虽然node是用javascript的语法,但是并非是完全的javascript,我们知道javascript是包含了ECMAScript、DOM、BOM,而node则不包含DOM和BOM,但是它也提供了一系列模块供我们使用,如http、fs模块。
# 3、NodeJs的实用场景是什么?
解析:
- 运行在服务器做web server:异步非阻塞I/O使得nodejs在处理大量并发I/O操作的业务时很合适,比如聊天工具等。
- 运行在本地做构建工具,脚本工具
# 4、NodeJs的特点(优缺点)?
解析:
特点
- 非阻塞异步I/O:如操作文件,通过非阻塞异步的方式读取文件
- 事件轮询
- 单线程
- 不会死锁,不用考虑多线程处处在意同步问题,没有线程切换上性能的消耗
优点:擅长I/O密集型,主要体现在Node利用事件轮询的方式处理事件,而不是单开一个线程来为每一个请求服务
缺点:不擅长cpu密集型,由于Node单线程,如果长时间运行计算将导致CPU不能释放,使得后续I/O无法发起。(解决办法是分解大型运算为多个小任务,不阻塞I/O发起)
- 不会死锁,不用考虑多线程处处在意同步问题,没有线程切换上性能的消耗
优点:擅长I/O密集型,主要体现在Node利用事件轮询的方式处理事件,而不是单开一个线程来为每一个请求服务
# 5、什么是非阻塞I/O?
解析:
https://www.cnblogs.com/straybirds/p/9479158.html