此前,w3cschool app開發(fā)者頭條上分享了“騰訊C++初面面經(jīng)”,不少的程序員小伙伴想問有沒有前端開發(fā)員面經(jīng)之類的。
那么,今天w3cschool這里給小伙伴們挑選騰訊前端第一輪面試的兩個問題,并解答。
1、Angular的特性:
#1 良好的應(yīng)用程序結(jié)構(gòu)
通常情況下,我們編寫 JavaScript 沒有明確的結(jié)構(gòu)。雖然在編寫小應(yīng)用程序的時候沒有問題,但這顯然是不適合于大規(guī)模的應(yīng)用程序。使用 AngularJS,您可以通過MVC(模型 - 視圖 - 控制器)或MVVM (模型 - 視圖 - 視圖模型)模式來組織源代碼。 AngularJS 是一個 MVW 框架,其中W代表可以用于任何項目。你可以組織你的代碼模塊,它可顯著提高應(yīng)用程序的可測試性和可維護性。
#2 雙向數(shù)據(jù)綁定
數(shù)據(jù)綁定肯定是 AngularJS 最佳功能之一。你可以聲明綁定的模型到 HTML 元素。當模型發(fā)生變化時,視圖會自動更新,反之亦然。這可以減少大量的傳統(tǒng)樣板代碼,保持模型和視圖同步。
#3 指令
AngularJS 指令讓你使用 HTML 新語法快速的構(gòu)建應(yīng)用程序。您可以創(chuàng)建可重用的自定義組件與指令的API。例如,如果你想自定義日期選擇器小部件,你可以創(chuàng)建一個組件。如果你想要一個奇特的文件上傳與進度指示器可以繼續(xù)創(chuàng)建一個組件。很酷,不是嗎?
#4 HTML 模板
AngularJS 使用 HTML 模板,這使事情變得簡單,并允許設(shè)計人員和開發(fā)人員同時工作。設(shè)計人員可以按照通常的方式創(chuàng)建用戶界面,而開發(fā)人員可以使用聲明性綁定語法很容易配合不同的UI組件的數(shù)據(jù)模型。
#5 可嵌入、注入和測試
關(guān)于 AngularJS 的最好的事情是,它是一個很好的團隊成員。它從來沒有要求全面承諾。AngularJS 官方網(wǎng)站說,你可以根據(jù)你需要使用盡可能多或盡可能少的在項目中使用 AngularJS。如果你只需要雙向數(shù)據(jù)綁定,您可以引入 Angular,只是使用此功能。
AngularJS 支持依賴注入的開箱即用。如果你需要的東西,你只要調(diào)用 Angular 來注入。就這么簡單。這巨大的提高可測試性,因為你可以很容易地在測試的模擬組件。
AngularJS 在創(chuàng)建時候始終考慮著可測試性。這些模塊和依賴注入系統(tǒng),使得單元測試更容易。此外, AngularJS 提供了一個稱為量角器工具,這使得終端到終端的測試變得輕而易舉。所以,你開發(fā)的代碼始終是可測試性和可維護性。
這還不是全部! AngularJS 還提供了更多的實用功能,如路由,過濾器,和動畫等等。
2、slice,substr和substring的區(qū)別
首先,他們都接收兩個參數(shù),slice和substring接收的是起始位置和結(jié)束位置(不包括結(jié)束位置),而substr接收的則是起始位置和所要返回的字符串長度。直接看下面例子:
1 var test = 'hello world';
2
3 alert(test.slice(4,7)); //o w
4 alert(test.substring(4,7)); //o w
5 alert(test.substr(4,7)); //o world
這里有個需要注意的地方就是:substring是以兩個參數(shù)中較小一個作為起始位置,較大的參數(shù)作為結(jié)束位置。
如:
alert(test.substring(7,4)); //o w |
接著,當接收的參數(shù)是負數(shù)時,slice會將它字符串的長度與對應(yīng)的負數(shù)相加,結(jié)果作為參數(shù);substr則僅僅是將第一個參數(shù)與字符串長度相加后的結(jié)果作為第一個參數(shù);substring則干脆將負參數(shù)都直接轉(zhuǎn)換為0。測試代碼如下:
1 var test = 'hello world';
2
3 alert(test.slice(-3)); //rld
4 alert(test.substring(-3)); //hello world
5 alert(test.substr(-3)); //rld
6 alert(test.slice(3,-4)); //lo w
7 alert(test.substring(3,-4)); //hel
8 alert(test.substr(3,-4)); //空字符串
1 注意:IE對substr接收負值的處理有錯,它會返回原始字符串。