Android开发2年,外包离职后面试十几家中小厂终获offer,Android初级面试题汇总出炉

本文总结了Android初级面试中常见的问题,包括View的分发机制、RecyclerView与ListView的区别、性能优化策略、MVC/MVP/MVVM模式、Dagger2框架的使用、Handler原理等。同时,讨论了解决RecyclerView嵌套卡顿的方法,以及如何处理Activity和Fragment的传值问题。此外,还涵盖了Activity的启动模式、横竖屏切换的影响,以及推送到达率的提升策略。
摘要由CSDN通过智能技术生成

解决方法:使用开源框架LeakCanary检测针对性解决。

常见的内存泄露有:

  • 单例造成的内存泄露,例如单例中的Context生命周期大于本身Context生命周期;

  • 线程使用Hander造成的内存卸扣,当activity已经结束,线程依然在运行更新UI;

  • 非静态类使用静态变量导致无法回收释放造成泄露;

  • WebView网页过多造成内存泄露;

  • 资源未关闭造成泄露,例如数据库使用完之后关闭连接。

11.View的分发机制,滑动冲突

View的事件传递顺序有3个重要的方法,dispatchTouchEvent()是否消耗了本次事件,onInterceptTouchEvent()是否拦截了本次事件,onTouchEvent()是否处理本次事件,滑动冲突分为同方向滑动冲突,例如ScrollView和ListView,同方向滑动冲突,可以计算ListView高度而动态设置ListView的高度,ScrollView高度可变。例如ViewPager和ListView,不同方向滑动冲突,一个是横向滑动一个是竖直滑动,不同方向滑动可以判断滑动的x,y轴是横向还是竖直滑动,如果判断得到是横向滑动,就拦截ListView的事件,竖则反之。

12.RecyclerView和ListView的区别

缓存上:前者缓存的是View+ViewHolder+flag,不用每次调用findViewById,后者则只是缓存View。

刷新数据方面,前者提供了局部刷新,后者则全部刷新。

13.recyclerView嵌套卡顿解决如何解决

设置预加载的数量:

LinearLayoutManager.setInitialPrefetchItemCount(4),默认是预加载2个,

设置子项缓存,

设置自带滑动冲突解决属性rv.setHasFixedSize(true); rv.setNestedScrollingEnabled(false);

可以完美解决,不过Google不推荐RecyClerView嵌套使用,需要嵌套尽量找类似于ExpandableListView 第三方控件来解决

14,谈MVC ,MVP,MVVM

**MVC:**View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些 业务逻辑。 在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,及View。所以,在MVC模型里,Model不依赖于View,但是 View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。

**MVP:**MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示。作为一种新的模式,MVP与MVC有着一个

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值