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项目,你认为成功的要素在哪呢?

     


     

  • 相关阅读:
    668. Kth Smallest Number in Multiplication Table
    658. Find K Closest Elements
    483. Smallest Good Base
    475. Heaters
    454. 4Sum II
    441. Arranging Coins
    436. Find Right Interval
    410. Split Array Largest Sum
    392. Is Subsequence
    378. Kth Smallest Element in a Sorted Matrix
  • 原文地址:https://www.cnblogs.com/zack/p/1502443.html
Copyright © 2011-2022 走看看