Android-Daily-Interview
Android-Daily-Interview copied to clipboard
Question To Ask | 后续面试题集中征集处
回答统一格式,如:
- 问题内容:接口与抽象类的区别?
- 所属范围:Java 相关
- 问题出处(可选):xxx公司面试题
- 出现频率(可选):★★★★☆ (此处表示4.5星,满分为:★★★★★)
- 困难指数(可选):★★★☆ (此处表示3.5星,满分为:★★★★★)
- 参考答案(可选):xxxxx
-
问题内容:为什么 Android 设计成只能在主线程更新 UI?
-
所属范围:Android 相关
-
问题内容: 一张 1M 大小的图,加载到 Android 中占多大内存,怎么计算的?
-
所属范围:Android 相关
-
问题内容:屏幕旋转时 Activity 的生命周期如何变化的?
-
所属范围:Android 相关
-
问题内容: Activity 的启动流出和 APP 的启动流程?
-
所属范围:Android 相关
问题内容:从机器和开发者来看,对象分别是什么? 所属范围:Java或系统底层 问题出处:自创 问题难度:二星 出现频率:一星
问题内容:为什么在安卓7.0以后,谷歌不建议使用file:// URI传递文件了? 所属范围:Android 相关
问题内容:Activity等中的onLowMemory()和onTrimMemory(int level)有什么异同? 所属范围:Android 相关
问题内容:强引用、软引用、弱引用、虚引用的区别 ? 所属范围:Java 参考答案:
- 强引用:最常见的普通对象引用,只要有强引用的存在,不管该对象是否闲置,垃圾收集器都不会去管理该对象。那什么时候会被回收呢?如果没有其他引用关系,只要超过了引用作用范围或者显示得将引用赋值为null,就可以被回收了。
- 软引用:通过 SoftReference 类实现,它的生命周期要比强引用短一些,当内存不足才会被垃圾收集器回收。
- 弱引用:通过 WeakReference 类实现,它的生命周期比软引用短一些,当垃圾收集器线程扫描到它的时候,不管内存是否不足都会被回收,不过垃圾收集器线程优先级很低,所以不一定会很快回收该对象。
- 虚引用:又叫“幻象引用”,通过 PhantomReference 类实现,你不能通过它访问对象。幻象引用仅仅是提供了一种确保对象被 finalize 以后,做某些事情的机制。这个在日常开发中很少用到。
问题内容:A类的static 代码块, 什么情况下, 会被触发执行, 你能列举出多少情况? 所属范围:Java 相关 问题出处(可选):不记得啊, sorry 出现频率(可选):★ 困难指数(可选):★★ 参考答案(可选):调用A类的静态属性; 初始化A类的实例(包括反射); 使用 ClassLoader加载A类; 目前知道这几种;
问题内容:LinearLayout, FrameLayout, RelativeLayout 哪个效率高, 为什么;
所属范围:Android相关
问题出处(可选):不记得啊, sorry
出现频率(可选):★
困难指数(可选):★★
参考答案(可选):
问题内容:LinearLayout 包裹 A, B 两个 Button, 在 AButton 上按下, 一直移动, 手指扫过 BButton, 整个事件传递的过程, MoveEvent 的数值;
所属范围:Android相关
问题出处(可选):不记得啊, sorry
出现频率(可选):★
困难指数(可选):★★
参考答案(可选):
问题内容:HTTP 1.0与1.1 的区别? 所属范围:HTTP相关 问题出处(可选):不记得啊, sorry 出现频率(可选):★★★ 困难指数(可选):★★ 参考答案(可选):
问题内容:launcher 启动 App 的 MainActivity, 牵涉到哪几个进程, 期间用什么方式进行的通信? 所属范围:Android相关 问题出处(可选):不记得啊, sorry 出现频率(可选):★★ 困难指数(可选):★★★ 参考答案(可选):
问题内容:活动 A
调用 startActivityForResult
前往活动 B
, 在 B
页面 setResult
,并启动活动 A
, 并且活动 A
的启动模式是 SINGLE_TASK
,请问活动 A
会回调哪些方法?这些方法的执行顺序是怎样的?
(onRestart-onResume-onNewIntent-onActivityResult)
所属范围:Android相关
问题出处(可选):不记得啊, sorry
出现频率(可选):★
困难指数(可选):★★
参考答案(可选):
问题内容:假设有一个AService, 我们先Start2次, 再Bind2次;
1.. 请问内存中有几个AService对象实例, 怎么做到的?
2.. 如果想让这个AService停下来, 需要怎么做?
所属范围:Android相关
问题出处(可选):不记得啊, sorry
出现频率(可选):★★
困难指数(可选):★★
参考答案(可选):
问题内容:Glide 是不是后进来的任务, 优先执行?
如果让你实现这个需求, 你打算怎么做?
所属范围:Android相关
问题出处(可选):不记得啊, sorry
出现频率(可选):★
困难指数(可选):★★
参考答案(可选):
问题内容:RxJava 用过吧? 假设现在让你设计一个通用的框架, 假设就做HTTP请求, 那么你可以设计实现,
ABC多个任务串行执行吗? ABC多个任务并发执行吗? 多个任务串行+并发呢?
你打算怎么解决这个问题, 可以先简单讲一下, 可以不参照RxJava原理, 只要能实现需求即可;
所属范围:Java相关
问题出处(可选):不记得啊, sorry
出现频率(可选):★
困难指数(可选):★★★
参考答案(可选):
问题内容:动态代理的原理, 简单讲一下;
动态代理, 能否代理普通类, 譬如 UserBean, 答案是 No; 为什么不能呢? 能大概讲一下吗?
所属范围:Java相关
问题出处(可选):不记得啊, sorry
出现频率(可选):★
困难指数(可选):★★★
参考答案(可选):
问题内容:通过ByteBuffer.allocate和ByteBuffer.allocateDirect分配的ByteBuffer有什么不同? 所属范围:Java相关 出现频率:★☆ 困难指数:★★
问题内容:线程池技术有什么优点? 所属范围:Java基础 出现频率:★★☆ 困难指数:★
问题内容:finalize()方法是什么?为什么不建议对象重写此方法? 所属范围:Java基础 出现频率:★★★ 困难指数:★
问题内容:什么是volatile关键字? 所属范围:多线程 出现频率:★★ 困难指数:★★ 参考答案:https://zhuanlan.zhihu.com/p/56191979
回答统一格式,如:
问题内容:小明从一楼到三楼用了6分钟 (每层用的时间都是一样的)那么他从一楼到六楼用了多长时间
所属范围:Java相关 问题出处(可选):XXX公司面试题
Android相关问题 ListView和RecyclerView的性能比较以及运用场景的选择
问题内容:下拉状态栏会不会影响Activity的生命周期?为什么? 所属范围:Android
问题内容:局部变量能否用final修饰符,有什么好处? 所属范围:Java
问题内容:HandlerThread和Thread 、Handler三者之间的关系,在什么情况下使用? 所属范围:Android
问题内容:什么是 Java 注解? 所属范围:Java基础 备注:注解,不是注释!!
问题内容:什么是Java中的泛型?使用泛型相比强转的好处的什么? 所属范围:Java基础
问题内容:HashMap,ArrayMap,IdentityHashMap,Hashtable,ConcurrentHashMap,EnumMap,SparseArray/LongSparseArray的区别? 所属范围:集合框架
问题内容:Android给我们提供了一个叫 LruCache 的缓存类,那么,什么是 LRU 算法? 所属范围:算法
问题内容:更改线程优先级可以使用Thread类的setPriority(int)方法,也可以用android.os.Process的setThreadPriority(int),那么两者之间是什么关系? 所属范围:Android 出现频率:★ 困难指数:★★ 参考答案: 为了这个问题我特意去看过源码。 Thread的setPriority方法是把参数保存到了成员变量priority里,如果此线程在工作,调用nativeSetPriority方法,这个方法会把Thread类定义的那些线程优先级转换为linux的优先级,然后如果设置为background级别,或从background修改到非background,调用set_sched_policy设置调度策略,最后调用linux的setpriority来设置。 Process的setThreadPriority直接就是个native方法,一路追踪下来最后还是调用的set_sched_policy和setpriority,不同的是没有转换(传进来的参数直接就是linux的优先级) 还剩下一个问题,设置了优先级,获取的时候结果是什么? Thread的getPriority方法直接返回了成员变量priority,所以通过Process.setThreadPriority设置不会反映到这里 Process的getThreadPriority方法返回的是getpriority的结果,所以通过Thread.setPriority设置之后也会反映到这里