9.25问了一下HR,已挂。---------------9.19面的,又泡着了,发面经攒人品。八股盛宴,面试官的水平还是挺高的,而且有回应,体验很好。1. 个人项目现在有多少用户?2. 进程和线程区别3. 遇到死锁怎么解决?4. Java中实现多线程有哪些方式?5. 有哪几种线程池?6. 线程池比自己创建多线程有什么优势?7. 使用线程池就不会销毁线程了吗?8. 多进程通信有哪些通信方式?9. 安卓进程间的通信方式(Binder)10. Binder相比于Linux的进程通信方式有什么优势11. 线程之间的同步方式。12. synchronized的不同用法,锁的是类名.class和锁的是对象有什么区别。13. 垃圾回收算法。14. Java有垃圾回收机制,为什么还会出现内存泄漏?15. 安卓发生内存泄漏的情况(没答上来,面试官举了个例:把一个Activity的匿名内部类传递给其他Activity,匿名内部类是会引用到外部类的,之前的Activity销毁后,其引用还存在于内存中)。16. 看代码说输出(一个类,普通代码块、静态代码块、构造函数、静态成员方法、普通成员方法都有输出语句,分别调用静态成员方法和普通成员方法会输出什么)。17. 类加载流程、顺序。18. 看代码说输出:Integer a = 10;Integer b = 10;System.out.println(a==b); // 输出trueInteger c = 1000;Integer d = 1000;System.out.println(c==d); // 输出false(-127~128区间的数,Integer包装类不会生成新的对象,而是会从缓存取)19. 用到过哪些数据结构(ArrayList和HashMap)20. HashMap底层结构。21. HashMap的扩容过程(我忘记有个装填因子了,没提到,答的不好)。22. HashMap是线程安全的吗?23. 为什么ConcurrentHashMap不直接在添加元素的方法上加锁。24. ArrayList和LinkList插入元素的时间复杂度。25. LinkList插入的时间复杂度一定是O(1)吗?26. HTTP和HTTPS的主要区别。27. HTTP1.0和HTTP1.1的区别。28. TCP和UDP区别。29. IPv4和IPv6的区别。30. 做项目的过程会用到网络相关的东西吗?31. Activity启动模式。32. Activity启动流程。33. Handler原理。34. 消息队列阻塞之后又来了一个消息,它怎么知道这个消息来了呢?(不会,面试官说我可以看看nativePollOnce和nativeWake)。35. Jni中JavaVM 和 JNIEnv的关系。36. WPS热更新具体是怎么做的?(Json描述页面)37. 除了这种方式,还有其他的热更新方式你们有考虑过吗?38. 如果一个页面只改动一个TextView的一个属性,那还是会请求整个页面的Json吗?(会)39. 你觉得还有没有可优化的地方?40. Android默认的ImageView是一个方形的,如何实现一个自定义的圆角ImageView?41. 了解过音频的编解码吗?(自己的项目写了音频相关的,但是忘了)42. 音频为什么要编码?43. 平时如何学习的?44. 实习过程中遇到的最有挑战的问题?45. 算法:二维数组每行每列都按非严格递增排列,找target是否在里面。两个二分查找。