做了六年 Android,终于熬出头了,15K 到 31K 全靠这份高级面试题
面试体会
在博主认为,对于 Android 面试以及进阶的最佳学习方法莫过于刷题+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现面试并不难,其次就是在刷题的过程中有没有去思考,刷题只是次之,这又是一个层次了,这里暂时不提后面再谈。
一、java 相关
java 基础
1、java 中==和 equals 和 hashCode 的区别 2、int、char、long 各占多少字节数 3、int 与 integer 的区别 4、谈谈对 java 多态的理解 5、String、StringBuffer、StringBuilder 区别 6、什么是内部类?内部类的作用 7、抽象类和接口区别
java 高级
1、哪些情况下的对象会被垃圾回收机制处理掉?2、讲一下常见编码方式?3、utf-8 编码中的中文占几个字节;int 型几个字节?4、静态代理和动态代理的区别,什么场景使用?5、Java 的异常体系 6、谈谈你对解析与分派的认识。7、修改对象 A 的 equals 方法的签名,那么使用 HashMap 存放这个对象 实例的时候,会调用哪个 equals 方法?
##二、图片相关
1、图片库对比 2、LRUCache 原理 3、图片加载原理 4、自己去实现图片库,怎么做?5、Glide 源码解析 6、Glide 使用什么缓存?7、Gl
ide 内存缓存如何控制大小?8.Fresco 源码分析
三、网络和安全机制
1.网络框架对比和源码分析 2.自己去设计网络请求框架,怎么做?3.网络请求缓存处理,okhttp 如何处理网络缓存的 4.从网络加载一个 10M 的图片,说下注意事项 5.TCP 的 3 次握手和四次挥手 6.TCP 与 UDP 的区别 7.TCP 与 UDP 的应用 8.HTTP 协议
四、数据库相关
1.Sqlite 升级,增加字段的语句 2.数据库框架对比和源码分析 3.数据库优化 4.数据库数据迁移问题 5.Sqlite 常见异常
五、插件化、模块化、组 件化、热修复、增量更新、Gradle
1.对热修复和插件化的理解 2.插件化原理分析 3.模块化实现(好处,原因)4.热修复、插件化 5.项目组件化的理解 6.描述清楚点击 Android Studio 的 build 按钮后发 生了什么
六、架构设计与设计模式
1.谈谈你对 Android 设计模式的理解 2.MVC MVP MVVM 原理和区别 3.你所知道的设计模式有哪些?4.项目中常用的设计模式 5.手写生产者/消费者模式 6.写出观察者模式的代码 7.适配器模式,装饰者模式,外观模式的异同?8.谈谈对 RxJava 的理解
七、性能优化专题
1.启动 app 黑白屏优化 2.稳定——内存优化 3.流畅——卡顿优化 4.节省——耗电优化 5.安装包——APK 瘦身 6.冷启动与热启动 7.内存泄漏的场景和解决办法
Bitmap 优化 9.webview 优化
评论