1. 程式人生 > >記科大訊飛武漢研發中心前端面試

記科大訊飛武漢研發中心前端面試

很幸運遇到了一個人很好的面試官,問的問題也比較基礎,不過自己可能還是基礎不紮實吧,也有點緊張,問題回答的一般,主要自己會的都沒有說的太好,希望下次面試會有進步,加油!
面試過程還真是步步緊逼的感覺,我自我介紹還沒到一半就被打斷了。。

1.js如何實現面向物件
答:面向物件有三大特性,封裝,繼承,多型還沒說出口,他就問我如何繼承

2.如何繼承
我說js主要基於原型鏈進行繼承,原型鏈主要是基於一個母物件,然後層層分級,原型鏈最頂層是一個Object原型物件,接著還沒說然後下一層分為function array object string number

3.問題變成了原型鏈是什麼
我就說了一堆 不過感覺沒說好 只說了根據proto

屬行進行繼承,形成一個鏈式結構,頂層是母物件,底層是自己建立的物件
求答案

4.又問我基本型別有哪些
我竟然把boolean給完全想不起來了

5.接著問我如何鑑別各大基本型別,如何鑑別null,如何鑑別array和function等
我說用typeof instance鑑定
其實最簡單的應該是null === null判斷
array直接用isArray
function直接用typeof

6.終於完整回答完一個問題了,又問我prototype和_proto_是什麼關係
我就說前者主要在new關鍵字中起作用,後者是原型鏈繼承的屬性

7.問我閉包的意義
封裝私有變數 保持不被回收 回答的有點亂不過這兩點都說出來了

8.有接著問私有變數有什麼意義
避免全域性變數汙染和錯誤訪問 沒回答出安全和保持程式碼封裝性,少出bug,訪問便利,只要向上一個作用域

9.問我知道跨域嗎
說了 jsonp document.domain window.name
若要詳細解答請看我的跨域小結

10問ajax你知道有幾種請求
get post

11.http狀態碼
說了 200 400 401 402 403 404然後終於被打斷了

12.問我為何選擇vue這個框架
同學推薦
網上評論
看書

13.如何認識元件化開發
答得不好,下面是自己的一點看法
很多人說元件化就是html css js寫在一起,並且追求面向物件高內聚、低耦合,實現可複用、拼接。

我理解的元件化開發其實沒那麼複雜,具體來說,他可能只是一種具體功能的抽象化,如ajax,它也可能只是一個私人個性化定製的元素,當然其實瀏覽器已經給我們私人定製了input,checkbox等元件,包括樣式以及各種介面和性質。當然實際開發中還是要考慮到實際的業務需求,可能跟開源、抽象形成可複用模組不同,實際業務需求中可能會犧牲掉一部分可擴充套件性來提高效能等,當然反過來說其實我們在選擇了抽象、可複用後就增加了複雜度以及犧牲了效能,總之一切還是以專案需求為主,但開源模組就需要相對絕對的可擴充套件性,高度封裝高內聚低耦合很大程度上決定了它的應用範圍、未來高度和潛力。

綜合一下,說白了元件就是一個高度封裝的可擴充套件的實現一定功能的程式碼塊

14.MVC和MVVM的區別是什麼,如何理解MVVM機制
這個問題回答不好,自己根據書在另一篇部落格整理了答案

15.介紹vue vuex vue-router
這塊答得還可以吧
主要先介紹了vue
後基於vuex如何進行狀態管理,vue-router的路由功能展開說了一下,順便介紹了SPA

16.問看了什麼書
dom程式設計藝術 js高程 js語言精粹 js設計模式與開發設計 you dont know js es6入門 js設計模式 vue權威指南

最後我問他對自己的建議和評價
缺專案經驗
團隊合作經驗
可以考慮轉產品?ex me

最後又交流了一下前端技術發展,開發流程等,面試官人不錯,雖然感覺他好像知道的也不多。。。

總結一下:
缺乏專案經驗,聯合後臺開發經驗
職業規劃不明確
學習深度不夠,跨域、效能以及對框架認識不夠
程式碼量不夠,基礎不太紮實