flex面试题及答案
在网上见到了一篇不错的关于flex面试题目,转来记录一下。希望有所帮助! 第一部分: 1.使用Flex Bulider3建立一下新的.mxml的页面时默认的背景是蓝色的,请问 用什么办法能修改掉此背景颜色,以至于下次创建时背景不是为默认的蓝色的 呢?请写出你认为正确的方法. backgroundColor: #0000FF; 2.使用Flex Bulider3如何跟踪程序? Alert.show()或js的alert() 如:navigateToURL(new URLRequest ("javascript:alert(traceMsg)"),"_self"); 3.请问enterFrame和timerEvent这2个事件有什么区别?请说下具体的使用方法 和相关的使用场合? 4.请说下你理解AS3的事件机制是什么机制?你认为正确的就可以说出来. 后按照原路返回冒泡响应事件 5.请问addEventListener里面有几个参数,你能说出具体的使用方法嘛? 响应,Event级别 6.请问我想判断一个字体是否是数字,用什么办法去判断呢? 7.请问我想判断一个字符或者一个对象的类型怎么判断呢? 8.请问你了解 internal 控制符么?能说下具体使用方法和场合嘛? 9.我想在某一点不去执行任何内容,也就是说我想停止执行了,你知道要怎么做 嘛? 10.请问 undefined 和 null 是否一样,如果不一样能否说出其中的区别呢? 11.创建常量知道怎么创建嘛?说下你是怎么创建的. 12.请问用什么方法自定义一个事件呢?说下具体的方式. 建对象->dispatchEvent(创建的对象)->mxml标签中使用事件名称来响应 13.请问怎么样检测本机的内容呢,比如说,我想知道本机的操作系系,是否有视 频等这些. 14.请问用什么办法解决安全域的问题?如果你不知道安全域的问题的话,可以 在本机中绑定一下图片,然后再放到服务器上,就会出现此问题了. 15.有三种基本数字类型: number,int,和uint 请问有什么区别.具体说一 下. 型) 16.parseInt此方法转化为int型的方法,请问你知道此方法的第二个参数是什 么意思嘛? 17.Math.round( ), Math.floor( ) 和Math.ceil( ) 三个方法都是四舍五入 ,请问有什么区别? >3.9+0.5=4.4->4);floor向下取整(3.4->3;3.9->3);ceil向上取整(1.3- >2;2.8->3) 18.请问一个数组里可以放不同的类型嘛? 19.var letters:Array = ["a","b","c"];我想在这个数组里搜索 ‘b’ 字 符,请问怎么办? letters.length + 1) ); 20.怎么样转换数组为字符串,怎么样将字符串转化为数组? 21.我想创建的视图居中怎么办? 22.请问知道层级的概念嘛?如果知道请问怎么样交换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 =? Orange Pear Watermelon ; name节点的值,我应该怎么做? 35.请说下目前使用flex和后台交互的几种方法,以及适用场合. 36.我现在想在flex里调用JS方法,我要怎么办呢? 37.我想用JavaScript调用ActionScript函数,51); font-family:Arial; font-size:14px; line-height:26px"> 38.FileReference 请说下此对象的几个相关事件 ? 一.简述Flex内存释放优化原则。什么情况会发生内存经泄露,一旦有内存泄 露,你会如何解决? FLEX内存释放优化原则: 处理掉; ,子对象不会被删除又会导致了父对象不会被删除; 象时,一定要记得把此对象的引用设置为null; 外部引用了,孩子删不掉导致父亲也删不掉; 法的就一定要调用删除内部对象,否则有可能会造成内存泄露和性能损失; 期被系统自动删除或第二次移除操作时被删除; 能被删除的,父对象也不能被删除; 响正常的回收机制,所以最好是做到注册的事件监听器都要记得移除干净。 等于其他状态就没有泄露了,要各模块各状态逐个进行测试分析,直到测试任 何状态下都能删除整个对象为止。 内存泄露情况: 1. 引用泄露:对子对象的引用,外部对本对象或子对象的引用都需要置null ; BindingUtils.bindSetter(),ChangeWatcher.watch()函数时候完毕后需要调 用ChangeWatcher.unwatch()函数来清除引用 ,否则使用此函数的对象将不会 被删除; 对象和子对象上的Effect动画停止掉,然后把Effect的target对象置null; 如 果不停止掉动画直接把 Effect置null将不能正常移除对象。 引用置null; 内存泄露解决方法: 引用(不管是VO还是组件的都需要删除),删除监听器,调用系统类的清除方 法) 释放干净; 过哪些对象,目前有哪些对象没有被删除,创建的数量,占用的内存比例和用 量,创建过程等信息; 许用户定义是谁正在管理/处理这一事件,以及数据是否需要从服务器端返回 ,或者其他的什么事件需要被触发,所有的这些都使得Flex应用的开发变得更 加得简单。 三.Flex是如何与flash协作的? 1.代码易于维护与二次开发。所有AS代码以面向对象的思想在flash外部组织 ,用notepad即能打开。比起传统的as2分散于frame之间,以及更早的分散于 影片与按纽之上,其优点好处不言而喻。 2.设计独立于代码之外。可以在没有程序员的清况下,修改程序(系统) 的 外观,亦可以新做一批theme;程序没有变,只是改改图片和排列位置,大小 等,就可以迅速焕然一新。譬如,在春节时,加一些春节的时令元素进去,这 将是一件很容易做的事情。 四.如何提升Flex运行效率,请从各方面进行简述。 1、避免容器的多级嵌套,减少相对尺寸、相对定位的使用。 尺寸变化,都会引发容器对所有子级的重定位动作。如果嵌套的级别很深,这 个计算量会很大。 2、尽量使用轻量级的容器 替HBOx和VBox。另外,Canvas也是我们编写自定义容器性质组件的一个首选。 它具有容器的基本功能,利于扩展。 3、避免使用大体积的组件,比如DataGrid、AdvancedDataGrid 、样式、itemRenderer的实现都格外复杂。 4、处理数据时多用分页的方式 数据一次性全部创建,不管是不是需要显示,这样很浪费资源。 ViewStack 、TabNavigator等在处理元件时,并不是一次创建,只要元件在第一次被显示 时才创建,这样,就避免的不必要的开销。 5、setStyle和styleName 比如styleName完成所有皮肤元件的绘制。如果我们在运行期间通过 setStyle 修改了组件的样式,组件的尺寸、位置就会作相应调整。联系到第一条,如果 组件位于一个层级很深的容器中,也会有一个大的计算量。 组件内容 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时,经常会出现这种警告,51); font-family:Arial; font-size:14px; line-height:26px"> 问想去除的话怎么办呢? 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,你觉得这个工具怎么样,优,51); font-family:Arial; font-size:14px; line-height:26px"> 35.你是否做过flex 前端的性能优化,你觉得怎么做是比较完美的? 36.你是否了解E4X,请说明一下优,缺点? 37.请列举一下你知道的影响性能的几个因素? 38.请说明一下ShareObject的使用方法?以及优,51); font-family:Arial; font-size:14px; line-height:26px"> 39.请列举一下,你认为不错的网站或者blog. 40.我现在给你100万做一个flex项目,你认为成功的要素在哪呢? 第二部分:
Junior: 1 Flex/Flash与html的优劣? 2 flex与flash的区别 3 as与mxml,js,Java的区别 4?? 什么时候用bindable,它的实现原理?(Listenerand handler) 5 flex4中出现哪些新的功能?你最喜欢它哪些功能? Spark组件框架,States,effects and layout,FXG 6 在flex中如何快速进行调试?(trace 和debugconfiguration) 7 加载图片有几种方式?(Embed和动态加载)各自的使用场合? 8 使用过Flex中的哪些组件,自己写给组件吗?遇到过些什么问题? Senior: 1 用过哪些Flex框架?(Parsley,Cairngorm,pureMVC)简单介绍一下你用过的框架 2flex的渲染机制,什么时候flex进行刷新,下面这些函数在组件中起什么样作用? 1).??createChildren() 2).?? invalidateProperties()–> commitProperties() 3).?? invalidateSize()–> measure() 4).?? invalideDisplayList()–> updateDisplayList() 3 flex组件(AdvancedDataGrid/Chart) ? 在AdvancedDataGrid中,怎么处理层级数据? ? 如果自己实现DataGrid/Chart,提供大概的思路? ? 组件中哪一些方法经常被重载?如何与父组件交互? ?createChildren()commitProperties() measure()updateDisplayList() 4 labelFunction 在众多组件中参数不一致,为什么?? ? itemRenderer 如何实现行渲染,列渲染,行列背景色渲染, ? styleFunction 可以实现行列背景色渲染吗? 5 介绍一下flex中使用过的设计模式,比如单例模式,MVC模式(as与mxml分离) 6如何提高flex的加载速度?(延迟加载容器和Module) 第三部分: 1.我不想在容器里显示滚动条怎么办? 答:指定horizontalScrollPolicy和verticalScrollPolicy为off 2.请问Flex bulider3可以创建几种不同的项目? 答:三种。Flex Project、 AS Project 和Flex Library Project。 3.你了解RSL嘛?请说明下RSL的使用方法,以及使用RSL为了解决什么问题? 答:RSL(Runtime shared libraries)即动态链接库,在程序运行时由FlashPlayer动态加载。静态链接库是SWC文件,通过编译器的 library-path和include-libraries编译进应用程序。采用静态链接的应用程序SWF会产生比较大的文件以及更长的下载时间。使用RSL的应用程 序载入时间短且文件比较小,而且提高了内存使用效率,只是在开始需要花点时间下载RSL。RSL的强大体现在多个应用程序共享公共代码时, 因为RSL只需要被下载一次,多个应用程序动态链接到相同的RSL,访问其中已经缓存在客户端的资源。 使用RSL: (1).在项目文件夹中点右建,选择"properties"-"Flex Build Path"-"Library Path" (2).该选项卡上我们看到"FrameWork linkage",默认是"Merged into cdoe"(FLEX4默认是RSL) (3).点开下拉,选择"runtime shared library(RSL)" (4).针对自定义的SWC,修改其link type为RSL,选择None,同时勾上Automatically extract swf to deployment path(自动将SWF提取到 部署路径)。如果想对不同域的RSL共享,则选择Digests(摘要),同时指定其Policy file url(策略文件)。具体可参考FLEX SDK中的SWC文 件处理方式。 (5).点击OK 4.请问SWC是做什么用的,怎么样自己制作一个SWC? 答:静态链接库是SWC文件,通过编译器的library-path和include-libraries编译进应用程序。 新建Flex Library Object或使用compc命令可以制作SWC。 5.flex生成出来的文件都是很大,请问你用什么办法进行缩小呢? 答:(1)RSL (2)Module (3)外部加载资源 6.请问trace( NaN == NaN ) 结果为true 还是false,为什么? 答:NaN 具有独特的数学性质,任何与其相关的比较都会得到false的计算结果。改用全局 isNaN()函数检测NaN值,如下所示: trace(NaN == NaN); // false! trace(NaN != NaN); // false again! trace(isNaN(NaN)); // true 7.warning: unable to bind to property ” on class ‘Object’ (class is not an IEventDispatcher) 在使用ItemRender时,经常会出 现这种警告,请问想去除的话怎么办呢? 答:ArrayCollection的子元素是无法作为数据源绑定的。可以声明中间变量,在override set data时将ArrayCollection的子元素传入, 然后再将中间变量作为新的绑定源即可。 8.现在流行MVC,请问我想代码分离怎么办呢? 答:严格按照MVC框架规范书写代码。如果还是不行,可以考虑重写组件或者从业务逻辑上解耦。没必要用source引用外部as文件来达到代 码分离,那没有意义。 9.我想继承UIComponent重新写一个正方形的组件,我应该怎么做?请说重点部分即可. 答:(1)使用get、set初始化组件边长等必要数据,指定能通过MXML标记设置的属性。 (2)如果组件内有子元素,覆盖createChildren()方法,使用addChild加入这些子元素。 (3)覆盖commitProperties()方法,提交边长等组件属性变化。 (4)覆盖measure()方法,设置组件缺省size和缺省最小size。 (5)覆盖updateDisplayList()方法,依据布局确定子元素大小及位置。最后,使用graphics类的drawRect方法画出正方形边框。 10.常用的几个切换数据的组件比如: TabNavigator等都有属性 creationPolicy 你知道这种策略的使用方式是什么嘛?以及优,缺点呢? 答:延迟实例化。优点是可以更快地加载组件,缺点是首次访问其他组件时,由于需要重新加载此组件,可能会有一定的延迟。 11.我想在application里获取当前运行的URL,我要怎么获取. 答:Application.application.url 12.请说下事件里的currentTarget 和 target的区别? 答:在事件流的过程中,目标阶段确定的目标对象由Event中的target属性来记录,冒泡阶段移动的游标则由currentTarget来记录。事件 对象冒泡过程中每往上移动一级,就会克隆出一个仅与前副本currentTarget不同的新副本。 13.请列举下你常用的几种effects,并说明使用原因. 答:SoundEffect,为了播放MP3 TweenLite很多特效 14.HBox,VBox和canvas有什么区别呢?试说出其中几点 答:canvas只有绝对布局,没有布局管理器。 HBox,VBox则相反,没有绝对布局,只有相对布局。 15.请问我想在list里选中多行信息,我要怎么做呢? 答:设置allowMultipleSelection为true 16.Alert里面有几个属性,我想设置图片怎么办呢? 答:使用iconClass属性指定图片 17.请问你是否设置过样式呢,我想动态设置样式怎么办呢?如果我想在as代码里设置样式我又要怎么办呢? 答:使用setStyle() 18.你能说一下UIComponent的生命周期嘛?以及相关的使用场合呢? 答:(1)调用组件构造函数 (2)设置组件属性 (3)调用addChild()将组件添加到父组件显示列表 (4)组件的parent属性设置为对父容器的引用 (5)设置样式 (6)组件分发preinitialize事件 (7)调用组件createChildren() (8)调用 invalidateProperties(),invalidateSize(),invalidateDisplayList()失效方法,FLEX将在下一个“渲染事件”(render event) 期间对相应的commitProperties(),measure(), updateDisplayList()方法进行调用。这个规则唯一例外就是当用户设置组件的height 和 width 属性时,Flex 不会调用measure()方法。也就是说,只有当组件的explicitWidth 和explicitHeight 属性是NaN 时Flex才会调用 measure()方法。 (9)组件分发initialize事件。此时组件所有的子组件初始化完成,但组件尚未更改size和布局,可以利用这个事件在组件布局之前执行一 些附加的处理 (10)在父容器上分发childAdd事件 (11)在父容器上分发initialize事件 (12)在下一个“渲染事件”(render event)中,Flex 执行以下动作: a.调用组件的commitProperties()方法 b.调用组件的measure()方法 c.调用组件的layoutChrome()方法 d.调用组件的updateDisplayList()方法 e.在组件上分发updateComplete事件 (13)如果commitProperties(), measure(),updateDisplayList()方法调用了invalidateProperties(),invalidateSize(), invalidateDisplayList()方法,则Flexh 会分发另外一个render事件 (14)在最后的render事件发生后,Flex执行以下动作: a.设置组件visible属性使其可视 b.组件分发creationComplete事件,组件的大小(size)和布局被确定,这个事件只在组件创建时分发一次 c.组件分发updateComplete事件。无论什么时候,只要组件的布局(layout),位置,大小或其它可视的属性发生变化就会分发这事件,然 后更新组件来正确地显示。 19.请问你是否发现过 flex3里的bug呢,请列举一些? 答:flex Module内存泄露,对象无法释放。 20.列举出flex里面的几个绑定数据对象的方式 答:对自已的类或者变量添加绑定功能: (1)类前使用[Bindable]表示所有属性都支持绑定,此类必须实现IEventDispatcher接口。 (2)可以给变量声明前或变量getter setter前使用[Bindable]。如果getter和setter方法同名,那么给其中一个[Bindable],相当于给两个都 用了[Bindable]。 使用拥有绑定功能的属性: (1)、MXML的{}方式,如:{myInput.text}{myVar1+myVar2}{myBtn} (2)、MXML的方式。和{}相同,可以多绑一,可以双向绑定。如 (3)、AS的mx.binding/utils.BindingUtils类的bindProperty () 方法或bindSetter () 方法 (4)、AS的mx.binding.utils.ChangeWatcher的watch () 方法 21.请问我自己定义了一个组件,我要怎么设置呢? 答:在定义组件时,初始化组件属性时即可指定默认值。 22.callLater()方法怎么使用,为什么要使用这个方法呢? 答:callLater(method:Function,args:Array):void 其中method是函数名,args是要传入函数的参数。 callLater指定的函数在下次刷新屏幕的时候才会执行,这可以确保在对某个对象进行操作时对象已经创建完毕。当然也可以利用这个特点来制作渐进动画。 23.请问你是否使用过module这种方法去做项目呢?他的优,缺点是什么呢?使用组件的方式加载的话,缺点是什么呢? 答:优点是合理分割了主Application,模块化开发。更小的SWF文件体积,配合RSL和延迟加载策略,大大减少用户等待时间。缺点就是容易引起内存泄露。 24.目前网页里都有导航,请问在Flex要做导航要注意一些什么呢?以及怎么样做呢? 答:注意默认的延迟实例化可能会导致某些对象为空。 25.我想在一个错误的图片链接里,定义一下默认的图片怎么做呢? 答:控制Image的source属性,当图片链接出现错误时,指定默认链接。 26.请试写一个自定义的验证组件 答: package myCompenent { import mx.validators.Validator;//引用Validator类 import mx.validators.ValidationResult;//引用ValidationResult类 public class myValidators extends Validator { public function myValidators()//构造函数 { super(); } private var results:Array;//定义一个数组,用以存储错误 //重写验证函数 override protected function doValidation(value:Object):Array { var s:String = value as String; results = [];//清空数组 results = super.doValidation(value);//先用继承类中的doValida tion方法验证 if (results.length > 0)//如果验证时有错,返回错误信息 return results; if(s.length>6)//自定义验证,字符长度不超过6 { //记录出错信息 results.push(new ValidationResult(true,"text","StringTooLong","字符长度超过6了")); } return results; } } } 27.请说明下trigger triggerEvent 在验证组件里是什么意思,具体怎么使用呢? 答:指定触发验证的组件和触发事件,默认是source指定的组件和valueCommit事件。 具体来说,多个validator的source对应多个组件,但它们的trigger都指向一个提交按钮,triggerEvent都是click。这样,只会在点击提交按 钮时,才触发所有验证。 28.ExternalInterface,LocalConnection 2者有什么区别? 答:ExternalInterface是Flex和Javascript通迅使用; LocalConnection可以让运行于同一台计算机的本地应用程序进行交互,使用AMF3格式通信,兼容以前版本。 29.你是否使用过flex的测试工具呢?请说明下具体是哪种,你为什么使用这种工具? 答:没有,只听过FlexUnit,FlexMonkey。 30.我能把CSS编译成swf嘛? 答:可以,在CSS文件上右键选择Compile CSS to SWF。 31.请用as3列举下你用过的模式 答:工厂模式,单例模式 32.Embed绑定图片有什么缺点? 答:直接编译到swf文件中,造成其体积过大。而且由于嵌入代码中,维护不便。 33.TitleWindow的组件是可以拖动的,我不想让他拖动我要怎么办呢? 答:让isPopUp属性=false,同时设置弹出窗口为模态窗口,禁止与其他窗口交互。 34.你是否使用过profile,缺点是什么呢? 答:可以很方便地观察对象的创建和销毁,帮助检查内存泄露问题。 35.你是否做过flex 前端的性能优化,你觉得怎么做是比较完美的? 答:(1)、避免容器的多级嵌套,减少相对尺寸、相对定位的使用。 (2)、尽量使用轻量级的容器 (3)、避免使用大体积的组件,比如DataGrid、AdvancedDataGrid (4)、处理数据时多用分页的方式 (5)、少使用setStyle (6)、使用延迟实例化加载子组件 36.你是否了解E4X,缺点? 答:E4X是在ECMA-357标准中定义的,并成为AS3的一部分。优点是提供更简明和可读性强的语法从XML中查找和提取数据。 37.请列举一下你知道的影响性能的几个因素? 答:同上面第35题。 38.请说明一下ShareObject的使用方法?以及优,缺点? 答:getLocal()用来指定存储在客户端的路径。 data属性用来指定要存储的数据内容。 flush方法负责把数据内容写入。 clear方法用于清除储存的信息。 39.请列举一下,你认为不错的网站或者blog. 答:insideRIA,AS天地会,AIRIA,javeeye,N神,杜增强,牛牛猪研究所,黑羽 40.我现在给你100万做一个flex项目,你认为成功的要素在哪呢? 答:(1)数据和需求等传统软件项目的成功要素 (2)模块化开发,MVC框架 (3)swf文件减肥,运行效率,内存泄露问题,前台优化 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |