写点什么

无意苦争春,一任群芳妒!看完这份 2020 年度大厂 Android 面试总结

用户头像
Android架构
关注
发布于: 1 小时前

以上真题节选自《一线互联网大厂面试数据结构与算法经典 70 题》 需要的下伙伴可以在我的GitHub免费下载获取


快速入手通道:点击这里免费自取!



三、Java 面试题


========================================================================


Java 基础




1、介绍下 GC 回收机制与分代回收策略。


2、如果让你写一段栈溢出的代码你会什么写,一个栈大概有多大,为什么?每个线程都有这样大小的一个栈吗?


3、Java 中有几种引用关系,它们的区别是什么?


4、什么情况下会发生栈内存溢出?


5、JVM 中一次完整的 GC 流程是怎样的,对象如何晋升到老年代?


6、Jvm 内存 结构说一下。


7、GC 收集算法有哪些?它们的特点是什么?


8、描述 GC 机制。Class 会不会回收?用不到的 Class 怎么回收?(东方头条)


9、如何判断一个对象是否被回收,有哪些 GC算法,实际虚拟机使用最多的是什么 GC算法


10、JVM DVM ART 的区别(360)


11、请描述 new 一个对象的流程。


12、StackOverFlow 与 OOM 的区别?分别发生在什么时候,JVM 栈中存储的是什么,堆存储的是什么?


13、String, Stringbuffer, StringBuilder 的区别是什么?(东方头条)


14、Java 虚拟机和 Dalvik 虚拟机的区别?


15、Java 对象会不会分配到栈中?


16、抽象类和接口的区别。


17、String 为什么是不可变的?


18、什么是值传递和引用传递,Java 是值传递还是引用传递?


19、final 、finally、finalize 区别。


20、重载和重写的区别 (京东


21、try-catch-finally,try 里有 return,finally 还执行么?


22、String s = new String(“”);创建了几个对象?


23、Static class 与 non static class 的区别。


24、java 里 equals 和== 区别。


25、Excption 与 Error 区别。


26、描述 JVM 类加载过程。


27、.PathClassLoader 与 DexClassLoader 的区别是什么?


28、动态代理的方法怎么初始化的?


29、什么是双亲委托机制,为什么需要双亲委托机制?


30、动态代理是什么?如何实现?



并发编程




1、HandlerThread 是什么?


2、AQS 原理 (小米 京东


3、volatile 关键字干了什么?(什么叫指令重排)


4、Synchronized 的原理以及与 ReentrantLock 的区别。(360)


5、Synchronized 在 JDK1.8 之后做了哪些优化


6、什么是守护线程?你是如何退出一个线程的?


7、实现非阻塞式生产者消费者


8、AsyncTask 中的任务是串行的还是并行的?


9、AyncTask 的原理是什么。


10、有三个线程 T1,T2,T3,怎么确保它们按顺序执行?


11、如何开启一个线程,开启大量线程会有什么问题,如何优化?


12、volatile 和 synchronize 有什么区别?


13、sleep 、wait、yield 的区别,wait 的线程如何唤醒它?


14、ReentrantLock 的实现原理。


15、假如只有一个 cpu,单核,多线程还有用吗 ?


16、Synchronized static 与非 static 锁的区别和范围


17、Android 中操作多线程的方式有哪些?


18、怎样获取当前线程是否是主线程


19、HandlerThread 是什么?


20、线程间如何通信?


21、RxJava 线程切换原理,RxJava1 和 RxJava2 的区别有哪些?



四、Android 相关


==========================================================================


Android 基础




1、Acitvity 的生命周期是什么样的?


2、Activity 的 4 大启动模式,与开发中需要注意的问题,如 onNewIntent() 的调用;


3、Intent 显示跳转与隐式跳转,如何使用?


4、Activity A 跳转 B,B 跳转 C,A 不能直接跳转到 C,A 如何传递消息给 C?


5、Activity 如何保存状态的?


6、Fragment add 与 replace 的区别,分别对 Fragment 的生命周期影响


7、 Fragment 的构造函数为啥不让传参?(B 站)


8、Fragment 的生命周期?


9、Application、Activity、Service 中 context 的区别?能否启动一个 activity、dialog?


10、什么是有序广播?


11、请描诉 Activity 的启动流程,从点击图标开始。(B 站)


12、 Service 的生命周期是什么样的?


13、你会在什么情况下使用 Service?


14、startServer 和 bindServier 的区别?


15、Service 和 Thread 的区别?


16、可以再 onReceive 中开启线程么,会有什么问题?


17、 广播的分类与工作原理


18、 BroadcastReciver 的静态注册与动态注册的区别?


19、 ContentProvider 如何自定义与使用场景是什么?


20、IntentService 与 Service 的区别?


view 相关




1、如何优化自定义 View


2、Android 属性动画实现原理,补间动画实现原理


3、View 绘制流程与自定义 View 注意点。


4、在 onResume 中可以测量宽高么


5、事件分发机制是什么过程?(东方头条)


6、View 分发反向制约的方法?


7、自定义 Behavior,NestScroll,NestChild。(东方头条)


8、View.inflater 过程与异步 inflater(东方头条)


9、.inflater 为什么比自定义 View 慢?(东方头条)


10、onTouchListener onTouchEvent onClick 的执行顺序。


11、Requestlayout,onlayout,onDraw,DrawChild 区别与联系


12、一个 ListView 或者一个 RecyclerView 在显示新闻数据的时候,出现图片错位,可能的原因有哪些 & 如何解决?


13、ScrollView 下嵌套一个 RecycleView 通常会出现什么问题?


14、如何对 ListView & RecycleView 进行局部刷新的?


15、如何给 ListView & RecyclerView 加上拉刷新 & 下拉加载更多机制


16、怎么拦截事件 onTouchEvent 如果返回 false onClick 还会执行么?


17、事件的分发机制,责任链模式的优缺点


18、动画的分类以及区别


19、属性动画与普通的动画有什么区别?


20、插值器 估值器的区别


21、RecyclerView 与 ListView 的对比,缓存策略,优缺点。


22、RecyclerView 的回收复用机制


23、RecyclerView 是什么?如何使用?如何返回不一样的 Item


24、WindowMangerService 中 token 到底是什么?有什么区别


25、为什么 Dialog 不能用 Application 的 Context?


26、如何通过 WindowManager 添加 Window(代码实现)?


27、DecorView, ViewRootImpl,View 之间的关系,ViewGroup.add()会多添加一个 ViewrootImpl 吗


28、自定义 View 执行 invalidate()方法,为什么有时候不会回调 onDraw()


29、Android 中的动画有哪些? 动画占用大量内存,如何优化


30、.ViewHolder 为什么要被声明成静态内部类


31、.ListView 卡顿的原因以及优化策略


32、.如何实现 Activity 窗口快速变暗


33、Activity,Window,View 三者的联系和区别


34、View 的绘制流程是从 Activity 的哪个生命周期方法开始执行的


35、invalidate() 和 postInvalicate() 区别


36、View 的滑动方式


37、RecyclerView 与 ListView 的对比,缓存策略,优缺点



Android Framework




1、LiveData 的生命周期如何监听的?(B 站)


2、打开多个页面,如何实现一键退出?


3、如果需要在 Activity 间传递大量的数据怎么办?


4、Android 中多进程通信的方式有哪些?


5、描述下 Binder 机制原理?(东方头条)


6、Binder 线程池的工作过程是什么样?


7、Handler 怎么进行线程通信,原理是什么?(东方头条)


8、Handler 如果没有消息处理是阻塞的还是非阻塞的?


9、handler.post(Runnable) runnable 是如何执行的?


10、handler 的 Callback 和 handlemessage 都存在,但 callback 返回 true handleMessage 还会执行么?


11、Handler 的 sendMessage 和 postDelay 的区别?


12、IdleHandler 是什么?怎么使用,能解决什么问题?


13、为什么 Looper.loop 不阻塞主线程?Looper 无限循环为啥没有 ANR(B 站)


14、Looper 如何在子线程中创建?


15、Looper、handler、线程间的关系。例如一个线程可以有几个 Looper 可以对应几个 Handler?


16、如何更新 UI,为什么子线程不能更新 UI?


17、ThreadLocal 的原理,以及在 Looper 是如何应用的?


18、Android 有哪些存储数据的方式?


19、SharedPreference 原理,commit 与 apply 的区别是什么?使用时需要有哪些注意?


20、如何判断一个 APP 在前台还是后台?


21、一张图片 100x100 在内存中的大小?



Android 第三方库源码




1、网络底层框架:OkHttp 实现原理


2、OKhttp 针对网络层有哪些优化?


3、网络请求缓存处理,okhttp 如何处理网络缓存的?


4、从网络加载一个 10M 的图片,说下注意事项?


5、网络封装框架:Retrofit 实现原理


6、响应式编程框架:RxJava 实现原理


7、图片加载框架:Glide 实现原理


8、Glide 如何确定图片加载完毕?


9、Glide 内存缓存如何控制大小?


10、加载 bitmap 过程(怎样保证不产生内存溢出)


11、Android 中软引用与弱引用的应用场景。


12、LruCache 原理


13、Fresco 与 Glide 的对比:


14、Bitmap 如何处理大图,如一张 30M 的大图,如何预防 OOM?


15、事件总线框架 EventBus 实现原理


16、内存泄漏检测框架:LeakCanary 实现原理


17、leakCannary 中如何判断一个对象是否被回收?


18、依赖注入框架:ButterKnife 实现原理


19、依赖全局管理框架:Dagger2 实现原理


20、数据库框架:GreenDao 实现原理


……


Android APP 性能优化




用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
无意苦争春,一任群芳妒!看完这份2020年度大厂Android面试总结