zoukankan      html  css  js  c++  java
  • 安卓面试易考题(四)

    安卓面试易考题(四)

    面试题一:AIDL的全称是什么?如何工作?

        Android interface definition language (android接口定义语言) ,

    用来跨进程的访问方法, 像 游戏中调用支付宝接口就是用的这个。

    访问远程的服务的方法. 如何工作。

    面试题二:Android程序运行时权限与文件系统权限的区别?

        程序运行时权限:Android程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求,打电话,访问网络,获取坐标,写sd卡,读写联系人等..安装的时候会提示用户。

        文件系统权限:其实就是Linux的文件系统权限,比如-rw------ 私有权限 -rw-rw-rw- 全局可读可写,(777是可读可写可执行1+2+4)还有sharedpreference里面的Context.Mode_private

      Context.Mode.world_read_able   Context.Mode_world_writeable夜市文件系统的权限。

    面试题三:系统上安装了多种浏览器,能否指定某浏览器访问指定页面?

        找到对应的浏览器的意图,传递数据URI , 激活这个意图

    Intent .setAction(VIEW)

           Intent intent = new Intent();

     // com.android.browser/.BrowserActivity

           intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");

           Intent.setdata(uri);

    像腾讯那个检测是否安装自己的浏览器,方法是queryintentactivity(),获取到所有Action。然后查里面有没有自己浏览器的action,没有的话就提示用户。

    面试题四:对主线程的理解:

        耗时的不能再主线程做,会anr异常,像安卓四大组件都是在主线程里面。

    面试题五:Framework工作方式及原理,Activity是如何生成一个view的,机制是什么?

    所有的框架都是基于反射 和 配置文件(manifest)的。

    Activity创建一个view是通过 ondraw 画出来的, 画这个view之前呢,还会调用onmeasure方法来计算显示的大小.但是Surfaceview 是直接操作硬件的,因为 或者视频播放对帧数有要求,onDraw效率太低,不够使,Surfaceview直接把数据写到显存。

    面试题六:android本身的一些限制,比如apk包大小限制,读取大文件时的时间限?

        如果在broadCast里面不能超过10秒,

        在service里面不能超过20秒

        在主线程里面不能超过5秒。

    像有些系统不能安装大文件,我们一般是把素材文件放到一个素材包而不是安装包,两者区分开。

    面试题七:如何加载的音乐信息,如何改善其效率?

        Android提供mediascanner,mediaStore等接口, 音乐文件的信息都会存放到系统的数据库表中,可以通过content provider获取,

    显示出来,改善效率,是个常见问题, 可以从以下几个方面作答,

    1.分批加载数据, 延时加载数据, 合理使用缓存等...

    2.预先加载一些 都会的使用的大的class的字节码, 提前加载.

    3.时间换时间

    4.空间换时间

    面试题八:ListView如何提高其效率?

        1.异步加载数据,  分页加载数据,使用 onscallLinster();

       2.Static class ViewHolder

       3. 使用静态的view对象 避免创建过多的view.

       4. 把下载后的数据缓存到数据库里

       5. 客户端和服务器 协同 作战,比如说客户端请求图片的时候,先把自己的图片数据和服务器比对一下,如果服务器图片未更新,就拿缓存。看客户端图片的If-modify-since :属性就只掉最后修改时间,在网易新闻客户端就用到了这个。

    面试题九:启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?

        如果在点击图标进入,就会开启一个新的任务栈,如果startActivity的话默认情况不会开启一个新的任务栈。只有我们在activity制定Flag-- flag_activity_new_task才会开新的。

    面试题十:Android程序与Java程序的区别?

    1. Android程序用android sdk开发,java程序用javasdk开发.

    2. Android SDK引用了大部分的Java SDK,少数部分被Android SDK抛弃,比如说界面部分,java.awt  swing  package除了java.awt.font被引用外,其他都被抛弃,在Android平台开发中不能使用。

    3. android sdk 添加工具jar httpclient , pull  openGL

    4. 1.6的 不支持 httpUrlconning 获取 last-modified 信息的处理

    5. simpleDataFormat 在java中年时小写,在安卓里面是大写。

    面试题十一:在Android中,怎么节省内存的使用,怎么主动回收内存?

    <!--[if !supportLists]-->1.  <!--[endif]-->尽量多使用内部类 提高程序效率

    <!--[if !supportLists]-->2.  <!--[endif]-->把bean里面的字段都定义成public :Bean private public

    <!--[if !supportLists]-->3.  <!--[endif]-->回收已经使用的资源

    <!--[if !supportLists]-->4.  <!--[endif]-->合理的使用缓存

    <!--[if !supportLists]-->5.  <!--[endif]-->合理设置变量的作用范围  比如不是全局使用就不要定义为application对象

    <!--[if !supportLists]-->6.  <!--[endif]-->未来的某一段时间执行  System.gc();

    面试题十二:不同工程中的方法是否可以相互调用?

    可以,aidl就是这样子的。支付宝服务。

    面试题十三:dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念?

        Dvm的进程是dalivk虚拟机进程,每个android程序都运行在自己的进程里面,

    每个android程序系统都会给他分配一个单独的liunx  uid(user id),

    每个dvm都是linux里面的一个进程.所以说这两个进程是一个进程.

    面试题十四:如何判断是否有SD卡?

        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))

    面试题十五:嵌入式操作系统内存管理有哪几种, 各有何特性。?

        这是大学里面操作系统的知识,包括纯分页,纯分段和段页式存储。

    面试题十六:什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?

        实时操作系统分为两种,硬实时和 软实时,硬实时一般用在军工,比如火星探测器,航空啊等等,是一旦又中断产生就会立即响应中断,而软实时是基于一套算法,可以不立即响应中断,我们一般的操作系统都是软实时操作系统,Android也不例外。

    面试题十七:Linux中跨进程通信的几种方式?

        管道( pipe ),信号量( semophore ),信号 ( sinal ),共享内存( shared memory ),套接字( socket )。

    面试题十八:谈谈对Android NDK的理解

        1.实时性要求高的软件。比如游戏,图形渲染,   opencv (人脸识别)

        2.调用C或者c+++的代码库,第一是性能好,第二是人家写好了直接能用了,而java的代码库太少了。ffmpeg , rmvb  mp5 avi 高清解码. ffmpeg, opencore

        3.优点:效率高,缺点:出错之后不好调试,写起来也麻烦。软件升级的时候也不方便。

    面试题十九:Android UI中的View如何刷新。

        分主线程和子线程中两种情况:‘

        主线程用控件调用Invalide()方法。iv.invalidate();

    子线程用控件调用postInvalidate();---iv.postInvalidate();

  • 相关阅读:
    8.用户注销
    7.用户登陆,用户退出,记住用户名和密码
    6.后台验证码-session作用域
    5.验证用户名是否已经被注册:AJAXC请求
    4.前端注册表单验证 && 表单回填
    3.注册后台处理逻辑编写
    HTTP Status 500
    jquery之stop()的用法
    angular.forEach
    jquery如何获取第一个或最后一个子元素?
  • 原文地址:https://www.cnblogs.com/tianzhi9885/p/4169276.html
Copyright © 2011-2022 走看看