Framework几个面试题

来源:互联网 发布:linux变量或 编辑:程序博客网 时间:2024/04/30 21:23
  1. ART、Dalvik和JVM的关系及区别是什么?这是道送分题,并不是真的要说出它们的深度区别,但如果你不知道ART是什么,我觉得你不够关注行业发展,靠这个平台吃饭,不关心它,怎么都说不过去。
       ART 就是 Android Runtime ,是安卓4.4之后的系统的新的虚拟机模式,改模式提升了运行效率,启用该模式之后,系统在安装APP的时候,会进行一次预编译,把代码转成机器语言存储在本地,这样运行的时候效率就高了。
       Dalvik 是一种安卓系统在上面运行的虚拟机,因为安卓系统是以Linux 为底层构建的,为了更加高效的适配到各种不同的硬件设备上面,就创建了这个Dalvik 虚拟机,该虚拟机可以将程序的语言由java转成机器语言二进制运行,然而每次开启运用的时候都会执行一次编译,所以效率不是很高,所以我们需要ART,增加效率。
        JVM 是 java虚拟机,是实现java夸平台的主要方式,可以使得java这样的高级语言编译成机器可以识别的机器语言,这样使得java 一次编译,到处运行。
     



      2. 例举一下Android系统级服务,在App层一般都用过哪些?如何实现一个自定义的系统级服务?渐进式的问题,后边的有难度,如果没有Framework定制经验或没有研读过系统源码真的不好回答了。
        PackageMangerService APP安装有关的service 
        WindowMangerService 是APP 调用窗口有关的service
        SensorMangerService 与传感器有观点 service 
            。。。。。 还有很多

        自定义的系统服务,这个比较复杂。必须在安卓启动的时候,在ServiceManager里面进行注册,在framework/base.增加JNI ,在kernel层增加对应的C++文件,当然要在build配置好各种编译MK文件,然后全编,这样就可以在App中调用了。实际中,不会太多增加系统服务的工作。




       3.Binder机制。难,基本个大概的概念也没有多少个人说的全的。
         Binder机制 是一种进程间通信机制,提供了远程过程调用功能,就是RPC。他把系统的一系列组件连接在了一起,这些组件分别是上层的 Client 和server,中间层的 Service Manager,该组件 ;底层的 Binder驱动程序,系统的核心组件。开发者只要实现要client和server就可以了。
 
      4.Launcher的实现。并非只有manifest里的launcher配置,其实要是能回答PackageManager、ActivityManager对应用包的管理和应用进程的管理,会有加分,因为有了这些,才算是个基本能用的Launcher。

      5.系统级app和第三方应用级app分别在什么目录下?一个第三方的app能否直接放到系统级app目录下而又能正常运行?纯经验题,如果没倒腾过ROM,基本回答没戏了。
     系统级app分成两种,一种在system/priva-app 一种在system/app,如果是修改多的还可能在sytem/vendor/app 。用户级的在data/app下面。
      
     6.能不能单独编译一个系统级应用?ROM编译环境配置及编译脚本题。
       当然可以,一般cd到对应的目录下面,mm下就可以了。也可以直接./mk  XXX package/app/Sms
    
   7.JNI,共享库和静态库的区别和使用场景,JNI中C/C++和Java相互调用各自使用的机制是什么?偏app方向的题。           


 8.如何限制第三方应用安装?
     之前有客户要求过这样的需求,我们是在PMS里面修改的,如果不是系统级的APP,广播返回空。
0 0
原创粉丝点击