zoukankan      html  css  js  c++  java
  • 收集了一些as的面试题,给HR准备的


    1。as2与as3.的最主要区别是什么?

      答:首先,as2和as3是完全不同的语言,几乎没有兼容性可言。as2编译用的AVM1虚拟机,as3用的AVM2,速度快,提供了一些基础异常处理。 as3是纯的OOP,强类型语言。as2不是。具体的差别有太多太多。

    2.flex的开发框架有哪些,它们有什么优缺点?

      答: 最常见的当然是Cairngorm、Puremvc了,此外还有Mate,Swiz等等,据说被广泛应用的已经有10几款了。Cairngorm作为Adobe官方出品,有着贵族血统的它比较全面,是这些框架中已知bug最少的,但是基于他的应用相对臃肿复杂一些,需要对每个可以被触发的事件写一个对应的Command,编码量巨大,并且单元测试很不容易,不适合敏捷开发。Puremvc应该是现在用的最多的as框架了。比较完善、并且与Cairngorm相比,更适合中小型应用的开发,它与Cairngorm一样,也是以MVC模式为中心,并以Façade作为中央存储器的单件类的形式进行开发的。说下Mate,它是一个比较奇怪的框架,是基于标签的事件驱动型的。也就是说你不能再随意的写as类的,在使用Mate的情况下,只能用MXML来做这些事情。Swiz是Mate的孪生兄弟,长的挺像,没具体用过,不大了解。

    3.在flex开发中,很多代码都写在mxml文件里,为了做到mvc模式,你是怎么处理的。

      我认为mxml并不影响mvc模式啊。分两种情况来讨论,首先,是自己创建整个应用结构的时候,那我们可以手动将UI所在的mxml归为一类,然后由Mediator去操作或者说控制这些组件既可了,然后Mediator又统一交给Controller去操作。如果采用其他框架来进行开发的话,那就更不用来考虑这个问题了,像Cairngorm、Puremvc之类的框架已经很好的为我们解决了这些问题。只要按照它们的使用规范来进行开发,自然没有问题。

    4.如果发生内存泄露,你是如何解决的?

       在profile观察中已经内存泄漏是没有很好的解决办法的,至少我不知道,我能做的只是尽量去避免这种情况的发生,比如说 注意不要循环引用,特别是在使用Timer的时候要格外注意,不要忘记全局对象上的引用的清除,在创建控制器和模型的时候要注意一定要使用单件模式。在addEventListener时候尽量采用弱引用、自引用、或者子对象引用,以避免内存泄漏。

    5。as3.0垃圾回收器是如何工作的?

      flash player 8之前采用的是引用计数法,在flash player 8 之后用的是标记法,简单的说就是:从应用的根节点开始,遍历所有其上的引用,标记每个它所发现的
    对象。然后迭代遍历每个被标记的对象,标记它们的子对象。这个过程第归进行,直到Player遍历了应用的整个对象树并标记了它所发现的每个东西。在这个过程技术的时候,可以安全地认为,内存中那些没有被打标记的对象没有任何活动引用,因此可以被安全地释放内存。一般来说,flash player采用的是一种低频的垃圾回收机制,Flash Player的垃圾回收发生在Flash Player需要另外请求内存之前。但并不是每次应用申请内存时都会导致垃圾回收的执行,只有当Flash占用的内存紧张到一定程度时才会执行真正的垃圾回收,一定程度上取决于客户端计算机的物理内存的大小。

    6 flex和后台语言是如何交互的?

       无疑就这两种方法:remote object 或者是Http service

    7。你是如何处理前端速度慢的问题?

       flex前端速度慢 其实仔细说应该分2部分,1.是flex生成的swf由于SDK庞大的关系,swf体积也跟着庞大了,这我们可以做的就是用Module动态加载,还有就是RSL了。2.处理速度慢,远程方法速度慢,这是AVM的硬伤了,基本没有很好的解决方法,我们能做的只是让这个异步进行的更完美一些,让用户在等待的过程中,做其他的事情,以至于让用户忽略这段等待的时间。

    8.flash与flex是如何协调开发的?

       这个问题可以这样来理解,如果是确实需要用到FLEX SDK的应用,那我们就可以建立一个flex工程,具体需要flash做UI的时候,输出成swc作为flex的skin,如果说并不需要flex sdk,只是为了编码方便而选择flex的话,那我们只要建立一个as工程,让flex作为flash的编码器。

    9.使用Flex Bulider3建立一下新的.mxml的页面时默认的背景是蓝色的,请问用什么办法能修改掉此背景颜色,以至于下次创建时背景不是为默认的蓝色的呢?请写出你认为正确的方法.

      还真不会,我的做法一般是在这个工程里面,建一个总的css,都在里面规范起来,包括背景色啊,还有字体大小等等。。

     10.使用Flex Bulider3如何跟踪程序?

      装个debug版本的flash player,到时候在FB里面F11 debug它咯。

    11. 请问enterFrame和timerEvent这2个事件有什么区别?请说下具体的使用方法和相关的使用场合?

      不会 我觉得差不多,不过我一般用enterFrame,还请高人指点。。

    12. 请说下你理解AS3的事件机制是什么机制?你认为正确的就可以说出来.

       AS3事件流分三个阶段:

      1.捕获阶段 (即由根节点流向子节点,检测每个节点是否注册了监听器)

      2.目标阶段 (激发在目标对象本身注册的监听程序)

      3.冒泡阶段 (从目标节点到根节点,检测每个节点是否注册了监听器)

       当中涉及了两个属性target和currentTarget,target是事件的派发者,currentTarget是正在检测的对象,当开始了事件流,事件的currentTarget属性处于不断变化中.

    PS:注册事件时捕获阶段默认是关闭的,无论事件是否开启了捕获,事件流只会两选一去执行注册的监听程序

    关于EventDispatcher三个函数的参数:

    1.addEventlistener(事件类型,监听函数,是否打开捕获阶段,监听器优先级别,是否打开弱监听)

    2.removeEventListener(事件类型,监听函数,是否打开捕获阶段) (前两个参数是必须的,如果注册监听器时打开了捕获阶段,那么第三个参数也是必须的,否则会出现错误)

    3.dispatchEvent(new Event(事件类型,是否冒泡,是否可以取消事件))

    关于Event扩展有两点要注意:

    1.可以定义字符串常量代表事件类型.

    2.构造函数必须调用父类的构造函数,super(type,bubbles,cancelable)

    3.扩展Event可以使Event带自定义变量,从而可以传递数据.

    13.请问addEventListener里面有几个参数,你能说出具体的使用方法嘛?

      这题出的有点像考API记忆力呵呵, 它的五个参数分别是addEventlistener(事件类型,监听函数,是否打开捕获阶段,监听器优先级别,是否打开弱监听)

      具体使用方法:详见手册,这里我copy来了。。

    addEventListener () 方法
    public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
    语言版本 :  ActionScript 3.0
    RuntimeVersions:  AIR 1.0, Flash Player 9

    使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。可以为特定类型的事件、阶段和优先级在显示列表的所有节点上注册事件侦听器。

    成功注册一个事件侦听器后,无法通过额外调用 addEventListener() 来更改其优先级。要更改侦听器的优先级,必须首先调用 removeListener()。然后,可以使用新的优先级再次注册该侦听器。

    请记住,注册该侦听器后,如果继续调用具有不同 typeuseCapture 值的 addEventListener(),则会创建单独的侦听器注册。例如,如果首先注册 useCapture 设置为 true 的侦听器,则该侦听器只在捕获阶段进行侦听。如果使用同一个侦听器对象再次调用 addEventListener(),并将 useCapture 设置为 false,那么便会拥有两个单独的侦听器:一个在捕获阶段进行侦听,另一个在目标和冒泡阶段进行侦听。

    不能只为目标阶段或冒泡阶段注册事件侦听器。这些阶段在注册期间是成对出现的,因为冒泡阶段只适用于目标节点的始祖。

    如果不再需要某个事件侦听器,可调用 removeEventListener() 删除它,否则会产生内存问题。由于垃圾回收器不会删除仍包含引用的对象,因此不会从内存中自动删除使用已注册事件侦听器的对象。

    复制 EventDispatcher 实例时并不复制其中附加的事件侦听器。(如果新近创建的节点需要一个事件侦听器,必须在创建该节点后附加该侦听器。) 但是,如果移动 EventDispatcher 实例,则其中附加的事件侦听器也会随之移动。

    如果在正在处理事件的节点上注册事件侦听器,则不会在当前阶段触发事件侦听器,但会在事件流的稍后阶段触发,如冒泡阶段。

    如果从正在处理事件的节点中删除事件侦听器,则该事件侦听器仍由当前操作触发。删除事件侦听器后,决不会再次调用该事件侦听器(除非再次注册以备将来处理)。

    参数


    type:String — 事件的类型。
     

    listener:Function — 处理事件的侦听器函数。此函数必须接受 Event 对象作为其唯一的参数,并且不能返回任何结果,如下面的示例所示:
    function(evt:Event):void

    函数可以有任何名称。

     

    useCapture:Boolean (default = false)确定侦听器是运行于捕获阶段、目标阶段还是冒泡阶段。如果将 useCapture 设置为 true,则侦听器只在捕获阶段处理事件,而不在目标或冒泡阶段处理事件。如果 useCapturefalse,则侦听器只在目标或冒泡阶段处理事件。要在所有三个阶段都侦听事件,请调用 addEventListener 两次:一次将 useCapture 设置为 true,一次将 useCapture 设置为 false.
     

    priority:int (default = 0) — 事件侦听器的优先级。优先级由一个带符号的 32 位整数指定。数字越大,优先级越高。优先级为 n 的所有侦听器会在优先级为 n -1 的侦听器之前得到处理。如果两个或更多个侦听器共享相同的优先级,则按照它们的添加顺序进行处理。默认优先级为 0。
     

    useWeakReference:Boolean (default = false) — 确定对侦听器的引用是强引用,还是弱引用。强引用(默认值)可防止您的侦听器被当作垃圾回收。弱引用则没有此作用。

    类级别成员函数不属于垃圾回收的对象,因此可以对类级别成员函数将 useWeakReference 设置为 true 而不会使它们受垃圾回收的影响。如果对作为嵌套内部函数的侦听器将 useWeakReference 设置为 true,则该函数将作为垃圾回收并且不再是永久函数。如果创建对该内部函数的引用(将该函数保存到另一个变量中),则该函数将不作为垃圾回收并仍将保持永久。

     14.请问我想判断一个字体是否是数字,用什么办法去判断呢?

      这问题问的有点奇怪。字体怎么可能是数字。。。如果是问,类型是否为数字,那就typeof一下,看他是不是int或者Number,如果是问字符串内容是否为数字,那也有很多办法,比如说,读出每个字符的ascii码,判断范围,或者是

                    var a:String="1232d4";
                    var b:Number=Number(a);
                    var c:String=String(b);
                    if(a==c){
                        Alert.show("yes");
                    }else{
                        Alert.show("no");
                    }

    虽然山寨了点,但也不失为一种选择。

    15.请问我想判断一个字符或者一个对象的类型怎么判断呢?

      应该没人出这样的题吧? if 咯。类型的话就typeof

    16.请问你了解 internal 控制符么?能说下具体使用方法和场合嘛?

      internal比private访问权限稍微放宽一些,可以包内访问,什么时候用的话,那就要根据情况酌情处理了。。

    17. 我想在某一点不去执行任何内容,也就是说我想停止执行了,你知道要怎么做嘛?

      不知道,期待高人指点

    18.请问 undefined 和 null 是否一样,如果不一样能否说出其中的区别呢?

      不一样,null是没有值的意思。undefined是申明未完成,或者类型未定等情况。

    19. 创建常量知道怎么创建嘛?说下你是怎么创建的.

      比如说:public static const STARTUP:String = "startup";

      const PI:Number = 3.1415926;

    20. 请问用什么方法自定义一个事件呢?说下具体的方式.

      自定义事件,要么就直接调用Event的构造函数,或者继承于Event,写一个子类。
    21. 请问怎么样检测本机的内容呢,比如说,我想知道本机的操作系系,是否有视频等这些.
     
      答:flash.system.Capabilities.os 是系统类型
      flash.system.Capabilities.playerType   是视频播放器类型

    22. 请问用什么办法解决安全域的问题?如果你不知道安全域的问题的话,可以在本机中绑定一下图片,然后再放到服务器上,就会出现此问题了.

      答:配置相关的安全沙箱的策略xml。
    23. 有三种基本数字类型: number, int, 和uint 请问有什么区别.具体说一下.
     
      答:number数字类型包含浮点型(正0负); int 整型(正0负); uint(无符号整型)
    24. parseInt此方法转化为int型的方法,请问你知道此方法的第二个参数是什么意思嘛?
     
      答:进制 2 8 16 等
    25. Math.round( ), Math.floor( ) 和Math.ceil( ) 三个方法都是四舍五入,请问有什么区别?
     
      答:都是取整:round 是原数+0.5后取整(3.0->3.0+0.5=3.5->4;3.9->3.9+0.5=4.4->4);floor向下取 整(3.4->3;3.9->3);ceil向上取整(1.3->2;2.8->3)
    26. 请问一个数组里可以放不同的类型嘛?
     
      答:可以 var x:Array = ['a',1,new Button()];
    27. var letters:Array = ["a", "b", "c"];我想在这个数组里搜索 ‘b’ 字符,请问怎么办?
     
      答:/*1*/for(var i:* in letters)
         if(letters == 'c') trace("c's position is " + i);
      /*2*/if(letters.toString().indexOf('c') > 0)
         trace( "c's position is " + (letters.toString().indexOf('c')- letters.length + 1) );
    28. 怎么样转换数组为字符串,怎么样将字符串转化为数组?
     
      答:数组->字符串:trace(new Array('a','b','c').join("").toString());
     
        字符串->数组: var arr:Array = new String("a,b,c").split(',');
    29. 我想创建的视图居中怎么办?
      答:布局策略里面限定为剧中。即 horizontalAlign="center" verticalAlign="middle"
        或者在每个控件都以舞台的中心作为相对坐标来计算各自的xy值。
    30. 请问知道层级的概念嘛?如果知道请问怎么样交换2个组件的层级呢?
      答:知道层级,不知如何交换。

    以下问题有待解决:

    23.请问你知道loader,URLLoader,URLStream这个三种动态加载资源的具体使用场合,以及有什么区别嘛?

    24.如何把MouseEvent 的localX 和localY 属性转化成全局坐标?

    25.请问我现在有一个正方形的图片,我想把他做成圆形,有什么办法呢?前提是用flex或者as3

    26.请问新创建的一个sprite能否被直接加到ui容器里?如果不能请说出用什么办法能加入.

    27.我怎么设置把一个文本框,设置成一个密码框?

    28.我想在文本框里只能输入abcd,有什么办法能做到呢?如果我想输入除abcd以外的其它都能输入又怎么做呢?

    29.请问condenseWhite 这个属性在TextInput里是表示什么意思?

    30.我现在刚创建的文件的text为 this is a text,我想设置光标在 is 上,请问怎么设置?

    31.请问怎么样在文本框里添加超链接?

    32.我想获取系统里的字体,请问怎么办?

    33.substring( ),substr( ), slice(),请说下3种解析字符串的不同之处,以及适用场合?

    34. var fruits:XML =
    Apple

    Orange

    Pear

    Watermelon

    ;
    以下有一个字符串,我现在知道了color为orange,我想知道此color相对应的name节点的值,我应该怎么做?

    35.请说下目前使用flex和后台交互的几种方法,以及适用场合.

    36.我现在想在flex里调用JS方法,我要怎么办呢?

    37.我想用JavaScript调用ActionScript函数,我要怎么办呢?

    38.FileReference 请说下此对象的几个相关事件

    组件
    1.我不想在容器里显示滚动条怎么办?

    2.请问Flex bulider3可以创建几种不同的项目?

    3.你了解RSL嘛?请说明下RSL的使用方法,以及使用RSL为了解决什么问题?

    4.请问SWC是做什么用的,怎么样自己制作一个SWC?

    5.flex生成出来的文件都是很大,请问你用什么办法进行缩小呢?

    6.请问 trace( NaN == NaN ) 结果为true 还是false,为什么?

    7.warning: unable to bind to property ” on class ‘Object’ (class is not an IEventDispatcher) 在使用ItemRender时,经常会出现这种警告,请问想去除的话怎么办呢?

    8.现在流行MVC,但是as代码有的时候还是大部分写在mxml里面,请问我想代码分离怎么办呢?

    9.我想继续UIComponent重新写一个正方形的组件,我应该怎么做?请说重点部分即可.

    10.常用的几个切换数据的组件比如: TabNavigator等都有属性 creationPolicy 你知道这种策略的使用方式是什么嘛?以及优,缺点呢?

    11.我想在application里获取当前运行的URL,我要怎么获取.

    12.请说下事件里的currentTarget 和 target的区别?

    13.请列举下你常用的几种effects,并说明使用原因.

    14.HBox,VBox和canvas有什么区别呢?试说出其中几点

    15.请问我想在list里选中多行信息,我要怎么做呢?

    16.Alert里面有几个属性,我想设置图片怎么办呢?

    17.请问你是否设置过样式呢,我想动态设置样式怎么办呢?如果我想在as代码里设置样式我又要怎么办呢?

    18.你能说一下UIComponent的生命周期嘛?以及相关的使用场合呢?

    19.请问你是否发现过 flex3里的bug呢,请列举一些?

    20.列举出flex里面的几个绑定数据对象的方式

    21.请问我自己定义了一个组件,我想在组件里的属性里设置几个默认值,我要怎么设置呢?

    22.callLater()方法怎么使用,为什么要使用这个方法呢?

    23.请问你是否使用过module这种方法去做项目呢?他的优,缺点是什么呢?使用组件的方式加载的话,他的优,缺点是什么呢?

    24.目前网页里都有导航,请问在Flex要做导航要注意一些什么呢?以及怎么样做呢?

    25.我想在一个错误的图片链接里,定义一下默认的图片怎么做呢?

    26.请试写一个自定义的验证组件

    27.请说明下tigger tiggerEvent 在验证组件里是什么意思,具体怎么使用呢?

    28.ExternalInterface, LocalConnection 2者有什么区别?

    29.你是否使用过flex的测试工具呢?请说明下具体是哪种,以及使用方式,你为什么使用这种工具?

    30.我能把CSS编译成swf嘛?

    31.请用as3列举下你用过的模式

    32.Embed绑定图片有什么缺点?

    33.TitleWindow的组件是可以拖动的,我不想让他拖动我要怎么办呢?

    34.你是否使用过profile,你觉得这个工具怎么样,优,缺点是什么呢?

    35.你是否做过flex 前端的性能优化,你觉得怎么做是比较完美的?

    36.你是否了解E4X,请说明一下优,缺点?

    37.请列举一下你知道的影响性能的几个因素?

    38.请说明一下ShareObject的使用方法?以及优,缺点?

    39.请列举一下,你认为不错的网站或者blog.

    40.我现在给你100万做一个flex项目,你认为成功的要素在哪呢?

     


     

  • 相关阅读:
    JavaScript对象
    Mocha+should+Karma自动化测试教程
    JavaScript中值类型与引用类型
    JavaScript函数、闭包、原型、面向对象
    Mac终端下的svn使用教程
    00.2019年12月16日,我的个人博客网站上线了
    70.JS---利用原生js做手机端网页自适应解决方案rem布局
    2.一些囊括软件知识的网址----------以下所有链接都是原著,在此对那些大神道声谢!
    1.2018年1月3日,我的博客开博了!
    94、phpcms的筛选功能的实现(新手看完就会)
  • 原文地址:https://www.cnblogs.com/zack/p/1502443.html
Copyright © 2011-2022 走看看