nodejs面試總結

ipenman發表於2019-03-15

本篇記錄一下,最近面試的幾家公司的一下面試題(一些本人的專案中的內容可能就不介紹了)。

一、一個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、事件迴圈 瞭解嗎?談談你的理解。

最後上一張,面試的筆試題

nodejs面試總結

相關文章