20190808面試記錄

Angular的核心?css

組件,指令,服務,依賴注入前端

性能優化?ajax

一、減小http請求(圖片壓縮合並,css壓縮合並,js文件壓縮合並)緩存

二、檢查是否有重定向問題性能優化

三、檢查是否一個列表有屢次請求問題cookie

四、減小DOM數量app

五、延遲加載框架

六、提早加載dom

七、能用css作的儘可能不要用js去作,能有原生寫的儘可能不引用外部插件異步

八、減小cookie的使用

九、儘可能不用iframe

十、前端和後臺協調,使用相應資源的壓縮

十一、根據需求使用ajax緩存

十二、減小dom操做

1三、減量不嵌套循環

1四、css放head儘可能不使用@import,由於@import是同步操做,只有把對應的樣式導入後,纔會繼續向下加載,而link是異步的操做

1五、css設置定位後最好設置z-index改變盒子的層級

1六、使用window.requestAnimationFrame代替傳統的定時器動畫,若是可使用setTimeout代替的setInterval就儘可能不用setInterval

1七、script標籤放在底部加載

1八、綁定多個事件的時候可使用事件委託,減小循環給元素綁定事件

1九、減小flash的使用

20、合理利用本地緩存

2一、儘可能給動畫設置單獨的一個圖層(避免重繪和迴流)

AMD和CMD的標準?現階段使用的都是什麼標準?

AMD 是 RequireJS 在推廣過程當中對模塊定義的規範化產出。
CMD 是 SeaJS 在推廣過程當中對模塊定義的規範化產出。

AMD推崇依賴就近

CMD推崇依賴前置

// CMD
define(function(require, exports, module) {
var a = require('./a')
a.doSomething()
// 此處略去 100 行
var b = require('./b') // 依賴能夠就近書寫
b.doSomething()
// ... 
})

// AMD 默認推薦的是
define(['./a', './b'], function(a, b) { // 依賴必須一開始就寫好
a.doSomething()
// 此處略去 100 行
b.doSomething()
...
})

現階段大部分框架用的較多應該是AMD,依賴前置

TypeScript的多態?

父類定義了一個接口,子類有多種實現

 

AngularJS的依賴注入?

依賴注入(DI)是用來建立對象及其依賴的其它對象的一種方式。 當依賴注入系統建立某個對象實例時,會負責提供該對象所依賴的對象(稱爲該對象的依賴)。

@Injectable 裝飾器會指出這些服務或其它類是用來注入的。它還能用於爲這些服務提供配置項。

providers 告訴 Angular,它的根注入器要負責調用類的構造函數來建立一個實例,並讓它在整個應用中都是可用的。

組件中的providers服務還能夠提供給指定的組件。在組件級提供的服務只能在該組件及其子組件的注入器中使用。

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 這個大殺器來跟蹤異步任務,並進行髒檢查

每個組件都都它本身的檢測器(detector),用於負責檢查其自身模板上綁定的變量。因此每個組件均可以獨立地決定是否進行髒檢查。

Angular 中組件是以樹的形式組織起來的,相應地,檢測器也是一棵樹的形狀。當一個異步事件發生時,髒檢查會從根組件開始,自上而下對樹上的全部子組件進行檢查。相比 Angular1 中的帶有環的結構,這樣的單向數據流效率更高,並且容易預測

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

而Angular2接入了ZoneJS,由它監聽了Angular全部的異步事件。ZoneJS重寫了全部的異步API(所謂的猴子補丁,MonkeyPath)。ZoneJS會通知Angular可能有數據發生變化,須要檢測更新

Angularjs採用的是雙向數據流,錯綜複雜的數據流使得他不得很少次檢查,使得數據最終趨向穩定

相關文章
相關標籤/搜索