nodejs面試總結

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

1、一個http請求,從客戶端到服務端須要通過哪些步驟?

簡單描述爲:git

1.域名解析(DNS服務器)es6

2.Tcp鏈接github

3.發送http請求(請求行,請求頭,請求信息)面試

4.服務器響應請求redis

5.Tcp斷開鏈接 具體看: 傳送門sql

2、談談你對js堆和棧的理解?(原始問法是透過 引用類型和值類型的題引伸過來的)

3、

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

function person(){} 
person.prototype.say = function(){}
複製代碼

② 經過形參的方式給person添加屬性name,並建立一個叫 zhangsan的對象繼承person的屬性api

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

const zhangsan = new Person(‘zhangsan’);
複製代碼

③ 在建立lisi的對象。promise

const lisi = new Person(‘lisi’);
複製代碼

④ 如何讓李四繼承張三的say函數。(如何改變this的指向,讓zhangsan的this指向lisi) 說明:調用 lisi.say(); 打印 zhangsan。

用es5新加入的 bind() 來解決。 詳細看:
複製代碼

傳送門

4、若是有一個邏輯運算很複雜的程序塊中(好比億),運行時會發生什麼?遇到這種狀況一般會如何解決?process.nextTick()瞭解嗎?談談你的理解?

5、

① 聲明一個promise,五秒後輸出helloworld

② promise裏面運行的內容是在 調用.then() 以前執行的仍是 調用.then才執行?

6、

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

async function f1(){
   // 若是要用 p1和p2 的值來做爲參數如何接收?如何不用等待 其中p1(或p2)執行完畢以後再去執行p2(或p1)。
}
複製代碼

7、談談你對面向對象是如何理解的?

8、大家項目中的api一般是如何定的?簡單描述一下rest api。

9、Node 所熟悉的框架,談談 express是如何從一箇中間件執行到下一個中間件的(express的路由機制)?

10、Express和koa 或者egg的區別?

11、舉出幾個 你作過的分庫分表的實例。

12、你一般是如何優化mysql的查詢?

十3、大家項目中用到了redis的那些方法,set 和 mset的區別?

十4、Mysql的索引是如何實現的。

十5、舉例寫出一個Mysql儲存過程和一個事務。

十6、Es5中的普通函數和es6中的箭頭函數有什麼區別?還有this的指向。

十7、你在開發過程當中,遇到了哪些難以解決的問題,是如何解決的?(幾乎每一家公司都問)

十8、你經常使用的系統有哪些?簡述Docker 是如何部署的?

event loop、libuv、事件循環 瞭解嗎?談談你的理解。

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

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息