升阶段面试题
-
nodejs的是什么(三点核心)?
- Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
- Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。
- Node 是一个让 JavaScript 运行在服务端的开发平台。
-
搭建一个简单服务器的步骤?
- 引入 http模块
var http=require('http')
- 创建服务
var server=http.createServer(function(req,res){})
- 监听端口
server.listen(3000)
- 引入 http模块
-
fs模块如何同步读取文件?以及如何处理同步阻塞问题?(读取文件路径’./a.txt’)
try{ data=fs.readFileSync('./a.txt','utf-8') }catch(e){ throw e; }
-
fs如何异步读取文件?(路径./a.txt)
fs.readFile('./a.txt','utf-8',function(err,data){})
-
url模块如何获取
str='http://www.baidu.com:3000/a/b?c=100
中每一部分(协议,域名,端口,路径,参数)?var url=require('url'); var str='http://www.baidu.com:3000/a/b?c=100' var obj=url.parse(str,true); obj.protocal 协议 obj.hostname 域名 obj.port 端口 obj.pathname 路径 obj.query 参数
-
同步和异步的区别?
-
同步:执行同步操作时,会从上往下依次执行。代码一但报错,就会阻塞,解决同步阻塞 可以用
try{ } catch(e){ }
-
异步: 执行到异步操作时,会将异步读取任务放置任务队列,等所有同步执行完毕,任务队列中的回调函数会依次执行。
-
js中常见的异步: 定时器,ajax,事件绑定(addEventlistener)
-
-
npm 是什么?下载包时可以用哪个工具替代?
npm 是包管理工具,下载包时可以用cnpm代理、也可以yarn代替(google的产品)。
例如下载jquery@3.0.0,
npm ----> npm install jquery@3.0.0
cnpm----> cnpm install jquery@3.0.0
yarn ----> yarn add jquery@3.0.0 -
express创建项目流程?
express -e projectName cd projectName npm install / cnpm install / yarn install npm start / yarn start
-
express项目目录组成,以及每部分的含义?
bin 项目启动文件(端口号可以在本文件中修改)
node_modules 项目依赖目录
routes 路由
views 视图文件 (ejs文件)
public 静态资源文件 (img、js、css、font)
app.js 核心主文件 (定义服务器)
package.json 项目信息说明 -
get与post区别?
-
get: 参数追加在url后面、明文可见、不安全、长度有限制(IE 2k) 、请求速度快、一般用于查询。
-
post:参数放在请求头的body,大小没有限制。安全性高。请求速度不get慢。一般用户:提交、添加。
-
终端操作mongodb数据库,查看数据库?
show dbs
-
终端操作mongodb数据库,查看集合?
show collections
-
终端操作mongodb数据库,查看当前数据库下的one集合下所有文档?
db.one.find()
-
终端操作mongodb数据库,创建并切换至数据库blog?
use blog
-
终端操作mongodb数据库,当前数据库下创建one集合?
db.createCollection(‘one’)
-
终端操作mongodb数据库,one集合中插入文档{name:‘tom’}?
db.one.insert({name:‘tom’})
-
终端操作mongodb数据库,查询one集合下,所有age大于20的文档?
db.one.find({age:{$gt:20}}) -
终端操作mongodb数据库,修改one集合下,name为‘tom’的所有文档,age修改为18?
db.one.update({name:‘tom’},{$set:{age:18}},{multi:true})
备注:必须有$set , 必须有multi
-
终端操作mongodb数据库,删除one集合下name值为‘tom’所有文档?
db.one.remove({name:‘tom’})
-
在express项目中,mongoose如何连接本地27017下的blog数据库?
mongoose.connet(‘mongodb://localhost:27017/blog’,function(){ })
-
mongoose插件如何查询数据库,已知集合模型为Txt?
Txt.find() -
mongoose插件如何写入数据库,已知集合模型为Txt?
Txt.create() -
mongoose 插件如何删除_id值为12345的文档,已知集合模型为Txt?
Txt.remove({_id:12345}) -
res重定向到’/’?
res.redirect(’/’) -
res如何返回json?
res.json(() -
原生ajax的使用步骤?
- 步骤一:创建xhr对象
- 步骤二:调用open
- 步骤三:调用send
- 步骤四:监听异步回调
详细答案:https://blog.csdn.net/weixin_43638968/article/details/106048461
-
检测系统中node版本号的指令是?node -v
-
如何退出node执行环境(REPL环境)?ctrl+c
-
为什么需要后台技术? 自动发布网站,无需重复排版。 实现登陆注册,信息的保存等。 用户管理,产品管理等都需要健壮的后台技术
req,res分别代表什么? req:全称request请求对象 res:全称 response响应对象 -
全局安装express-generater指令是? cnpm install express-generator -g 前面用npm cnpm 都对
-
express创建项目test指令? express test
-
浏览器里如何检测打开了mongodb仓库? 地址栏输入:http://127.0.0.1:27017/ 看到英文提示就对了。
-
整个url地址包括什么? 答:协议、端口、域名、参数就对了,下面是辅助理解。 假设这是一个url地址http://localhost:8080/a/b/c?a=1&b=2#abc,里面包含的部分: protocol: ‘http:’,//协议 host: ‘localhost:8080’, port: ‘8080’,//端口 hostname: ‘localhost’,域名
-
跨域的解释:跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。
-
什么是同源策略?所谓同源是指,域名,协议,端口均相同,
-
什么是模板引擎?
将html和数据分类开。这样渲染页面就不需要通过字符串拼接的方法,而是直接用ejs模板引擎,将服务器端传过来的数据在页面直接显示出来,不会那样的麻烦了
-
说出增删改查的常用单词? create find delete update
-
前端get方式如何向后台传递参数?在地址栏后面挂载参数,多个参数以&分隔,例如 abc?a=1&b=2;
-
前端post方式如何向后台传递参数?不是挂载在地址栏后面,而是放在请求体(主体包)body里。
-
后台get方式如何接收参数? express框架是req.query。
-
后台post方式如何接收参数? express框架是req.body,
-
后台返回到前端的数据格式是什么?字串或者json对象
-
前后台通过什么建立联系? 路由
-
保存到本地存储和保存到后台仓库的区别? 保存到本地,只是本机能查看和修改数据 ,而保存到服务端,所有客户机都可以访问。
-
什么是cookies?保存数据的一种方式,保存在客户端,是字串,最大3k.
-
什么是session?保存数据的一种方式,保存在服务端,是对象。
-
cookies session 区别:cookies 保存在客户端,是字串,文件较小,最大3k,安全性差,session保存在服务端,是对象,更安全。
-
如何设置cookie,实现30天免登录 ? req.cookie( 参一,参二 ,{maxAge:100060602430})
-
注册的流程?
首先查询数据库,是否存在该用户,如果存在,返回注册失败,如果不存在,写入用户注册信息,注册成功。 -
登录的流程?
首先查询数据库,是否存在该用户,若果不存在,登录失败。
如果存在,则进行密码校验。密码一致,登录成功。密码不一致,登录失败。