Skip to content

Latest commit

 

History

History
393 lines (304 loc) · 34.8 KB

05.技术问题汇总.md

File metadata and controls

393 lines (304 loc) · 34.8 KB

目录介绍

  • 01.Java问题大整理
  • 02.Android问题大整理
  • 03.精品问题技术
  • 04.Python问题整理
  • 05.flutter问题整理

好消息

  • 博客笔记大汇总【15年10月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是markdown格式的!同时也开源了生活博客,从12年起,积累共计N篇[近100万字,陆续搬到网上],转载请注明出处,谢谢!所有博客陆续更新到GitHub上!
  • 链接地址:https://github.com/yangchong211/YCBlogs
  • 如果觉得好,可以star一下,谢谢!当然也欢迎提出建议,万事起于忽微,量变引起质变!

01.Java问题大整理

  • 1.0.0.1 请手写equal方法【String类】,讲讲具体的原理?Object类的equla方法是怎样的?
  • 1.0.0.2 请说下String与StringBuffer区别,StringBuffer底部如何实现?String类可以被继承吗,为什么?
  • 1.0.0.3 String a=""和String a=new String("")的的关系和异同?String的创建机制如何理解?
  • 1.0.0.4 为什么 Java 中的 String 是不可变的(Immutable)?字符串设计和实现考量?String不可变的好处?
  • 1.0.0.5 static关键字可以修饰什么?static使用的注意事项有哪些?static关键字的特点?使用static存在什么问题?
  • 1.0.0.6 static变量存储位置是哪里?静态变量的生命周期?静态变量何时销毁?静态引用的对象回收如何理解?
  • 1.0.0.7 访问修饰符public,private,protected,以及不写(默认)时的区别?访问修饰符底层怎么实现访问权限管理?
  • 1.0.0.8 静态变量和实例变量的区别?成员变量与局部变量的区别有那些?外部类和内部类有何区别,生命周期是怎样的?
  • 1.0.0.9 如何实现对象克隆?克隆有哪些方式?深克隆和浅克隆有何区别?深克隆和浅克隆分别说的是什么意思?
  • 1.0.1.0 int和Integer的区别?装箱、拆箱什么含义?什么时候装箱/拆箱?装箱和拆箱是如何实现的?
  • 1.0.1.1 Object有哪些公有方法?Object类toString()返回的是什么?为什么说类一定要实现Cloneable接口才可以克隆?
  • 1.0.1.2 final,finally,finalize有什么不同?finally什么情况下不会被执行?java.lang 包下为什么要设置final?
  • 1.0.1.3 为什么要用通配符?上界通配符和下界通配符注意要点?什么是无界通配符?如何理解泛型编译器类型检查?
  • 1.0.1.4 什么是泛型擦除,能否通过开发中实际案例说下?如何获取泛型的具体的类型【反射】?
  • 1.0.1.5 如何验证int类型是否线程安全?那些类型是线程安全的?举一个线程安全的例子【AtomicInteger】?
  • 1.0.1.6 Java序列话中如果有些字段不想进行序列化怎么办?Java序列化机制底层实现原理是怎样的?
  • 1.0.1.8 原始数据类型和引用类型局限性?为何要引用基本数据包装类?基本数据类型一定存储在栈中吗?
  • 1.0.1.9 new Integer(123) 与 Integer.valueOf(123)有何区别,请从底层实现分析两者区别?
  • 1.0.2.0 instanceof它的作用是什么?在使用过程中注意事项有哪些?它底层原理是如何实现的,说说你的理解?
  • 2.0.0.1 面向对象编程的四大特性及其含义?封装、继承、多态分别是什么?为何要封装?为什么是单继承而不能多继承呢?
  • 2.0.0.2 重载和重写的区别?重载和重写绑定机制有何区别?父类的静态方法能否被子类重写?重写是动态绑定,如何理解机制?
  • 2.0.0.3 什么是绑定?静态和动态绑定如何区别?动态绑定编译原理是什么?动态绑定运行原理是什么?
  • 2.0.0.4 接口和抽象类的区别是什么?接口的意义是什么?抽象类的意义是什么?如何选择抽象类和接口?
  • 2.0.0.5 为什么内部类调用的外部变量必须是final修饰的?局部变量对垃圾回收机制有什么样的影响?
  • 2.0.0.7 什么是多态?多态的实现方式有哪些?多态有哪些弊端?Java实现多态有哪些必要条件?多态的实现原理?
  • 2.0.0.9 静态变量和成员变量的区别?代码块有哪些?构造代码块和构造方法哪一个先执行?
  • 2.0.0.8 将不同对象分类的服务方法进行抽象,把业务逻辑的紧耦合关系拆开,实现代码的隔离保证了方便的扩展?
  • 2.0.1.0 抽象类具有什么特点?抽象类和普通类有何区别?抽象类可以new吗?会出现什么问题?
  • 2.0.1.1 什么是内部类,有哪些?静态内部类和非静态内部类的区别?内部类作用的作用主要是什么?内部类和外部类联系?
  • 3.0.0.1 在arrayList中System.arraycopy()和Arrays.copyOf()方法区别联系?System.arraycopy()和Arrays.copyOf()代码说明?
  • 3.0.0.3 Collection集合和Map集合的区别?Map集合的特点?说下Map集合整体结构?
  • 3.0.0.4 Java集合框架中有哪些类?都有什么特点?集合框架用到Collection接口,这个接口有何特点?
  • 3.0.0.5 ArrayList添加元素时如何扩容?如何添加元素到指定位置,该操作复制是深拷贝还是浅拷贝?
  • 3.0.0.6 如何理解ArrayList的扩容消耗?Arrays.asList方法后的List可以扩容吗?ArrayList如何序列化?
  • 3.0.0.7 如何理解list集合读写机制和读写效率?什么是CopyOnWriteArrayList,它与ArrayList有何不同?
  • 3.0.0.8 如何理解Java集合的快速失败机制 “fail-fast”?出现这个原因是什么?有何解决办法?
  • 3.0.0.9 LinkedList集合有何特点?LinkedList相比ArrayList效率如何?用什么进行论证?
  • 3.0.1.0 HashSet和TreeSet的区别?是如何保证唯一值的,底层怎么做到的?
  • 3.0.1.3 HashMap有哪些特点,简单说一下?HashMap内部的结构是怎样的?简单说一下什么是桶,作用是什么?
  • 3.0.1.4 当有键值对插入时,HashMap会发生什么 ? 对于查找一个key时,HashMap会发生什么 ?
  • 3.0.1.5 HashMap和Hashtable的区别?HashMap在put、get元素的过程?体现了什么数据结构?
  • 3.0.1.6 如何保证HashMap线程安全?底层怎么实现的?HashMap是有序的吗?如何实现有序?
  • 3.0.1.7 HashMap存储两个对象的hashcode相同会发生什么?如果两个键的hashcode相同,你如何获取值对象?
  • 3.0.1.8 HashMap为什么不直接使用hashCode()处理后的哈希值直接作为table的下标?
  • 3.0.1.9 为什么HashMap中String、Integer这样的包装类适合作为K?如果要用对象最为key,该如何操作?
  • 3.0.2.0 HashMap是如何扩容的?如何理解HashMap的大小超过了负载因子定义的容量?重新调整HashMap大小存在什么问题吗?
  • 3.0.2.1 HashMap是线程安全的吗?多线程条件下put存储数据会发生什么情况?如何理解它并发性?
  • 3.0.2.2 TreeMap集合结构有何特点?使用场景是什么?将"aababcabcdabcde"打印成a(5)b(4)c(3)d(2)e(1)?
  • 3.0.2.3 说一下HashSet集合特点?如何存储null值的?HashSet是如何去重操作?手写产生10个1-20之间的随机数要求随机数不能重复案例?
  • 4.0.0.1 说一下Java IO里面的常见类,字节流,字符流、接口、实现类、方法阻塞?
  • 4.0.0.2 什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,各有什么区别?
  • 4.0.0.3 字符流和字节流有什么区别?如何选择字节流或者字符流?什么是缓冲区,有什么作用?
  • 4.0.0.4 IO流中用到哪些模式?谈一谈IO流中用到的适配器模式和装饰者模式的作用优势?
  • 4.0.0.5 说一下对NIO的理解?NIO和IO的主要区别?NIO和IO如何影响应用程序的设计?
  • 4.0.0.9 如何实现对象克隆?克隆有哪些方式?深克隆和浅克隆有何区别?深克隆和浅克隆分别说的是什么意思?
  • 4.0.1.0 浅拷贝会创建新的对象吗?对于基本类型拷贝的是什么?怎么样实现浅拷贝,浅拷贝前后对象地址值会一样吗?
  • 4.0.1.1 对字节流进行大量的从硬盘读取,要用那个流,为什么?有什么需要注意的问题?
  • 5.0.0.1 线程池具有什么优点和缺点?为什么说开启大量的线程,会降低程序的性能,那么该如何做才能降低性能?
  • 5.0.0.3 线程中start和run方法有什么区别?wait和sleep方法的不同?sleep() 、join()、yield()有什么区别?
  • 5.0.0.4 用Java手写一个会导致死锁的程序,遇到这种问题解决方案是什么?如何预防死锁的产生?
  • 5.0.0.5 ThreadLocal(线程变量副本)这个类的作用是什么?ThreadLocal为何要设计key存储当前的threadlocal对象?
  • 5.0.0.6 什么是线程安全?线程安全有那几个级别?保障线程安全有哪些手段?ReentrantLock和synchronized的区别?
  • 5.0.0.7 Volatile和Synchronized各自用途是什么?有哪些不同点?Synchronize在编译时如何实现锁机制?
  • 5.0.0.8 wait()和sleep()的区别?各自有哪些使用场景?怎么唤醒一个阻塞的线程?Thread.sleep(0)的作用是啥?
  • 5.0.0.9 同步和非同步、阻塞和非阻塞的概念?分别有哪些使用场景?说说你是如何理解他们之间的区别?
  • 5.0.1.0 线程的有哪些状态?请绘制该状态的流程图?讲一下线程的执行生命周期流程?线程如果出现了运行时异常会怎么样?
  • 5.0.1.1 synchronized锁什么?synchronized同步代码块还有同步方法本质上锁住的是谁?为什么?
  • 5.0.1.3 CAS是什么?CAS原理是什么?CAS实现原子操作会出现什么问题?对于多个共享变量CAS可以保证原子性吗?
  • 5.0.1.4 假如有n个网络线程,需要当n个网络线程完成之后,再去做数据处理,你会怎么解决这个问题?
  • 5.0.1.5 Runnable接口和Callable接口的区别?Callable中是如何处理线程异常的情况?如何监测runnable异常?
  • 5.0.1.6 如果提交任务时,线程池队列已满,这时会发生什么?线程调度算法是什么?
  • 5.0.1.7 什么是乐观锁和悲观锁?悲观锁机制存在哪些问题?乐观锁是如何实现冲突检测和数据更新?
  • 5.0.1.8 线程类的构造方法、静态块是被哪个线程调用的?同步方法和同步块,哪个是更好的选择?同步的范围越少越好吗?
  • 5.0.1.9 synchonized(this)和synchonized(object)区别?Synchronize作用于方法和静态方法区别?
  • 5.0.2.0 volatile是什么?volatile的用途是什么?线程在工作内存进行操作后何时会写到主内存中?
  • 5.0.2.1 被volatile修饰变量在多线程下如何获最新值?理解volatile的happens-before关系?多线程下执行volatile读写后的内存状态?
  • 5.0.2.2 Volatile实现原理?一个int变量,用volatile修饰,多线程去操作++,线程安全吗?那如何才能保证i++线程安全?
  • 5.0.2.3 在Java内存模型有哪些可以保证并发过程的原子性、可见性和有序性的措施?
  • 6.0.0.1 运行时数据区域有哪些?Java虚拟机栈是做什么的?本地方法栈又是做什么的?
  • 6.0.0.2 对象的内存布局?对象的访问定位方式有哪些?使用指针访问和使用句柄访问各具有何优势?
  • 6.0.0.3 说一下对象的创建过程?变量创建过程种放在虚拟机哪里?变量[区别静态变量]什么时候回收?
  • 6.0.0.4 OutOfMemoryError异常在哪些数据区域中可能会出现?分别说一下这个数据区域出现OOM的场景和缘由?
  • 6.0.0.6 Java中堆和栈的区别?分别写出堆内存溢出与栈内存溢出的程序?以及如何解决溢出代码方案?
  • 6.0.0.7 如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?
  • 6.0.0.8 java中垃圾收集的方法有哪些?如何实现检测垃圾?引用计数法有什么不足,说下看法?
  • 6.0.1.1 如和判断一个对象是否存活?引用计数法和可达性算法哪个更加好?如何理解一个对象不一定会被回收?
  • 6.0.1.2 Class.forName() 和ClassLoader.loadClass()区别?实际开发你用那种,为什么?
  • 6.0.1.3 Java对象的访问定位方式有哪些?这些访问方式各有何利弊?如何理解通过句柄访问方式?
  • 6.0.1.4 内存回收主要是针对那块?如何判断对象是否死亡?如何判断一个常量是废弃常量?如何判断一个类是无用的类?
  • 7.0.0.1 Java内存模型里包含什么?程序计数器的作用是什么?常量池的作用是什么?
  • 7.0.0.2 什么是类加载器?类加载器工作机制是什么?类加载器种类?什么是双亲委派机制?
  • 7.0.0.3 什么时候发生类初始化?类初始化后对类的做了什么,加载变量,常量,方法都内存那个位置?
  • 7.0.0.4 通过下面一个代码案例理解类加载顺序?当遇到 类名.变量 加载时,只加载变量所在类吗?
  • 7.0.0.5 看下面这段代码,说一下准备阶段和初始化阶段常量变化的原理?变量初始化过程?
  • 7.0.0.7 说收垃圾回收机制?为什么引用计数器判定对象是否回收不可行?有哪些引用类型?
  • 7.0.0.8 谈谈Java的类加载过程?加载做了什么?验证做了什么?准备做了什么?解析做了什么?初始化做了什么?
  • 8.0.0.1 反射的原理是什么?有哪些途径获取到Class对象,Class类的含义和作用是什么?什么是class类?
  • 8.0.0.2 有哪些方式可以提高反射效率?为何反射消耗性能?究竟是怎么影响的,举例说明?
  • 8.0.0.3 java反射机制提供了什么功能?发射具有暴力访问权限,如何防止反射序列化攻击单例?
  • 8.0.0.4 通过反射获得泛型的实际类型参数?反射获取构造方法,变量,方法的方法是哪些?
  • 8.0.0.5 getGenericParameterTypes 与 getParameterTypes区别?
  • 8.0.0.6 反射有什么作用和应用?反射和注解相比,为何反射消耗性能,有什么优缺点?
  • 10.0.0.1 见过哪些运行时异常?异常处理机制知道哪些?从异常是否必须需要被处理的角度来看怎么分类?
  • 10.0.0.2 运用Java异常处理机制?异常处理的原理?Java中检查异常和非检查异常的区别?
  • 10.0.0.3 异常处理的过程中,你遵循那些好的实践? throw 和 throws这两个关键字在java中有什么不同?
  • 10.0.0.4 你知道什么是“异常链”吗?自定义实现过哪些异常,怎么写的?可以有一个空的catch块吗?
  • 10.0.0.5 Java异常类有哪些的重要方法?导致“主线程中的异常”的不同场景是什么?
  • 10.0.0.6 看下面这段子类继承父类代码有什么问题?针对抛异常是IOException还是Exception,能随便写吗,结合案例说一下?
  • 10.0.0.7 捕获异常时,为何在catch中要注意异常层级关系?需要注意哪些问题?
  • 10.0.0.8 在程序中使用自定义异常类,大体可分为哪些步骤?哪些开发场景用到,说说你的编程经验?
  • 12.0.0.1 实现单例模式有几种方法?懒汉式中双层锁的目的是什么?两次判空的目的又是什么?
  • 12.0.0.2 如何理解生产者消费者模型?写一下生产者消费者模型的代码案例?解决关键问题的思路主要是什么?
  • 12.0.0.3 看下面代码,利用面向对象设计原则如何改进,可以保证代码后期的拓展性和解耦问题?
  • 13.0.0.1 通过代码案例分析Java内存分配情况?JVM加载类过程是怎样的?如何对构造方法赋值?分析通过对象调用方法?
  • 13.0.0.2 强引用会被回收吗?软引用的特点?软引用使用场景?当软引用持有多个对象时,如何被回收,回收规则是什么?
  • 13.0.0.3 弱引用有何特点?弱引用被回收是如何做到的?弱引用实际开发案例有哪些?什么时候使用软引用或者弱引用呢?
  • 13.0.0.4 Hash的使用场景有哪些?Hash表是干什么的?hash表具体是如何提高查找的速度,说说你的理解?
  • 13.0.0.5 HashCode的作用?可直接用hashcode判断两个对象是否相等?HashMap中是如何使用HashCode提高去重的逻辑?
  • 13.0.0.6 Hashcode与equal区别?何时需用到hashcode?如何解决Hash冲突?当两个对象 hashcode 相同时如何获取值对象?

02.Android问题大整理

  • 1.0.0.1 说下Activity的生命周期,屏幕旋转时生命周期,异常条件会调用什么方法?
  • 1.0.0.2 ActivityThread工作原理?为何说ActivityThread会帮助activity创建一个looper?
  • 1.0.0.3 如何避免配置改变时Activity重建?优先级低的Activity在内存不足被回收后怎样做可以恢复到销毁前状态?
  • 1.0.0.4 app切换到后台,当前activity会走onDestory方法吗?什么情况会导致app会被杀死?
  • 1.0.0.6 说下Activity的四种启动模式?singleTop和singleTask的区别以及应用场景?
  • 1.0.0.8 知道哪些Activity启动模式的标记位?flag是干什么用的,什么时候用到?
  • 1.0.1.0 设备横竖屏切换的时候,接下来会发生什么,生命周期是怎么走的?
  • 1.0.1.1 介绍一下Service,启动Service有几种方式,生命周期是怎样的?
  • 1.0.1.2 一个Activty先start一个Service后,再bind时会回调什么方法?此时如何做才能回调Service的destory()方法?
  • 1.0.1.2 Activity如与Service通信?Service的生命周期与启动方法由什么区别?
  • 1.0.1.3 bindService是一个异步的过程吗?绑定service大概需要经历那些过程?
  • 1.0.1.4 是否能在Service进行耗时操作?如果非要可以怎么做,如何避免service线程卡顿?
  • 1.0.2.0 是否了解ActivityManagerService,它发挥什么作用,说一下AMS启动流程?
  • 1.0.2.3 广播有几种形式?他们分别有什么特点,如何使用广播?广播是怎么通信的?
  • 1.0.3.0 fragment 特点?说一下Fragment的生命周期?如何解决getActivity为null的异常问题?
  • 1.0.3.1 在fragment中为什么有时getActivity()会为null?Fragment试图为什么有的时候会重叠,怎么产生的,又如何解决?
  • 1.0.4.0 Intent是什么?Intent可以传递哪些数据?传递对象的时候为什么要实例化?
  • 1.0.4.1 mipmap系列中xxxhdpi、xxhdpi、xhdpi、hdpi、mdpi和ldpi存在怎样的关系?
  • 1.0.4.2 res目录和assets目录的区别?
  • 1.0.5.0 序列化的方式有哪些?效率对比有何优势?如何做性能上分析的?
  • 1.0.6.0 Android中日志级别有哪几种?开发中需要注意什么问题,打印日志源码分析原理是什么?
  • 2.0.0.1 什么是Binder?为什么要使用Binder?Binder中是如何进行线程管理的?总结binder讲的是什么?
  • 2.0.0.2 Android中进程和线程的关系?什么是IPC?为何需要进行IPC?多进程通信可能会出现什么问题?
  • 2.0.0.3 Binder的工作流程是怎样的?Binder主要能提供哪些功能?Binder通信机制原理是怎样的?
  • 2.0.0.4 Android中为何新增Binder来作为主要的IPC方式?Binder运行机制是怎样的?Binder机制有什么优势?
  • 2.0.0.5 Android中跨进程通讯的几种方式?实际开发中,有哪些场景使用Binder进行数据传输?
  • 2.0.0.6 Android中有哪些基于Binder的IPC方式?简单对比下?
  • 2.0.0.7 为何说Binder相比传统的Socket性能更高效?为何说Binder相比传统IPC安全性更高?
  • 2.0.0.8 Service Manager是如何成为一个守护进程的?Server和Client是如何获得Service Manager接口的?
  • 3.0.0.1 View的绘制需要经过哪些过程?有哪些常用回调方法?View的绘制流程的详细流程是怎样的?
  • 3.0.0.2 View绘制流程,当一个TextView的实例调用setText()方法后执行了什么?请说一下原理……
  • 3.0.0.3 requestLayout()、invalidate()与postInvalidate()有什么区别?
  • 3.0.0.4 DecorView的作用是什么?DecorView中如何获取ContentView以及Activity所设置的View?ViewRootIml如何和DecorView建立联系?
  • 3.0.0.5 getWidth()方法和getMeasureWidth()区别呢?为什么有时候用getWidth()或者getMeasureWidth()得到0?
  • 3.0.0.6 平时写的自定义控件有哪些?如何优化自定义view?View的绘制流程说一下?自定义View的注意点?
  • 3.0.0.7 View的wrap_content和match_parent效果一致的原因分析?getDefaultSize方法的处理逻辑?
  • 3.0.0.8 ViewGroup(抽象类)的measure流程?getChildMeasureSpec获取子元素MeasureSpec的要点?
  • 3.0.0.9 View的layout过程?View的layout()源码分析?LinearLayout的onLayout方法?View的测量宽高和最终宽高有什么区别?
  • 3.0.1.0 draw的过程步骤是什么?View特殊方法setWillNotDraw是干什么用的?
  • 3.0.1.1 View中x,y,translationX,translationY分别是什么?View平移时是否改变了left、top等原始参数?
  • 3.0.1.2 MeasureSpec是什么?MeasureSpec的组成?测量模式SpecMode的类型和具体含义?MeasureSpec和LayoutParams的对应关系?
  • 3.0.1.3 如何获取View的测量宽/高?如何在Activity启动时获得View的宽/高?Activity中获得View宽高的4种办法?
  • 3.0.1.4 Activity启动到最终加载ViewRoot(执行三大流程)的流程是什么?
  • 3.0.1.5 自定义View性能优化有哪些?针对异常销毁,自定义View如何优化?如何避免创建大量对象?
  • 3.0.1.6 获取view控件的宽高的值有哪些方法?
  • 3.0.1.7 View的post(Runnable r)方法里,r会带来一个新的线程吗?
  • 3.0.1.8 SurfaceView和View的最本质的区别?
  • 4.0.0.1 Android中有哪几种类型的动画,属性动画和补间动画有何区别?补间动画和属性动画常用的有哪些?
  • 4.0.0.2 View动画为何不能真正改变View的位置?而属性动画为何可以?属性动画是如何改变View的属性?
  • 4.0.0.3 补间动画是如何作用于view的,从源码角度分析以下?为何说补间动画没有改变View的属性?
  • 4.0.0.6 属性动画插值器和估值器的作用?插值器和估值器分别是如何更改动画的?
  • 4.0.0.7 使用动画会出现哪些问题?动画占用大量内存,如何优化?使用动画的注意事项有哪些?
  • 6.0.0.1 谈谈消息机制Hander作用?有哪些要素?流程是怎样的?
  • 6.0.0.2 为什么一个线程只有一个Looper、只有一个MessageQueue,可以有多个Handler?
  • 6.0.0.3 可以在子线程直接new一个Handler吗?会出现什么问题,那该怎么做?
  • 6.0.0.4 Looper.prepare()能否调用两次或者多次,会出现什么情况?
  • 6.0.0.5 为什么系统不建议在子线程访问UI,不对UI控件的访问加上锁机制的原因?
  • 6.0.0.6 如何获取当前线程的Looper?是怎么实现的?(理解ThreadLocal)
  • 6.0.0.7 Looper.loop是一个死循环,拿不到需要处理的Message就会阻塞,那在UI线程中为什么不会导致ANR?
  • 6.0.0.8 Handler.sendMessageDelayed()怎么实现延迟的?结合Looper.loop()循环中,Message=messageQueue.next()和MessageQueue.enqueueMessage()分析。
  • 6.0.0.9 Message可以如何创建?哪种效果更好,为什么?
  • 6.0.1.3 使用Hanlder的postDealy()后消息队列会发生什么变化?
  • 6.0.1.4 ThreadLocal有什么作用?如何避免UI线程尽量只做跟UI相关的工作?
  • 7.0.0.1 加载bitmap图片的时候需要注意什么?为何bitmap容易造成OOM?如何计算Bitmap占用内存?
  • 7.0.0.2 如何理解recycle释放内存问题?图片加载到内存其实有两部分数据,这是为何?
  • 7.0.0.3 如何在不压缩图片的情况下加载高清大图?加载图的机制是什么,为何不会内存泄漏?
  • 7.0.0.7 LRU算法的原理?核心思想是什么?如果缓存满了的话,什么方法来管理移除最近最少使用的item和添加新的item?
  • 8.0.0.1 简述Android的事件分发机制?dispatchTouchEvent方法的作用是什么?说下View和ViewGroup分发事件?
  • 8.0.0.2 onInterceptTouchEvent方法作用是什么?onTouchEvent的方法的作用是什么?
  • 8.0.0.4 滑动冲突有哪些场景?滑动冲突处理原则是什么?滑动冲突解决办法有哪些?分别是如何解决的?
  • 8.0.0.5 onTouch()、onTouchEvent()和onClick()关系是怎样的,哪一个先执行?如果设置了onClickListener, 但是onClick()没有调用,可能产生的原因?
  • 8.0.0.6 View滑动有哪些方法?这些方法分别是如何实现滑动的?分别有什么优缺点?
  • 8.0.0.7 事件的传递规则是什么?View处理事件的优先级?点击事件传递过程遵循如下顺序?事件传递规则要点?
  • 8.0.0.8 Scroller的作用?Scroller的要点有哪些?Scroller的使用步骤?Scroller工作原理?
  • 8.0.0.9 Activity事件分发的过程?Window事件分发?DecorView的事件分发?根View的事件分发?
  • 8.0.1.0 GestureDetector是干什么用的?GestureDetector作用和注意点?有哪些常用的监听方法?
  • 8.0.1.2 View的滑动方式?如何让控件滚动到某一位置?scrollTo()和scrollBy()的区别?Scroller是什么?
  • 8.0.1.4 谈一谈View的工作原理,执行流程,MeasureSpec是什么?有什么作用?
  • 8.0.1.6 SurfaceView和View的区别,说一下SurfaceView的工作原理,为何不会导致页面卡顿?
  • 10.0.0.1 Window是什么?如何通过WindowManager添加Window(代码实现)?WindowManager的主要功能是什么?
  • 10.0.0.2 Window概念解析?WindowSession的创建过程是怎样的?WindowSession的作用?Token的使用场景?
  • 10.0.0.3 Activity、View、Window三者之间的关系,Window有哪几种类型?
  • 10.0.0.5 Activity的启动过程是怎样的?Activity创建和Dialog创建过程的异同?
  • 10.0.0.6 如何处理快速连续点击了多次按钮时Toast就触发了多次而关闭不掉?
  • 10.0.0.7 DecorView何时才被WindowManager真正添加到Window中?Window的addView源码分析?
  • 10.0.0.8 Dialog的Window创建过程?为什么Dialog不能用Application的Context?
  • 10.0.0.9 什么是DecorView?如何获取到DecorView?DecorView的职责是什么?DecorView如何被加载到Window中?
  • 10.0.1.0 DecorView如何显示出来,为什么setContentView()设置的界面,为什么在onResume()之后才对用户可见呢?
  • 10.0.1.1 什么是ViewRoot?ViewRoot属于View树的一份子吗?ViewRoot的工作流程是怎么样的?
  • 10.0.1.2 吐司为何会出现内存泄漏?在Toast构造方法中创建NT对象是干什么用的?Toast是怎么show出来的?
  • 10.0.1.3 连续吐司是如何确定吐司的先后顺序?为什么Toast执行show后过了一会儿就自动销毁?
  • 10.0.1.4 如何理解普通应用的Toast显示数量是有限制的?为什么要判断是否是系统吐司?为何Activity销毁后Toast仍会显示?
  • 10.0.1.5 为什么说Toast尽量用全局上下文?说一下Toast的显示和隐藏重点逻辑,说下你的理解?
  • 10.0.1.6 Toast报错Unable to add window是什么意思?Toast运行在子线程会问题,在子线程或者service中能运行吗?
  • 10.0.1.7 为什么建议用DialogFragment替代Dialog?如何定义DialogFragment样式?使用dialogFragment有何好处?
  • 10.0.1.8 Dialog的Window创建过程是怎样的?为什么Dialog不能用Application的Context,说一下原因?
  • 10.0.1.9 Dialog和Window有什么关系?Dialog的dismiss和cancel()方法都可销毁弹窗,它们有什么区别?
  • 10.0.2.0 PopupWindow中不设置为什么必须设置宽高?PopupWindow和Dialog有什么区别?说下创建和销毁的大概流程?
  • 10.0.2.1 Snackbar与吐司有何区别在哪里?Snackbar控件show时为何从下往上移出来?为什么显示在最下面?
  • 10.0.2.2 说一下Snackbar和SnackbarManager类的设计有哪些奥妙的地方,如何处理消息的显示顺序?
  • 13.0.0.1 什么是注解?系统内置的标准注解有哪些?SuppressWarnings用过没?Android中提供了哪些与线程相关的注解?
  • 13.0.0.2 什么是apt?apt的难点和优势?什么是注解处理器?抽象处理器中四个方法有何作用?annotationProcessor和apt区别?
  • 13.0.0.3 注解是怎么分类的?自定义注解又是怎么分类的?运行期注解原理是什么?实际注解案例有哪些?
  • 13.0.0.4 在自定义注解中,Annotation里面的方法为何不能是private?Annotation里面的方法参数有哪些?
  • 13.0.0.5 @Inherited是什么意思?注解是不可以继承的,这是为什么?注解的继承这个概念该如何理解?
  • 13.0.0.6 什么是依赖注入?依赖注入案例举例说明,有哪些方式,具备什么优势?依赖查找和依赖注入有什么区别?
  • 13.0.0.7 路由框架为何需要依赖注入,不用的话行不行?路由用什么方式注入,这些注入方式各具何特点,为何选择注解注入?
  • 13.0.0.8 实际开发中使用到注解有哪些,使用注解替代枚举?如何通过注解限定传入的类型?为何说枚举损耗性能?
  • 25.0.0.0 请说一下RecyclerView?adapter的作用是什么,几个方法是做什么用的?如何理解adapter订阅者模式?
  • 25.0.0.1 ViewHolder的作用是什么?如何理解ViewHolder的复用?什么时候停止调用onCreateViewHolder?
  • 25.0.0.2 ViewHolder封装如何对findViewById优化?ViewHolder中为何使用SparseArray替代HashMap存储viewId?
  • 25.0.0.3 LayoutManager作用是什么?LayoutManager样式有哪些?setLayoutManager源码里做了什么?
  • 25.0.0.4 SnapHelper主要是做什么用的?SnapHelper是怎么实现支持RecyclerView的对齐方式?
  • 25.0.0.5 SpanSizeLookup的作用是干什么的?SpanSizeLookup如何使用?SpanSizeLookup实现原理如何理解?
  • 25.0.0.6 ItemDecoration的用途是什么?自定义ItemDecoration有哪些重写方法?分析一下addItemDecoration()源码?
  • 25.0.0.7 上拉加载更多的功能是如何做的?添加滚动监听事件需要注意什么问题?网格布局上拉加载如何优化?
  • 25.0.0.8 RecyclerView绘制原理如何理解?性能优化本质是什么?RecyclerView绘制原理过程大概是怎样的?
  • 25.0.0.9 RecyclerView的Recyler是如何实现ViewHolder的缓存?如何理解recyclerView三级缓存是如何实现的?
  • 25.0.1.0 屏幕滑动(状态是item状态可见,不可见,即将可见变化)时三级缓存是如何理解的?adapter中的几个方法是如何变化?
  • 25.0.1.1 SnapHelper有哪些重要的方法,其作用就是是什么?LinearSnapHelper中是如何实现滚动停止的?
  • 25.0.1.2 LinearSnapHelper代码中calculateDistanceToFinalSnap作用是什么?那么out[0]和out[1]分别指什么?
  • 25.0.1.3 如何实现可以设置分割线的颜色,宽度,以及到左右两边的宽度间距的自定义分割线,说一下思路?
  • 25.0.1.4 如何实现复杂type首页需求?如果不封装会出现什么问题和弊端?如何提高代码的简便性和高效性?
  • 25.0.1.5 关于item条目点击事件在onCreateViewHolder中写和在onBindViewHolder中写有何区别?如何优化?
  • 25.0.1.6 RecyclerView滑动卡顿原因有哪些?如何解决嵌套布局滑动冲突?如何解决RecyclerView实现画廊卡顿?
  • 25.0.1.7 RecyclerView常见的优化有哪些?实际开发中都是怎么做的,优化前后对比性能上有何提升?
  • 25.0.1.8 如何解决RecyclerView嵌套RecyclerView条目自动上滚的Bug?如何解决ScrollView嵌套RecyclerView滑动冲突?
  • 25.0.1.9 如何处理ViewPager嵌套水平RecyclerView横向滑动到底后不滑动ViewPager?如何解决RecyclerView使用Glide加载图片导致图片错乱问题?

03.精品问题技术

  • 00.面试问题大汇总
    • 汇总齐全的各种问题,虽然网上有很多这类型的博客,但是个人觉得,在实际面试过程中,面试官一般都比较喜欢追问……
    • 许多的问题,在回答过程中,面试官也会根据面试者的回答,再进行提问。所以如果只是单纯的去刷题,而不是很深入理解问题的原理,最终也会面试不顺利。

其他介绍

01.关于博客汇总链接

02.关于我的博客