2020 年 Android 高级面试题总结(附答案解析),面试突击版
答:例如有一个 Dog 类:
?1.即使没有 static,构造器其实也是静态方法,所以当首次创建 Dog 时或者 Dog 的静态域或者静态方法被访问的时候,Dog 的 class 对象会被加载。
?2.在加载 Dog 的 class 的时候可能会发现其有基类,此时先暂停 Dog 的加载,转而去加载其基类。所以基类的 static 域比子类先初始化。
?3.载入 class 文件之后,会创建一个该该类的 class 对象,所有关于静态初始化的动作会被执行,所以静态初始化只在 Class 对象首次加载时进行一次。
?4.当使用 new 的时候,首先为 Dog 对象在堆上分配足够内存空间。这块内存控件会被清零,所有实例都被初始化成了默认值,包括基类。
?5.执行所有字段定义处的初始化,从基类开始。
?6.执行构造器。(在第一行会执行基类的构造器)
4.对象的销毁是按照创建的逆序来进行的。
5.final 的方法和类都不允许覆盖和继承。private 默认实现了 final。
6.简述内部类的特点
7.形式参数可被视为 local variable,也就是说形式参数相当于在方法中定义了一个局部变量 a,当传入 c 时,只是将 c 指向的对象给 a
8.finally 语句块是在 try 或者 catch 中的 return 语句之前执行的
9.简述 jvm 中默认的 classLoader 与功能
10.switch 语句后的控制表达式只能是 short、char、int、long 整数类型和枚举类型,不能是 float,double 和 boolean 类型。String 类型是 java7 开始支持
11.重写的特性
12.!=和==,当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同,比较内存地址
13.null 可以被强制类型转换成任意类型的对象,于是通过它来执行静态方法
14.如何终止一个线程
15.静态属性和静态方法是否可以被继承
16.列出各种 List,Set,Map,Queue 并说出他们的同与不同。
17.列出几种线程池
18.解释一下 java 内存模型
*19.解释一下 java 代码的原子性
20.解释一下 volatile 字段
21.解释一下 synchronized 字段
22.Lock 的使用
23.wait()和 sleep()区别
24.死锁产生的条件
...
篇幅原因,参考答案均整理到下面这份 PDF 文档里,需要的朋友可以点击我的GitHub,前往免费领取!**
Java 相关
二 Android 相关
Android 部分我就不分几大块了。直接列举,但是列举到的每一项都是面试经常会问到并且会延伸问的,所以需要深入的去研究。
1.Android 事件分发机制,请详细说下整个流程
2.Android view 绘制机制和加载过程,请详细说下整个流程
3.Activty 的加载过程 请详细介绍下
4.Activity 的启动模式:
5.Activity 缓存方法:
6.Service 的生命周期,两种启动方法,有什么区别:
7.怎么保证 service 不被杀死 8.广播的两种注册方法,有什么区别。
9.Intent 可以传递哪些数据类型 10.Json 有什么优劣势
11.动画有哪几类,各有什么特点:
12.Handler、Loop 消息队列模型,各部分的作用。
13. 怎样退出终止 App:自己设置一个 Activity 的栈,然后一个个 finish()。
14. Android IPC:Binder 原理
15.android 的优化
16.一个 singleton 如何实现线程的同步问题
17.android 重要术语解释
18.理解 Window 和 WindowManager
19.Bitmap 的处理:
20.综合技术:
21.如何实现一个网络框架(参考 Volley)
22.ClassLoader 的基础知识:
23.插件化框架描述:dynamicLoadApk 为例子
评论