Javascript高级(二)

1node如何创建服务器,写出代码

var http = require(‘http’);

var server = http.createServer(function(req,res){

Res.end(‘服务端响应’);

});

server.listen(3000); 

2、querystring模块如何解析如下字符串,(‘user=tom&pass=123456’)?

querystring模块如何解析如下字符串,

(‘user=tom&pass=123456’);

Var qs = require(‘querystring’);

Var str = ‘ user=tom&pass=123456 ’;

qs.parse(str);

// 把字符串解析成对象{ user: 'tom', pass: '123456' }

3、Node是什么。【考核知识点:node的定义】

Node是一个基于Chrome V8引擎的JavaScript代码运行环境。

4express创建的项目中文件夹和文件有哪些?各自含义?

Bin:项目执行运行所在的文件夹

Node-modules: 依赖包的文件夹

Public: 静态资源托管

Views: 视图、模板引擎等文件

Routes: 存放路由文件

Package.json: 工程项目描述文件

App.js:  入口文件  项目主文件

5、命令行更新 user集合中name为‘李四’的文档,sex改为女,其他字段不变?

Db.user.update({“name”:”李四”},{$set:{“sex”:”女”}});

6.为什么要学习node?【考核知识点:为什么选择node】

使用JavaScript语法开发后端应用

前端开发工具大多基于Node开发 vue打包 react打包等

一些公司要求前端工程师掌握Node开发

生态系统活跃,有大量开源库可以使用

7.全局安装express-generater 指令是?

npm install express-generater -g

8.命令行向user集合添加文档{user:tom,pass:123456}的指令?(第8天5题)

Db.user.insert({“user”:”tom”,”pass”:”123456”});

9. 系统环境变量path的作用【考核知识点:path环境变量】

path变量的作用,简单地说,我们如果把文件夹的路径设置到path变量里。
那么这个路径下的所有可执行文件,都会具有全局性,无论在何时何地,只要输入该文件名,就可以直接执行。

10. url模块如何解析请求地址req.url, 得到如下参数{pathname:’/’,query:{user:xxx,pass:xxxx}}?(第2天8题)

Req.url =  “http://www.baidu.com/s?wd=html&pass=123;”

{pathname:’/s’,query:{user:xxx,pass:xxxx}} ?

url.parse(req.url,true).query

url.parse(req.url,true).pathname

11请使用http、fs搭建一个最简单的服务器,直接写代码

var http = require(‘http’);

var   fs    = require(‘fs’);

var server = http.createServer(function(req,res){

Fs.readFile(‘文件路径’,function(err,data){

Res.write(data);

Res.end(‘服务端响应’);

});

});

server.listen(3000);

12同步和异步的区别?各举一个Js中同步和异步的案例?

同步:上一件事情没有完成,继续处理上一件事情,只有上一件事情完成了,才会做下一件事情

异步: 规划要做一件事情,如果是异步事情,不是当前立马去执行这件事情,需要等一定的时间,这样的话,我们不会等着他执行,而是继续执行下面的操作

同步案例:for循环语句,alert(),console.log()等 js大部分都是同步编程

异步案例:所有定时器,ajax异步请求,readFile  writeFlie 等

13node服务器如何设置跨域请求和中文乱码

       解决中文乱码

    res.setHeader('Content-Type','text/html;charset=utf8');

    // 解决跨域

    res.setHeader('Access-Control-Allow-Origin','*');

14.请简述mongoose中schema、model、entity概念

Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力

Model : 由 Schema发布生成的模型,具有抽象属性和行为的数据库操作

Entity : 由 Model创建的实体,他的操作也会影响数据库

15、若通过mongoose创建的集合模型为Student,Student集合删除{_id:12345}的集合,删除成功后向前端响应json数据为{code:1,msg:”删除成功”}?  Student.remove({_id:‘12345’},function(err){

   If(!Err){

    Res.send({code:1,msg:”删除成功!“})

}

})

16,请简述commonjs规范中模块导入和导出语法?

module代表当前模块。这个变量是一个对象,加载该模块的module.exports属性。

module.exports = 对象;

Var 命名 = require(“模块名”) ;

17.Express创建项目流程:【考核知识点:Express-generator模板介绍】

express -e 项目名

cd 项目名

npm i

npm start

express -e projectName

cd projectName

npm install   /   cnpm install   /   yarn install

npm start   /  yarn start

18.express路由传参数的方式有哪些

req.query (查询get请求中的参数)

req.body (查询post请求)

19.端口号的作用是什么

不同的端口号 在电脑上开启不同的服务

20.Cookie和session的区别是什么

sessionStorage:5M或者更大,仅在当前浏览器窗口关闭之前有效,关闭页面或者浏览器会被清除

cookie:一般不超过4K,一般由服务器生成,可以设置失效时间;若没有设置时间,关闭浏览器cookie失效,若设置了时间,cookie就会存放在硬盘里,过期才失效

21.为什么npm start可以启动express项目?

因为在package.json中设置了

"scripts": {

    "start":"nodemon   ./bin/www"

  },

自定义 脚本 需要 使用 npm  run build    , run -- 运行

22、模板引擎的作用

取得数据并加以处理,最后显示出数据

23、Localstorage和cookie的区别

cookie:一般不超过4K,一般由服务器生成,可以设置失效时间;若没有设置时间,关闭浏览器cookie失效,若设置了 时间,cookie就会存放在硬盘里,过期才失效

localStorage:5M或者更大,永久有效,窗口或者浏览器关闭也会一直保存,除非手动永久清除,因此用作持久数据

24.怎么验证用户名的唯一性,写出思路即可【考核知识点:ajax验证用户名的唯一性】

1.获取文本框并为其添加离开焦点事件

2.向服务器端发送请求,检测用户名是否被别人注册

3.根据服务器端返回值决定客户端显示何种提示信息

25.MongoDB中如何实现模糊查询【考核知识点:MongoDB模糊查询】

db + 表名 + find({属性名:{$regex:{/查询的内容/}}})    $regex:{/查询的内容/}}--正则表达式  实现模糊查询

  1. 什么是回调函数

一个函数作为参数,传入到另一个函数,这个函数在某个时机调用,这个作为参数的函数称为回调函数。

回调函数,就是放在另外一个函数(如 parent)的参数列表中,作为参数传递给这个 parent,然后在 parent 函数体的某个位置执行,Node.js 异步编程的直接体现就是回调。

27.node模块分几类

内置模块 自定义模块 第三方模块。

28.npm 下载模块的命令是什么

npm install(i)模块名 --save

29.npm 本地下载和全局下载的区别是什么

--save -g 一个是功能模块 一个是工具.

30.http请求消息的格式和响应消息的格式分别是什么

请求行 请求头 空行 请求数据

响应行 响应头 空行 响应正文

  1. http状态码有哪些?

1)1xx:指示信息--表示请求已接收,继续处理

2)2xx:成功--表示请求已被成功接收、理解、接受

3)3xx:重定向--要完成请求必须进行更进一步的操作

4)4xx:客户端错误--请求有语法错误或请求无法实现

5)5xx:服务器端错误--服务器未能实现合法的请求                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

32.什么是域名?

域名(英语:Domain Name),又称网域,是由一串用点分隔的名字,组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)

33.说一下对ip的理解?

IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议

IP地址是用来识别网络上的设备,IP地址是由网络地址与主机地址两部分所组成

34.什么是中间件。【考核知识点:中间件概念】

中间件就是一堆方法,可以接收客户端发来的请求、可以对请求做出响应,也可以将请求继续交给下一个中间件继续处理

35.mongoose操作mongoDB数据库,连接数据库的步骤

引入第三方模块mongoose

连接数据库:mongoose.connect(‘数据库的地址’)

设置集合规则:new mongoose.Schema ()

创建集合:mongoose.model(‘集合名’, 集合规则)

36.什么是同源策略?

同源策略 是由NetScape提出的一个著名的安全策略,它是浏览器最核心也最基本的安全功能

所谓的同源,指的是协议,域名,端口相同。浏览器处于安全方面的考虑,只允许本域名下的接口交互,不同源的客户端脚本,在没有明确授权的情况下,不能读写对方的资源。

37.jsonp的原理?

script的src属性不受同源策略的限制;将不同源的服务器端请求地址写在 script 标签的 src 属性中

38.http工作原理?   从网址url 按下回车发生了什么?

1)客户端连接到Web服务器

2发送HTTP请求

3)服务器接受请求并返回HTTP响应

4)释放连接TCP连接  

5)客户端浏览器解析HTML内容

39. get与post请求有什么区别

1. get是从服务器上获取数据,post是向服务器传送数据。

2. POST比GET安全,因为数据在地址栏上不可见。

3. get方式提交的数据最多只能有1024字节,而post则没有此限制。

4. GET使用URL或Cookie传参。而POST将数据放在request BODY中。

5. GET与POST都有自己的语义,不能随便混用。

40.Javascript 模块化主要有三种方案。【考核知识点:模块化开发的分类】

    CommonJs

AMD 即Asynchronous Module Definition,中文名是异步模块定义 模块化工具 require.js

CMD规范  模块化工具 sea.js

  1. requset,response分别代表什么?

req --- request 请求对象 缩写 --客户端向服务端发送请求

包括    url    客户端参数   资源文件  头部信息设置客户端编码等

res ---response 响应对象 缩写   --  服务器响应给客户端的参数

包括   返回码   响应请求数据   头文件  http头部   

  1. get与post有什么区别

  1. get是从服务器上获取数据,post是向服务器传送数据。
  2. POST比GET安全,因为数据在地址栏上不可见。
  1. get方式提交的数据最多只能有1024字节,而post则没有此限制。
  2. GET使用URL或Cookie传参。而POST将数据放在request BODY中。
  3. GET与POST都有自己的语义,不能随便混用。

  1. npm包的发布流程?
  1. 注册用户2、用户登录3、创建工程4、npm publish 发布。

  1. 什么是模块化

将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起

块的内部数据与实现是私有的, 只是向外部暴露一些接口(方法)与外部其它模块通信

模块化的优点

    避免命名冲突(减少命名空间污染)

更好的分离, 按需加载

更高复用性

高可维护性

  1. 请简述mongoose中schema、model、entity概念?

Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力

Model : 由 Schema发布生成的模型,具有抽象属性和行为的数据库操作

Entity : 由 Model创建的实体,他的操作也会影响数据库

46. 说说什么是浅拷贝,什么是深拷贝?

深拷贝和浅拷贝是针对复杂数据类型来说的,浅拷贝只拷贝一层,而深拷贝是层层拷贝

深拷贝

深拷贝复制变量值,对于非基本类型的变量,则递归至基本类型变量后,再复制。 深拷贝后的对象与原来的对象是完全隔离的,互不影响, 对一个对象的修改并不会影响另一个对象。

浅拷贝

浅拷贝是会将对象的每个属性进行依次复制,但是当对象的属性值是引用类型时,实质复制的是其引用,当引用指向的值改变时也会跟着变化。

可 以 使 用 for in 、 Object.assign 、 扩 展 运 算 符 ... 、Array.prototype.slice()、Array.prototype.concat()      ,递归等递归函数实现深拷贝。

  1. 说地址栏输⼊ URL 敲下回⻋后发⽣了什么?

大致过程是这样的:

  1. DNS 解析
  2. TCP 连接
  3. 发送 HTTP 请求
  4. 服务器处理请求并返回需要的数据
  5. 浏览器解析渲染页面
  6. 连接结束


48. 说⼀下forEach、map、filter、reduce、some、every等⽅法的作⽤?

forEach (循环)

让数组的每一项分别去做一件事情

let a = [1,2,3];

a.forEach(function(value,i){

    console.log("第" + (i + 1) + "项 :" +  value)

})

// 第1项 :1

// 第2项 :2

// 第3项 :3

map (映射)

跟forEach功能类似, 但是map有返回值,产生一个新的数组,不改变原来数组

let a = [1,2,3];

a.map(function(value,i){

    return value * 2

})

// 第1项 :2

// 第2项 :4

// 第3项 :6

reduce (累计)

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

reduce() 可以作为一个高阶函数,用于函数的 compose。

注意: reduce() 对于空数组是不会执行回调函数的。

前项和后项做计算

let a = [1, 2, 3];

a = a.reduce(function (prev, next) {

    return prev + next // 1+2+3 = 6

})

filter (过滤)

过滤掉不符合条件的值, 返回新数组

let a = [1, 2, 3];

a = a.filter(function (value, i) {

    return value > 2

})

console.log(a) // 3

every (全部)

判断每一个元素是否全部满足条件, 有的话返回true, 否则false

let a = [1, 2, 3];

a = a.every(function (value, i) {

    return value > 2

})

console.log(a) // false

some (任意)

判断每一个元素是否有任意一个满足条件, 有的话返回true, 否则false

let a = [1, 2, 3];

a = a.some(function (value, i) {

    return value > 2

})

console.log(a) // true

49.MongoDB如何排序【考核知识点:MongoDB sort】

在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

  1. Ajax的实现流程是怎样的【考核知识点:XMLHttpRequest】

(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象.

(2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.

(3)设置响应HTTP请求状态变化的函数.

(4)发送HTTP请求.

(5)获取异步调用返回的数据.

(6)使用JavaScript和DOM实现局部刷新.

  1. 什么是中间件。【考核知识点:中间件概念】

中间件就是一堆方法,可以接收客户端发来的请求、可以对请求做出响应,也可以将请求继续交给下一个中间件继续处理

  1. 什么是同源策略?

同源策略 是由NetScape提出的一个著名的安全策略,它是浏览器最核心也最基本的安全功能

所谓的同源,指的是协议,域名,端口相同。浏览器处于安全方面的考虑,只允许本域名下的接口交互,不同源的客户端脚本,在没有明确授权的情况下,不能读写对方的资源。

  1. 什么是跨域及跨域的解决方案都有哪些?

跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。

解决方案:Jsonp, CORS, 代理,反向代理,哈希处理跨域,a链接处理跨域。

54. 说⼀下数组去重的⽅法有哪些?es6如何实现数组去重?

 A.使用 indexOf 来循环判断一遍,

   B.使用 Set 和 Map 数据结构,以 Set 为例,ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

   

55.Axios是什么?怎么使用?

axios 封装了原生的 XHR,让我们发送请求更为简单,

 axios.get()axios.post().

56. 说⼀下箭头函数与普通函数的区别?

1>.箭头函数全都是匿名函数;普通函数可以是匿名函数,也可以有命名函数

2>.箭头函数没有原型对象,不能用作构造函数,不能使用new;普通函数可以用于构造函数,以此创建对象实例

3>.this指向问题:

- 在普通函数中,this总是指向调用它的对象,如果用作构造函数,this指向创建的对象实例。

- 而**箭头函数本身没有this**,但是它在声明时可以捕获其所在上下文的this供自己使用。也可以理解为它使用的是父级的this。

57. ES6的模板字符串怎么使用?

可以作为普通字符串;更多的是用来定义多行字符串;也可以在字符串中插入变量(常量)或表达式或函数调用,进行字符串内容扩充和计算。

如:

let title = '商品的总金额是';

let price = 29;

let num = 3;

let testStr = `<p>${title}${(price*num).toFixed(2)}元</p>`;

console.log(testStr);

  1. 说⼀下map⽅法、forEach⽅法、filter⽅法的作⽤以及他们之间的区别

Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值)都可以作为一个键或一个值。

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数,加强版的for循环

主要使用场景:遍历数组的每个元素

filter() 方法创建一个新数组,其中填充了旧数组中通过特定测试的所有元素,作为函数提供。

  1. 介绍下 Set、Map的区别?

Map和Set查找速度都非常快,时间复杂度为O(1),而数组查找的时间复杂度为O(n)。

Map对象初始化的值为一个二维数组,Set对象初始化的值为一维数组。

Map对象和Set对象都不允许键重复(可以将Set对象的键想象成值)。

Map对象的键是不能改的,但是值能改,Set对象只能通过迭代器来更改值。

60. 谈一体你对promise的理解?

1、主要用于异步计算

2、可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果

3、可以在对象之间传递和操作 promise,帮助我们处理队列

resolve 作用是,将 Promise 对象的状态从“未完成”变为“成功”(即从 pending  变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;

reject 作用是,将 Promise 对象的状态从“未完成”变为“失败”(即从 pending  变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。

  • 24
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值