整理的Android面试题

Java 相关

  1. 面向对象的三大特性,如何理解其中的多态?
  2. 接口与抽象类的区别?
  3. static 方法可以被覆盖吗?为什么?
  4. String,StringBuffer,StringBuilder 的区别。StringBuffer,StringBuilder底层实现是通过byte数据,外加数组的拷贝来实现的
  5. 常见序列化协议及其优缺点
  6. JVM 内存模型
  7. JVM运行机制(理解JVM是如何运行的)
  8. 栈帧的结构
  9. 对象是如何在堆中分配的
  10. 创建线程的方式,有什么区别?
  11. 阻塞、非阻塞、同步、异步区别
  12. 线程池,说说其理解,线程池的参数问题?几种不同线程池的比较,阻塞队列的使用,拒绝策略
  13. Future和ListenableFuture 异步回调相关
  14. Java 四种引用,代表的含义,有什么区别?
  15. 深拷贝与浅拷贝
  16. JVM调优相关
  17. JVM 垃圾回收
  18. JVM 内存管理机制:有哪些区域,每个区域做了什么?
  19. JVM 垃圾回收机制:垃圾回收算法,垃圾回收器,垃圾回收策略?
  20. JVM参数的设置和jvm调优
  21. 什么情况下产生年轻内存溢出,什么情况产生年老代内存溢出?
  22. Java 集合,Set、List、Map的区别和联系?为什么Set、List、Map不实现Cloneable和Serializable接口
  23. HashMap原理?ArrayList和LinkedList区别?哪些集合类是线程安全?ConcurrentHashMap的实现,1.7和1.8的实现。
  24. Collection的子接口
  25. 什么时候使用CopyOnArrayList
  26. Arrays.sort的实现
  27. 乐观锁和悲观锁的实现
  28. Java 多线程 CAS (compare and swap)和 AQS(AbstractQueuedSynchronized) 的实现原理
  29. ThreadLocal ,对它的理解?
  30. 生产者消费者代码实现
  31. 死锁的代码实现
  32. volatile 的使用,synchronized 的使用,原理?ReenTrantLock 的实现,ReenTrantLock与synchronize的区别?
  33. 注解,反射,为什么要用?反射动态擦除,反射动态调用方法
  34. 设计模式:单例,代理,适配器,装饰着,观察者,策略,外观,创建者,抽象工厂
  35. 消息队列广播模式和发布/订阅模式的区别
  36. 类加载机制的步骤,每一步做了什么?static和final修改的成员变量的加载时机
  37. 类的加载过程,Person person = new Person();为例进行说明。
  38. 双亲委派
  39. 动态绑定:父类引用指向子类对象
  40. 内部类:静态内部类与匿名内部的区别
  41. Java BIO,NIO ,AIO的区别 和联系
  42. Java IO的整体架构和使用的设计模式
  43. HTTP 请求报文结构和内容
  44. HTTP 三次握手和四次挥手
  45. LRU算法的实现
  46. 消息队列的使用场景
  47. Java的异常处理机制
  48. 内存缓存的使用场景和优缺点
  49. SQL 优化
  50. 关于 equals 和 hashcode 的理解?

Android相关

  1. Activity 的生命周期?区别?Activity的创建过程?
  2. Activity的4种启动模式?各种的区别与特点
  3. Activity的加载过程
  4. Fragment ,对它的理解
  5. Activity与Fragment的通信
  6. 五种布局的性能的对比
  7. 四大主件,对它们的理解
  8. 对Service的理解,启动方式;生命周期?如何Activity交互
  9. 自定义View,步骤,中间出现的问题
  10. View的绘制流程,详细到framework代码
  11. 刷新View的方式,区别
  12. 数据存储的几种方式
  13. 如何实现缓存,通过使用第三方库和自定义来分别说明一下缓存技术的实现?
  14. 5.0 、6.0、7.0、8.0 的新特性
  15. 动画分类,实现原理
  16. 屏幕适配
  17. 如何JS交互
  18. APP启动的流程
  19. 常用的图片加载库有哪些?怎么实现?区别?
  20. 开发中用到的第三方库,源码?
  21. Android如何实现异步通信?
  22. Handler 原理
  23. AsyncTask ,内部实现原理,缺陷,如何改进
  24. JNI的使用流程
  25. Binder原理
  26. 进程间通信
  27. View绘制机制,View的分发机制
  28. 广播,与EventBus 的区别?能相互实现吗
  29. 网络请求如何实现?Volley,内部实现原理,与OKHttp的区别?
  30. 第三方推送?推送的原理
  31. MVP ,MVC,MVVM
  32. 多渠道打包
  33. 安卓为啥要加签名机制。签名机制的原理?反编译后,文件夹所包含的内容有哪些?
  34. 模块化,组件化开发
  35. APP如何进行架构?工程模块如何划分,如何封装?
  36. 安卓布局优化方案
  37. APP 如何优化,OOM,内存泄漏,如何解决?
  38. 兼容问题
  39. 优化方案
  40. 过渡绘制,如何防止
  41. ListView优化,下拉的优化
  42. 多进程Application的会启动几次
  43. 数据库,SQLite 操作。
  44. 网络相关,5层模型,TCP,UDP ,长连接
  45. Http 缓存机制, Last-Modify 的作用
  46. Grade 中,buildToolsVersion和TargetSdkVersion 的区别?
  47. Android 如何进行资源管理
  48. setContentView 与 addView 的区别
  49. Bitmap 的加载,不能溢出
  50. 插件化相关技术,热修补技术是怎样实现的,和插件化有什么区别。
  51. GLSurfaceView,OpenGL,Shader,绘制流程。
  52. 多线程多点下载的过程
  53. 自定义view效率高于xml定义吗?说明理由。
  54. 广播的种类,注册方式,优缺点?
  55. 安卓虚拟机和java虚拟机的原理和不同点
  56. 安卓权限管理,为何在清单中注册权限,安卓APP就可以使用,反之不可以
  57. socket短线重连怎么实现,心跳机制又是怎样实现,四次握手步骤有哪些
  58. 安全加密,加密算法,MD5
  59. hybird ,响应式编程
  60. RxJava,Reactive Native,面向协议编程

算法相关

  1. 常用的排序算法
  2. 二分查找
  3. 链表相关
  4. 字符串相关
  5. 树相关
  6. 判断能否从数组中找出两个数字和为给定值,随机生成1~10000不重复并放入数组,求数组的子数组的最大和,二分查找算法的实现及其时间复杂计算
  7. 定义栈的数据结构,请在该类型中实现一个能够找到栈最小元素的min函数
  8. 数组的子序列
  9. 字符串反转
  10. 快排,回型打印二维数组
  11. 输出所有的笛卡尔积组合
  12. 最长上升子序列
  13. 给出二叉树和一个值,找出所有和为这个值的路径;{1,3}{3,6}{3,4}{6,8}区间去重,最少去掉几个集合,可以让这个集合没有交集。
  14. 算法 n/m,怎么判断得数是无限循环小数。
  15. 给出一个搜索二叉树,输出一个排序好的双向链表。
  16. 将一个字符串转换成int型数字,考虑 错误输入,溢出,正负值等一些条件
  17. m * n的矩阵,能形成几个正方形(2 * 2能形成1个正方形,2 * 3 2个,3 * 3 6个)
  18. 请在100个电话号码找出135的电话号码 注意 不能用正则,(类似怎么最好的遍历LogGat日志)
  19. 十六进制数据怎么和十进制和二进制之间转换

其它

  1. git
  2. svn
  3. gradle
  4. 代码规范
  5. 安全问题
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值