nodejs面试总结

本篇记录一下,最近面试的几家公司的一下面试题(一些本人的项目中的内容可能就不介绍了)。

一、一个http请求,从客户端到服务端需要经过哪些步骤?

简单描述为:

1.域名解析(DNS服务器)

2.Tcp连接

3.发送http请求(请求行,请求头,请求信息)

4.服务器响应请求

5.Tcp断开连接 具体看: 传送门

二、谈谈你对js堆和栈的理解?(原始问法是透过 引用类型和值类型的题引申过来的)

三、

① 如何在原型添加属性或方法。

function person(){} 
person.prototype.say = function(){}
复制代码

② 通过形参的方式给person添加属性name,并创建一个叫 zhangsan的对象继承person的属性

function Person(name){
       this.name = name;
}
Person.prototype.say(){
console.log(this.name);
}

const zhangsan = new Person(‘zhangsan’);
复制代码

③ 在创建lisi的对象。

  const lisi = new Person(‘lisi’);
复制代码

④ 如何让李四继承张三的say函数。(如何改变this的指向,让zhangsan的this指向lisi) 说明:调用 lisi.say(); 打印 zhangsan。

 用es5新加入的 bind() 来解决。 详细看:
复制代码

传送门

四、如果有一个逻辑运算很复杂的程序块中(比如亿),运行时会发生什么?遇到这种情况通常会如何解决?process.nextTick()了解吗?谈谈你的理解?

五、

① 声明一个promise,五秒后输出helloworld

② promise里面运行的内容是在 调用.then() 之前执行的还是 调用.then才执行?

六、

const p1 = function(){
return new promise(resolve=>{});
};
const p2 = function(){
return new promise(resolve=>{});
};

async function f1(){
   // 如果要用 p1和p2 的值来作为参数如何接收?如何不用等待 其中p1(或p2)执行完毕之后再去执行p2(或p1)。
}
复制代码

七、谈谈你对面向对象是如何理解的?

八、你们项目中的api通常是如何定的?简单描述一下rest api。

九、Node 所熟悉的框架,谈谈 express是如何从一个中间件执行到下一个中间件的(express的路由机制)?

十、Express和koa 或者egg的区别?

十一、举出几个 你做过的分库分表的实例。

十二、你通常是如何优化mysql的查询?

十三、你们项目中用到了redis的那些方法,set 和 mset的区别?

十四、Mysql的索引是如何实现的。

十五、举例写出一个Mysql储存过程和一个事务。

十六、Es5中的普通函数和es6中的箭头函数有什么区别?还有this的指向。

十七、你在开发过程中,遇到了哪些难以解决的问题,是如何解决的?(几乎每一家公司都问)

十八、你常用的系统有哪些?简述Docker 是如何部署的?

event loop、libuv、事件循环 了解吗?谈谈你的理解。

最后上一张,面试的笔试题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值