听一朋友说的,现在去面试Android移动开发发现面试越来越坑爹了。
记得2010年时,基本只要会java,懂4大组件,5大布局就基本ok了。
以前找工作也了解过一些面试题。
简单分向下比较早版本的几个面试题。(更多详细内容请度娘或是谷哥)
1.开发环境搭建流程。
答:其实大现在有些人可能还是没分清ddms,adt,sdk这些到底指的什么。
记得最早时在他人指导下我们都是这样搭的:拷过来一个ADT和sdk压缩包。
Help" -> "Install New Software安装ADT,然后此刻工具栏就多了一个小机器人。点开后可以创建模拟器,下载更新管理SDK版本。
Window > Preferences...引入SDK文件包。这是在人指导下的安装。因为这样基本不存在耗时的下载。
2.Android四大组件,以及作用?
答:Activity,Service,Broadcast Receiver、Content Provider。
Activity:一般我们就觉得他就是一窗口。对于常见的MVC模式里,其实Activity属于C,控制,而非我们认为的View,视图。
他就是一个接受用户交互,反馈程序响应的控件。
Activity中最主要的两个对象元素:Window(窗口)对象和WindowManager对象。
Service:Android中用来处理耗时操作而衍生的一个组件。我所知这个组件可能主要是针对,耗时操作UI主线程的5秒超时,以及广播的10秒超时。
也就是我们常说的ANR;和一些后台常驻服务运行提供环境。
Broadcast Receiver:广播组件。按字面意思就很形象了。这个其实用起来很灵活的。而且也比较好玩。比如二逼点的,做一个播放器,用广播老刷新后台和前台显示的同步, 而不用常用的AIDL或是IBinder提供的机制。
Content Provider:内容提供者。我觉得很少用到。说白了他就是提供了多个应用共享一份数据提供的这么一个接口。像我们手机上的类似多媒体库的中的资源清单列表的提供和管理者,他的清单中存有图片,文字,数字音频,视频资源。提供给我我们手机的多个应用,图片查看器,记事本,播放器用以查找的入口。功能其实就类似于数据库。只是这个数据库针对了多个应用。该组件我就无聊时用过一次,后来发现最后还不如用个database。因为我的数据就供我一个应用来操作。
3.Android 5大布局?
答:
FrameLayout(框架布局) :一般也说是帧布局。特点就是放上去的界面是重叠的,就像抽纸巾一样,抽了一张就是下面一张。反正我用的也不多,但是值得一提的是,大家不知道有么有注意过现在市场上的视频播放器应用,点击屏幕后一般会慢慢弹出一个层,用来控制声音,画面大小,精度条。这个效果可以用到该布局(当然不是直接简单的XML中这样布局)。
LinearLayout (线性 布局) :最常用布局。用的比较多。
AbsoluteLayout(绝对布局): 这布局应该没人用了吧!!
RelativeLayout (相对布局) :相对布局可以理解为某一个元素为参照物, 来定位的布局方式。用的好这个是很犀利的布局。据说他的效率是最高的。
相对布局,也就说布局里的元素都是相对,也就是同级别的。蒽?嵌套少。而Android最后将XML布局转成代码时,少的嵌套就减少了节点对象解析的次数。
可能你会说,xml解析还有事物解析方式啊,但我觉得布局这种成对标签形式xml可以用事物而非对象解析?
TableLayout (表格布局) : 每一个 TableLayout 里面有表格行 TableRow, TableRow 里面可以具体定义每一个元素。我唯一运用到的地方就比如用户注册这种界面。
请输入用户名:编辑框
输 入 密 码 :编辑框
4.Android 中的两种动画类型?
答:Tween 动画 :移动放大说下旋转透明度
Frame 动画 :传统动画
这个问题基本现在没人问了。
5.Android 中常用的数据存储方式
答:SharedPreferences 存储数据;
文件存储数据;
SQLite 数据库存储数 据;
使用 ContentProvider 存储数据;
网络存储数据中数据的常用的存储方式
现在回答这样可能并不让人满意了。
对于数据存储,我们考虑的是性能和安全性。
从数据存取熟虑来说,最快的的是SharedPreferences 。其实我也不太了解他存储的位置和方式,如果是IO存储,那他其实和一般的文件存储没什么其别,当是,他应该不是吧(具体请g和b),按数据查找来说,他是以键值对存储,因此速率是很快的,因此对于许多配置设置的值,比如记住用户名啊,在应用中的功能设置值。
SQLite存储,效率也是很高的。功能比前者强大多了,可以存储更多复杂数据。
ContentProvider 。上面提到过了。
网络存储其实可能就是我们所说的云存储的一种吧。对于他要提供的功能,不仅仅说是简单的数据存储了。对于性能速率上没有可比性。
6.Activity的生命周期?
答:这问题经典了。
onCreate——onStart——onResume——onPause——onStop——onDestroy以及还有个onRestart.
没啥说的。基本会问,home键后执行的流程,弹出对话框,跳转。等等
7.Service有哪些启动方法,有什么区别?
答:其实这个与Intent的启动方式老混起来。
先说下Intent启动的显式和隐式,其实很简单,我们隐式是配置在manifest.xml中。显式就是我们直接实例化Intent后设置意图跳转组件的类名。
Service启动也分两种。一种是startService,一种是bindService.前者起来后启动者销毁,service依然存在。后者和启动者生命周期关联,启动者销毁,service也销毁了。
8.一条最长的短信占多少个字节?
答:这问题!!!填空题:中文70,英文160.真的原理,估计没人知道了。
9.横竖屏切换问题?
答:这个会问到两个,一个是Activity的在不同的configChanges设置下生命周期调用。我基本就知道什么情况下调用了一边,什么情况下调用了两边。
一个是你在项目中对于横竖屏做出的处理。好吧,我基本是对于大多数应用我直接锁定了,因为横竖的操作空间相差太2逼了。当然你也可以说用两套布局。以及在项目中多用相对布局,权重以及可拉伸的九妹图片。
10.Android工程下的各个文件夹相关知识?
答:资源文件夹res,下面中的raw文件夹和外面的一个assets文件的区别
在建立项目中一般会默认建立assets文件,当然我们还可以在res文件下面建立raw文件夹,这里面都可以存放一些图片,音频或者文本信息,可以供我们在程序当中进行使 用,不过他们两个也有不同点;assets下面的文件不会被编译,通过路径可以去访问其中的内容。raw中文件会自动编译,我们可以在R.java文件中找到对应的ID。
一般我们如果要在应用中引入一些大型资源,比如一个另一个应用的apk(比如支付宝插件),一半就放在assets。此文件夹下文件以IO流最后在应用中被读取使用。
这是我知道的比较早版本的一点面试题,没经历过。。。。