AS 面试题 ActionScript Quiz

写在前面

FFDMag 2009年6月刊Getting Started with Adobe Open Source Media Framework上Maxim Zaks有一个关于ActionScript的小测验,觉得有意思,于是题目全部拷过来,答案也翻译过来。

Quiz

1. What is the right trace output?
var a = true; trace(a?"a":"b");

a) a
b) b

2. Which lines of code can be compiled?

a) trace(10.toString());
b) trace(/dfgr/.source);
c) trace(

3. What is the right trace output?
var a = 10; trace((a=a*a,a/2));

a) 10
b) 5
c) 50
d) 100
e) won’t compile

4. What is the right trace output?
trace((var a=10*10,a/2));

a) 10
b) 5
c) 50
d) 100
e) won’t compile

5. What is the right trace output?
var f:Function;
trace((f=function(){return 10},f()/2));

a) 10
b) 5
c) 50
d) 100
e) won’t compile

6. What will happen?
trace(<hallo/*an OpenTag*/>{(trace("CloseTag"),"hallo")}>.toXMLString())

a) Compile Error
b) Runtime Error
c) trace “CloseTag”
d) trace “CloseTag

7. Which example can be compiled?

a) package{class C1{function f1(){}function f1(i:int){}}}
b) package{class C1{function f1(){}static function f1(i:int){}}}
c) package{class C1{function f1(){}AS3 function f1(i:int){}}}

8. Which Constructor is OK?

a) package{public class C1{public function C1(){}}}
b) package{public class C1{function C1(){}}}
c) package{public class C1{internal function C1(){}}}
d) package{public class C1{private function C1(){}}}
e) package{public class C1{public function C1():C1{return this;}}}
f) package{public class C1{public function C1():void{}}}

9. Which example can be compiled?

a) package{public class C1{public function C1(){super()}}}
b) package{public class C1{public function C1(){this()}}}
c) package{public class C1{public function foo(){super()}}}
d) package{public class C1{public static function foo(){this}}}
e) package{public class C1{public function foo(){super.foo()}}}

10. Which statement is wrong?

a) I am able to import classes that are stored in a package with the name “default” (default is a keyword). Example: import default.ClassA;
b) I am able to import classes that are stored in a sub package with the name “default” (default is a keyword). Example: import my.default.ClassA;
c) I am able to import classes that are stored in a sub package with name “true” (true is a keyword). Example: import my.true.ClassA;

11. What us the right trace output order?
package
{
import flash.display.Sprite;

trace("A");
public class Test extends Sprite{
trace("B");
function Test(){
trace("C");
}
trace("D");
}
trace("E");
}
trace("F");

a) A,B,C,D,E,F
b) C,B,D,A,E,F
c) B,D,A,E,F,C

12. Which example can be compiled?

a) package{public class C1{namespace ns1; namespace ns2; ns1 function foo(){}ns2 function foo(){}}}
b) package{public class C1{namespace ns1=”ns”; namespace ns2=”ns”; ns1 function foo(){}ns2 function foo(){}}}
c) package{public class C1{namespace ns1; ns1 function foo(){}public function foo(){}}}
d) package{public class C1{namespace ns1=”"; ns1 function foo(){}public function foo(){}}}

13. What is the right trace output?
trace(function(){return "hallo";}())

a) hallo
b) won’t compile

答案及解释

  • 1) 问号是一个条件操作符,语法是 condition ? positive case: negative case; 所以正确答案是 a)。
  • 2) ActionScript 3是一个严谨的面向对象的语言。这意味着它没有基本类型,并且每个表达式都是一种对象的一个实例。这也是为什么可以用操作符”.“来直接调用方法。只有一个例外:number literal。 正确答案是 b),c),d),e),f) 。
  • 3) 在AcrionScript中,小括号中可以有一系列表达式,它会返回最后一个表达式的值,可以把它看做内联的匿名函数,正确答案是 c)。
  • 4) 规则和问题3)一样,但是小括号内不允许作声明,正确答案是 e)。
  • 5) 小括号内不允许作声明,但是可以赋值,正确答案是 b)。
  • 6) 这里使用了小括号,也使用了XML,在XML中可以使用大括号来执行AS,正确答案是 d)。
  • 7) AS3是一个面向对象的语言,但是它不支持overload,所以a)是错的,b)和c)可以,因为b)将另一个方法声明为static,c)中的方法是在不同的命名空间下。
  • 8) AS3的构造器必须声明为public并且无返回类型,所以c) , d) , e)是错误的。有趣的是b) ,尽管没有声明修饰符它却是正确的,他的访问类型仍然是public,而不是通常的internal。
  • 9) “super()”只能在构造器中被调用,”this()”会产生错误,并且”this”不能放在静态方法中。正确答案是 a)和e) 。
  • 10) 这个例子展示了一个ActionScript不易被发觉的性质,按通常理解三个都应该是错误的,但是实际上b)是正确的。所以正确答案是 a)和c) 。
  • 11) 当加载一个类到内存中,按通常理解三个都应该是错误的,但是实际上b)是正确的。所以正确答案是 a)和c) 。
  • 12) 如同问题7),方法重载是不允许的,但它们可以声明在不同的命名空间下,如果声明命名空间而没有对它赋值,它们会在运行时通过包名,类名和名称被赋值。
  • 13) AS3中的Function是一个Closure,定义一个Closure之后可以直接调用它。正确答案是 a) 。

小结

这个测试中只覆盖了AS3语言特性的一小部分,不知道所有的答案不是一件丢脸的事情,但是你像题目5、6或者10那样写代码就是一件丢脸的事。代码应该干净、易读。希望你能从这些题目中得到乐趣。

转载 http://hi.baidu.com/artgou/blog/item/6200312707c26008918f9d56.html

你可能感兴趣的:(AS 面试题 ActionScript Quiz)