-
百度文库
-
让每个人平等地提升自我
面试题目及其答案
1
,
++i
和
i++
区别
2
,
makefile
文件代码,写代码
3
,隐藏与重写的区别
4
,
linux
基本命令使用
如:如何查询帮助文档(
man
p>
)
,
如何查处文件
(fiind)
,常用命令
5
,进程间通信有几种,效率如何
6
、
什么是嵌入式实时操作系统
, Android
操作系统属于实时操作系统吗
?
7
,
tcp/ip
有几层
8
、
一条最长的短信息约占多少
byte?
9
,
p2p
和
SMTP
分别在哪层
10
、
an
droid
中的动画有哪几类,它们的特点和区别是什么
?
11
,多态概念(父类引用子类参数)
12
、
handler
机制的原理
13
,
java
写
1+N
的和
14
,数据结构与算法
如
排序,二叉树
15,MVC
概念(为什么有
DAO
层,什么作用)
16
,
GC
回收机制
17
、说说
mvc
模式的原理,它在
androi
d
中的运用
18
,
android
项目
自述
19
,
java
的进程与线程维护
20
、
Activity
的生命周期
21
,
N*N
打印出来的样子是(例如
N=4
)
1
2
3
4
12
13
14
5
11
16
15
6
10
9
8
7
22
,
linux
末行,输入,命令三个模式
23
、
Android dvm
的进程和
Li
nux
的进程
,
应用程序的进程是否为同一个概念
24
,
android
四层架构分别的作用(
android
系统框图)<
/p>
25
、
sim
卡的
EF
文件有何作用
26
,
android
四大组件,
生命周期,
onpause()
与
on
stop
()的区别
27
,
UMI
建模概念
p>
28
,
C
语言打印
N*N
数组,规律如下:
2
维
1 2
3 4
3
维
1 2 3
8 9 4
7 6 5
4
维
1
2
3
4
12
13 14
5
11 16 15
6
10
9
8
7
1
百度文库
-
让每个人平等地提升自我
1
、
Android dvm
的进程和
Li
nux
的进程
,
应用程序的进程是否为同一个概念
DVM
指
dalivk
的虚拟机。每一个
p>
Android
应用程序都在它自己的进程中运行,都拥有
一个独立的
Dalvik
虚拟机实例。而每一个
DVM
都是在
Linux
中的一个进程,
所以说可以认
为是同一个概念。<
/p>
2
、
sim
卡的
EF
文件有何作用
sim
卡的文件系统有自己规范,
主要是为了和手机通讯,
sim
本
身可以有自己
的操作系
统,
EF
就是作存储并和手机
通讯用的
3
、嵌入式操作系统内存管理有哪几种,
各有何特性
页式,
段式,段页,用到了
MMU,
虚拟空间等技术
< br>
4
、
什么是嵌入式实时操作系统
, Android
操作系统属于实时操作系统吗
?
嵌入式
实时操作系统是指当外界事件或数据产生时,
能够接受并以足够快的速度予以处
理,
其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作
出快速响应,
并控
制所有实时任务协调一致运行的嵌入式操作系
统。
主要用于工业控制、
军事设备、
航空航
< br>天等领域对系统的响应时间有苛刻的要求,
这就需要使用实时系统。
又可分为软实时和硬实
时两种,而
android<
/p>
是基于
linux
内核的,因此属于软实
时。
5
、一条最长的短信息约占多少
byte?
p>
中文
70(
包括标点
)
,英文
160
,
< br>160
个字节。
6
、
p>
android
中的动画有哪几类,它们的特点和区别是什么
?
两种,一种是
Tween
动画、还有一种是
Frame
动画。
Tween
动画,这种实现方式可以
使视图组件移动
、
放大、
缩小以及产生透明度的变化
;
另一种
Frame
动画,
传统的动画方法,
通过顺序的播放排列好的图片来实现,类似电影。
7
、
handler
机制的原理
andriod
提供了
Handler
和
Looper
来满足线程间的通信。
Handler
先进先出原则。
Looper
类用来管理特定线程内对象之间
的消息交换
(Message
Exchange)
。
1)Looper:
一个线程可以产生一个
< br>Looper
对象,由它来管理此线程里的
Messag
e
Queue(
消息队列
)
。
2
百度文库
-
让每个人平等地提升自我
2)Handler:
你可以构造
Handler
对象来与
Looper
沟通,以便
push
新消息到
Message
Queue
里
;
或者接收
Looper<
/p>
从
Message Queue
取出
p>
)
所送来的消息。
3) Message Queue(
消息队列
):
用来存放线程放入的消息。
4)
线程:
UI
thread
通常就是
main <
/p>
thread
,而
Android
启动程序时会替它建立一个
Message
Queue
。
8
、说说
m
vc
模式的原理,它在
android
中的运用
MVC(Model_view_contraller)”
模型
_
视图
_
控制器
”
。
MVC
应用程序总是由这三个部分组
成
。
Event(
事件
)
导致
Controller
改变
Model
或
View
,或者同时改
变两者。只要
Controller
改变了
Models
的数据或者属性,所有依赖的
View
都会自动更新。类似的,只要
Contro
9
、
p>
Activity
的生命周期
和其他手机
平台
的应用
程序
一样,
Android
的应用程序
的生命周期是被统一掌控
的,也
就是说我们写的应用程序命运
掌握在别人
(
系统
)
< br>的手里,我们不能改变它,只能学
习
并
适应它。
简单地说一下为什么是这样:我们手机在运行
一个应用程序的时候,有可能打进来电
话
发进来短信
,或者没有电了,这时候
程序都会被中断,优先去服务电话的基本功能
,
另
外系统也不允许你占用太多资源
,至
少要保证电话功能吧
,
所以资源不足的时候也就有
可
能被干掉。
p>
言归正传,
Activity
的基本生命周
期如下代码
所示:
Java
代码
3
1.
public
2. class
MyActivity extends Activity {
3. protected
4. void onCreate(Bundle
savedInstanceState);
5.
6. protected
7. void onStart();
8.
百度文库
-
让每个人平等地提升自我
4
9. protected
10. void onResume();
11.
12. protected
13. void onPause();
14.
15. protected
16. void onStop();
17.
18. protected
19. void onDestroy();
20. }
21.
22.
public
class
MyActivity extends Activity {
protected
void onCreate(Bundle
savedInstanceState);
protected
void onStart();
protected
void onResume();
protected
void onPause();
protected
void onStop();
protected
void onDestroy();
}
百度文库
-
让每个人平等地提升自我
你自己写的
Activity
会按需要
重载这些方法,
< br>onCreate
是免不了的,在一个
Activity
正常启动的过程中,他们被调用的顺序是
onCreate
->
onStart
->
onResume,
在
Activi
ty
被干掉的时候顺序是
onPause -> onStop
-> onDestroy
,这样就是一个完整的生命周期,
但是有人问了
,
程序正运行着呢来电
话了,
这个程序咋办
?
中止了呗,
p>
如果中止的时候新出
的一个
Activit
y
是全屏的那么:
onPause->onStop
,恢复的时候
onStart->onResume
,如
果打断
这个应用程序的是一个
Theme
为
T
ranslucent
或者
Dialog
< br>的
Activity
那么只是
o
nPause ,
恢复
的时候
onResume
。
详细介绍一下这几个方法中系统在做什么以及我们应该做什么:
onCreate:
在这里创建界面
,做一些数据
的初始化工作
onStart:
到这一步变成用户可见不可交互
的
onResume:
变成和用户可交互
的,
(
在
activity
栈系统通过栈的方式管理这些个
Act
ivity
的最上面,运行完弹出栈,则回到上一个
Activ
ity)
onPause:
到这一步是可见但不可交互
的,系统会停止动画
等消耗
CPU
的事情
从上文的描述已经知道,
应该在这里保存你的一些数据
,
因为这个时候
<
/p>
你的程序的优先级
降低,有可能被系统收回。在这里保存的数据,
应该在
onResume
里读出来,注意:这
个方法里做的事情时间要短,因为下一
个
activity
不会
等到这个方法完成才启动
onstop:
变得不可见
,被下一个
activity
覆盖了
onDestroy:
这是
acti
vity
被干掉前最后一个被调用方法了,
可能是外面类调用<
/p>
finish
方
法或者是系统为了节省空间将它暂时性的干掉,可以用
isFinishing()
来判断它,如果你有一
< br>个
Progress
Dialog
在线程中转动,请在
onDestroy
里
把他
cancel
掉,不然
等线程结束的
时候,调用
Dialog
的
cancel
方法会抛
异常的。
onPause
< br>,
onstop
,
onDestroy
,三种状态
下
activity
都有可能被系统干掉
为了保
证程序的正确性,你要在
onPause()
里写上持久层操作
的代码,将用户编辑的内容
都保存到存储介质上
(
一般都是数据库
)
。实际
工作中因为生命周期的变化而带来的问题也
很多,
比如你的应用
程序起了新的线程在跑,
这时候中断了,
你还要去维护那个线程
,
是暂
停还是杀掉还是数据回滚,是吧
?
因为
Activity
可能被杀掉,
所以线程中使用的变量和一些
界面元素就千万要注意了,一般我都是采用
Android
的消息机制
[Handler
,Message]
来处理
< br>多线程和界面交互的问题。
这个我后面会讲一些,
最近因
为这些东西头已经很大了,
等我理
清思绪再跟大家分享。
ller
改变了
V
iew
,
View
会
< br>
从潜在的
Model
中获取数
据来刷新自己。
10
、让
Activity
变
成一个窗口:
Activity
属性设定
讲点轻松的吧
,
可能有人希望做出来的
应用程序是一个漂浮在手机主界面的东西,那么
很
简单你只需要设置
一下
Activity
的主题就可以了在
中定义
Activity
的
地方一句话:
5
百度文库
-
让每个人平等地提升自我
Xml
代码
1. android
:theme=
2.
3.
android:theme=
android :theme=
android:theme=
这就使你的应用程序变成对话框的形式弹出来了,或者
Xml
代码
1.
android:theme=
2.
3.
android:theme=
android:theme=
android:theme=
就
变
p>
成
半
透
明
的
,
[
友
情
提
示
]
< br>类
似
的
这
种
activity
的
属
性
可
以
在
类
的
AndroidMan
ifestActivity
方法中看到,中所有元素的属性的介绍都可以参考这个类
上面说的是属性名称,具体有什么值是在中
< br>可以看到,
比如这个
就
对应于
,('_'
换成
'.'
<
--
注意:这个是文章内容不是笑
脸
)
就可以用在描述文件
中了
,
找找类
定义和描述
文件中的对应关系就都明白了。
11
、
你后
台的
Activity
被系统回收怎么办:
onSaveInstanceState
当你的程序中某一个
Activity
A
在运行时中,主动或被动地运行另一个新的
Activity
B
这个时候
A
会执行
Java
代码
1. public
2. void
onSaveInstanceState(Bundle outState) {
6
百度文库
-
让每个人平等地提升自我
3.
(outState);
4. (
5. }
public
void
onSaveInstanceState(Bundle outState) {
(outState);
(
}
B
完成以后又会来找
A,
这个时候就有两种情况,
一种是
A
被回收,
一种是没有被回收,
被回
< br>
收的
A
就要重新调用
onCreate()
方法,不同于直接启动的是这回
< br>onCreate()
里是带上
参数
savedInstanceState
,没被收回的就
还是
onResume
就好了。
p>
savedInstanceState
是一个
Bundle
对象,你基本上可以把他理解为系统帮你维护的一
个
Map
对象。在
onCreat
e()
里你可能会用到它,如果正常启动
onCreate
p>
就不会有它,所以
用的时候要判断一下是否为空。
< br>
Java
代码
1. if(savedInstanceState != null){
2. long id = (
3. }
if(savedInstanceState != null){
long id = (
}
就像官
方的
Notepad
教程
里的情况,
你正在编辑某一个
note
,
突然被中断,
那么就把
这个
note
的
id
< br>记住,再起来的时候就可以根据这个
id
去把那个
note
取出来,程序就完整
一些。
这也是看你的应用需不需要保存什么,
比如你的界面就是读取一个列表,
那就不需要
特殊记住什么,哦,
没准你需要记住滚动条的位置
...
7
百度文库
-
让每个人平等地提升自我
12
、
调用与被调用:我们的通信使者
Intent
p>
要说
Intent
了,
Intent
就是这个这个意图
,
应用程序间
Intent
进行交流,
打个电话啦,
来个
电话啦都会发
Intent,
这个是
Android
架构的松耦合的精髓部分,大大提高了组件的<
/p>
复用性,比如你要在你的应用程序中点击按钮,给某人打电话,很简单啊,看下代码先:<
/p>
Java
代码
1. Intent intent = new Intent();
2.
3. (
4. startActivity(intent);
Intent intent = new Intent();
;
(
startActivity(intent);
扔出这
样一个意图,
系统看到了你的意图就唤醒了电话拨号程序,
打出
来电话。
什么读
联系人,
发短信啊,<
/p>
邮件啊,
统统只需要扔出
intent<
/p>
就好了,
这个部分设计
地确实很好啊。
那
p>
Intent
通过什么来告诉系统需要谁来接受他呢
?
通常使用
Intent
有两种方法,第一种是直接说明需要哪一个类来接收代码如下
:
Java
代码
8
1.
Intent intent = new Intent(this,
2. ().putString(
3. tartActivity(intent);
Intent intent =
new Intent(this,
().putString(
tartActivity(intent);
百度文库
-
让每个人平等地提升自我
第一种方式很明显,直接指定了<
/p>
MyActivity
为接受者
,
并且传了一些数据给
MyActivity
,
在
MyActivity
里可以用
p>
getIntent()
来的到这个
int
ent
和数据。
第二种
就需要先看一下
AndroidMenifest
中的
intentfilter
的配置了
Xml
代码
<
intent-filter>
< action
android:name=
/>
<
action
android:value=
/>
< action
android:value=
/>
<
category
android:name=
/>
< data
android:mimeType=
/>
< /intent-filter>
这里面配置用到了
action,
data,
category
这些东
西,那么聪明的你一定想到
intent
里
也会有这些东西,然后一匹配不就找到接收者了吗
?
9
-
-
-
-
-
-
-
-
-
上一篇:外贸行业英语——常用纺织专业词汇
下一篇:斑马鱼免疫荧光