日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

20190808面试记录

發(fā)布時(shí)間:2024/7/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 20190808面试记录 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Angular的核心?

組件,指令,服務(wù),依賴注入

性能優(yōu)化?

1、減少http請(qǐng)求(圖片壓縮合并,css壓縮合并,js文件壓縮合并)

2、檢查是否有重定向問題

3、檢查是否一個(gè)列表有多次請(qǐng)求問題

4、減少DOM數(shù)量

5、延遲加載

6、提前加載

7、能用css做的盡量不要用js去做,能有原生寫的盡量不引用外部插件

8、減少cookie的使用

9、盡量不用iframe

10、前端和后臺(tái)協(xié)調(diào),使用相應(yīng)資源的壓縮

11、根據(jù)需求使用ajax緩存

12、減少dom操作

13、減量不嵌套循環(huán)

14、css放head盡量不使用@import,因?yàn)?#64;import是同步操作,只有把對(duì)應(yīng)的樣式導(dǎo)入后,才會(huì)繼續(xù)向下加載,而link是異步的操作

15、css設(shè)置定位后最好設(shè)置z-index改變盒子的層級(jí)

16、使用window.requestAnimationFrame代替?zhèn)鹘y(tǒng)的定時(shí)器動(dòng)畫,如果可以使用setTimeout代替的setInterval就盡量不用setInterval

17、script標(biāo)簽放在底部加載

18、綁定多個(gè)事件的時(shí)候可以使用事件委托,減少循環(huán)給元素綁定事件

19、減少flash的使用

20、合理利用本地緩存

21、盡量給動(dòng)畫設(shè)置單獨(dú)的一個(gè)圖層(避免重繪和回流)

AMD和CMD的標(biāo)準(zhǔn)?現(xiàn)階段使用的都是什么標(biāo)準(zhǔn)?

AMD 是 RequireJS 在推廣過程中對(duì)模塊定義的規(guī)范化產(chǎn)出。
CMD 是 SeaJS 在推廣過程中對(duì)模塊定義的規(guī)范化產(chǎn)出。

AMD推崇依賴就近

CMD推崇依賴前置

// CMD define(function(require, exports, module) { var a = require('./a') a.doSomething() // 此處略去 100 行 var b = require('./b') // 依賴可以就近書寫 b.doSomething() // ... })// AMD 默認(rèn)推薦的是 define(['./a', './b'], function(a, b) { // 依賴必須一開始就寫好 a.doSomething() // 此處略去 100 行 b.doSomething() ... })

現(xiàn)階段大部分框架用的較多應(yīng)該是AMD,依賴前置

TypeScript的多態(tài)?

父類定義了一個(gè)接口,子類有多種實(shí)現(xiàn)

?

AngularJS的依賴注入?

依賴注入(DI)是用來創(chuàng)建對(duì)象及其依賴的其它對(duì)象的一種方式。 當(dāng)依賴注入系統(tǒng)創(chuàng)建某個(gè)對(duì)象實(shí)例時(shí),會(huì)負(fù)責(zé)提供該對(duì)象所依賴的對(duì)象(稱為該對(duì)象的依賴)。

@Injectable 裝飾器會(huì)指出這些服務(wù)或其它類是用來注入的。它還能用于為這些服務(wù)提供配置項(xiàng)。

providers 告訴 Angular,它的根注入器要負(fù)責(zé)調(diào)用類的構(gòu)造函數(shù)來創(chuàng)建一個(gè)實(shí)例,并讓它在整個(gè)應(yīng)用中都是可用的。

組件中的providers服務(wù)還可以提供給指定的組件。在組件級(jí)提供的服務(wù)只能在該組件及其子組件的注入器中使用。

import { Component } from '@angular/core'; import { HeroService } from './hero.service';@Component({selector: 'app-heroes',providers: [ HeroService ],template: `<h2>Heroes</h2><app-hero-list></app-hero-list> ` }) export class HeroesComponent { }

?

Angular的臟值檢查不再被吐槽呢?

Angular 使用了 zone.js 這個(gè)大殺器來跟蹤異步任務(wù),并進(jìn)行臟檢查

每一個(gè)組件都都它自己的檢測(cè)器(detector),用于負(fù)責(zé)檢查其自身模板上綁定的變量。所以每一個(gè)組件都可以獨(dú)立地決定是否進(jìn)行臟檢查。

Angular 中組件是以樹的形式組織起來的,相應(yīng)地,檢測(cè)器也是一棵樹的形狀。當(dāng)一個(gè)異步事件發(fā)生時(shí),臟檢查會(huì)從根組件開始,自上而下對(duì)樹上的所有子組件進(jìn)行檢查。相比 Angular1 中的帶有環(huán)的結(jié)構(gòu),這樣的單向數(shù)據(jù)流效率更高,而且容易預(yù)測(cè)

<!--value是數(shù)據(jù)綁定,input是事件綁定--> <input [value]="currentHero.name" (input)="currentHero.name=$event.target.value"> <!--等價(jià)--> <input [(ngModel)]="currentHero.name">

而Angular2接入了ZoneJS,由它監(jiān)聽了Angular所有的異步事件。ZoneJS重寫了所有的異步API(所謂的猴子補(bǔ)丁,MonkeyPath)。ZoneJS會(huì)通知Angular可能有數(shù)據(jù)發(fā)生變化,需要檢測(cè)更新

Angularjs采用的是雙向數(shù)據(jù)流,錯(cuò)綜復(fù)雜的數(shù)據(jù)流使得他不得不多次檢查,使得數(shù)據(jù)最終趨向穩(wěn)定

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/llcMite/p/11325659.html

總結(jié)

以上是生活随笔為你收集整理的20190808面试记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。