Android开发Android开发经验谈Android技术知识

2017-2020挑选出来最具代表性的(Java,网络相关,An

2020-06-12  本文已影响0人  jett老师

Java面试题

1.GC机制

垃圾回收需要完成两件事:找到垃圾,回收垃圾。 找到垃圾一般的话有两种方法:

新生代对象分为三个区域:Eden 区和两个 Survivor 区。新创建的对象都放在 Eden区,当 Eden 区的内存达到阈值之后会触发 Minor GC,这时会将存活的对象复制到一个 Survivor 区中,这些存活对象的生命存活计数会加一。这时 Eden 区会闲置,当再一次达到阈值触发 Minor GC 时,会将Eden区和之前一个 Survivor 区中存活的对象复制到另一个 Survivor 区中,采用的是我之前提到的复制算法,同时它们的生命存活计数也会加一。

这个过程会持续很多遍,直到对象的存活计数达到一定的阈值后会触发一个叫做晋升的现象:新生代的这个对象会被放置到老年代中。 老年代中的对象都是经过多次 GC 依然存活的生命周期很长的 Java 对象。当老年代的内存达到阈值后会触发 Major GC,采用的是标记整理算法。

2.JVM内存区域的划分,哪些区域会发生 OOM

JVM 的内存区域可以分为两类:线程私有和区域和线程共有的区域。 线程私有的区域:程序计数器、JVM 虚拟机栈、本地方法栈 线程共有的区域:堆、方法区、运行时常量池

其实除了程序计数器,其他的部分都会发生 OOM。

3.类加载过程

4.双亲委派模型

5.Java 中的集合类

6.HashMap 的原理

7.什么情况下 Java 会产生死锁,如何定位、修复,手写死锁

8.sleep 和 wait 的区别

9.join 的用法

10.volatile和synchronize的区别

11.Java中的线程池

12.线程通信

13.Java中的并发集合

14.Java中生产者与消费者模式

15.final、finally、finalize区别

16.Java 中单例模式

17.Java中引用类型的区别,具体的使用场景

18.Exception 和 Error的区别

19.volatile

网络相关面试题

1.http 状态码

2.http 与 https 的区别?https 是如何工作的?

3.TCP三次握手流程

Android面试题

1.进程间通信的方式有哪几种

AIDL 、广播、文件、socket、管道

2.广播静态注册和动态注册的区别

  1. 动态注册广播不是常驻型广播,也就是说广播跟随 Activity 的生命周期。注意在 Activity 结束前,移除广播接收器。 静态注册是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。
  2. 当广播为有序广播时:优先级高的先接收(不分静态和动态)。同优先级的广播接收器,动态优先于静态
  3. 同优先级的同类广播接收器,静态:先扫描的优先于后扫描的,动态:先注册的优先于后注册的。
  4. 当广播为默认广播时:无视优先级,动态广播接收器优先于静态广播接收器。同优先级的同类广播接收器,静态:先扫描的优先于后扫描的,动态:先注册的优先于后册的。

3.Android 性能优化工具使用(这个问题建议配合Android中的性能优化)

Android 中常用的性能优化工具包括这些:Android Studio 自带的 Android Profiler、LeakCanary、BlockCanary

Android 自带的 Android Profiler 其实就很好用,Android Profiler 可以检测三个方面的性能问题:CPU、MEMORY、NETWORK。

LeakCanary 是一个第三方的检测内存泄漏的库,我们的项目集成之后 LeakCanary 会自动检测应用运行期间的内存泄漏,并将之输出给我们。

BlockCanary 也是一个第三方检测UI卡顿的库,项目集成后Block也会自动检测应用运行期间的UI卡顿,并将之输出给我们。

4.Android中的类加载器

5.Android中的动画有哪几类,它们的特点和区别是什么

6.Handler 机制

7.Android 性能优化

8.Android 内存优化

9.Binder 机制

10.LruCache的原理

11.DiskLruCache原理

12.设计一个图片的异步加载框架

13.Android中的事件分发机制

14.View的绘制流程

15.Android 源码中常见的设计模式以及自己在开发中常用的设计模式

16.Android与 js 是如何交互的

17.热修复原理

18.Activity 启动过程

19.SparseArray 原理

20.图片加载如何避免 OOM

21.大图加载

Android三方库的源码分析

1.OkHttp

2.Retrofit

3.RxJava

4.Glide

5.EventBus

数据结构与算法

1.手写快排

2.手写归并排序

3.手写堆以及堆排序

4.说一下排序算法的区别(时间复杂度和空间复杂度)

工作中解决了什么难题,做了什么有成就感的项目(这个问题一定会问到,所以肯定要做准备)

更多

由于文章篇幅问题,有需要以上Android高频精选面试题完整版的点击【Android高级工程师进阶学习】加入我们的圈子领取资料和我们一起吧学习交流吧!

对于每个想学习的朋友,我都欢迎。希望能一起学习交流!

更多进阶资料 ✔

上一篇 下一篇

猜你喜欢

热点阅读