2020 Android常见面试题

2020-11-16  本文已影响0人  我看Android

Android:

  1. 前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法。

  2. Activity的生命周期和启动模式
    activity启动模式

  3. ANR的原因
    ANR 出现的场景以及解决方案

  4. 四大组件

  5. Service的开启方式

  6. Activity与Service通信的方式

  7. Activity之间的通信方式

  8. ListView的优化

  9. RecycleView的使用,原理,RecycleView优化

  10. RecyclerView怎么实现的item缓存,跟ListView有什么区别

  11. 进程和线程的概念,Android里怎样实现多线程?

  12. App启动崩溃异常捕捉

  13. 事件传递机制的介绍

  14. Handler的原理和使用 Handler是怎么和线程绑定的(Looper),为什么Looper.loop()要设计成死循环

  15. 手写生产者/消费者模式

  16. HashMap和HashTable区别,HashMap原理和实现,hash()的算法

  17. Android的IPC机制(Binder)

  18. 什么是内存泄漏,Android里有哪些内存泄漏的场景,原因是什么

  19. 怎么实现LRU缓存
    LRU缓存机制

  1. 怎么解决用户高频点击打开新Activity导致的多实例问题(Activity启动模式)

算法:

  1. 二叉树,给出根节点和目标节点,找出从根节点到目标节点的路径
  2. 一个无序,不重复数组,输出N个元素,使得N个元素的和相加为M,给出时间复杂度、空间复杂度。手写算法
  3. 数据结构中堆的概念,堆排序
  4. 如何用两个队列(FIFO)实现栈(FILO)
  5. 了解常见排序算法吗,手写一下快排
  6. 怎么判断两个无环单链表是否相交

JAVA:

  1. 死锁的概念,怎么避免死锁

  2. ReentrantLock的内部实现

  3. ReentrantLock 、synchronized和volatile
    关于volatile与synchronized

  4. 集合的接口和具体实现类,介绍

  5. TreeMap具体实现

  6. 逻辑地址与物理地址,为什么使用逻辑地址

  7. Java的几种内部类,区别是什么

  8. String的hashCode()和Object的hashCode()

  9. Java里泛型的实现

  10. Java里加锁的方式,synchornized关键字的原理,悲观锁和乐观锁都有哪些实现

  11. 死锁的条件和解决方法,讲讲银行家算法

JVM

  1. 内存区域

  2. 内存模型

  3. 内存分配回收策略

  4. Java 对象的创建、内存布局和访问定位

  5. GC过程,GC的算法都有哪些
    垃圾收集算法

  6. 类加载机制

  7. 类加双亲委派模型机制

  8. 编译器优化

  9. 方法内联

  10. JVM 是如何执行方法调用的?

  11. JVM 是如何实现反射的?

  12. JVM 是如何实现泛型的?

  13. JVM 是如何实现异常的?

  14. JVM 是如何实现注解的?

  15. 逃逸分析

  16. 虚拟内存和物理内存的概念和关系,内存分页的调度算法

架构与三方库:

  1. 模式MVP,MVC介绍
  2. RxJava的功能与原理实现
  3. 用到的一些开源框架,介绍一个看过源码的,内部实现过程。

网络:

  1. TCP的三次握手四次挥手,为什么要四次挥手
  2. TCP的流量控制算法(滑动窗口),拥塞控制算法
上一篇下一篇

猜你喜欢

热点阅读