知识树杂谈Android面试(3)
一、Activity生命周期?
a. Activity四种状态?
Running、Paused(透明无焦点)、Stopped、killed.
b. OnStart() OnRusume区分?
是否可以交互.
c. onSaveInstanceState/onRestoreInstanceState?
被系统回收是随机调用.
二、 Activity启动方式?
任务栈/容器栈:
1.一个应用程序一般都是由多个activity组成的。
2.任务栈(task stack)(别名back stack后退栈) 记录存放用户开启的activity的。
3.一个应用程序一被开启系统就给他分配一个任务栈,当所有的activity都退出的时候,任务栈就清空了。
4.任务栈的id是一个integer的数据类型 自增长的。
5.在android操作系统里面会存在多个任务栈,一个应用程序一个任务栈。
6.桌面应用和一般的应用程序是一样的,任务栈的行为也是一样。
7.默认情况下, 关闭掉一个应用程序,清空了这个应用程序的任务栈。应用程序的进程还会保留。
a. 四种方式
standard: 多次创建相同Acitvity.
singleTop: 栈顶不允许叠加打开多个相同acitvity,仅调用OnNewIntent方法.
singleTask: 只存在一个实例。不存在,创建;存在,销毁该acitvity上面所以activity,然后调用OnNewIntent方法。
如果是在别的应用程序中启动它,则会新建一个task(任务栈),并在该task中启动这个Activity,singleTask允许别的Activity与其在一个task中共存,也就是说,如果我在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的task中。
singleInstance: 单一实例,单独容器展中存储。
三、Service生命周期?
四、如何理解Activity、View、Windows关系?
这个问题真的很不好回答。所以这里先来个算是比较恰当的比喻来形容下它们的关系吧。Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图)LayoutInflater像剪刀,Xml配置像窗花图纸。
1:Activity构造的时候会初始化一个Window,准确的说是PhoneWindow。
2:这个PhoneWindow有一个“ViewRoot”,这个“ViewRoot”是一个View或者说ViewGroup,是最初始的根视图。
3:“ViewRoot”通过addView方法来一个个的添加View。比如TextView,Button等
4:这些View的事件监听,是由WindowManagerService来接受消息,并且回调Activity函数。比如onClickListener,onKeyDown等。
五、View的绘制流程?
onMeasuer() -> onLayout() -> onDraw()
计算大小 -> 确定位置 -> 开始绘制
http://blog.csdn.net/yanbober/article/details/46128379/
六、Touch事件的传递机制?
1. 所有的Touch事件都封装到MotionEvent里面
2. 事件处理包括三种情况
a) 传递—-dispatchTouchEvent()函数
b) 拦截——onInterceptTouchEvent()函数
c) 消费—-onTouchEvent()函数
http://blog.csdn.net/a_long_/article/details/52124606
七、Android的几种动画?
曾被问到Android中有几种动画,这个问题也好难回答。Android3.0之前有2种,3.0后有3种。
FrameAnimation(逐帧动画):将多张图片组合起来进行播放,类似于早期电影的工作原理,很多App的loading是采用这种方式。
TweenAnimation(补间动画):是对某个View进行一系列的动画的操作,包括淡入淡出(Alpha),缩放(Scale),平移(Translate),旋转(Rotate)四种模式。
PropertyAnimation(属性动画):属性动画不再仅仅是一种视觉效果了,而是一种不断地对值进行操作的机制,并将值赋到指定对象的指定属性上,可以是任意对象的任意属性。
http://blog.csdn.net/yanbober/article/details/46481171
八、Android 跨进程访问方式?
1. 访问其他应用的Acitvity
打电话:
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:1860095****"));
startActivity(Intent.createChooser(intent, null));
2. Content Provider
访问系统相册
3. 广播(broadcast)
如何显示系统时间
4. AIDL服务
9:AIDL理解
http://bbs.51cto.com/thread-1086040-1.html
10:Handler的原理
http://blog.csdn.net/lmj623565791/article/details/38377229
11:Binder机制原理
http://blog.csdn.net/boyupeng/article/details/47011383
12:热修复的原理
1:JavaSisst
2:AspectJ
3:Xposef
这里给出Xposef方案
http://mp.weixin.qq.com/s?__biz=MzA3Mjk1MjA4Nw==&mid=400452659&idx=1&sn=841b49b875ec3b307f261ed52a7d9c4e&scene=23&srcid=1119JWRt0adNwGxTHiyok460#rd
13:设计一套图片异步加载缓存方案
http://www.cnblogs.com/zyw-205520/p/4997863.html
http://blog.csdn.net/boyupeng/article/details/47127605
14:Android内存泄露及管理
http://gold.xitu.io/entry/56d64b9e816dfa005943a55c
15:Activity与Fragment通信
http://gold.xitu.io/entry/56a87b2b2e958a0051906227
16:Fragment的那些坑
http://www.jianshu.com/p/d9143a92ad94
http://www.jianshu.com/p/fd71d65f0ec6
http://www.jianshu.com/p/38f7994faa6b
16:Android UI适配
这里给出hongyang大神的方案
http://blog.csdn.net/lmj623565791/article/details/45460089
17:布局优化
http://www.jianshu.com/p/145fc61011cd
18:Http Https
http://www.jianshu.com/p/93fdebe5fef1
19:网络请求优化
http://www.jianshu.com/p/3141d4e46240
20:数据库优化
http://www.jianshu.com/p/3b4452fc1bbd
21:图片优化
http://www.jianshu.com/p/5bb8c01e2bc7
22:HybridJAVA 与JS交互
http://droidyue.com/blog/2014/09/20/interaction-between-java-and-javascript-in-android/
23:单例
http://www.jianshu.com/p/a956024629cb
24:Java GC原理
http://www.jianshu.com/p/d75a32ac5bed?
25:ANR
http://www.jianshu.com/p/124f3b75e164
26:Volley
http://www.jianshu.com/p/9e17727f31a1
27:JAVA注解反射原理
http://www.jianshu.com/p/3968ffabdf9d
28:算法
http://www.jianshu.com/p/ae97c3ceea8d
29:设计模式
http://gold.xitu.io/entry/56ebb4ad5bbb50004c440972
30:RxJava
http://gank.io/post/560e15be2dca930e00da1083?from=timeline&isappinstalled=0#toc_1
知识树杂谈Android面试(3)的更多相关文章
- 知识树杂谈Java面试(4)
一. Java集合 1. 集合分类: Collection.Map. 2. Collection: 3. Map 4. 注意点 a. List 有序.可重复:Set 无序.不可重复:Map 键值 ...
- 30K入职腾讯,全靠这份606页的Android面试指南
前言 光阴似箭,日月如梭,时间真的过得飞快. 加上实习,从事 Android 开发,差不多有 5 年了.在上家公司职务.薪酬感觉已经到达了天花板,没有上升的余地.而且在这家公司过于安逸了,想换个有挑战 ...
- 一周内被程序员疯转3.2W次,最终被大厂封杀的《字节跳动Android面试手册》!
一眨眼又到金三银四了,不知道各位有没有做好跳槽涨薪的准备了呢? 今天的话大家分享一份最新的<字节跳动Android面试手册>,内容包含Android基础+进阶,Java基础+进阶,数据结构 ...
- Android面试总结 (转)
1. 下列哪些语句关于内存回收的说明是正确的? (b) A. 程序员必须创建一个线程来释放内存 B. 内存回收程序负责释放无用内存 C. 内存回收程序允许程序员直接释放内存 D. 内存回收程序可以在指 ...
- 百度的android面试总结分析
今天就是今天上午10点,我接到了百度的电话面试,当然提前和我说了,我的拖延症是有多强烈,以至于我没怎么准备,当然我也想着看看自己的真实水平,在此检讨一下!!!!!!!!!!!!!!!!!!!!!!!! ...
- Android 面试问答
Android 面试问答 目录 数据结构和算法 java核心知识 Android核心知识 架构 设计相关问题 相关工具和技术 Android 测试驱动开发 其他 数据结构和算法 ******关于此类问 ...
- Android面试优雅地介绍自己的项目
本文转载:m.blog.csdn.net/iamsamzhang/article/details/51916584 先说句题外话,很多公司16年秋招的内推已经开始啦,我目前知道的在北京有网易.百度和微 ...
- 只要套路对,薪资直接翻一倍!保姆级Android面试葵花宝典,肝完面试犹如开挂
跳槽,这在 IT 互联网圈是非常普遍的,也是让自己升职加薪,走上人生巅峰的重要方式.那么作为一个普通的Android程序猿,我们如何才能斩获大厂offer 呢? 疫情向好.面试在即,还在迷茫踌躇中的后 ...
- 阿里、腾讯、百度、网易、美团Android面试经验分享,拿到了百度、腾讯offer
基本情况 2021届普通本科,Android开发岗. 此文主要是2020年秋招面试经验汇总,最终拿到了百度.腾讯的offer. 主要包括阿里三面,腾讯四面,百度三面,网易三面,美团一场面完. 阿里(由 ...
随机推荐
- 个人作业2——必应词典APP分析
第一部分:调研.评测 1.刚刚打开必应词典的时候,它给我的第一反应就是界面美观,最上面是一个查询框,下面有一些经典的句子.单词以及一些精选的文章,所有的功能都可以一目了然,看一眼就知道要怎么去使用,这 ...
- 201521123077 《Java程序设计》第8周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 泛型类 利用泛型可以写出一个更加通用的类,比如下面的例子: class simpleHolder<T&g ...
- 201521123103 《Java程序设计》 第一周学习总结
一.本周学习总结 1.初步了解了Java的诞生及版本演进的过程. 2.认识了Java的三大平台:Java SE.Java EE.Java ME:学会安装JDK:Java SE是各应用平台的基础,分为四 ...
- 201521123002 《Java程序设计》第1周学习总结
1. 本章学习总结 学习使用Markdown编写文章 jdk的安装和环境变量的设置 java的历史,目前java有三大平台,javaSE,javaEE及javaME.其中javaSE我们会经常用到,由 ...
- java课程设计-猜数游戏
1. 团队名称.团队成员介绍 团队名称:breeze 团队成员 组长:网络1514张朝玮 201521123106 组员:网络1513侯帅军 201521123092 2. 项目git地址 https ...
- eclipse中svn插件在线安装方式
SVN插件地址:http://subclipse.tigris.org/update_1.8.x 第一步:eclipse>Help菜单>Install New Software- 第二步: ...
- [LeetCode]Count and Say 计数和发言
Count and Say 计数和发言 思路:首先要理解题意,可以发现后者是在前者的基础之上进行的操作,所以我们拿之前的结果作为现在函数的参数循环n-1次即可,接下来就是统计字符串中相应字符的个数,需 ...
- python实例编写(5)--异常处理,截图,用例设计
一.python的异常处理 异常抛出处理机制: 1.若在运行时发生异常,解释器会查找相应的处理语句(handler) 2.若在当前函数无法找到,就将异常传给上层的调用函数,看是否能处理 3.如果在最外 ...
- Maven简介(一)
在现实的企业中,以低成本.高效率.高质量的完成项目,不仅仅需要技术大牛,企业更加需要管理大牛,管理者只懂技术是远远不够的.当然,管理可以说有很多的方面,例如:对人员的管理,也有对项目的管理等等.如果你 ...
- MySQL线程池的引入可以提高我们的MySQL的性能
支持线程池的版本:MySQL 企业版本,MySQL percona的分支 MariDB 的版本.我们知道我们的MySQL 语句是不支持硬解析的,没有无SQL 解析 cache.每个连接对应一个线程,我 ...