锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Android笔试题

时间:2023-08-10 23:07:00 diary继电器

Android面试题

1.以下哪些句子对内存回收的解释是正确的?(b)

A、程序员必须创建一个释放内存的线程

B、内存回收程序负责释放无用内存

C、内存回收程序允许程序员直接释放内存

D、内存回收程序可以在指定时间释放内存对象

android内存回收机制

我想每个人都是第一次使用它Android不可避免的是,它会被安装个任务管理器,然后对里面时刻都停留着一大堆的程序表触目惊心,然后在桌面上建立一个快速清空内存的按钮按钮,时不时地按下,看着剩余的内存从30多到100然后很开心...其实吧,Android是Linux每个程序都是独立的的JAVA虚拟机,就像油汤里的油花一样,互不干扰,所以充分万一某个程序得到保证JAVA虚拟机崩溃,系统仍然稳定正常运行.而Android和传统Linux不同的是,传统Linux在过程停止后就结束了,类似于我们用S60和WM一样品,关闭程序,释放内存.而Android这些过程将被保留在内储存,为什么?为了确保您在重新激活这些过程时启动更多快,例如,我们挂在桌面上Widgets,让我们以新浪微博为例.我刚看完,退出了。突然,我想我发微博吧,那么这个时候我可以直接在桌面Widgets上操作-想象一下如果我退出,这个过程就终止了,所以我在桌面上点击Widgets你会卡住甚至没有反应吗?----跟我们来Widgets挂在桌面上的行为完全背离,放置桌面上为了随时观察程序运行,程序可以随时快速调用.所以Android过程中没有工作动停止释放相应的内存.所以也许你还会有疑问,那么内存够不够?
我只用5612的内存M是不是很可怕?其实系统一点不卡,蛋定蛋定蛋定蛋定蛋是的,我明白,因为大家这么多年了Windows都用习惯了,Windows当内存不足时,机器卡会让你想砸碎机箱,当你调用虚拟内存时,硬盘喀喀喀想让你肉痛.你肯定会害怕你的手机显然是512M内存结果只剩下30个了M把你卡在崩溃之前.事实上呢,Android系统需要更多的内存释放占用内存的过程是智能的.最早,人们认为有一个排名,比如最近使用了哪些程序(LRU机制,LastRecentlyUsed),然最早的过程结束后.但事实并非如此,否则我们就会上小学就这样,高个子的大男孩和班长下去拔草扛新书,女生留在班里绣花吧...这样很明显不公平而且没准会结束掉那些我们并不想结束掉落的过程——比如这个时候,我想回刚才后台的网页继承连续浏览结果悲哀地发现它被系统强制关闭了...
Android将过程分为一些优先级,比如前台进程(Foreground),比如我们正在看书,那么看书程序是前台过程,系统不会优先考虑这些过程.当我把它切到后台时,它变成了后台进程了.还有可见进程(Visible),这个怎么说,比如输入法程顺序,你通常看不到它,但当你打开输入界面时,它它会很快弹出,而不是让你等待。你看不见的原因是透明机制,我们不要钻牛角尖讨论为什么我看不见...还有桌面的Widgets,例如,我们的桌面时钟,这个东西就是如果它被系统终止,会发生什么?这个Widgets它仍然会显示在桌面上,但时针不会消失...主要服务,比如电话拨号功能,你不想急着打电话结果人家给你卡半天,尤其是像我这样的联系人。2000年,加载真的很慢。...因此,这些主要服务平时也是如此系统不会自动结束,除非你非要关它,关了也会自己重新加载的.这也是你完全释放内存后看内存的原因使用值缓慢下降的原因.
次要服务(secondaryserver),如谷歌企业
套件,Gmail,联系人可能会在任务管理器中看到这些程序你会很莫名其妙。你在哪里?我没开。...其实它们也与一些系统功能密切相关,例如Gmail的邮件推送,我们经常需要它们,所以系统太会终止它们.甚至于HTC机器上的名字HTCSense,这也是次要服务,但是事实上,它承担着整个系统界面的运行,所以如果你强行关闭它关闭所有过程,你的屏幕会变成白色...然后慢慢等HTCSense加载.
后台进程(hidden),我们通常理解的是启动后被切换到后台的过程,如浏览器和阅读器.后台进程的管理策略有很多种,但一般来说,系统会尽可能地查看内存保留更多的后台程序会影响您启动其他程序的运输行速-我认为这很容易理解,因为内存真的不够,你还没有让系统自动释放内存.但好处是你又切换到这些了启动程序几乎是无缝的,速度绝对比你从0开始启动程序更快要快得多.因此,当内存极度不足时,这种后台过程,肯定会被系统有选择地杀死.内容供应节点(contentprovider),没有程序实体,只提及其他程序使用内容,如日历供应节点、电子邮件供应节点等.当系统自动终止过程时,这类程序享有被杀的优先权权...空进程(empty),在没有任何东西的情况下运行的过程中,有些程序退出后仍然会在此过程中停留一个空过程,在此过程中没有运输数据行,它通常是为了提高程序的下一个启动速度或记录程序一些历史信息.这部分过程无疑是系统最先终止的.
说了这么多,其实还是要结合实际程序来看看。,比如 Android这个很有名的自动内存调配的软件,Auto Memory Manager,它的设置和帮助界面就如上面所说的, 它自动提供了多种默认配置,例如极速模式,这个模式下,会 帮助你在设定好的临界值区间上,结束空进程以及内容供 应节点等等低优先级保留权的进程,来给你腾出更多的内 存,加速新运行程序打开的速度,但是它也说明了这种模式 的弊端,就是一些可能你不想被关闭的进程会被过早的关 闭,比如说,闹钟----在G2 G3还很火爆的2009年,很多用户 在买完手机后给我抱怨,哎呀这个机器闹钟怎么老不响 啊...上班老迟到...其实这就是因为手动结束进程的时候结 果把闹钟也给干掉了.系统的时间是会一直走的,这属于主 要服务,而闹钟呢,只是主要服务的一个附属品,所以被结束 后,是不会自动被启动的,既然没有启动自然就不会响了.与 此类似的例子就是里程碑不充电的BUG,这是因为Moto的 机器里有个USB的进程,如果你把它结束后,理论上会重新 启动的但是也会不启动,后面这种情况出现的结果就是你 插充电器没反应,插数据线连电脑没反应...重启手机就好 了. 当然我知道大家的洁癖很多,有的人就是见不得内存值太 小...好吧如果你不想一些被系统认为不太重要而你又很需 要的进程被你自己亲手扼杀的话,那么我推荐你使用高级 任务管理器这个程序,你可以把一些进程自动隐藏起来,也 就是说当你挥起狼牙棒横扫一堆进程的时候,你设置好的 几个进程是不会受任何影响的,比如桌面Launcher,比如闹 钟,比如USB,等等等等.但话说回来,我是不建议大家去手动 管理Android的内存,也许你会不习惯----我也没啥好劝告 的,总之,不要把你的智能机想的那么笨就行了. 刚才全杀掉进程后,过了一会,我的DEFY又变成剩余60M内 存,还是没啥鸭梨啊...如果你感兴趣可以做个试验,内 存很少的时候,你打开一个大游戏,然后退出,你会发现...

http://reedhistudy.diandian.com/post/2011-09-15/5045645 

2. 下面异常是属于Runtime Exception 的是(abcd(多选)

      AArithmeticException 

      BIllegalArgumentException 

      CNullPointerException 

      DBufferUnderflowException 

  A、ArithmeticException     

   当出现异常的运算条件时,抛出此异常。例如,一个整数除以零时,抛出此类的一个实例


      B、IllegalArgumentException 

  抛出的异常表明向方法传递了一个不合法或不正确的参数。


      C、NullPointerException 

      D、BufferUnderflowException (不明白,没碰到过)

编码问题导致java_BufferUnderflowException异常

公共类BufferUnderflowException的

延伸的RuntimeException

未经检查的异常时,抛出一个相对get操作达到源缓冲区的限制。



 

3.  Math.round(11.5)等于多少(). Math.round(-11.5)等于多少(c). 

A11 ,-11   B11 ,-12   C12 ,-11   D12 ,-12

四舍五入 四和五是指正的45
-11.5 这么看 -11.5 = -12 +0.5   ,0.5按四舍五入为-12+1 = -11,所以Math.round(-11.5)==-11
           -0.5 = -1 + 0.5   0.5按四舍五入为-1+1 = 0,所以Math.round(-0.5)==0

            11.5 四舍五入 显然 Math.round(11.5)==12

round方法返回与参数最接近的长整数,参数加0.5后求其floor(小于等于该数的最大整数)



4. 下列程序段的输出结果是:(b)

     void complicatedexpression_r(){
     int x=20, y=30;
     boolean b;
     b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60;
     System.out.println(b);
     }
     Atrue  Bfalse  C1  D011.activity



5. 对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行(d)

   AonPause()  BonCreate()   C、 onResume()   DonStart()


Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)

http://blog.csdn.net/tangcheng_ok/article/details/6755194


6. Intent传递数据时,下列的数据类型哪些可以被传递(abcd(多选)

       ASerializable  Bcharsequence  CParcelable  DBundle


android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)

http://jojol-zhou.iteye.com/blog/1401905

Android中Intent传递对象的两种方法(Serializable,Parcelable)

http://blog.csdn.net/xyz_lmn/article/details/5908355



7. android 中下列属于Intent的作用的是(c)

  A、实现应用程序间的数据共享

  B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失

  C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带

  D、处理一个应用程序整体性的工作


8. 下列属于SAX解析xml文件的优点的是(b)

      A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能(dom解析优点)

      B、不用事先调入整个文档,占用资源少(sax解析优点)

      C、整个文档调入内存,浪费时间和空间(dom解析缺点)

      D、不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会(sax解析缺点)

  消失


不需要像dom解析那样在内存中建立一个dom对象,占用内存,sax解析是逐行解析的,每次读入内存的只是一行xml,所以速度快,效率高点。不过sax一般是处理固定格式的xml。


9.  下面的对自定style的方式正确的是(a

    A、 

fill_parent

 

     B、 

fill_parent(没有

   

     C、 

fill_parent(没有)

  

     D、 

fill_parent(应为)

  

10.   在android中使用Menu时可能需要重写的方法有(ac)。(多选)

      AonCreateOptionsMenu() 

  BonCreateMenu()

  ConOptionsItemSelected()

  DonItemSelected()


 //当客户点击MENU按钮的时候,调用该方法
    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(0, 1, 1, R.string.exit);
    menu.add(0,2,2,R.string.about);
return super.onCreateOptionsMenu(menu);
}
    //当客户点击菜单当中的某一个选项时,会调用该方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == 1){
finish();
}
return super.onOptionsItemSelected(item);
}

11.  在SQL Server Management Studio 中运行下列T-SQL语句,其输出值(c)。

 SELECT @@IDENTITY  

     A可能为0.1

     B可能为3

     C、 不可能为-100

     D肯定为0

@@identity是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量。一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头。比如有个表A,它的自增列是id,当向A表插入一行数据后,如果插入数据后自增列的值自动增加至101,则通过select @@identity得到的值就是101。使用@@identity的前提是在进行insert操作后,执行select @@identity的时候连接没有关闭,否则得到的将是NULL值。


12. 在SQL Server 2005中运行如下T-SQL语句,假定SALES表中有多行数据,执行查询之 后的结果是(d)。

 BEGIN TRANSACTION A

  Update SALES Set qty=30 WHERE qty<30

 BEGIN TRANSACTION B

Update SALES Set qty=40 WHERE qty<40

Update SALES Set qty=50 WHERE qty<50

Update SALES Set qty=60 WHERE qty<60

 COMMITTRANSACTION B

 COMMIT TRANSACTION A

 ASALES表中qty列最小值大于等于30

 BSALES表中qty列最小值大于等于40

 CSALES表中qty列的数据全部为50

 DSALES表中qty列最小值大于等于60


Update SALES Set qty=60 WHERE qty<60(关键在最后一句,执行完数据就都是大于等于60了)

13.  在android中使用SQLiteOpenHelper这个辅助类时,可以生成一个数据库,并可以对数据库版本进行管理的方法可以是(ab)

     AgetWriteableDatabase()

 BgetReadableDatabase()

 CgetDatabase()

 DgetAbleDatabase()

14. android 关于service生命周期的onCreate()onStart()说法正确的是(ad)(多选题)

     A、当第一次启动的时候先后调用onCreate()onStart()方法

     B、当第一次启动的时候只会调用onCreate()方法

     C、如果service已经启动,将先后调用onCreate()onStart()方法

 D、如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法

15. 下面是属于GLSurFaceView特性的是(abc)(多选)

 A管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图

    view上。

 B、管理一个EGL display,它能让opengl把内容渲染到上述的surface上。

 C、让渲染器在独立的线程里运作,和UI线程分离。

 D可以直接从内存或者DMA等硬件接口取得图像数据


android.opengl.GLSurfaceView概述

http://blog.csdn.net/xqhrs232/article/details/6195824

 GLSurfaceView是一个视图,继承至SurfaceView,它内嵌的surface专门负责OpenGL渲染。

        GLSurfaceView提供了下列特性:
                1> 管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上。
                2> 管理一个EGL display,它能让opengl把内容渲染到上述的surface上。
                3> 用户自定义渲染器(render)。
                4> 让渲染器在独立的线程里运作,和UI线程分离。
                5> 支持按需渲染(on-demand)和连续渲染(continuous)。
                6> 一些可选工具,如调试。


16. 下面在AndroidManifest.xml文件中注册BroadcastReceiver方式正确的(a)

   A"NewBroad">

                   android:name="android.provider.action.NewBroad"/>

                

     B"NewBroad">

元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章