Android知识点汇总以及常见面试题
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知识点汇总以及常见面试题相关推荐
- Java知识点汇总以及常见面试题
Java知识点汇总以及常见面试题 1. "=="和equals()的区别 2. 构造方法能不能重写或者重载 3. 基本数据类型 4. 匿名内部类能被继承? 5. Integer和i ...
- Java 面试题大集合,2019最新最常见面试题加答案
原文地址:https://blog.csdn.net/zl1zl2zl3/article/details/88048480 又到一年跳槽季,课下不准备,面试徒伤悲. 本文汇总了常见面试题及面试技巧,让 ...
- Mybatis常见面试题总结(详细)
Mybatis常见面试题总结 SpringMVC常见面试题总结(超详细回答) 2020最新Java面试题(java,JavaWeb,数据库,框架),常见面试题及答案汇总 Spring常见面试题总结(超 ...
- Linux之常见面试题知识点批注(八)
温故: 54.crontab 文件由六个域组成 ,每个域之间用空格分割,其排列如下: (B) . A MIN HOUR DAY MONTH YEAR COMMAND B MIN HOUR DAY MO ...
- Spring常见面试题及答案汇总1000道(春招+秋招+社招)
Spring面试题以及答案整理[最新版]Spring高级面试题大全(2021版),发现网上很多Spring面试题都没有答案,所以花了很长时间搜集,本套Spring面试题大全,汇总了大量经典的Sprin ...
- Java多线程常见面试题及答案汇总1000道(春招+秋招+社招)
Java多线程面试题以及答案整理[最新版]Java多线程高级面试题大全(2021版),发现网上很多Java多线程面试题都没有答案,所以花了很长时间搜集,本套Java多线程面试题大全,汇总了大量经典的J ...
- MySQL常见面试题及答案汇总1000道(春招+秋招+社招)
MySQL面试题以及答案整理[最新版]MySQL高级面试题大全(2021版),发现网上很多MySQL面试题都没有答案,所以花了很长时间搜集,本套MySQL面试题大全,汇总了大量经典的MySQL程序员面 ...
- Jvm常见面试题及答案汇总1000道(春招+秋招+社招)
Jvm面试题以及答案整理[最新版]Jvm高级面试题大全(2021版),发现网上很多Jvm面试题都没有答案,所以花了很长时间搜集,本套Jvm面试题大全,汇总了大量经典的Jvm程序员面试题以及答案,包含J ...
- Dubbo常见面试题及答案汇总1000道(春招+秋招+社招)
Dubbo面试题以及答案整理[最新版]Dubbo高级面试题大全(2021版),发现网上很多Dubbo面试题都没有答案,所以花了很长时间搜集,本套Dubbo面试题大全,汇总了大量经典的Dubbo程序员面 ...
最新文章
- 手机应用软件测试的思路与要点
- STM32F407之搭建工程
- (转)浅谈HTML5与css3画饼图!
- flink 1-个人理解
- libgit2 0.28.1 发布,纯 C 实现的可移植 Git 核心开发包
- 《大学数学遐想》系列之后记
- UE3客户端服务器GamePlay框架
- 操作系统中的死锁问题
- Redis中使用Lua语言
- SDUT oj 选拔赛1 迷之好奇
- 一个项目中能提出哪些数据库优化_阿里资深技术专家曲山:优秀的数据库存储引擎应具备哪些能力?...
- day 34 进程线程排序 抢票 初级生产者消费者
- chrome导入与导出书签
- flush table mysql_MySQL flush table 导致的锁问题
- 组概念_【收藏】学习质谱一定要知道的6组概念
- JAVA鲜花订购网微服务计算机毕业设计Mybatis+系统+数据库+调试部署
- 阿里云盘+OneManager+Heroku+CFWorkers实现阿里云盘网络挂载
- 2021年中国计算机视觉产业及其重点企业分析(商汤科技VS旷视科技VS依图科技VS云从科技)[图]
- Vue3.0 项目启动(打造企业级音乐App)
- ​stp文件转gltf
热门文章
- java hibernate的使用_java – 使用hibernate / JPA登录
- 三点弯曲弹性模量怎么计算公式_腰背肌锻炼:五点支撑和三点支撑(视频)
- Python高阶——argparse(命令行与参数解析)
- js 打印出来的节点多了m_前端实用技术分享—用Vue实现打印指定区域
- C++ 读取CSV文件中的数据到Mat
- tsp的理论和实践(10)tsp系列暂停一下
- On The Way—Step 1 :python入门之Python的历程
- 1、微博RPC框架Motan
- React Native开发之IDE(Atom+Nuclide)安装,运行,调试
- Transaction And Lock--已提交读快照