2019 Node.js 面试题

NODE.JS

  • 同步和异步有何区别?
    答:同步:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有等待过程(在一个任务进行中时不能开启其他的任务)。
    异步:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待(在一个任务进行中时可以开启其他的任务)。
  • NodeJS中有哪些类型模块,文件操作用哪一个模块?
    答:模块类型: 核心模块、自定义模块、第三方模块。
    文件操作:fs模块
  • 对NodeJS的优点和缺点提出自己的看法?
    答:CPU密集型任务的特点是进行大量的计算,消耗CPU资源,比如计算圆周率(上千位)、对视频进行编码等, 全靠CPU的运算能力 (一般用C语言,java)
    IO(Input / Output)密集型任务,这类任务的特点是CPU消耗很少,大部分时间都在等待IO操作。常见的大部分任务都是IO密集型任务,比如Web应用(一般用脚本语言:python/Nodejs)。
    Nodejs设计思想中以事件驱动、异步、非堵塞I/O密集型为核心,他提供的大多数api都是基于事件的、异步的风格。所以非常适合处理高并发请求。此外,与Node服务器交互的客户端代码是由js语言编写的,因此客户端和服务器端都用同一种语言编写,减少了成本。
  • 使用NodeJS完成登录功能(编写HTML页面和路由接口中的代码)?
<!--HTML页面:-->
		<form method="post" action="/user/login">
			用户:<input type="text" name="uname"> <br>
			密码:<input type="text" name="upwd"> <br>
			<input type="submit" >
		</form>
//user.js路由:
		const express=require('express');
		const pool=require('../pool.js');
		var router=express.Router();
   		router.post('/login',(req,res)=>{
  			var obj=req.body;
   			var $uname=obj.uname;
  			if(!$uname){ 
    				res.send({code:401,msg:'uname required'});
				return;
  			}
  			var $upwd=obj.upwd;
  			if(!$upwd){
    				res.send({code:402,msg:'upwd required'});
					return;
  			}
  			var sql='SELECT * FROM xz_user WHERE uname=? AND upwd=?';
  			pool.query(sql,[$uname,$upwd],(err,result)=>{
    			if(err) throw err;
				if(result.length>0){
	  				res.send({code:200,msg:'login success'});
				}else{
	  				res.send({code:301,msg:'login error'});  }
 				 });
		});
			//路由器导出
			module.exports=router;
  • 什么是Nodejs?
    答:Nodejs是一个JavaScript的运行环境,是一个服务器端的“JavaScript解释器”,用于方便高效地搭建一些响应速度快、
    易于扩展的网络应用。它采用事件驱动、异步编程,为网络服务而设计
  • nodejs适用于哪些地方?
    答:高并发、聊天、实时消息推送
  • npm是什么?
    答:npm是nodejs包管理和分发的工具,用于管理node包。如安装、卸载、发布、查看等.
  • npm的好处是什么?
    答:通过npm,可以安装和管理项目的依赖,且可以指明依赖项的具体版本号。
  • Node.js中导入模块和导入js文件写法上有什么区别?
    答:nodejs引入模块,直接使用名字导入即可
    const express = require(“express”);
    导入js文件,需要使用文件的路径,如:
    const student = require("./pool.js");
  • console有哪些常用方法?
    答:console.log/info/error/warn/time/timeEnd
  • express response有哪些常用方法?
    答:res.download() 弹出文件下载
    res.end() 结束response
    res.json() 返回json
    res.jsonp() 返回jsonp
    res.redirect() 重定向请求
    res.render() 渲染模板
    res.send() 返回多种形式数据
    res.sendFile 返回文件
    res.sendStatus() 返回状
  • node中的Buffer如何应用 ?
    答:Buffer是用来处理二进制数据的,比如图片,mp3,数据库文件等.Buffer支持各种编码解码,二进制字符串互转
  • 实现一个简单的http服务器?
			var http = require('http'); //加载http模块    
			var server=http.createServer(function(req, res) {        
				res.writeHead(200, {'Content-Type': 'text/html'}); 
				res.write('hello world'); 
 				res.end(); //结束输出流    
			});
			server.listen(3000);
发布了11 篇原创文章 · 获赞 11 · 访问量 6486

猜你喜欢

转载自blog.csdn.net/weixin_45579891/article/details/100931628