兩日前,發了一篇吐槽,莫名的火了一把。通過你們的建議與鼓勵,因而修改了簡歷,開始了從新投遞,2天后接到第一份面試邀請。php
循序可能有點亂,沒記太清。css
Q:請先作一下自我介紹html
A:barbarbar,然而順便談了下本身的學習經歷,講了下本身在寫的項目啥的。前端
Q:談談你對閉包的理解。vue
A:關於閉包,我我的的理解用一句話歸納就是:一個函數在父級函數執行完畢後,若是任然留有對父級函數內部變量(做用域)的引用,那麼就會創建閉包
,我我的對閉包就是這樣的見解,若是有什麼錯誤,請務必幫我訂正....java
原文出自js面對對象編程指南P88:若是一個函數會在其父級函數返回以後,留住對父級做用域的鏈接的話,相關閉包就會被創立起來node
Q:談談你對ES6新的聲明變量的方式的一些見解python
A:關於這個問題,新的方式,比較有趣的就是所謂的暫時性死區什麼的,簡單的來說吧。關於的第一個const,其實就是聲明一個常量,不容許變動。另外一個let,就是零時變量,或者說是局部變量(這兩個都屬於局部變量),可以由中括號直接產生一個零時的局部做用域了,而沒必要使用之前的當即執行匿名函數了,let很是適合在for循環之類的場景中使用,再也不須要使用迭代函數就能得到當前的變量了,對比var來看,新的這兩個變量聲明都不會在執行時被提高,而且編譯速度比var更快。react
Q:你說const聲明的是常量,不能被改變嘍?css3
A:const聲明的的確是常量,只不過是字面量常量不能被改變,若是是對象類型的話,是引用,對象的屬性被改變是沒法被檢測到的,就像vue中,父子組件中通訊,以及數據,若是是對象屬性被改變,是沒法被檢測到的。
Q:你說Vue中若是對象屬性被修改沒法被檢測到,那麼你有什麼解決方案?
A:這個,其實我以爲最好的解決方案就是嚴格遵照vue的理念,父子組件通訊時不去修改什麼對象屬性,對象數據的屬性,非要改動添加的話:使用(Object.assign() 或 _.extend())面試時,沒想起來單詞怎麼拼.....
關於對象屬性的的修改的方法,有興趣的能夠了解下,
Object.defineProperty
(vue好像就是基於它實現的雙向數據綁定,還沒讀源碼,不清楚楚),Object.assign
是把屬性添加到對象的方法。
Q:關於數組去重複你用什麼方法?
A:由於目前我本身都是使用ES6 + Webapck2
的方式寫的代碼,因此用的是Array.from(new Set(arr)
或者[...new Set(arr)]
的方式去重,原理是,用了set類型,容許重複的值得特性,而後使用from方法或者解構的方法來獲得數組,關於其餘的方法的話,有太多了,好比什麼循環去重,什麼迭代(reduce)啥的,我就懶得講了,由於真的太多了。
Q:你提到了Set類型,那你講下對Es6裏 Map 類型的見解。
A:關於這個Map啊...(猶豫了一下)說實話,我沒怎麼去使用這個新的類型,畢竟怎麼說好呢,目前我是將Map當成一個嵌套數組看待,畢竟Map和對象相比,只是比對象多提供了一個迭代用的接口,而且聽說速度會比對象訪問屬性更快一點,如今來講,實在是沒有什麼使用場景,經常使用的一些工具函數,好比下劃線.js
和lodash.js
(不知道單詞是否拼錯),暫時都尚未提供對map的方法,但對象卻有千千萬的各種方法,而且,map可以實現的對象類型也可以實現,好比迭代對象能夠用for (let [k, v] of Object.entries(obj))
,哦,最後一點差別就是容許key使用數字。不知道你有啥其餘的見解嘛,或者知道map的一些使用場景,能夠和我分享一下。
樓主只用過下劃線.js...對於loadsh.js沒提供是猜想的。另外對象迭代這裏出自,阮一峯大神寫的ES6入門指南,對象篇。完整的是:
let obj = { one: 1, two: 2 }; for (let [k, v] of Object.entries(obj)) { console.log( `${JSON.stringify(k)}: ${JSON.stringify(v)}` ); } // "one": 1 // "two": 2
Q:關於new一個對象,你講一下,具體是怎麼實現的?
A: 什麼?new一個對象,額,這個不就是一個構造函數,而後new一個新的對象嘛,還能有什麼流程嘛。不太清楚,你具體問的內容哈,你是問,構造函數內容的執行邏輯原理仍是啥?
Q:那你談一下對於原型的理解
A:原型啊,從哪裏開始講呢,我以前好像寫過篇關於原型的博文,要不看看博文?畢竟在我看來,這方面內容太廣了,必定要講的話,能夠說,(比面試時稍微把邏輯更通一點,面試時太緊張邏輯有點亂)原型自身就是一個對象,有本身的屬性與方法,默認狀況下是有一個指針指向原型的構造函數,構造函數也有個指針指向本身的prototype...而後由構造函數new出來的對象,在原型鏈上默認指向構造函數指着的原型。。。好吧,我編不下去了,說真的,這玩意我得有個圖或者紙纔好演示啊。。要不你給我張紙,我畫個圖?
廖雪峯大神寫的教程很是棒,推介一下:http://www.liaoxuefeng.com/wi...
Q:既然你原型不懂,那就談談原型鏈吧?
A: (內心活動:原型我得有紙才能演示,原型鏈,不得更須要紙嗎),啊,原型鏈啊,我以前真的本身寫過篇關於原型鏈的整理,能給你看下博客嗎?...你讓我憑空講...好吧,大概原型鏈就是...說實話,我如今用的都是Es6的class方法,雖然class也是基於原型鏈的語法糖,可是簡單方便啊,因此我這段時間都都沒怎麼關心原型鏈的,畢竟原型鏈繼承在js面對對象編程指南里寫了十幾種方法啊...我這人,有時候喜歡簡單高效的東西,就像數組去重,我都用set,只有遇到一些相關問題,我纔回去找新的解決方案。(後面把十幾種方法拍張照給你們觀摩觀摩,雖然有些不是基於原型的)
Q:你說你都是遇到問題再去解決,那你談談移動端一像素問題你是怎麼解決的?
A:移動端一像素啊,簡單來說,就是設置個僞類,而後響應下屏幕的dpr,用css3的縮放進行解決。用一些預處理器寫個mixin函數就能解決。
Q:有其餘的解決方案嗎?
A:這個老實說,還真沒研究過,在前面我提過,不少東西我都是遇到問題而後去解決的,若是目前有最優解決方案,我爲啥要去用其餘的,好比目前移動佈局我用的就是flex佈局,我感受兼容性也不差。。。固然,主要緣由也在於我沒啥工做經驗。
順手再推一波阮一峯大神的flex教程:http://www.ruanyifeng.com/blo...
Q:你有使用過css預處理器嗎?
A:目前在使用stylus,less也有接觸過,stylus我主要喜歡無需括號,以及變量或者函數不用加什麼奇怪的前綴
Q:對於手機應用你有過了解嗎?
A:若是指的是混合開發的webapp手機應用,我最近研究過weex,就是阿里去年開源的那個相似react native的,目前正準備寫點什麼我的項目,可是由於時間緣故因此暫時仍是隻計劃。
Q:對於性能優化,你有什麼方案?
A:性能優化啊,說實話,我目前由於主要都是本身的做品,沒遇到過什麼特別徐亞喲優化的地方,若是必定要講的話。。。好吧,我簡單講一下吧,好比不要使用全局變量,由於相比局部變量,全局變量被索引時的速度最慢;不要過多使用閉包,閉包會佔用內存;要對閉包中須要遞歸的地方進行尾遞歸優化否則容易致使內存泄漏(主要好像是ie下,沒有實際測試過),對script標籤進行合併,畢竟頁面遇到script標籤就會中止渲染(主要是由於瀏覽器不能肯定script標籤會不會改動dom),在使用ajax時,對一些內容儘可能使用get(get默認會保留緩存),額...還有的話,說實話,我來面試前忘了去找份面試指南背,不少東西因爲我沒有實際的遇到過我並無太過深刻。若是是我遇到過得問題,我詳細我應該可以瞭解。提及來以前拜讀過一本叫作js函數式編程指南的..由於內容有點深,就只看了部分。
關於全局變量被索引的速度最慢,出自高性能js...沒有實際測試過,閉包內遞歸要使用尾遞歸優化,附送上鍊接,一樣是阮一峯大神的:http://www.ruanyifeng.com/blo... ,關於 js函數式編程指南鏈接:https://llh911001.gitbooks.io... (很是讚的一本免費電子書,不知爲什麼,關注的人不多)
Q:你提到了ajax,那就談下ajax吧。
A:ajax啊,這玩意其實很簡單,主要就是異步的從後端獲取數據嘛,搞來搞去也就那麼些接口啥的,在初學js時,我爲了能響應ajax還簡單的學了php,就是後端提供接口,前端用get或者post或者其餘方式去請求數據,不會讓頁面中止運行啥的,目前我在寫的項目中接入了聊天機器人,因爲跨域問題,就用node作了箇中轉層,用來轉發對機器人api的請求,流程就是前端請求本地的服務器,服務器請求機器api...
Q:你對於跨域的解決方法瞭解多少?
A:前端跨域嗎,最經常使用的應該是jsonp吧,後端動態生成script(可以執行的js函數),而後把數據發送過來。或者是用node作箇中轉層啥的,方法好像挺多,H5也有種新的方案,不過沒深刻研究。
Q:咱們這邊後端用的不是node,是java,你怎麼使用jsonp。
A: 啊,java不能返回動態的script嗎?我以前學過的php好像行,如今在學的python也行啊。
Q:python是什麼?
A:python就是...它是一門編程語言,當初學node寫爬蟲時,發現node用模塊模擬的多線程本質仍是單線程,而且錯誤處理還麻煩,我還得用進程維護模塊去啓動...而後上網查,發現都說python好,因而就開始學了些python,把教程簡單過了遍,後來由於些事情因此就沒怎麼碰了。。。。
安利下廖雪峯大神的python教程:http://www.liaoxuefeng.com/wi...
Q:那你如今目前在作什麼
A:目前,有個我的博客在寫完成度過低,因此沒有開源,後端使用koa2(優雅的async函數纔是個人追求,express的嵌套,見鬼去)正考慮前端要不要上個react,畢竟我目前一直在深刻Vue2,對一樣是Mvvm的react好像沒作過啥具體項目。
Q:其餘對公司有什麼想問的嘛?
A:barbarbarabr(問了些關於公司結構的問題),提及來,我對於本身知識面的廣度自信的,可是對於深刻有所欠缺。
不知道爲什麼,面試當天就被告知未經過,我在想,果真是由於沒有背過前端面試題嘛。。。仍是原型那裏沒回答出了問題,對於面試官,一直帶着笑容,然而,一些反問的內容均未給出回覆。。。全程笑眯眯。。年齡目測比我年長几歲的樣子。。