美团24秋招 客户端二面

面试的是点评事业部,面试时间为9月7号,时间间隔有点久,只能复盘到一部分问题。

面试内容:

  1. 简历内有提到做内存管理相关的事情,具体有做哪些?
  2. 资源管理方向:
  3. 对现有的资源进行压缩等操作,比如把图片变成Webp形式;
  4. 更改一些缓存策略;
  5. 比如在使用viewPAge的时候考虑只预加载部分,加快性能的同时能节省内存空间
  6. 网络通信协议的缓存策略可以使用更合适的策略
  7. 运行内存管理:
  8. 解决内存泄露的场景,具体可以通过MAT,Lackcanary等工具定位后具体分析
  9. 实习过程中自己解决过的内存抖动情况
  10. 行业内常见的APP启动优化有哪些?
  11. 冷启动优化方向,延迟加载,延迟执行,主线程优化,异步执行
  12. GC优化(GC抑制,减少GC回收),锁优化等;
  13. LeakCanary的底层原理?
  14. Leakcanary 检测内存泄漏就是利用弱引用来检测被弱引用的对象是否被正常回收、释放
  15. 先使用ActivityWatcher等监听者去监听activity的生命周期,当onDestory() 时会交给ReachabilityWatcher去处理
  16. ReachabilityWatcher内部生成了 KeyedWeakReference 弱引用对象,内部持有者当前要追踪的对象,并且记录了当前的时间,key(指向绑定的对象)等信息。
  17. 初始化 KeyedWeakReference 时,构造函数中还传入了 queue ,而这样的目的是为了再进行一遍对象是否回收的check 。并使用 Handler 延迟5s后再去检测该对象是否真的被回收。
  18. 当我们弱引用中所持有的对象被回收时,即相当于我们弱引用本身也没有用了,Java会将我们当前的弱引用对象,添加到我们所传递的队列(queue)中去。
  19. 如果队列中存在,则证明对象已经被回收,否则即存在泄漏的风险(没有的话手动走一遍GC之后再次监测)。
  20. Java引用类型有哪些?
  21. 一共有四种引用类型,分别是强引用、软引用、弱引用和虚引用
  22. 强引用指向的对象是强可达的,而其他引用指向的对象都是弱可达的。当一个对象存在到 GC Root 的引用链时,该对象被认为是强可达的。
  23. 只有强可达的对象才会认为是存活的对象,才能保证在垃圾收集的过程中不会被回收;
  24. 强引用:只要存在强引用,垃圾收集器就不会回收该对象;软引用:当堆内存不足时,垃圾收集器会优先回收软引用指向的对象;弱引用:指向的对象无论在内存是否充足的时候,都会被垃圾收集器下次回收;虚引用:主要的作用是提供了一个感知对象被垃圾回收的机制;
  25. LeakCanary 为什么不是虚引用?
  26. 虚引用必须和引用队列 ReferenceQueue 联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之 关联的引用队列中。就不能通过虚引用来获取到原对象的信息。
  27. 项目相关:如何解决内存抖动和硬件适配的工作

记不得有没有手撕了,好像是没有手撕的部分

#24届软开秋招面试经验大赏##美团面经##Android面经##客户端面经#
全部评论
大佬客户端前景怎么样,有脉脉说的那么恐怖么😭
点赞 回复 分享
发布于 2023-11-25 02:03 广东

相关推荐

会飞的猿:我看你想进大厂,我给你总结一下学习路线吧,java语言方面常规八股要熟,那些java的集合,重点背hashmap八股吧,jvm类加载机制,运行时分区,垃圾回收算法,垃圾回收器CMS、G1这些,各种乐观锁悲观锁,线程安全,threadlocal这些。在进阶一些的比如jvm参数,内存溢出泄漏排查,jvm调优。我这里说的只是冰山一角,详细八股可以去网上找,这不用去买,都免费资源。mysql、redis可以去看小林coding,我看你简历上写了,你一定要熟,什么底层b+树、索引结构、innodb、mvcc、undo log、redo log、行级锁表级锁,这些东西高频出现,如果面试官问我这些我都能笑出来。消息队列rabbitmq也好kafka也好,学一种就行,什么分区啊副本啊确认机制啊怎么保证不重复消费、怎么保证消息不丢失这些基本的一定要会,进阶一点的比如LEO、高水位线、kafka和rocketmq底层零拷贝的区别等等。计算机网络和操作系统既然你是科班应该理解起来问题不大,去看小林coding这两块吧,深度够了。spring boot的八股好好看看吧,一般字节腾讯不这么问,其他的java大厂挺爱问的,什么循环依赖啥的去网上看看。数据结构的话科班应该问题不大,多去力扣集中突击刷题吧。项目的话其实说白了还是结合八股来,想一想你写的这些技术会给你挖什么坑。除此之外,还有场景题、rpc、设计模式、linux命令、ddd等。不会的就别往简历上写了,虽然技术栈很多的话好看些,但背起来确实累。总结一下,多去实习吧,多跳槽,直到跳到一个不错的中厂做跳板,这是一条可行的进大厂的路线。另外,只想找个小厂的工作的话,没必要全都照这些准备,太累了,重点放在框架的使用和一些基础八股吧。大致路线就这样,没啥太多难度,就是量大,你能达到什么高度取决于你对自己多狠,祝好。
点赞 评论 收藏
分享
评论
5
6
分享

创作者周榜

更多
牛客网
牛客企业服务