知识树杂谈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. 主要包括阿里三面,腾讯四面,百度三面,网易三面,美团一场面完. 阿里(由 ...
随机推荐
- UVW代码漫谈(一)
博客园是个非常好的学习知识的地方,相信有很多人跟我一样,园龄3年,从博客园不知道拷了多少代码,看了多少博客,自己却一篇博客都没写过.真是罪过. 这次准备写几篇关于这个项目源码的阅读和理解的文章,大家一 ...
- JAVA基础第十组(5道题)
46.[程序46] 题目:两个字符串连接程序 package com.niit.homework1; import java.util.Scanner; /** * @author: Annie * ...
- C语言程序设计课程设计自查表格
课程设计自查表格 序号 项目 完成与否(完成打勾) 1 格式是否符合标准(缩进是否规范) 2 是否模块化设计(使用函数分解系统功能) 3 函数名否易懂(不得使用f1(int a1,int a2)这样的 ...
- 201521123101 《Java程序设计》第3周学习总结
1. 本周学习总结 2. 书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; p ...
- 学习目标或者作业的制定(SMART原则)
以下文字摘自邹欣老师的博客 很高兴看到学生们都写了自己的目标: http://www.cnblogs.com/deng201421123059/p/6435346.html 不得不说,有些同学的目标太 ...
- 201521123063 《Java程序设计》 第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. (1)多线程的冲突 当我们不想一种资源被同时使用,导致最后结果不一致,解决方法: 使用synchronized标记 ...
- 201521123065《java程序设计》第13周学习总结
1. 本周学习总结 1.协议是端口之间进行网络通信的一种语言规则语法: 2.套接字Socket用于实现客户端与服务器端的连接,实现网络通信,进行数据交换: 3.LocalHost可以用来获取主机地址: ...
- Java课程设计 猜数游戏团队博客
1.团队成员介绍(需要有照片) 曾飞远(组长):网络1513 201521123080 江鹭涛(组员):网络1513 201521123075 2. 项目git地址 3. 项目git提交记录截图(要体 ...
- Junit4学习(一)新建Junit4工程
一,学习Junit4,学以致用 二,熟悉编写流程 工具:Eclipse,Junit包,hamcrest.core包 1,打开Eclipse开发工具,新建工程:file->Java Project ...
- java 利用反射构造泛型类
1.构造BaseDao泛型类 class BaseDao<T>{ private Class<T> entityClass; // 通过反射获取实际运行的精确类 public ...