程序员面试题
?
?
1.?你對MVC的理解??
答:MVC就是?模型?、視圖?、控制器?的縮寫,視圖和用戶交互??通過事件導致控制器改變??控制器改變導致模型改變??或者控制器同時改變兩者??模型改變?導致視圖改變?或者視圖改變?潛在的從模型里面獲得參數?來改變自己。???
Mvc就是一種模型?,一種編程思想。?
請解釋下MVC模式
MVC(Model-View-Controller),即把一個應用的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成三個層——模型層、視圖層、控制層。
視圖(View):代表用戶交互界面,MVC設計模式對于視圖的處理是限于視圖上數據的采集和處理,以及用戶的請求,而不包括在視圖上的業務流程的處理。
模型(Model):業務流程/狀態的處理以及業務規則的制定。業務流程的處理過程對其它層來說是黑箱操作,模型接受視圖請求的數據,并返回最終的處理結果。業務模型的設計可以說是MVC的核心。
控制(Controller):可以理解為從用戶接收請求,?將模型與視圖匹配在一起,共同完成用戶的請求,但是它卻不做任何的數據處理。
它的優勢在與:開發人員可以只關注整個結構中的其中某一層,可以很容易的用新的實現來替換原有層次的實現,可以降低層與層之間的依賴,有利于標準化,利于各層邏輯的復用
?
2.?as3怎樣連接數據庫??
答:as3?要和數據庫通信?一般通過第三方語言?比如?jsp/?php?/asp/?asp.net?等??
As3通過解析xml里面的數據和數據庫通信。
?
3.?多場景如果互相切換(考慮效率);
答:通過nextscene()函數??
或者用Loader?加載另外的swf文件來場景切換。
?
4.?怎么獲取居中的位置??
答:mc.x=stage.StageWidth/2
mc.y=stage.StageHeight/2
?
5.?了解as3與PHP通信么?
答:通過apache軟件??首先需要兩個文件?我隨便起一個名字test.php??和?test.fla
把他們放在apache運行目錄下面?
As代碼里面主要用到urlloader、urlrequest、urlvariable等類,用urlrequest.data?屬性和Urlrequest.method等屬性?來和php傳參數。
Php里面發送什么,as就可以接收到什么,這樣可以實現as3和php的通信。
?
6:談談對A*尋路算法的理解
答:??一個估價值函數??f(n)=g(n)+h(n)
g(n)就是當時目標的位置到指定點的位置的一個值
h(n)就是指定點的位置到目標點的位置的的一個值
?
7:?as2與as3.的最主要區別是什么?,以及相互的優缺點
答:as2和as3最大的區別在于??as2是面向過程的?as3是純面向對象的?
As3增加了很多新的東西??比如正則表達式?,垃圾回收機制,增加了很多error類。
?
里面的函數架構變了很多??頂級函數縮減了很多??as3的架構更合理??
?
8:?談談你對面向對象的理解
答:面向對象關鍵是對象,引用一句話“一切事物結對象”;對象有它固有的屬性和方法,
對象也就是由屬性的集合和方法的集合構成的,?談到對象了,對象是類的一個實例。
類和對象是面向對象的基礎??類是對象的一個抽象,不是具體的實例,??比如說?狗類
分為很多種,而狗就是一個抽象,??狗有四條腿,兩只眼睛?等式他的屬性,?狗會吃東西,叫,等式他的方法。這是我理解的面向對象。
?
9.你的5(或3)年前景規劃和在5(或3)年后在flash行業要達到的目標(及個人職業規劃)?建議:?1.盡量選擇有自主產品的公司,而非單純的外包公司。(有自己的產品,代表你可以對你自己的產品進行持續維護和改良,對你自身的編程能力是一種持續性的提高)2.盡量選擇待成長型的公司,而并非公司越大越好。(成長型的公司往往產品更有創意,開發成本更小,效率更高,有利于你在短時間內積累更多的作品)3.盡量遠離廣告制作公司。
??
10什么是OOP??OOP有那些特征簡要說明?
OOP:?Object?Oriented?Programming,面向對象的程序設計
特征:抽象,多態,封裝,繼承
?
12.請說下你理解AS3的事件機制是什么機制?你認為正確的就可以說出來.
答:從應用程序到最外層的容器在到容器里的組件或容器遍歷注冊的事件,然后按照原路返回冒泡響應事件
AS3事件流分三個階段:
??1.捕獲階段?(即由根節點流向子節點,檢測每個節點是否注冊了監聽器)?
??2.目標階段?(激發在目標對象本身注冊的監聽程序)
??3.冒泡階段?(從目標節點到根節點,檢測每個節點是否注冊了監聽器)
??當中涉及了兩個屬性target和currentTarget,target是事件的派發者,currentTarget是正在檢測的對象,當開始了事件流,事件的currentTarget屬性處于不斷變化中.
PS:注冊事件時捕獲階段默認是關閉的,無論事件是否開啟了捕獲,事件流只會兩選一去執行
?
13.說說就你所知道的用flash做網站建設的優缺點
優點:全面的控制、無縫的導向跳轉、更豐富的媒體內容、更體貼用戶的流暢交互、跨平臺和瘦客戶端的支持、以及與其它Flash應用方案無縫連接集成等
限制:受帶寬與下載時間的限,下載速度有時候很慢;受搜索引擎的限制,現在大部分的搜索引擎搜多不到Flash站點信息,但是google搜索引擎已經解決了這個問題。
?
15.as3.0垃圾回收器是如何工作的?
??flash?player?8之前采用的是引用計數法,在flash?player?8?之后用的是標記法,簡單的說就是:從應用的根節點開始,遍歷所有其上的引用,標記每個它所發現的對象。然后迭代遍歷每個被標記的對象,標記它們的子對象。這個過程第歸進行,直到Player遍歷了應用的整個對象樹并標記了它所發現的每個東西。在這個過程技術的時候,可以安全地認為,內存中那些沒有被打標記的對象沒有任何活動引用,因此可以被安全地釋放內存。一般來說,flash?player采用的是一種低頻的垃圾回收機制,Flash?Player的垃圾回收發生在Flash?Player需要另外請求內存之前。但并不是每次應用申請內存時都會導致垃圾回收的執行,只有當Flash占用的內存緊張到一定程度時才會執行真正的垃圾回收,一定程度上取決于客戶端計算機的物理內存的大小。
?
16.什么是游戲引擎和對他的認識?
?????答:是指應用通常游戲設計的模型構建一個“平臺“,能夠
方便的支持游戲開發后續的工作???引擎就是“用于控制所有游戲功能的主程序,從計算碰撞、物理系統和物體的相對位置,到接受玩家的輸入,以及按照正確的音量輸出聲音等等
?
17.?flash與flex是如何協調開發的?
這個問題可以這樣來理解,如果是確實需要用到FLEX?SDK的應用,那我們就可以建立一個flex工程,具體需要flash做UI的時候,輸出成swc作為flex的skin,如果說并不需要flex?sdk,只是為了編碼方便而選擇flex的話,那我們只要建立一個as工程,讓flex作為flash的編碼器。
?
18.使用Flex?Bulider3建立一下新的.mxml的頁面時默認的背景是藍色的,請問用什么辦法能修改掉此背景顏色,以至于下次創建時背景不是為默認的藍色的呢?請寫出你認為正確的方法.
答:修改sdk\frameworks\projects\framework\default.css里Application的backgroundColor:?#0000FF;
?
19.flex的開發框架有哪些,它們有什么優缺點?
??答:?最常見的當然是Cairngorm、Puremvc了,此外還有Mate,Swiz等等,據說被廣泛應用的已經有10幾款了。Cairngorm作為Adobe官方出品,有著貴族血統的它比較全面,是這些框架中已知bug最少的,但是基于他的應用相對臃腫復雜一些,需要對每個可以被觸發的事件寫一個對應的Command,編碼量巨大,并且單元測試很不容易,不適合敏捷開發。Puremvc應該是現在用的最多的as框架了。比較完善、并且與Cairngorm相比,更適合中小型應用的開發,它與Cairngorm一樣,也是以MVC模式為中心,并以Fa?ade作為中央存儲器的單件類的形式進行開發的。說下Mate,它是一個比較奇怪的框架,是基于標簽的事件驅動型的。也就是說你不能再隨意的寫as類的,在使用Mate的情況下,只能用MXML來做這些事情。Swiz是Mate的孿生兄弟,長的挺像,沒具體用過,不大了解。
11.使用Flex?Bulider3如何跟蹤程序?
答:我知道的三種1.trace()?2.設置斷點?3.當不在調試模式時可以調用as的Alert.show()或js的alert()?如:navigateToURL(new?URLRequest("javascript:alert(traceMsg)"),?"_self");
?
20.在flex開發中,很多代碼都寫在mxml文件里,為了做到mvc模式,你是怎么處理的。
??我認為mxml并不影響mvc模式啊。分兩種情況來討論,首先,是自己創建整個應用結構的時候,那我們可以手動將UI所在的mxml歸為一類,然后由Mediator去操作或者說控制這些組件既可了,然后Mediator又統一交給Controller去操作。如果采用其他框架來進行開發的話,那就更不用來考慮這個問題了,像Cairngorm、Puremvc之類的框架已經很好的為我們解決了這些問題。只要按照它們的使用規范來進行開發,自然沒有問題。
?
21.如果發生內存泄露,你是如何解決的?
??比如說?注意不要循環引用,特別是在使用Timer的時候要格外注意,不要忘記全局對象上的引用的清除,在創建控制器和模型的時候要注意一定要使用單件模式。在addEventListener時候盡量采用弱引用、自引用、或者子對象引用,以避免內存泄漏。
?
22.flex和后臺語言是如何交互的?
???無疑就這兩種方法:remote?object?或者是Http?service
?
23你是如何處理前端速度慢的問題?
???flex前端速度慢?其實仔細說應該分2部分,1.是flex生成的swf由于SDK龐大的關系,swf體積也跟著龐大了,這我們可以做的就是用Module動態加載,還有就是RSL了。2.處理速度慢,遠程方法速度慢,這是AVM的硬傷了,基本沒有很好的解決方法,我們能做的只是讓這個異步進行的更完美一些,讓用戶在等待的過程中,做其他的事情,以至于讓用戶忽略這段等待的時間。
?
24?請問用什么辦法解決安全域的問題?如果你不知道安全域的問題的話,可以在本機中綁????定一下圖片,然后再放到服務器上,就會出現此問題了.
??答:配置相關的安全沙箱的策略xml。
網站:http://topic.csdn.net/u/20091020/10/364e66cf-c73e-46dc-a04f-b4e569521336.html
?
http://japi.javaeye.com/blog/792362
講的很詳細。
?
25請解釋下單例模式
單例模式,是一種常用的軟件設計模式。在應用這個模式時,單例對象的類必須保證只有一個實例存在。許多時候整個系統只需要擁有一個的全局對象,這樣有利于我們協調系統整體的行為,簡化了在復雜環境下的配置管理。
實現單例模式的思路是:一個類能返回對象一個引用(永遠是同一個)和一個獲得該實例的方法(必須是靜態方法,通常使用getInstance這個名稱);當我們調用這個方法時,如果類持有的引用不為空就返回這個引用,如果類保持的引用為空就創建該類的實例并將實例的引用賦予該類保持的引用;同時我們還將該類的構造函數定義為私有方法,這樣其他處的代碼就無法通過調用該類的構造函數來實例化該類的對象,只有通過該類提供的靜態方法來得到該類的唯一實例。請寫個單例。例:
package?{
public?class?MySubClass?{
private?static?var?mySubClass:MySubClass;
public?var?num:Number=0;
public?function?MySubClass()?{
if?(MySubClass.mySubClass!=null)?{
throw?new?Error("只能產生一個實例");
}
}
public?static?function?getInstance():MySubClass?{
if?(mySubClass==null)?{
mySubClass?=?new?MySubClass();
}
return?mySubClass;
}
}
}
?
26.請問enterFrame和timerEvent這2個事件有什么區別?請說下具體的使用方法和相關的使用場合?
enterFrame:播放頭進入新幀時調度。如果播放頭不移動,或者只有一幀,則會繼續以幀速率調度此事件。此事件為廣播事件,這意味著具有注冊了此事件的偵聽器的所有顯示對象都會調度此事件
timerEvent:它的啟動是通過start()方法,暫停是通過stop()方法來實現。它的調用是運行的時間每次達到delay時調度
?
27.請問怎么樣檢測本機的內容呢,比如說,我想知道本機的操作系系,是否有視頻等這些.
答:flash.system.Capabilities.os?是系統類型
flash.system.Capabilities.playerType???是視頻播放器類型
?
28.請問我想判斷一個字體是否是數字,用什么辦法去判斷呢?
類型是否為數字,那就typeof一下,看他是不是int或者Number,如果是問字符串內容是否為數字,那也有很多辦法,比如說,讀出每個字符的ascii碼,判斷范圍,或者是
????????????????var?a:String="1232d4";???????????????var?b:Number=Number(a);???????????????var?c:String=String(b);???????????????if(a==c){???????????????????Alert.show("yes");//flex里面的彈出框組件???????????????}else{???????????????????Alert.show("no");???????????????}
?
29.請問我想判斷一個字符或者一個對象的類型怎么判斷呢?
答:typeof(obj)
?
30.請問你了解?internal?控制符么?能說下具體使用方法和場合嘛?
答:同一個包里才能調用internal所定義的變量或對象
?
31.我想在某一點不去執行任何內容,也就是說我想停止執行了,你知道要怎么做嘛?
答:設置斷點
?
32.注冊點和中心點的區別和聯系
答案:在FLASH?IDE下控制元件的坐標,參照點是元件信息面板上選擇的參照點,默認是元件中心點;控制元件縮放,參照點是元件中心點,也就是圓圈所在位置;使用AS控制元件的坐標和縮放,參照點都是元件的注冊點,也就是元件上的十字標記。
?
33.?flash事件對象的target與currentTarget屬性的區別?
target屬性在事件流的目標階段,而currentTarget屬性在事件流的冒泡階段(如currentTarget有時指父級)和目標階段(兩屬性的指向相同),當然也可以是捕獲階段。
?
34.請問?undefined?、?null和NaN是否一樣,如果不一樣能否說出其中的區別呢?答案:不一樣,null是沒有值的意思。undefined是申明未完成,或者類型未定等情況。
??????????NaN:不是個數字
?
35.?Math.round(?),?Math.floor(?)?和Math.ceil(?)?三個方法都是四舍五入,請問有什么區別??Math.round(-11.5)的值是多少?答案:都是取整:round?是取靠近最近整數;floor向下取?整;ceil向上取整
Math.round(-11.5)==-11
?
36.請問我想判斷一個字符或者一個對象的類型怎么判斷呢??
??應該沒人出這樣的題吧??if?咯。類型的話就typeof
?
38.?請問用什么方法自定義一個事件呢?說下具體的方式.?
??自定義事件,要么就直接調用Event的構造函數,或者繼承于Event,寫一個子類。
?
39.有三種基本數字類型:?number,?int,?和uint?請問有什么區別.具體說一下.??答:number數字類型包含浮點型(正0負);?int?整型(正0負);?uint(無符號整型)
40.?parseInt此方法轉化為int型的方法,請問你知道此方法的第二個參數是什么意思嘛?(Flex里面的一個方法)??答:進制?2?8?16?等
?
41.?請問一個數組里可以放不同的類型嘛???答:可以?var?x:Array?=?['a',1,new?Button()];
?
42.?怎么樣轉換數組為字符串,怎么樣將字符串轉化為數組???答:數組->字符串:trace(new?Array('a','b','c').join("").toString());???字符串->數組:?var?arr:Array?=?new?String("a,b,c").split(',');
43.我想創建的視圖居中怎么辦?(Flex中的視圖布局)??答:布局策略里面限定為劇中。即?horizontalAlign="center"?verticalAlign="middle"????或者在每個控件都以舞臺的中心作為相對坐標來計算各自的xy值。
?
44.請問你知道loader,URLLoader,URLStream這個三種動態加載資源的具體使用場合,以及有什么區別嘛?
答:URLStream類提供對下載?URL?的低級訪問。?數據一下載,便可隨即為應用程序使用,這和使用?URLLoader?時需要等到整個文件下載完不同。并且?URLStream?類還允許在完成下載前關閉流。?已下載文件的內容將作為原始二進制數據提供。?
在?URLStream?中的讀取操作是非阻塞模式的。
?
45.我怎么設置把一個文本框,設置成一個密碼框?
答displayAsPassword=true;
?
46.我想在文本框里只能輸入abcd,有什么辦法能做到呢?如果我想輸入除abcd以外的其它都能輸入又怎么做呢?
答:Txt.restrict="a-d";txt.restrict="^a-d";
?
47.請問condenseWhite?這個屬性在TextInput里是表示什么意思?
答:獲取或設置一個布爾值,該值指示是否從包含?HTML?文本的?TextArea?組件中刪除額外空白。?空格和換行符都屬于組件中的額外空白。?true?值指示刪除多余的空白;false?值指示不刪除多余的空白。
此屬性只影響使用?htmlText?屬性設置的文本,而不影響使用?text?屬性設置的文本。?如果使用?text?屬性設置文本,則忽略?condenseWhite?屬性。
?
48.我現在剛創建的文件的text為?this?is?a?text,我想設置光標在?is?上,請問怎么設置?
txt.text="this?is?a?text";
stage.focus=txt;
txt.setSelection(6,6);
?
49.請問怎么樣在文本框里添加超鏈接?
答:文本框里屬性里有個鏈接,把鏈接的網站輸進去就可以
?
50.AS3?中有那些基本數據類型?有那些復雜數據類型?他們的默認值是什么?
基本類型有:int(0)、unit(0)、boolean(false)、string(null)、number(NAN);
復雜數據型有:array(null)、object(null)
51.Sprite、MovicClip、shape的區別?
Shape:創建簡單形狀;Sprite:不需要時間軸的對象的相應基類;movieclip:不同于?Sprite?對象,MovieClip?對象擁有一個時間軸;Sprite與shape:前者也包括?graphics?屬性,并且它包括不可用于?Shape?類的其它功能。?例如,Sprite?對象是顯示對象容器,而?Shape?對象不是(并且不能包含子顯示對象)。?由于此原因,Shape?對象會比包含相同圖形的?Sprite?對象消耗的內存少。?但是,Sprite?對象支持鼠標單擊事件,而?Shape?對象不支持。Sprite與movieclip:sprite是去掉了時間軸的MovieClip;movieclip是動態類,而sprite不是;
?
52.substring(?),substr(?),?slice(),請說下3種解析字符串的不同之處,以及適用場合?
答:substring(?)返回一個字符串,該字符串由?start?和?end?參數指定的兩點之間的字符組成。如果未指定?end?參數,則子字符串的結尾就是該字符串的結尾。如果?start?的值等于?end?的值,則該方法會返回一個空字符串。如果?start?的值大于?end?的值,則在函數執行前兩個參數將自動互換,且原始值不變。
Substr:返回字符串中從?start?參數所指定的索引開始,直至?length?參數所指定的字符數為止的字符。substr?方法不更改由?my_str?指定的字符串;它返回一個新字符串。
Slice:返回一個字符串,該字符串包括從?start?字符一直到?end?字符(但不包括該字符)之間的所有字符。不修改原始?String?對象。如果未指定?end?參數,則子字符串的結尾就是該字符串的結尾。如果按?start?索引到的字符與按?end?索引到的字符相同或位于后者的右側,則該方法會返回一個空字符串。
?
54.請問addEventListener里面有幾個參數,你能說出具體的使用方法嘛?
答:參數分別為:Event名稱,響應(回調)函數,是否冒泡時響應,Event級別
?
55.請問用什么方法自定義一個事件呢?說下具體的方式.
答:先用as創建一個event類,?然后
???<1>可以用addEventListener直接響應
???<2>也可以用元標簽聲明?[Event(name=事件名稱,type=事件類)],然后創建對象->dispatchEvent(創建的對象)->mxml標簽中使用事件名稱來響應
?
56.對數據進行冒泡排序,(23,53,28,24,46,33,18)?
??答:var?arr:Array=new?Array(23,53,28,24,46,33,18);
trace(arr);
for?(var?i=0;?i<arr.length;?i++)?{
var?stemp:int=0;
for?(var?j=0;?j<arr.length;?j++)?{
if?(arr[i]<arr[j])?{
stemp=arr[j];
arr[j]=arr[i];
arr[i]=stemp;
}
}
}
trace(arr);
?
57.?從一個字符串中去掉相連的重復字符,原字符串“adffjkljaalkjhl”變為“adfjkljalkjhl”?
var?str:String="adffjkljaaaaalkkkkjhhhfffl";
var?arr:Array?=str.split("");
trace(str)
for(var?i:int=0;i<arr.length-1;i++){
for(var?j:int=i+1;j<arr.length;j++){
if(arr[i]==arr[j]){
arr[j]="";
}
else{
break;
}
}
}
var?str2:String=""
for(var?m:int=0;m<arr.length;m++){
str2+=arr[m]
}
trace(str2);
58.sharedObject的作用是什么,與瀏覽器cookie的區別是什么?
兩者都是存儲本地的一些簡單的數據類型,sharedObject默認是不會過期?cookie會在session結束時過期他是在瀏覽器通過Http地址請求獲得的
?
59?下面的輸出結果是什么,為什么?
????var?a?=?Number(10);
????var?b?=?Number(10);
????trace(a?==?b);
輸出結果是true?因為a和b都被強制轉化成number類型了
?
60?新建3個按鈕,名字分別為btn1,btn2,btn3,一個影片剪輯a_mc(自己隨便建這些元件)
????1.當單擊btn1時,調用影片剪輯a_mc(使a_mc顯示出來)、此時btn1不可用(注意:是不能反應此動作事件),
????2.當點擊btn2時,btn1可用、a_mc不可見(隱藏起來)
????3.當點擊btn3時,關閉swf
請使用as3.0和as2.0分別實現以上描述(as2.0的代碼寫在時間軸上,as3.0的代碼寫成*.as文件)??(已做)
?
61.?var?letters:Array?=?new?Array("a",?"b",?"c",?"d",?"e",?"f");?
var?someLetters:Array?=?letters.slice(-3,-1);?
trace(letters);?//?a,b,c,d,e,f?
請問trace(someLetters)的輸出結果是什么?
答案:d,e
?
63.請寫出加載資源的關鍵代碼?
var?req:URLRequest?=?new?URLRequest("1.swf");var?loader:Loader?=?new?Loader();loader.load(req);loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,?prograssHandler);function?prograssHandler(event:ProgressEvent):void{?var?aa?=?event.bytesLoaded;?var?bb?=?event.bytesTotal;?txt.txt_txt.text?=?String(Math.round(aa/bb*?100))+?"%";}
?
65.var?letters:Array?=?["a",?"b",?"c"];我想在這個數組里搜索?‘b’?字符,請問怎么辦?
?
?
?
?
1.?number?uint?int區別
2.?Array?的方法
3.?includeLayout?clipContent?horizontalScollPolicy
a.?horizontalScollPolicy指定水平滾動條是始終顯示、始終不顯示,還是在需要時自動添加
b.?clipContent?剪截一個容器一部分
c.?includeLayout指定此組件是否包含在父容器的布局中。
4.?把局部坐標轉變為全局坐標的方法
5.?swc的制作和用途
6.?簡述mvc模式
7.?面向對象的特點:
8.?九宮格:
9.?TimerEvent和EnterFrame
10.關于偶數的總和。
11.加載圖片并顯示進程
12.自定義事件
13.臺球:白球撞擊后,紅球進入各個洞。
要求:
1.?根據動量定量,建立任兩球碰撞效果的模型。
2.?根據幾何關系,建立任意球入洞時的模型。
http://www.as3hope.com/read.php?39
?
?
請解釋下MVC模式
MVC(Model-View-Controller),即把一個應用的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成三個層——模型層、視圖層、控制層。
視圖(View):代表用戶交互界面,MVC設計模式對于視圖的處理是限于視圖上數據的采集和處理,以及用戶的請求,而不包括在視圖上的業務流程的處理。
模型(Model):業務流程/狀態的處理以及業務規則的制定。業務流程的處理過程對其它層來說是黑箱操作,模型接受視圖請求的數據,并返回最終的處理結果。業務模型的設計可以說是MVC的核心。
控制(Controller):可以理解為從用戶接收請求,?將模型與視圖匹配在一起,共同完成用戶的請求,但是它卻不做任何的數據處理。
它的優勢在與:開發人員可以只關注整個結構中的其中某一層,可以很容易的用新的實現來替換原有層次的實現,可以降低層與層之間的依賴,有利于標準化,利于各層邏輯的復用
?
6.?as3怎樣連接數據庫??
答:as3?要和數據庫通信?一般通過第三方語言?比如?jsp/?php?/asp/?asp.net?等??
As3通過解析xml里面的數據和數據庫通信。
?
7.?多場景如果互相切換(考慮效率);
答:通過nextscene()函數??
或者用Loader?加載另外的swf文件來場景切換。
?
8.?怎么獲取居中的位置??
答:mc.x=stage.StageWidth/2
mc.y=stage.StageHeight/2
?
9.?了解as3與PHP通信么?
答:通過apache軟件??首先需要兩個文件?我隨便起一個名字test.php??和?test.fla
把他們放在apache運行目錄下面?
As代碼里面主要用到urlloader、urlrequest、urlvariable等類,用urlrequest.data?屬性和Urlrequest.method等屬性?來和php傳參數。
Php里面發送什么,as就可以接收到什么,這樣可以實現as3和php的通信。
?
6:談談對A*尋路算法的理解
答:??一個估價值函數??f(n)=g(n)+h(n)
g(n)就是當時目標的位置到指定點的位置的一個值
h(n)就是指定點的位置到目標點的位置的的一個值
?
7:?as2與as3.的最主要區別是什么?,以及相互的優缺點
答:as2和as3最大的區別在于??as2是面向過程的?as3是純面向對象的?
As3增加了很多新的東西??比如正則表達式?,垃圾回收機制,增加了很多error類。
?
里面的函數架構變了很多??頂級函數縮減了很多??as3的架構更合理??
?
8:?談談你對面向對象的理解
答:面向對象關鍵是對象,引用一句話“一切事物結對象”;對象有它固有的屬性和方法,
對象也就是由屬性的集合和方法的集合構成的,?談到對象了,對象是類的一個實例。
類和對象是面向對象的基礎??類是對象的一個抽象,不是具體的實例,??比如說?狗類
分為很多種,而狗就是一個抽象,??狗有四條腿,兩只眼睛?等式他的屬性,?狗會吃東西,叫,等式他的方法。這是我理解的面向對象。
?
9.你的5(或3)年前景規劃和在5(或3)年后在flash行業要達到的目標(及個人職業規劃)?建議:?1.盡量選擇有自主產品的公司,而非單純的外包公司。(有自己的產品,代表你可以對你自己的產品進行持續維護和改良,對你自身的編程能力是一種持續性的提高)2.盡量選擇待成長型的公司,而并非公司越大越好。(成長型的公司往往產品更有創意,開發成本更小,效率更高,有利于你在短時間內積累更多的作品)3.盡量遠離廣告制作公司。
??
10什么是OOP??OOP有那些特征簡要說明?
OOP:?Object?Oriented?Programming,面向對象的程序設計
特征:抽象,多態,封裝,繼承
?
12.請說下你理解AS3的事件機制是什么機制?你認為正確的就可以說出來.
答:從應用程序到最外層的容器在到容器里的組件或容器遍歷注冊的事件,然后按照原路返回冒泡響應事件
AS3事件流分三個階段:
??1.捕獲階段?(即由根節點流向子節點,檢測每個節點是否注冊了監聽器)?
??2.目標階段?(激發在目標對象本身注冊的監聽程序)
??3.冒泡階段?(從目標節點到根節點,檢測每個節點是否注冊了監聽器)
??當中涉及了兩個屬性target和currentTarget,target是事件的派發者,currentTarget是正在檢測的對象,當開始了事件流,事件的currentTarget屬性處于不斷變化中.
PS:注冊事件時捕獲階段默認是關閉的,無論事件是否開啟了捕獲,事件流只會兩選一去執行
?
13.說說就你所知道的用flash做網站建設的優缺點
優點:全面的控制、無縫的導向跳轉、更豐富的媒體內容、更體貼用戶的流暢交互、跨平臺和瘦客戶端的支持、以及與其它Flash應用方案無縫連接集成等
限制:受帶寬與下載時間的限,下載速度有時候很慢;受搜索引擎的限制,現在大部分的搜索引擎搜多不到Flash站點信息,但是google搜索引擎已經解決了這個問題。
?
15.as3.0垃圾回收器是如何工作的?
??flash?player?8之前采用的是引用計數法,在flash?player?8?之后用的是標記法,簡單的說就是:從應用的根節點開始,遍歷所有其上的引用,標記每個它所發現的對象。然后迭代遍歷每個被標記的對象,標記它們的子對象。這個過程第歸進行,直到Player遍歷了應用的整個對象樹并標記了它所發現的每個東西。在這個過程技術的時候,可以安全地認為,內存中那些沒有被打標記的對象沒有任何活動引用,因此可以被安全地釋放內存。一般來說,flash?player采用的是一種低頻的垃圾回收機制,Flash?Player的垃圾回收發生在Flash?Player需要另外請求內存之前。但并不是每次應用申請內存時都會導致垃圾回收的執行,只有當Flash占用的內存緊張到一定程度時才會執行真正的垃圾回收,一定程度上取決于客戶端計算機的物理內存的大小。
?
16.什么是游戲引擎和對他的認識?
?????答:是指應用通常游戲設計的模型構建一個“平臺“,能夠
方便的支持游戲開發后續的工作???引擎就是“用于控制所有游戲功能的主程序,從計算碰撞、物理系統和物體的相對位置,到接受玩家的輸入,以及按照正確的音量輸出聲音等等
?
17.?flash與flex是如何協調開發的?
這個問題可以這樣來理解,如果是確實需要用到FLEX?SDK的應用,那我們就可以建立一個flex工程,具體需要flash做UI的時候,輸出成swc作為flex的skin,如果說并不需要flex?sdk,只是為了編碼方便而選擇flex的話,那我們只要建立一個as工程,讓flex作為flash的編碼器。
?
18.使用Flex?Bulider3建立一下新的.mxml的頁面時默認的背景是藍色的,請問用什么辦法能修改掉此背景顏色,以至于下次創建時背景不是為默認的藍色的呢?請寫出你認為正確的方法.
答:修改sdk\frameworks\projects\framework\default.css里Application的backgroundColor:?#0000FF;
?
19.flex的開發框架有哪些,它們有什么優缺點?
??答:?最常見的當然是Cairngorm、Puremvc了,此外還有Mate,Swiz等等,據說被廣泛應用的已經有10幾款了。Cairngorm作為Adobe官方出品,有著貴族血統的它比較全面,是這些框架中已知bug最少的,但是基于他的應用相對臃腫復雜一些,需要對每個可以被觸發的事件寫一個對應的Command,編碼量巨大,并且單元測試很不容易,不適合敏捷開發。Puremvc應該是現在用的最多的as框架了。比較完善、并且與Cairngorm相比,更適合中小型應用的開發,它與Cairngorm一樣,也是以MVC模式為中心,并以Fa?ade作為中央存儲器的單件類的形式進行開發的。說下Mate,它是一個比較奇怪的框架,是基于標簽的事件驅動型的。也就是說你不能再隨意的寫as類的,在使用Mate的情況下,只能用MXML來做這些事情。Swiz是Mate的孿生兄弟,長的挺像,沒具體用過,不大了解。
11.使用Flex?Bulider3如何跟蹤程序?
答:我知道的三種1.trace()?2.設置斷點?3.當不在調試模式時可以調用as的Alert.show()或js的alert()?如:navigateToURL(new?URLRequest("javascript:alert(traceMsg)"),?"_self");
?
20.在flex開發中,很多代碼都寫在mxml文件里,為了做到mvc模式,你是怎么處理的。
??我認為mxml并不影響mvc模式啊。分兩種情況來討論,首先,是自己創建整個應用結構的時候,那我們可以手動將UI所在的mxml歸為一類,然后由Mediator去操作或者說控制這些組件既可了,然后Mediator又統一交給Controller去操作。如果采用其他框架來進行開發的話,那就更不用來考慮這個問題了,像Cairngorm、Puremvc之類的框架已經很好的為我們解決了這些問題。只要按照它們的使用規范來進行開發,自然沒有問題。
?
21.如果發生內存泄露,你是如何解決的?
??比如說?注意不要循環引用,特別是在使用Timer的時候要格外注意,不要忘記全局對象上的引用的清除,在創建控制器和模型的時候要注意一定要使用單件模式。在addEventListener時候盡量采用弱引用、自引用、或者子對象引用,以避免內存泄漏。
?
22.flex和后臺語言是如何交互的?
???無疑就這兩種方法:remote?object?或者是Http?service
?
23你是如何處理前端速度慢的問題?
???flex前端速度慢?其實仔細說應該分2部分,1.是flex生成的swf由于SDK龐大的關系,swf體積也跟著龐大了,這我們可以做的就是用Module動態加載,還有就是RSL了。2.處理速度慢,遠程方法速度慢,這是AVM的硬傷了,基本沒有很好的解決方法,我們能做的只是讓這個異步進行的更完美一些,讓用戶在等待的過程中,做其他的事情,以至于讓用戶忽略這段等待的時間。
?
24?請問用什么辦法解決安全域的問題?如果你不知道安全域的問題的話,可以在本機中綁????定一下圖片,然后再放到服務器上,就會出現此問題了.
??答:配置相關的安全沙箱的策略xml。
網站:http://topic.csdn.net/u/20091020/10/364e66cf-c73e-46dc-a04f-b4e569521336.html
?
http://japi.javaeye.com/blog/792362
講的很詳細。
?
25請解釋下單例模式
單例模式,是一種常用的軟件設計模式。在應用這個模式時,單例對象的類必須保證只有一個實例存在。許多時候整個系統只需要擁有一個的全局對象,這樣有利于我們協調系統整體的行為,簡化了在復雜環境下的配置管理。
實現單例模式的思路是:一個類能返回對象一個引用(永遠是同一個)和一個獲得該實例的方法(必須是靜態方法,通常使用getInstance這個名稱);當我們調用這個方法時,如果類持有的引用不為空就返回這個引用,如果類保持的引用為空就創建該類的實例并將實例的引用賦予該類保持的引用;同時我們還將該類的構造函數定義為私有方法,這樣其他處的代碼就無法通過調用該類的構造函數來實例化該類的對象,只有通過該類提供的靜態方法來得到該類的唯一實例。請寫個單例。例:
package?{
public?class?MySubClass?{
private?static?var?mySubClass:MySubClass;
public?var?num:Number=0;
public?function?MySubClass()?{
if?(MySubClass.mySubClass!=null)?{
throw?new?Error("只能產生一個實例");
}
}
public?static?function?getInstance():MySubClass?{
if?(mySubClass==null)?{
mySubClass?=?new?MySubClass();
}
return?mySubClass;
}
}
}
?
26.請問enterFrame和timerEvent這2個事件有什么區別?請說下具體的使用方法和相關的使用場合?
enterFrame:播放頭進入新幀時調度。如果播放頭不移動,或者只有一幀,則會繼續以幀速率調度此事件。此事件為廣播事件,這意味著具有注冊了此事件的偵聽器的所有顯示對象都會調度此事件
timerEvent:它的啟動是通過start()方法,暫停是通過stop()方法來實現。它的調用是運行的時間每次達到delay時調度
?
27.請問怎么樣檢測本機的內容呢,比如說,我想知道本機的操作系系,是否有視頻等這些.
答:flash.system.Capabilities.os?是系統類型
flash.system.Capabilities.playerType???是視頻播放器類型
?
28.請問我想判斷一個字體是否是數字,用什么辦法去判斷呢?
類型是否為數字,那就typeof一下,看他是不是int或者Number,如果是問字符串內容是否為數字,那也有很多辦法,比如說,讀出每個字符的ascii碼,判斷范圍,或者是
????????????????var?a:String="1232d4";???????????????var?b:Number=Number(a);???????????????var?c:String=String(b);???????????????if(a==c){???????????????????Alert.show("yes");//flex里面的彈出框組件???????????????}else{???????????????????Alert.show("no");???????????????}
?
29.請問我想判斷一個字符或者一個對象的類型怎么判斷呢?
答:typeof(obj)
?
30.請問你了解?internal?控制符么?能說下具體使用方法和場合嘛?
答:同一個包里才能調用internal所定義的變量或對象
?
31.我想在某一點不去執行任何內容,也就是說我想停止執行了,你知道要怎么做嘛?
答:設置斷點
?
32.注冊點和中心點的區別和聯系
答案:在FLASH?IDE下控制元件的坐標,參照點是元件信息面板上選擇的參照點,默認是元件中心點;控制元件縮放,參照點是元件中心點,也就是圓圈所在位置;使用AS控制元件的坐標和縮放,參照點都是元件的注冊點,也就是元件上的十字標記。
?
33.?flash事件對象的target與currentTarget屬性的區別?
target屬性在事件流的目標階段,而currentTarget屬性在事件流的冒泡階段(如currentTarget有時指父級)和目標階段(兩屬性的指向相同),當然也可以是捕獲階段。
?
34.請問?undefined?、?null和NaN是否一樣,如果不一樣能否說出其中的區別呢?答案:不一樣,null是沒有值的意思。undefined是申明未完成,或者類型未定等情況。
??????????NaN:不是個數字
?
35.?Math.round(?),?Math.floor(?)?和Math.ceil(?)?三個方法都是四舍五入,請問有什么區別??Math.round(-11.5)的值是多少?答案:都是取整:round?是取靠近最近整數;floor向下取?整;ceil向上取整
Math.round(-11.5)==-11
?
36.請問我想判斷一個字符或者一個對象的類型怎么判斷呢??
??應該沒人出這樣的題吧??if?咯。類型的話就typeof
?
38.?請問用什么方法自定義一個事件呢?說下具體的方式.?
??自定義事件,要么就直接調用Event的構造函數,或者繼承于Event,寫一個子類。
?
39.有三種基本數字類型:?number,?int,?和uint?請問有什么區別.具體說一下.??答:number數字類型包含浮點型(正0負);?int?整型(正0負);?uint(無符號整型)
40.?parseInt此方法轉化為int型的方法,請問你知道此方法的第二個參數是什么意思嘛?(Flex里面的一個方法)??答:進制?2?8?16?等
?
41.?請問一個數組里可以放不同的類型嘛???答:可以?var?x:Array?=?['a',1,new?Button()];
?
42.?怎么樣轉換數組為字符串,怎么樣將字符串轉化為數組???答:數組->字符串:trace(new?Array('a','b','c').join("").toString());???字符串->數組:?var?arr:Array?=?new?String("a,b,c").split(',');
43.我想創建的視圖居中怎么辦?(Flex中的視圖布局)??答:布局策略里面限定為劇中。即?horizontalAlign="center"?verticalAlign="middle"????或者在每個控件都以舞臺的中心作為相對坐標來計算各自的xy值。
?
44.請問你知道loader,URLLoader,URLStream這個三種動態加載資源的具體使用場合,以及有什么區別嘛?
答:URLStream類提供對下載?URL?的低級訪問。?數據一下載,便可隨即為應用程序使用,這和使用?URLLoader?時需要等到整個文件下載完不同。并且?URLStream?類還允許在完成下載前關閉流。?已下載文件的內容將作為原始二進制數據提供。?
在?URLStream?中的讀取操作是非阻塞模式的。
?
45.我怎么設置把一個文本框,設置成一個密碼框?
答displayAsPassword=true;
?
46.我想在文本框里只能輸入abcd,有什么辦法能做到呢?如果我想輸入除abcd以外的其它都能輸入又怎么做呢?
答:Txt.restrict="a-d";txt.restrict="^a-d";
?
47.請問condenseWhite?這個屬性在TextInput里是表示什么意思?
答:獲取或設置一個布爾值,該值指示是否從包含?HTML?文本的?TextArea?組件中刪除額外空白。?空格和換行符都屬于組件中的額外空白。?true?值指示刪除多余的空白;false?值指示不刪除多余的空白。
此屬性只影響使用?htmlText?屬性設置的文本,而不影響使用?text?屬性設置的文本。?如果使用?text?屬性設置文本,則忽略?condenseWhite?屬性。
?
48.我現在剛創建的文件的text為?this?is?a?text,我想設置光標在?is?上,請問怎么設置?
txt.text="this?is?a?text";
stage.focus=txt;
txt.setSelection(6,6);
?
49.請問怎么樣在文本框里添加超鏈接?
答:文本框里屬性里有個鏈接,把鏈接的網站輸進去就可以
?
50.AS3?中有那些基本數據類型?有那些復雜數據類型?他們的默認值是什么?
基本類型有:int(0)、unit(0)、boolean(false)、string(null)、number(NAN);
復雜數據型有:array(null)、object(null)
51.Sprite、MovicClip、shape的區別?
Shape:創建簡單形狀;Sprite:不需要時間軸的對象的相應基類;movieclip:不同于?Sprite?對象,MovieClip?對象擁有一個時間軸;Sprite與shape:前者也包括?graphics?屬性,并且它包括不可用于?Shape?類的其它功能。?例如,Sprite?對象是顯示對象容器,而?Shape?對象不是(并且不能包含子顯示對象)。?由于此原因,Shape?對象會比包含相同圖形的?Sprite?對象消耗的內存少。?但是,Sprite?對象支持鼠標單擊事件,而?Shape?對象不支持。Sprite與movieclip:sprite是去掉了時間軸的MovieClip;movieclip是動態類,而sprite不是;
?
52.substring(?),substr(?),?slice(),請說下3種解析字符串的不同之處,以及適用場合?
答:substring(?)返回一個字符串,該字符串由?start?和?end?參數指定的兩點之間的字符組成。如果未指定?end?參數,則子字符串的結尾就是該字符串的結尾。如果?start?的值等于?end?的值,則該方法會返回一個空字符串。如果?start?的值大于?end?的值,則在函數執行前兩個參數將自動互換,且原始值不變。
Substr:返回字符串中從?start?參數所指定的索引開始,直至?length?參數所指定的字符數為止的字符。substr?方法不更改由?my_str?指定的字符串;它返回一個新字符串。
Slice:返回一個字符串,該字符串包括從?start?字符一直到?end?字符(但不包括該字符)之間的所有字符。不修改原始?String?對象。如果未指定?end?參數,則子字符串的結尾就是該字符串的結尾。如果按?start?索引到的字符與按?end?索引到的字符相同或位于后者的右側,則該方法會返回一個空字符串。
?
54.請問addEventListener里面有幾個參數,你能說出具體的使用方法嘛?
答:參數分別為:Event名稱,響應(回調)函數,是否冒泡時響應,Event級別
?
55.請問用什么方法自定義一個事件呢?說下具體的方式.
答:先用as創建一個event類,?然后
???<1>可以用addEventListener直接響應
???<2>也可以用元標簽聲明?[Event(name=事件名稱,type=事件類)],然后創建對象->dispatchEvent(創建的對象)->mxml標簽中使用事件名稱來響應
?
56.對數據進行冒泡排序,(23,53,28,24,46,33,18)?
??答:var?arr:Array=new?Array(23,53,28,24,46,33,18);
trace(arr);
for?(var?i=0;?i<arr.length;?i++)?{
var?stemp:int=0;
for?(var?j=0;?j<arr.length;?j++)?{
if?(arr[i]<arr[j])?{
stemp=arr[j];
arr[j]=arr[i];
arr[i]=stemp;
}
}
}
trace(arr);
?
57.?從一個字符串中去掉相連的重復字符,原字符串“adffjkljaalkjhl”變為“adfjkljalkjhl”?
var?str:String="adffjkljaaaaalkkkkjhhhfffl";
var?arr:Array?=str.split("");
trace(str)
for(var?i:int=0;i<arr.length-1;i++){
for(var?j:int=i+1;j<arr.length;j++){
if(arr[i]==arr[j]){
arr[j]="";
}
else{
break;
}
}
}
var?str2:String=""
for(var?m:int=0;m<arr.length;m++){
str2+=arr[m]
}
trace(str2);
58.sharedObject的作用是什么,與瀏覽器cookie的區別是什么?
兩者都是存儲本地的一些簡單的數據類型,sharedObject默認是不會過期?cookie會在session結束時過期他是在瀏覽器通過Http地址請求獲得的
?
59?下面的輸出結果是什么,為什么?
????var?a?=?Number(10);
????var?b?=?Number(10);
????trace(a?==?b);
輸出結果是true?因為a和b都被強制轉化成number類型了
?
60?新建3個按鈕,名字分別為btn1,btn2,btn3,一個影片剪輯a_mc(自己隨便建這些元件)
????1.當單擊btn1時,調用影片剪輯a_mc(使a_mc顯示出來)、此時btn1不可用(注意:是不能反應此動作事件),
????2.當點擊btn2時,btn1可用、a_mc不可見(隱藏起來)
????3.當點擊btn3時,關閉swf
請使用as3.0和as2.0分別實現以上描述(as2.0的代碼寫在時間軸上,as3.0的代碼寫成*.as文件)??(已做)
?
61.?var?letters:Array?=?new?Array("a",?"b",?"c",?"d",?"e",?"f");?
var?someLetters:Array?=?letters.slice(-3,-1);?
trace(letters);?//?a,b,c,d,e,f?
請問trace(someLetters)的輸出結果是什么?
答案:d,e
?
63.請寫出加載資源的關鍵代碼?
var?req:URLRequest?=?new?URLRequest("1.swf");var?loader:Loader?=?new?Loader();loader.load(req);loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,?prograssHandler);function?prograssHandler(event:ProgressEvent):void{?var?aa?=?event.bytesLoaded;?var?bb?=?event.bytesTotal;?txt.txt_txt.text?=?String(Math.round(aa/bb*?100))+?"%";}
?
65.var?letters:Array?=?["a",?"b",?"c"];我想在這個數組里搜索?‘b’?字符,請問怎么辦?
?
?
?
?
1.?number?uint?int區別
2.?Array?的方法
3.?includeLayout?clipContent?horizontalScollPolicy
a.?horizontalScollPolicy指定水平滾動條是始終顯示、始終不顯示,還是在需要時自動添加
b.?clipContent?剪截一個容器一部分
c.?includeLayout指定此組件是否包含在父容器的布局中。
4.?把局部坐標轉變為全局坐標的方法
5.?swc的制作和用途
6.?簡述mvc模式
7.?面向對象的特點:
8.?九宮格:
9.?TimerEvent和EnterFrame
10.關于偶數的總和。
11.加載圖片并顯示進程
12.自定義事件
13.臺球:白球撞擊后,紅球進入各個洞。
要求:
1.?根據動量定量,建立任兩球碰撞效果的模型。
2.?根據幾何關系,建立任意球入洞時的模型。
http://www.as3hope.com/read.php?39
?
?
轉載于:https://www.cnblogs.com/wangguojie/archive/2011/11/30/2269314.html
總結
- 上一篇: 用真名取微信网名
- 下一篇: 分享.NET开发中经常使用到的代码片段