笔者由于在近期需要找工作,所以近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想得到的机会才可能有机会入你怀中。

笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小伙伴们一些帮助。笔者准备的内容大纲如下

Android面试大纲.png

妥妥的去面试之Android基础(一)

妥妥的去面试之Android基础(二)

妥妥的去面试之Android基础(三)

妥妥的去面试之Android基础(四)

什么是OOM?

当前占用的内存加上申请的内存资源超过了Dalvk虚拟机的最大内存限制就会抛出Out Of Memory异常。

有什么方法可以避免OOM?

OOM在很多情况下都是因为图片加载问题,所以针对bitmap的优化可以在某种程度上避免OOM的发生

  • 对图片进行压缩(通过采样率)
  • 及时释放Bitmap内存
  • 选择合适的解码方式

还有没有其他的方法?

  • 适当使用软引用和弱引用
  • 采用内存缓存和磁盘缓存
  • 避免创建过多的对象,内存对象的重复利用(比如ListView中的convertview的复用)。
  • 避免在Android中使用Enum,枚举占用的内存比整型大多了。
    -避免在onDraw方法里面执行对象的创建

说说你知道的内存泄露的场景?

1.静态变量持有外部类的引用

静态变量和应用的生命周期一样,因为静态变量持有外部类的引用,当外部类被销毁时,就会导致外部类无法被GC,引起内存泄漏。所以尽量不要使用静态变量

2.单例模式引起的内存泄露

单例模式的对象的生命周期和应用程序一样长,所以它持有的引用也不能被GC,所以会引起内存泄露。

所以在单例模式中,可以把单例对象的引用指向整个应用,就可以避免内存泄露。比如正确的单例模式写法如下:

public class AppManager {private static AppManager instance;private Context context;private AppManager(Context context) {//this.context = context;  //会引起内存泄漏this.context = context.getApplicationContext();  //指向应用}public static AppManager getInstance(Context context) {if (instance != null) {instance = new AppManager(context);}return instance;}

3.AsyncTask引起的内存泄露

AsyncTask是持有外部类的引用的,当它后台任务没有完成时,它会导致外部类的引用无法被回收,引起内存泄漏。

所以可以通过让AsyncTask变成静态内部类,这样就不会持有外部类的引用了。
或者让它持有外部类的弱引用。

4.使用完的资源未关闭

比如说在Bitmap在使用完后一定要关闭资源(调用它的recycle方法)

5.注册没取消造成的内存泄漏

比如调用registerReceiver后未调用unregisterReceiver。

广播注册一般有几种,各有什么优缺点?

  • 第一种是常驻型(静态注册):当应用程序关闭后如果有信息广播来,程序也会被系统调用,自己运行。
  • 第二种不常驻(动态注册):广播会跟随程序的生命周期。

动态注册

优点: 在android的广播机制中,动态注册优先级高于静态注册优先级,因此在必要情况下,是需要动态注册广播接收者的。

缺点: 当用来注册的 Activity 关掉后,广播也就失效了。

静态注册

优点: 无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器就是打开着的。

Recyclerview和Listview的区别

  • 在ListView中,ViewHolder需要自己来定义。通过ViewHolder可以缓存item里的view控件实例,避免了在getview中重复创建带来的性能损耗,但这只是一种推荐的使用方式,不是必须使用的。而在RecyclerView中使用RecyclerView.ViewHolder则变成了必须,尽管实现起来稍显复杂,但是在性能提升上有很大的好处。
  • ListView只能在垂直方向上滚动,Android API没有提供直接让ListView在水平方向上面滚动的支持。但RecyclerView提供了多种类型的展示方式,很容易就能修改展示方式。
  • ListView对item的点击事件实现较为简单,Recyclerview的点击事件实现就相对复杂,但灵活性高。
  • ListView没有提供局部刷新,RecyclerView提供了局部刷新的方法,而且在局部刷新的时候有一个渐变的动画效果。

说说安卓为啥要加签名机制?

  • 用于发送者的身份验证。由于开发商可能通过使用相同的 Package Name 来混淆替换已经安装的程序,以此保证签名不同的包不被替换。
  • 保证信息传输的完整性。签名对于包中的每个文件进行处理,以此确保包中内容不被替换。
  • 防止交易中的抵赖发生, Market 对软件的要求。

面试系列的文章都放于 面试妥妥的 建议小伙伴们关注该专题

妥妥的去面试之Android基础(五)相关推荐

  1. 妥妥的去面试之Android基础(六)

    笔者由于在近期需要找工作,所以近期最主要的任务就是准备面试,不打无准备之仗.只有你准备充分了,那么你想得到的机会才可能有机会入你怀中. 笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给 ...

  2. 妥妥的去面试之Android基础(四)

    笔者由于在近期需要找工作,所以近期最主要的任务就是准备面试,不打无准备之仗.只有你准备充分了,那么你想得到的机会才可能有机会入你怀中. 笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给 ...

  3. 妥妥的去面试之数据结构与算法(一)

    笔者由于在找工作,所以近期最主要的任务就是准备面试,不打无准备之仗.只有你准备充分了,那么你想要的机会才有机会入你怀中. 笔者会将准备面试的学习过程记录下来,方便自己复盘的同时也希望能给一道找工作的小 ...

  4. 懂的android基础如何面试月薪过万

    一,自我介绍: 鄙人学历不高,今年7月份本科毕业,之前其实就懂android基础而已(四大组件),去年12月份入职,今年10中旬面试求职第二份工作,期间面试了13家,有9家给了offer,月薪范围:7 ...

  5. 手机里android文件里哪些文件可删除,手机文件夹哪些可以删除?这4个删除它妥妥的...

    原标题:手机文件夹哪些可以删除?这4个删除它妥妥的 我们手机在使用一段时间后都会产生一定的数据缓存,新手机可能没有感觉,但是就手机就会体现得非常明显.因为随着手机里的使用数据越来越多,你会发现手机慢慢 ...

  6. 机器学习复习6-优化器等 面试看这一篇就妥妥够了

    该文对优化器进行了全面的梳理和整理,包括原理分析,面试看这一篇就妥妥够了! 预备知识 一.正定和半正定矩阵 (了解) 半正定矩阵包括了正定矩阵. 不定矩阵:特征值有正有负 二.牛顿法和拟牛顿法(二阶优 ...

  7. 30岁了还去面试基础岗位,是不是很失败?

    30岁了还去面试基础岗位,是不是很失败? 文 | 洪生鹏 01 之前有位读者和我分享了他的一段职场经历: 张工是一名移动开发程序员,七年开发经验,三年服务端开发经验,4年移动开发经验.前段时间去面试A ...

  8. android 7.1 字体大小设置,一加3t官方更新氢的Android 7.1.1,妥妥的第一时间换上クレPro 字体...

    标签:一加3T(181)一加(43)一加手机(156)安卓(177) 一加3t官方更新氢的Android 7.1.1,系统更新速度可以啊. 之前7.0稳定版拿掉的长截图功能又回来了. 稳稳地告诉大家7 ...

  9. 【建议收藏】2020年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(Android基础篇)...

    前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~. A awesome android expert interview questions a ...

最新文章

  1. dart语法中list相关详解
  2. linux 分布式 程序管理,linux--------------git分布式系统项目管理(1)
  3. 【Linux】一步一步学Linux——dircolors命令(239)
  4. LeetCode 18. 四数之和 思考分析(双指针解)
  5. mybatis学习(25):分页3 多参数传递(使用map)
  6. 使用决策树分类算法判断一下你的Python水平
  7. linux go 连接oracle,Ubuntu14下golang连接oracle11g (OCI12.1方式)
  8. 关于算法—— 一维字符串数组之间组合问题的C#实现
  9. 动画演示Sunday字符串匹配算法——比KMP算法快七倍!极易理解!
  10. app推送怎么实现更好的效果?
  11. 6U VPX数据存储板学习资料保存:基于6U VPX 的mSATA高性能数据存储板
  12. 在WordPress中重新排序博客文章的4种简单方法(循序渐进)
  13. 泰拉瑞亚服务器云存档文件夹,泰拉瑞亚助手常见问题 存档等问题解决方法
  14. Excel VLOOKUP() 函数实现自动填充内容
  15. 教你快速查询大量圆通快递单号的物流信息
  16. 阿里云服务器出现 Resource stopwords not found. Please use the NLTK Downloader to obtain the resource:
  17. win8 android 跑分,Windows 10和win8.1性能跑分测试结果曝光
  18. 安装tensorflow出现 Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accu
  19. 大学以来到大二的自我评价
  20. 三星Z Fold2 5G评测:折叠屏手机的最强形态

热门文章

  1. c语言编译器IDE怎么,C语言编译器和IDE的选择
  2. 斯密特正交化(matlab)
  3. P4546 [THUWC2017]在美妙的数学王国中畅游
  4. HyperLynx(二十五)电源完整性之直流压降分析(二)
  5. Spring Boot 整合——Spring Boot整合kafka整合
  6. 【SLAM】ORB-SLAM3解析——帧Frame()的构建(2)
  7. 文本话题聚类(Kmeans/LDA)
  8. java存款取款程序_JAVA实现账户取款和存款操作
  9. 基于MATLAB 的道路交通标志识别
  10. 英语国际音标发音——见词能读