android面试考点-不完全大纲(持续更新)

一、Android部分

1.Android基础

  1. 四大组件,具体的使用和碰到的问题。四大组件的考察会结合 ANR(四大组件是否都会产生 ANR、时间是多少等)、进程优先级、启动模式
  2. listView的卡顿优化、listView如何优化,listView和RecyclerView的区别,二者的缓存逻辑
  3. 序列化前后对象有何区别
  4. Handler的工作原理

2.Android进阶

  1. ==技术原理== 屏幕绘制原理、View的绘制流程(在白板上写出对于View的绘制和优化流程)(View的位置参数有哪些,left,x,translationX的含义以及三者的关系)(View的绘制流程,onMeasure,onLayout的计算流程,MeasureSpec的几种模式)(View的绘制原理)
  2. 几种动画的原理
  3. 布局加载原理
  4. 客户端中比较少碰到的复杂环境下的线程安全问题
  5. 资讯流懒加载如何实现
  6. Binder通信原理、进程间通信方式,Binder原理
  7. 提高app安全性的方法
  8. App的启动流程
  9. 如何处理App启动流程优化(App的启动优化流程)
  10. View的性能优化,页面卡顿的原因(View的性能优化,listView的卡顿优化)
  11. BitmapFactory.Options.inSampleSize 为什么是 2 的幂
  12. 处理滑动的几种方式,Scroller滑动的原理
  13. 自定义View的流程,自定义View需要注意的问题,例如自定义View是否需要重写onLayout,onMeasure
  14. invalidate、postInvalidate、requestLayout的区别
  15. Touch事件的分发流程
  16. 插件化Activity生命周期的管理
  17. 资源的访问原理
  18. 如何优化WebView,WebView的泄露
  19. native和js交互流程

3.开源框架相关(开源框架,例如rxjava、Glide、LeakCanary,OkHttp)

  1. rxjava的线程切换原理
  2. Glide的优势,它是如何绑定生命周期的
  3. 为什么用Glide,它的优势
  4. 是否使用过Flutter开源框架

4.新技术等

  1. 插件化开发流程,插件化优势,插件化开发中遇到的问题以及如何解决的
  2. 插件化框架的比较,梳理插件化的架构
  3. 组件化开发流程
  4. 插件化优势,插件化加载Activity原理,加载资源原理
  5. 插件化首次启动耗时长,如何优化

二、Java部分

1.Java基础

  1. Java四大引用/弱引用/ReferenceQueue/ leakcanary 的使用
  2. 堆和栈的区别
  3. 栈帧里记录了哪些信息
  4. 多线程技术
  5. 垃圾回收原理以及回收策略
  6. synchronized
  7. Lock
  8. equals
  9. hashCode
  10. 垃圾回收算法
  11. java中的强、软、弱、虚引用

2.Java进阶

  1. 类的加载机制,为什么用双亲委派模型,java是否支持多态
  2. HashMap的原理,ConCurrentHashMap的原理

三、算法(定期练习算法题 剑指offer、leetCode)

1,算法

  1. 第 TopK 大的数(快排思想、能提到线性查找算法 BFPAT 更佳)

  2. 前 TopN 个数(堆排序、先分治再堆排序)

  3. 数据结构-线段树

  4. 动态规划、

  5. 贪心、

  6. 分治等算法的基本思想

  7. 排序,要求时间复杂度是O(n),例如1,4,5,2,7,6,9。如果数列是10,102,99,10000,825,1003030如何排序

  8. 算法:连续子数组的最大和

  9. 算法:给定一段已排好序的数列,数列中元素有可能是重复的,找出数列中目标值的最小索引,要求不能用递归,只能用循环。

  10. 算法:Given two words word1 and word2, find the minimum number of operations required to convert word1 to word2.
    You have the following 3 operations permitted on a word:
    1、Insert a character
    2、Delete a character
    3、Replace a character
    Input: word1 = “horse”, word2 = “ros”
    Output: 3
    Explanation:
    horse -> rorse (replace ‘h’ with ‘r’)
    rorse -> rose (remove ‘r’)
    rose -> ros (remove ‘e’)

  11. 算法:int[] insert(int[] arr,int len,int cap,int pos,int value),给定一个数组,例如{1,2,3,空,空},该数组的len=3,容积cap=5,插入位置pos是1,插入的值是5,结果是{1,5,2,3,空},返回插入后的数组(考虑扩容);

2,其他

  1. 称重问题:10个箱子,每个箱子里都有若干砖头,其中有一个箱子里每个砖头重9克,其他的箱子里的砖头每个重10克,给你一个秤,要求只能用一次称重找出砖头重9克的箱子。
  2. 追击问题:2辆火车相向同时出发,一个从A点出发,速度是30km/h,一个从B点出发,速度是20km/h,A、B之间的距离是S,同时一只鸟也从A点出发,速度是50km/h,鸟在两辆火车间折返飞行,问三者相遇时,鸟飞的总路程。
  3. 切饼问题:1刀切2块,2刀切4块,10刀最多切几块。

四、计算机知识

1.计算机网络(比较多)

  1. TCP 和 UDP 的区别
  2. TCP 的拥塞控制
  3. TCP 的握手与挥手流程
  4. HTTP 与 HTTPS
  5. 比如在问大图加载时顺口问一下“同一个文件,放到 drawable 目录下和放到 SD 卡中,加载到内存时内存占用一样么” (这里涉及到了 Bitmap decode 时的过程以及 Bitmap 内存占用的计算)
  6. 比如 HashMap put 方法调用时内部的流程是怎样(方法内部的流程、HashMap 的扩容等)
  7. 比如 Http 1.1 和 2.0 的特点和区别
  8. TCP、IP各自所在的网络层次,IP报文中的内容
  9. https的对称加密和非对称加密
  10. TCP、UDP区别,拥塞控制原理,视频传输为什么用UDP,UDP丢包会产生什么问题,如何处理数据包的发送速度和带宽的关系

2.计算机原理

  1. 指针占几个字节
  2. ARouter路由协议的原理分析

五、项目架构设计、模块设计、项目优化

  1. 注意介绍项目架构
  2. 画出架构图
  3. 架构重构
  4. 内存、卡顿优化、电量优化等细节优化
  5. 模块设计题目(相关的场景让你做一个模块设计)
  6. MVC、MVP的区别
  7. MVC到MVP的架构重构流程
  8. 实现一个库,完成日志的实时上报和延迟上报两种功能,该从哪些方面考虑

六、设计模式

  1. 了解哪些设计模式,手写单例设计模式

七、其他工具

1. Gradle

2. Git

  1. git cherry-pick
  2. git hook

3.其他

  1. LeakCanary原理,内存泄露的分析流程

八、面试相关

  1. 牛客网上视频面试(网站上配置有白板可以写代码)
  2. 简书大佬JasmineBen提供的Android面试题资料
  3. 自我介绍,聊聊简历上写的项目
  4. 自己的优势和劣势
  5. 对开发流程的理解
  6. 梳理你遇到的最严重的问题,以及如何解决的
  7. 如何处理几百人的团队分工
  8. 你对淘宝App的使用体验,从哪些方面优化淘宝App

九、书

《大话设计模式》、《Android 源码设计模式》。《剑指 offer》《Android 进阶之光》《高性能 Android 应用开发》

JVM (来自《深入理解 Java 虚拟机》)《深入理解 Java 虚拟机》

    原文作者:叨叨叨_
    原文地址: https://www.jianshu.com/p/bdc1f29a014d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞