`
em641em
  • 浏览: 12957 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

[转载]as3面试题

 
阅读更多

[转载]as3面试题
2011年08月01日
  面试题
  1. 你对MVC的理解??
  答:MVC就是模型 视图 控制器的缩写  视图和用户交互  通过事件导致控制器改变  控制器改变导致 模型改变  或者控制器同时改变两者  模型改变 导致视图改变     或者视图改变 潜在的从模型里面获得参数 来改变自己。  
  Mvc就是一种模型 一种编程思想。
  请解释下MVC模式
  MVC(Model-View-Controller),即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层――模型层、视图层、控制层。
  视图(View):代表用户交互界面,MVC设计模式对于视图的处理是限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。
  模型(Model):业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC的核心。
  控制(Controller):可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求,但是它却不做任何的数据处理。
  它的优势在与:开发人员可以只关注整个结构中的其中某一层,可以很容易的用新的实现来替换原有层次的实现,可以降低层与层之间的依赖,有利于标准化,利于各层逻辑的复用
  2. as3怎样连接数据库??
  答:as3 要和数据库通信 一般通过地三方语言 比如jsp php 等 
  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的页面时默认的背景是蓝色的,请问用什么办法能修改掉此背景颜色,以至于下次创建时背景不是为默认的蓝色的呢?请写出你认为正确的方法.
  答:修改sdkframeworksprojectsframeworkdefault.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类, 然后
  可以用addEventListener直接响应
  也可以用元标签声明 [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(Progress Event.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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics