Android知识点汇总以及常见面试题

  • 1. 链表和数组的区别
  • 2. List Hash 数组的区别
  • 3. 用过哪些三方SDK
  • 4. Android四大组件
  • 5. 堆和栈的区别
  • 6. Activity和Fragment的区别
  • 7. 常用ADB命令
  • 8. String,StringBuilder,StringBuffer的区别
  • 9. 线程和线程池的区别
  • 10. Android工程目录结构
  • 11. build.gradle文件
  • 12. Activity生命周期
  • 13. 重载
  • 14. 重写
  • 15. 常见异常
  • 16. Activity和Window,View之间的关系

以下内容都是自己的知识点总结以及面试时遇到的一些问题,在这里做个总结,如果有发现错误的地方还请指正,谢谢。

1. 链表和数组的区别

  • 查询效率:数组查询效率较高(因为可通过下标查询),链表查询效率较低。所以查询较多的情况下使用数组。
  • 增删效率:数组增删效率较低(因为需要移动增加或删除位置后面所有的数据),链表增删效率较高。所以增删操作频繁的情况下使用链表。
  • 内存空间:数组的内存空间连续,固定。链表动态分配。
  • 扩展性:数组扩展性差,链表扩展性强。因为数组创建完成时,就固定了内存大小,当内存满了的时候就无法扩展,只能重新创建。而链表是添加一个数据,分配一点内容空间。
  • 随机读取率:数组随机读取率高,链表随机读取率低。因为数组的内存空间是连续的,而链表是散乱的。
  • 位置:数组元素在栈区,链表元素在堆区

2. List Hash 数组的区别

  • 存储对象:list只能存储对象,数组能存储基本数据类型和对象,hash存储键值对。
    注意:
//这种情况不会报错,看上去是添加的基本数据类型,但是添加的时候自动转换成了包装类型。
ArrayList array = new ArrayList();
array.add(100);
  • 存储顺序:List中存储的数据有序,是按照添加数据的顺序存储的。数组有序。hash没有顺序,输出的数据顺序不是存入的顺序。
  • 数据是否可重复:List中的数据可重复,数组中的数据可重复,hash中的数据不可重复,因为在HashMap中是通过键值对来存取的数据,当key重复的时候,会将原来的value替换新的value。
  • 获取元素个数:List通过size()方法,数组通过length属性,HashMap通过size()方法。

3. 用过哪些三方SDK

  • Bmob:后端云。
  • 和风天气:天气接口。
  • 聚合数据:各种数据接口。
  • Face++:人脸识别相关技术。
  • 虹软:人脸识别相关技术。

4. Android四大组件

  • Activity
  • Service
  • Broadcast Receiver
  • Content Provider

5. 堆和栈的区别

  • 用途:堆内存用于存放new创建的对象或数组,栈内存用于存放方法或局部变量。
  • 顺序:堆先进先出,后进后出。栈先进后出,后进先出。

6. Activity和Fragment的区别

  • Fragment是Android3.0+之后才出现的。
  • Activity可以有多个Fragment,而Fragment只能依附于一个Activity。
  • Fragment更加灵活更加轻量。

7. 常用ADB命令

Android开发常用ADB命令集合

8. String,StringBuilder,StringBuffer的区别

  • 运行速度:StringBuilder > StringBuffer > String。String为字符串常亮,而StringBuilder和StringBuffer为字符串变量。即String变量一旦创建后不可更改,而StringBuilder和StringBuffer可更改。
  • 线程安全:StringBuffer线程安全,StringBuilder线程不安全。
    String为final修饰的类,不可继承。
  • 使用情景:字符串不经常变化的情况使用String,在单线程有大量字符串操作的情况下使用StringBuilder,在多线程有大量字符串操作的情况下用StringBuffer。

9. 线程和线程池的区别

  • 线程Thread每次new对象的时候,性能差。而线程池重用存在的线程,减少对象的创建、消亡的开销,性能高。
  • 新建线程缺乏统一管理,可能会出现无限创建线程的情况,相互竞争,最后占用系统资源造成死机或者OOM。而线程池可有效控制最大并发数线程,提高系统资源利用率,避免过多的资源竞争造成系统堵塞。
  • 线程缺乏某些功能,比如定时执行,定期执行,中断线程等。而线程池就提供了这些功能。

10. Android工程目录结构

Android项目目录结构中各个文件夹的作用

11. build.gradle文件

Android build.gradle文件详解

12. Activity生命周期


参考google官方文档

13. 重载

  • 方法名相同
  • 返回值,参数类型,参数个数不完全相同
  • 重载方法可以改变修饰符

14. 重写

  • 参数列表与被重写方法相同
  • 返回类型可以不同,但必须是父类返回类型的子类
  • 访问权限不能比被重写方法低
  • 父类的成员方法只能被子类重写
  • final修饰的方法不能被重写
  • static修饰的方法不能被重写,但是能再次声明
  • 子类和父类在同一个包中,子类可以重写父类除了final和private修饰的所有方法
  • 子类和父类不在同一个包中,子类只能重写父类pubilc、protected和非final方法

15. 常见异常

  • 编译时异常
    SQLExecption
    IOExecption
    ClassNotFindExecption
    FileNotFindExecption
  • 运行时异常
    NullPointerExecption
    StringIndexOutOfBoundsExecption
    ArrayIndexOutOfBoundsExecption
    ArithmeticExecption
    ClassCastExecption

16. Activity和Window,View之间的关系

Activity在创建时会调用attach()方法初始化一个PhoneWindow(继承自Window),每一个Activity都包含一个且唯一的PhoneWindow。
Activity调用setContentView()实际上是调用的getWindow().setContentView(),将View设置到PhoneWindow上,而PhoneWindow内部是通过WindowManager的addView(),removeView(),updateViewLayout()这三个方法来管理View的。
WindowManager本质是接口,最终由WindowManagerImpl实现。

有问题欢迎私聊或者发送邮箱(964427082@qq.com)一起讨论

Android知识点汇总以及常见面试题相关推荐

  1. Java知识点汇总以及常见面试题

    Java知识点汇总以及常见面试题 1. "=="和equals()的区别 2. 构造方法能不能重写或者重载 3. 基本数据类型 4. 匿名内部类能被继承? 5. Integer和i ...

  2. Java 面试题大集合,2019最新最常见面试题加答案

    原文地址:https://blog.csdn.net/zl1zl2zl3/article/details/88048480 又到一年跳槽季,课下不准备,面试徒伤悲. 本文汇总了常见面试题及面试技巧,让 ...

  3. Mybatis常见面试题总结(详细)

    Mybatis常见面试题总结 SpringMVC常见面试题总结(超详细回答) 2020最新Java面试题(java,JavaWeb,数据库,框架),常见面试题及答案汇总 Spring常见面试题总结(超 ...

  4. Linux之常见面试题知识点批注(八)

    温故: 54.crontab 文件由六个域组成 ,每个域之间用空格分割,其排列如下: (B) . A MIN HOUR DAY MONTH YEAR COMMAND B MIN HOUR DAY MO ...

  5. Spring常见面试题及答案汇总1000道(春招+秋招+社招)

    Spring面试题以及答案整理[最新版]Spring高级面试题大全(2021版),发现网上很多Spring面试题都没有答案,所以花了很长时间搜集,本套Spring面试题大全,汇总了大量经典的Sprin ...

  6. Java多线程常见面试题及答案汇总1000道(春招+秋招+社招)

    Java多线程面试题以及答案整理[最新版]Java多线程高级面试题大全(2021版),发现网上很多Java多线程面试题都没有答案,所以花了很长时间搜集,本套Java多线程面试题大全,汇总了大量经典的J ...

  7. MySQL常见面试题及答案汇总1000道(春招+秋招+社招)

    MySQL面试题以及答案整理[最新版]MySQL高级面试题大全(2021版),发现网上很多MySQL面试题都没有答案,所以花了很长时间搜集,本套MySQL面试题大全,汇总了大量经典的MySQL程序员面 ...

  8. Jvm常见面试题及答案汇总1000道(春招+秋招+社招)

    Jvm面试题以及答案整理[最新版]Jvm高级面试题大全(2021版),发现网上很多Jvm面试题都没有答案,所以花了很长时间搜集,本套Jvm面试题大全,汇总了大量经典的Jvm程序员面试题以及答案,包含J ...

  9. Dubbo常见面试题及答案汇总1000道(春招+秋招+社招)

    Dubbo面试题以及答案整理[最新版]Dubbo高级面试题大全(2021版),发现网上很多Dubbo面试题都没有答案,所以花了很长时间搜集,本套Dubbo面试题大全,汇总了大量经典的Dubbo程序员面 ...

最新文章

  1. 手机应用软件测试的思路与要点
  2. STM32F407之搭建工程
  3. (转)浅谈HTML5与css3画饼图!
  4. flink 1-个人理解
  5. libgit2 0.28.1 发布,纯 C 实现的可移植 Git 核心开发包
  6. 《大学数学遐想》系列之后记
  7. UE3客户端服务器GamePlay框架
  8. 操作系统中的死锁问题
  9. Redis中使用Lua语言
  10. SDUT oj 选拔赛1 迷之好奇
  11. 一个项目中能提出哪些数据库优化_阿里资深技术专家曲山:优秀的数据库存储引擎应具备哪些能力?...
  12. day 34 进程线程排序 抢票 初级生产者消费者
  13. chrome导入与导出书签
  14. flush table mysql_MySQL flush table 导致的锁问题
  15. 组概念_【收藏】学习质谱一定要知道的6组概念
  16. JAVA鲜花订购网微服务计算机毕业设计Mybatis+系统+数据库+调试部署
  17. 阿里云盘+OneManager+Heroku+CFWorkers实现阿里云盘网络挂载
  18. 2021年中国计算机视觉产业及其重点企业分析(商汤科技VS旷视科技VS依图科技VS云从科技)[图]
  19. Vue3.0 项目启动(打造企业级音乐App)
  20. ​stp文件转gltf

热门文章

  1. java hibernate的使用_java – 使用hibernate / JPA登录
  2. 三点弯曲弹性模量怎么计算公式_腰背肌锻炼:五点支撑和三点支撑(视频)
  3. Python高阶——argparse(命令行与参数解析)
  4. js 打印出来的节点多了m_前端实用技术分享—用Vue实现打印指定区域
  5. C++ 读取CSV文件中的数据到Mat
  6. tsp的理论和实践(10)tsp系列暂停一下
  7. On The Way—Step 1 :python入门之Python的历程
  8. 1、微博RPC框架Motan
  9. React Native开发之IDE(Atom+Nuclide)安装,运行,调试
  10. Transaction And Lock--已提交读快照