美文网首页
Android面试准备

Android面试准备

作者: 执念蓝枫 | 来源:发表于2018-07-25 16:43 被阅读113次

Retrofit的实现与原理

关键字: 动态代理

HashMap原理

关键字:数组散列+单链表
HashMap由数组+链表组成的,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的,如果定位到的数组位置不含链表(当前entry的next指向null),那么对于查找,添加等操作很快,仅需一次寻址即可;如果定位到的数组包含链表,对于添加操作,其时间复杂度为O(n),首先遍历链表,存在即覆盖,否则新增;对于查找操作来讲,仍需遍历链表,然后通过key对象的equals方法逐一比对查找。所以,性能考虑,HashMap中的链表出现越少,性能才会越好。
https://www.cnblogs.com/chengxiao/p/6059914.html

HashMap怎么解决Hash冲突

关键字:“拉链法”
https://xiaolu123456.iteye.com/blog/1485349

Android两种虚拟机

Dalvik :
Android4.4及以前使用的都是Dalvik虚拟机,我们知道Apk在打包的过程中会先将java等源码通过javac编译成.class文件,但是我们的Dalvik虚拟机只会执行.dex文件,这个时候dx会将.class文件转换成Dalvik虚拟机执行的.dex文件。Dalvik虚拟机在启动的时候会先将.dex文件转换成快速运行的机器码,又因为65535这个问题,导致我们在应用冷启动的时候有一个合包的过程,最后导致的一个结果就是我们的app启动慢,这就是Dalvik虚拟机的JIT特性(Just In Time)

ART:
ART虚拟机是在Android5.0才开始使用的Android虚拟机,ART虚拟机必须要兼容Dalvik虚拟机的特性,但是ART有一个很好的特性AOT(ahead of time),这个特性就是我们在安装APK的时候就将dex直接处理成可直接供ART虚拟机使用的机器码,ART虚拟机将.dex文件转换成可直接运行的.oat文件,ART虚拟机天生支持多dex,所以也不会有一个合包的过程,所以ART虚拟机会很大的提升APP冷启动速度。

ART优点:
1.加快APP冷启动速度
2.提升GC速度
3.提供功能全面的Debug特性

ART缺点:
1.APP安装速度慢,因为在APK安装的时候要生成可运行.oat文件
2.APK占用空间大,因为在APK安装的时候要生成可运行.oat文件

GC机制

算法:根搜索算法(GC Roots根节点)
https://blog.csdn.net/anjoyandroid/article/details/78609971

Activity的onNewIntent

  • 通过Intent启到一个Activity的时候,就算已经存在一个相同的正在运行的Activity,系统也会创建一个新的Activity实例。为了不让Activity实例化多次,我们需要通过在AndroidManifest.xml配置启动方式。
  • launchMode为singleTask的时候,通过Intent跳到一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候----------系统就不会再调用onCreate方法,而是调用onNewIntent方法。

能用到的地方是A-->B-->C-->A,此时onActivityResult就有些复杂了。

类加载机制

类的生命周期:加载---验证---准备---解析---初始化---使用---卸载

ActivityThread工作流程

  • 首先通过myLooper()方法获取Looper对象,取出Looper持有的MessageQueue;
  • 然后从MessageQueue取出Message,如果Message为null,说明线程正在退出;
  • Message不为空,则调用Message的target handler对该Message进行分发;
  • 消息处理完毕,调用recycle()方法进行回收。

Binder机制

每一个Android的进程都只会运行在自己进程所拥有的虚拟地址空间。每个虚拟地址空间又分割为用户空间和内核空间两种。对于用户空间,不同进程之间是不能共享的,而内核空间是可以共享。

RecycleView与ListView之间的关系

https://blog.csdn.net/shu_lance/article/details/79566189

Thread.sleep()与Thread.wait()方法的区别

  • sleep()方法是Thread类的方法,主要的意义就是让当前线程停止执行,让出cpu给其他的线程,但是 不会释放对象锁资源以及监控的状态 ,当指定的时间到了之后又会自动恢复运行状态。
  • wait()方法是Object类里面的,主要的意义就是让线程放弃当前的对象的锁,进入等待此对象的等待锁定池,只有针对此对象调动notify方法后本线程才能够进入对象锁定池准备获取对象锁进入运行状态。

Java中线程间通讯

Synchronized修饰static方法与非static方法之间的区别

  • 当synchronized修饰一个static方法时,多线程下,获取的是类锁(即Class本身,注意:不是实例),作用范围是整个静态方法,作用的对象是这个类的所有对象。
  • 当synchronized修饰一个非static方法时,多线程下,获取的是对象锁(即类的实例对象),作用范围是整个方法,作用对象是调用该方法的对象。

安卓开发怎么实现延迟加载

ViewStub 是一个不可见的,大小为0的View,最佳用途就是实现View的延迟加载,避免资源浪费,在需要的时候才加载View
https://blog.csdn.net/jason0539/article/details/26132267

相关文章

  • Android面试准备

    Android面试准备 面试题参考 2019初中级Android开发社招面试解答 OPPO Android开发技术...

  • Android面试看完这篇文章就可以了

    Android学习 Android知识总结 Android面试 面试准备 程序员找工作 Github传送门 Jav...

  • Android面试准备

    一、简历准备 1、个人技能 (1)自定义控件、UI设计、常用动画特效 自定义控件 ①为什么要自定义控件? Andr...

  • Android面试准备

    Retrofit的实现与原理 关键字: 动态代理 HashMap原理 关键字:数组散列+单链表HashMap由数组...

  • Android 面试准备

    Android Android系统总览Android系统开篇 HandlerAndroid异步消息处理机制完全解析...

  • Android面试准备

    最近想换工作,经过一次面试,将一些面试的知识点总结一些,本人半年工作经验 一.Android图片压缩 Androi...

  • Android 面试准备

    Android的系统架构 Android Handler机制 Android 多线程-----AsyncTask详...

  • android面试准备

    Android知识体系 语言 java基础 数据类型基础数据类型基础数据类型相关运算byte/8,char/16,...

  • Android面试准备

    基本框架 1.语言相关 2. android基础知识体系 3. 适配,实战技术工具,网络 4. 常用三方库及接入三...

  • android面试题

    最近在准备android面试,整理了下相关的面试题,分为如下三个部分:android部分、Java部分、算法面试题...

网友评论

      本文标题:Android面试准备

      本文链接:https://www.haomeiwen.com/subject/jroemftx.html