第一次面試體會

2017年6月9日,我第一次面試,結(jié)果一塌糊涂。
我的筆試題,很基礎(chǔ),不過剛看到也確實是懵逼,以下總結(jié):

IMG_20170609_173635.jpg

js函數(shù)的幾種調(diào)用方式

  1. 函數(shù)調(diào)用方式
  2. 方法調(diào)用方式
  3. 構(gòu)造器調(diào)用方式
  4. apply|call調(diào)用方式

詳細(xì)說明傳送門
http://www.cnblogs.com/winyh/p/6668811.html
http://www.jb51.net/article/62535.htm

我最常用的是函數(shù)調(diào)用方式,就是寫個function,然后直接名字調(diào)用。
方法其實是在函數(shù)內(nèi)部寫屬性函數(shù)調(diào)用。
構(gòu)造器調(diào)用是在函數(shù)原型鏈上寫屬性函數(shù)調(diào)用,不過不推薦使用了。
apply這種調(diào)用方式的優(yōu)點在于可以指定this指向的對象。
其實幾種調(diào)用方式的區(qū)分都是和this有關(guān)系。

傳送門中有提到call和apply的區(qū)別,但是不是說的很清楚,這里需要信息查閱一下資料!
其實這些JavaScript語言精粹里面都有,只是沒好好看,可惜。

如何提高nodejs服務(wù)器的穩(wěn)定性

這個問題其實以前都沒有怎么關(guān)注過,不過這里提出來了想想似乎是很容易發(fā)生的問題。nodejs作為一種單線程的環(huán)境,一旦崩潰影響的就是所有的軟件模塊,這個很危險。以下是總結(jié)了一些解決方法:

  1. 當(dāng)然是從要求開發(fā)者的角度出發(fā),多寫try...catch等一些block容錯了
  2. 有利用一些外部的程序監(jiān)聽,比如forever,supervisor之類
  3. 增加日志管理,log4js 模塊(這個需要了解以下)
  4. 有提到domain這個東西,不是很清楚
  5. process.on('uncaughtException', function(err){...}); 來處理未被捕捉的錯誤。

傳送門
https://cnodejs.org/topic/4f16442ccae1f4aa270010e7
http://www.cnblogs.com/yupeng/p/3472214.html

動態(tài)鏈接和靜態(tài)鏈接的區(qū)別

其實這個問題我是很好奇和js的關(guān)系,總感覺這個是c++鏈接庫的知識。
明天查一下

http從發(fā)起請求到接受響應(yīng)的整個過程

傳送門
http://www.cnblogs.com/YeChing/p/6337378.html

js原型鏈理解

//js的變量和函數(shù)聲明都會提升,但是函數(shù)提升在變量提升之上,所以如果重名,變量會覆蓋函數(shù)。

function Foo(){
  getName = function() {console.log(1);}
  return this;
}

Foo.getName = function() {console.log(2);}
Foo.prototype.getName = function(){console.log(3);}
var getName = function(){console.log(4);}
function getName(){console.log(5);}

//函數(shù)的本身屬性
Foo.getName();2

//函數(shù)提升
getName();4

//不知道為什么這個無法運行。
Foo().getName();

//函數(shù)提升
getName();4

// new Foo.getName();2

//構(gòu)造器調(diào)用函數(shù),只會調(diào)用原型鏈上的屬性
new Foo().getName();3
new new Foo().getName();3

傳送門
http://www.cnblogs.com/wangfupeng1988/p/3977924.html

js this的理解

分為兩個部分,一個是瀏覽器中的this,另一個是node中的this。

  • 瀏覽器中的this遵從函數(shù)調(diào)用四種方式,分別指向?qū)?yīng)的對象。
  • node中的this卻不太一樣。

node函數(shù)中的this指向global。
全局中的this是一個空的對象,也就是module.exports。
構(gòu)造對象中的this指向這個對象。

傳送門
http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html
http://www.jb51.net/article/81556.htm

js call和apply的區(qū)別與作用

  • 對來call和apply這兩個函數(shù)沒有太大的區(qū)別,唯一就是傳入?yún)?shù)一個是不定長(call),一個是數(shù)組(apply),而這兩個函數(shù)的第一個參數(shù)其實都是你想指定的上下文。

    function add()
    {
      this.a = 1;
      this.b = 2;
      this.showResult = function(){
        console.log(this.a + this.b);
      }
    }
    
    function sub()
    {
      this.a = 3;
      this.b = 4;
    }
    var add1 = new add();
    var sub1 = new sub();
    add1.showResult.call(sub1);      --7
    add1.showResult.apply(sub1,[]);      --7
    
  • bind沒有參數(shù),只綁定上下文。
    var num = 9;

    function Module(){
      this.num = 81;
      this.getNum = function(){
        console.log(this.num);
      }
    }
    
    var mymodule = new Module();
    mymodule.getNum();
    
    // var getNum = mymodule.getNum;
    function getNum(){
      console.log(num);
    }
     // 9, 因為在這個例子中,"this"指向全局對象
    getNum();//undefined
    
    // 創(chuàng)建一個'this'綁定到module的函數(shù)
    var boundGetNum = getNum.bind(mymodule);
    boundGetNum(); // 81
    

傳送門
http://uule.iteye.com/blog/1158829
https://segmentfault.com/q/1010000003494514
https://segmentfault.com/a/1190000002662251

時間復(fù)雜度計算

閑聊

期間技術(shù)也有問到一些網(wǎng)絡(luò)方面的基礎(chǔ),網(wǎng)絡(luò)各層是負(fù)責(zé)什么的。
還有是promise的狀態(tài)轉(zhuǎn)換。

大boss有問到數(shù)據(jù)庫三大原則和樂觀鎖、悲觀鎖等,還有hashmap數(shù)據(jù)結(jié)構(gòu)怎么實現(xiàn)。

相關(guān)

偏函數(shù)

返回一個函數(shù),返回的函數(shù)是根據(jù)入?yún)⑸傻呐袛囝愋偷暮瘮?shù)。利用了js閉包。

閉包

閉包的最大用處有兩個,一個是前面提到的可以讀取函數(shù)內(nèi)部的變量,另一個就是讓這些變量的值始終保持在內(nèi)存中。

使用注意點

  1. 由于閉包會使得函數(shù)中的變量都被保存在內(nèi)存中,內(nèi)存消耗很大,所以不能濫用閉包,否則會造成網(wǎng)頁的性能問題,在IE中可能導(dǎo)致內(nèi)存泄露。解決方法是,在退出函數(shù)之前,將不使用的局部變量全部刪除。
  2. 閉包會在父函數(shù)外部,改變父函數(shù)內(nèi)部變量的值。所以,如果你把父函數(shù)當(dāng)作對象(object)使用,把閉包當(dāng)作它的公用方法(Public Method),把內(nèi)部變量當(dāng)作它的私有屬性(private value),這時一定要小心,不要隨便改變父函數(shù)內(nèi)部變量的值。

傳送門
http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容