node题-11

一、简答题

  1. Node是什么?有哪些特性?

    Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。事件驱动 非阻塞式I/O模型,轻量高效,

  2. Npm是什么? 如何通过Npm安装依赖?

    npm是目前世界上最大的第三方依赖包,先npm init 初始化再 npm install +依赖名

  3. 简述同步和异步的区别,如何避免回调地狱?

同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程、而进入"任务队列"。使用promise,promise只有两个状态resolve(解决)–then和reject(拒绝)–catch

  1. Node中如何读取文件?
    var fs=require(“fs”)
    fs.readFile(“url”,function(error,data){})

  2. Node中如何写入文件?
    var fs=require(“fs”)
    fs.writeFile(“url”,“写入值”,function(error,data){})

  3. 通过node搭建一个简单的http服务,监听3500端口

    var http = require (“http”)

    var server = http.createServer()

    Server.on(“request” function(request,response){})

    server.listen ("3500",function(){})
    
  4. 如何获取指定目录下的所有文件

    fs.readdir("./www",function(error,data){})

  5. 箭头函数和普通函数的区别是什么?

    this指向不同,声明方式不同,箭头函数不能用于构造函数

  6. get请求和post请求的区别

    get 将请求放在url中,提交最大2k,有浏览记录,只接受Ascll字符,产生一个TCP数据包

    post 将请求放在request body中,提交无限制,没有浏览记录,产生两个TCP数据包

10.Art-template 中 如何实现数据加载,条件渲染和循环渲染

    数据加载 :插值表达式{{}}  

条件{{if value}} … {{/if}}

{{if v1}} … {{else if v2}} … {{/if}}

循环 {{each target}}

    {{$index}} {{$value}}

{{/each}}

  1. 什么是git,有哪些优势?

目前世界上最先进的分布式版本控制系统,· 适合分布式开发,强调个体。 公共服务器压力和数据量都不会太大。速度快、灵活。任意两个开发者之间可以很容易的解决冲突。 离线工作。

  1. git能做什么?简述git工作流程

克隆版本库,版本控制,分支管理, 工作区—add–>暂存区–commit–>本地仓库—remote->远程仓库

  1. 如何克隆远程仓库代码

    git clone url
    
  2. 如何提交工作区代码到本地仓库

    git commit -m -a 'message'
    
  3. 如何将本地仓库代码提交到远程仓库

    git push origin url
    
  4. 如何拉取远程仓库更新代码

    git fetch/pull  origin url
    
  5. 如何查看分支,创建分支,切换分支

    查看分支  git branch
    
    创建分支  git branch [branch-name]
    
    切换分支  git checkout [branch-name] 
    
  6. 如何合并分支,merge和rebase的区别

    git merge [branch-name]      git rebase [branch-name] 
    
    merge 是合并到当前分支    rebase 是合并到另一个分支上并切换到另一个分支
    
  7. 如何进行版本回退,reset和revert的区别

    git reset     git revert      reset通过撤销commit节点来进行版本回退   revert用一个新提交来消除一个历史提交所做的任何修改
    
  8. 如何解决跨域问题

    后台开放  JsonP  配置代理
    
  9. SEO优化方式有哪些

    标签语义化 服务端渲染 设置关键词,清晰目录结构

编程题

1.至少两种方式实现,左边固定,右边自适应布局

一、  <style>
body {
    display: flex;
}
.box1 {
    height: 100px;
    width: 100px;
    background-color: red;
}
.box2 {
    height: 100px;
    width: calc(100% - 100px);
    background-color: blue;
}

二、

  1. 封装函数实现:找出短语中最长的单词并计算他的长度,如my name is hanMeiMei

     输出最长单词为hanMeiMei  长度为9
    

3.实现对象深拷贝至少两种方式

3.1. 使用JSON暴力转换
通过JSON.stringify() 和 JSON.parse() 将对象转为字符串之后在转为对象。

var obj = {name:‘123’};

var obj2 = JSON.parse(JSON.stringify(obj))

这种简单粗暴的方式有局限性,当值为undefined、function、symbol会在转换过程中被忽略。

3.2. 使用解构赋值
var obj = {name:‘123’,age:13};
var obj2 = {…obj}
只能深度拷贝对象的第一层,如果对象中的属性也是对象的话,没有办法进行深度拷贝的。

3.3. 使用对象的合并
利用Object.assign(), 第一个参数必须是空对象

var obj = {name:‘123’,age:13};
var obj2 = Object.assign({},obj1);
只能深度拷贝对象的第一层,如果对象中的属性也是对象的话,没有办法进行深度拷贝的。

3.4. 利用循环和递归的方式

function deepClone(obj, newObj) {
var newObj = newObj || {};
for (let key in obj) {
if (typeof obj[key] == ‘object’) {
newObj[key] = (obj[key].constructor === Array) ? [] : {}
deepClone(obj[key], newObj[key]);
} else {
newObj[key] = obj[key]
}
}
return newObj;
}
4.代码实现数组去重,至少两种方式

一,set去重

let list = [1,3,4,6,2,2,2,3,1,2,3,4]

let set = new Set(list)

let newList = Array.from(set)

二,

function unique(arr) {
if (!Array.isArray(arr)) {
console.log(‘type error!’)
return
}
var arrry= [];
var obj = {};
for (var i = 0; i < arr.length; i++) {
if (!obj[arr[i]]) {
arrry.push(arr[i])
obj[arr[i]] = 1
} else {
obj[arr[i]]++
}
}
return arrry;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值