actionscript面試題
actionscript面試會出什么題呢?下面是學(xué)習(xí)啦小編為大家?guī)淼腶ctionscript面試題,相信對你會有幫助的。
actionscript面試題
1.as2與as3.的最主要區(qū)別是什么?
答:首先,as2和as3是完全不同的語言,幾乎沒有兼容性可言。as2編譯用的AVM1虛擬機,as3用的AVM2,速度快,提供了一些基礎(chǔ)異常處理。 as3是純的OOP,強類型語言。as2不是。具體的差別有太多太多。
2.flex的開發(fā)框架有哪些,它們有什么優(yōu)缺點?
答: 最常見的當(dāng)然是Cairngorm、Puremvc了,此外還有Mate,Swiz等等,據(jù)說被廣泛應(yīng)用的已經(jīng)有10幾款了。Cairngorm作為 Adobe官方出品,有著貴族血統(tǒng)的它比較全面,是這些框架中已知bug最少的,但是基于他的應(yīng)用相對臃腫復(fù)雜一些,需要對每個可以被觸發(fā)的事件寫一個對 應(yīng)的Command,編碼量巨大,并且單元測試很不容易,不適合敏捷開發(fā)。Puremvc應(yīng)該是現(xiàn)在用的最多的as框架了。比較完善、并且與 Cairngorm相比,更適合中小型應(yīng)用的開發(fā),它與Cairngorm一樣,也是以MVC模式為中心,并以Façade作為中央存儲器的單件類的形式 進行開發(fā)的。說下Mate,它是一個比較奇怪的框架,是基于標(biāo)簽的事件驅(qū)動型的。也就是說你不能再隨意的寫as類的,在使用Mate的情況下,只能用 MXML來做這些事情。Swiz是Mate的孿生兄弟,長的挺像,沒具體用過,不大了解。
3.在flex開發(fā)中,很多代碼都寫在mxml文件里, 為了做到mvc模式,你是怎么處理的。
我認為mxml并不影響mvc模式啊。分兩種情況來討論,首先,是自己創(chuàng)建整個應(yīng)用結(jié)構(gòu)的時候,那我們可以手動將UI所在的mxml歸為一類,然后由 Mediator去操作或者說控制這些組件既可了,然后Mediator又統(tǒng)一交給Controller去操作。如果采用其他框架來進行開發(fā)的話,那就更 不用來考慮這個問題了,像Cairngorm、Puremvc之類的框架已經(jīng)很好的為我們解決了這些問題。只要按照它們的使用規(guī)范來進行開發(fā),自然沒有問 題。
4.如果發(fā)生內(nèi)存泄露,你是如何解決的?
在profile觀察中已經(jīng)內(nèi)存泄漏是沒有很好的解決辦法的,至少我不知道,我能做的只是盡量去避免這種情況的發(fā)生,比如說 注意不要循環(huán)引用,特別是在使用Timer的時候要格外注意,不要忘記全局對象上的引用的清除,在創(chuàng)建控制器和模型的時候要注意一定要使用單件模式。在 addEventListener時候盡量采用弱引用、自引用、或者子對象引用,以避免內(nèi)存泄漏。
5。as3.0垃圾回收器是如何工作的?
flash player 8之前采用的是引用計數(shù)法,在flash player 8 之后用的是標(biāo)記法,簡單的說就是:從應(yīng)用的根節(jié)點開始,遍歷所有其上的引用,標(biāo)記每個它所發(fā)現(xiàn)的
對象。然后迭代遍歷每個被標(biāo)記的對象,標(biāo)記它們的 子對象。這個過程第歸進行,直到Player遍歷了應(yīng)用的整個對象樹并標(biāo)記了它所發(fā)現(xiàn)的每個東西。在這個過程技術(shù)的時候,可以安全地認為,內(nèi)存中那些沒有 被打標(biāo)記的對象沒有任何活動引用,因此可以被安全地釋放內(nèi)存。一般來說,flash player采用的是一種低頻的垃圾回收機制,F(xiàn)lash Player的垃圾回收發(fā)生在Flash Player需要另外請求內(nèi)存之前。但并不是每次應(yīng)用申請內(nèi)存時都會導(dǎo)致垃圾回收的執(zhí)行,只有當(dāng)Flash占用的內(nèi)存緊張到一定程度時才會執(zhí)行真正的垃圾 回收,一定程度上取決于客戶端計算機的物理內(nèi)存的大小。
6 flex和后臺語言是如何交互的?
無疑就這兩種方法:remote object 或者是Http service
7。你是如何處理前端速度慢的問題?
flex前端速度慢 其實仔細說應(yīng)該分2部分,1.是flex生成的swf由于SDK龐大的關(guān)系,swf體積也跟著龐大了,這我們可以做的就是用Module動態(tài)加載,還有就 是RSL了。2.處理速度慢,遠程方法速度慢,這是AVM的硬傷了,基本沒有很好的解決方法,我們能做的只是讓這個異步進行的更完美一些,讓用戶在等待的 過程中,做其他的事情,以至于讓用戶忽略這段等待的時間。
8.flash與flex是如何協(xié)調(diào)開發(fā)的?
這個問題可以這樣來理解,如果是確實需要用到FLEX SDK的應(yīng)用,那我們就可以建立一個flex工程,具體需要flash做UI的時候,輸出成swc作為flex的skin,如果說并不需要flex sdk,只是為了編碼方便而選擇flex的話,那我們只要建立一個as工程,讓flex作為flash的編碼器。
9.使用Flex Bulider3建立一下新的.mxml的頁面時默認的背景是藍色的,請問用什么辦法能修改掉此背景顏色,以至于下次創(chuàng)建時背景不是為默認的藍色的呢?請 寫出你認為正確的方法.
還真不會,我的做法一般是在這個工程里面,建一個總的css,都在里面規(guī)范起來,包括背景色啊,還有字體大小等等。。
10. 使用Flex Bulider3如何跟蹤程序?
裝個debug版本的flash player,到時候在FB里面F11 debug它咯。
11. 請問enterFrame和timerEvent這2個事件有什么區(qū)別?請說下具體的使用方法和相關(guān)的使用場合?
不會 我覺得差不多,不過我一般用enterFrame,還請高人指點。。
12. 請說下你理解AS3的事件機制是什么機制?你認為正確的就可以說出來.
AS3事件流分三個階段:
1.捕獲階段 (即由根節(jié)點流向子節(jié)點,檢測每個節(jié)點是否注冊了監(jiān)聽器)
2.目標(biāo)階段 (激發(fā)在目標(biāo)對象本身注冊的監(jiān)聽程序)
3.冒泡階段 (從目標(biāo)節(jié)點到根節(jié)點,檢測每個節(jié)點是否注冊了監(jiān)聽器)
當(dāng)中涉及了兩個屬性target和currentTarget,target是事件的派發(fā)者,currentTarget是正在檢測的對象,當(dāng)開始了事件 流,事件的currentTarget屬性處于不斷變化中.
PS:注冊事件時捕獲階段默認是關(guān)閉的,無論事件是否開啟了捕獲,事件流只會兩選一去 執(zhí)行注冊的監(jiān)聽程序
關(guān)于EventDispatcher三個函數(shù)的參數(shù):
1.addEventlistener(事件類型,監(jiān)聽函數(shù),是 否打開捕獲階段,監(jiān)聽器優(yōu)先級別,是否打開弱監(jiān)聽)
2.removeEventListener(事件類型,監(jiān)聽函數(shù),是否打開捕獲階段) (前兩個參數(shù)是必須的,如果注冊監(jiān)聽器時打開了捕獲階段,那么第三個參數(shù)也是必須的,否則會出現(xiàn)錯誤)
3.dispatchEvent(new Event(事件類型,是否冒泡,是否可以取消事件))
關(guān)于Event擴展有兩點要注意:
1.可以定義字符串常量代表事件類型.
2. 構(gòu)造函數(shù)必須調(diào)用父類的構(gòu)造函數(shù),super(type,bubbles,cancelable)
3.擴展Event可以使Event帶自定義變 量,從而可以傳遞數(shù)據(jù).
13.請問addEventListener里面有幾個參數(shù),你能說出具體的使用方法嘛?
這題出的有點像考API記憶力呵呵, 它的五個參數(shù)分別是addEventlistener(事件類型,監(jiān)聽函數(shù),是否打開捕獲階段,監(jiān)聽器優(yōu)先級別,是否打開弱監(jiān)聽)
看過“actionscript面試題”的人還看了: