面试总结

Java方面

1.HashMap和HashTable的区别

通过HashMap和HashTable的源码去分析

2.Java垃圾回收机制

理解JVM,内存划分———方法区、内存栈、【虚拟机栈、本地方法栈、程序计数器(线程私有)】。
理解回收算法:标记清除算法、可达性分析算法、标记整理算法、复制算法、分代算法

3.类加载机制

涉及热修复相关问题

4.线程和线程池、并发、锁等一系列问题

如何自定义一个线程池?

5.弱引用、软引用区别

6.int、Integer区别

主要考值传递和引用传递问题

7.手写设计模式

1.单例模式
2.生产者/消费者模式
3.观察者模式
4.适配器模式
5.策略模式
6.建造者模式+工厂模式
7.MVC、MVP、MVVM区别

8.数据结构

1.平衡二叉树、二叉查找数、红黑树
2.HashMap、LinkedHashMap、ConcurrentHashMap,在用法和原理上有什么差异,很多公司会考HashMap原理,通过它做一些扩展,比如中国13亿人口年龄的排序问题,年龄对应桶的个数,年龄相同和hash相同问题类似。
3.ArrayList和LinkedList的区别
4..Set原理,这个和HashMap考得有点类似,考hash算法相关,被问到过常用hash算法。HashSet内部用到了HashMap

9.算法


Android方面

1.activity、service、fragment、BroadcastReceiver相关知识点

2.自定义view

3.事件分发机制

4.消息分发机制

5.Binder机制,进程通信

6.动态权限适配、换肤实现原理

7.SharedPreference实现原理,能否跨进程?

8.性能优化问题

8.1、UI优化

8.2、内存优化

8.3、响应速度优化

8.4、其他性能优化

9.网络框架OkHttp、Retrofit的实现原理

11.线程切换框架RxJava的实现原理

12.消息通知EventBus的实现原理

13.图片加载库(Fresco、Glide、Picasso)实现原理

14.消息推送PUSH原理

15.TCP/IP、Http/Https、Socket的原理

16.热更新、热修复、插件化

17.Flutter、Kotlin、rn的学习

18.Git的相关操作