Android面试宝典总结--第一章:Android入门

13 篇文章 0 订阅

Android面试宝典总结

            –第一章:Android入门

     本文对Android面试宝典的面试题目做一点总结和记录,希望对大家面试或简单复习有帮助。

一.Android非技术问题

(一)为什么看好Android?

     这是一个超级经典的问题,虽然我面试的时候没有被问到过(呵呵)!一般回答Android的优点就可以。

参考答案的回答点:
1.Android手机占有很大的市场,占有移动手机市场的80%左右,说明Android移动市场发展形式非常好,人气旺盛,资源丰富。
2.Android的开发性。开发的平台允许任何移动终端厂商加入到Android联盟中来,使得Android拥有越来越多的开发者。
3.比较看好Android的开发商Goole的发展前景。Goole并不是一个纯粹的IT技术公司,而是一个靠互联网广告发家的互联网公司,但是它研发Android的目的也是尽可能的占领移动广告市场,这让我对Android的前景有很大的憧憬。
4.无缝结合的Google应用。如Goole的地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而 Android平台手机将无缝结合这些优秀的Google服务。
5.Android应用的硬件场合也是越来越多,除了手机还有智能家居,机顶盒设备等等,这说明Android的发展方向变得多样化,并且越来越深入我们的生活。

(二)你做够最复杂的界面?

     这个一般说你做过比较复杂的界面效果,比如有些动画效果就比较复杂。
     这个也是能够看出你的实际开发经验,
参考答案:书本也是提示叫你实事求是的回答!

(三)如何解决Android学习中遇到的问题?

     考察面试者的逻辑思维中的分析问题和解决问题的能力。比如Android中的源码不是开放的吗,我们可以在源码文件中(用合适的方法。。。)找到我们需要的类或方法。

参考答案:(百度来的简单答案)
1.R.java不能实时更新
  问题描述:在res文件中新增的变量不能在R.java中实时的显示出来。
  解决方法:选择菜单栏的“Project”,勾选“Build Automatically”选项。
2.LogCat视窗没有显示
  问题描述:在Eclipse的右下方没有显示LogCat视窗。
  解决方法:选择菜单栏的“Windows”,再选择“Show View”,最后再选择“LogCat”即可。
3.编译时提示“android library projects cannot be launched”错误的解决方法
  问题描述:编译时提示“android library projects cannot be launched”错误
  解决方法:选择菜单栏的“Project”,再选择“Properties”,在弹出的窗口中选择“Android”,将is library选项前面的勾去掉。
4.在xml中添加EditText控件后提示“This text field does not specify an inputType or a hint”错误
  问题描述:在xml中添加EditText控件,控件信息如下。
android:id=”@+id/editText”
android:layout_width=”match_parent”
android:layout_height=”wrap_content” >
  编译时,提示“This text field does not specify an inputType or a hint”错误。
  原因分析:控件中缺少android:hint以及android:inputType信息。android:hint用于设置EditText为空时显示的默认文字提示信息。android:inputType用于设置EditText的文本的类型,用于帮助输入法显示合适的键盘类型。
  解决方法:在控件中添加android:hint以及android:inputType信息,添加后的控件信息如下。
android:id=”@+id/editText”
android:hint=”0”
android:inputType=”number”
android:layout_width=”match_parent”
android:layout_height=”wrap_content” >
如果不知道怎么说也可以说,之前很多时候遇到一些没见过的问题一般是上网查一下怎么解决,如果不行就会问一下同事或项目组长。

(四)Android只能在手机设备上运行吗?

     Android的底层是基于Linu内核的,所以Android可以运行在任何Linux支持的硬件平台中,比如平板电脑,,PC都可以运行。

二.Android的基础概念

(一)Android有什么特点?

     这个是Android的特点,要求回答的是和Android开发相关的知识,和Android的优点是有点区别的,但是如果你想不到内容,也是可以回答Android优点的。

参考答案:
1.Android拥有完善的应用程序框架,支持四大应用组件(Activity,Service,ContentProvider,BroastReceiver),可以在任意层次上进行复用和更换。
2.Android中的java字节码是运行在Dalvik虚拟机上的。传统的JVM是基于栈堆的,而Dalvik是基于寄存器的,因此,在Dalvik虚拟机上运行的java程序要比传统的JVM上运行的Java程序速度更快。
3.Android中内置了WebKit核心的浏览器,支持HTML5等新的Web标准。
4.2D和3D绘图功能丰富。支持OpenGL ES2.0,如果手机带有硬件加速器,3D图形渲染会更加流畅。
5.支持轻量级的SQLite数据库。
6.支持众多的硬件传感器(如:重力传感器,方向传感器,光学传感器,压力传感器)和其他一些硬件,比如蓝牙,Wifi,Camera,GPS等等。
7.支持创新的信息展示方式,比如Toast,Notification等。
8.刷机容易。
9.开源的移动操作系统,研发成本低。

(二)MVC模式和MVP模式?

1.MVC模式:

     MVC(Model_view_contraller)”模型视图控制器”。 MVC 应用程序总是由这三个部分组成。Event(事件)导致Controller 改变 Model 或 View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View 都会自动更新。类似的,只要Controller改变了View的数据或者属性,所有依赖的Model都会自动更新。
这里通过View的改变可以直接改变Model的数据。

2.MVP模式:

     MVP是“MVC的演化版本”,“让Model和View完全解耦”。
     也就是说在MVP中View不能直接改变Model数据,要通过presenter后,再改变Model。同样要改变View也是要先经过presenter。MVP模式逻辑清楚,代码很清晰,不过增加了很多类。

(三)Android的系统构架?

     android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux 核心层。

1.应用程序层:

     Android会同一系列核心应用程序包一起发布,该应用程序包包括 email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA 语言编写的。

2.应用程序框架层:

     开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统, 其中包括;
     * 丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web 浏览器。
     * 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
     * 资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件( layoutfiles)。
     * 通知管理器 (NotificationManager) 使得应用程序可以在状态栏中显示自定义的提示信息。
     * 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。

3.系统运行库

     1)程序库
     Android 包含一些 C/C++库,这些库能被 Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:
     * 系统 C 库 - 一个从 BSD 继承来的标准 C 系统函数库(libc ), 它是专门为基于embedded linux 的设备定制的。
     * 媒体库 - 基于 PacketVideoOpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG,PNG 。
     * SurfaceManager - 对显示子系统的管理,并且为多个应用程序提 供了2D 和3D 图层的无缝融合。
     * LibWebCore- 一个最新的 web浏览器引擎用,支持Android浏览器和一个可嵌入的web 视图。
     * SGL - 底层的2D 图形引擎
     * 3Dlibraries- 基于OpenGL ES1.0 APIs实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D 软加速。
     * FreeType -位图(bitmap)和矢量(vector)字体显示。
     * SQLite - 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

2)Android 运行库

     Android 包括了一个核心库,该核心库提供了 JAVA编程语言核心库的大多数功能。
     每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik 虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik 虚拟机执行
(.dex)的Dalvik 可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA 编译器编译,然后通过SDK中 的 “dx” 工具转化成.dex格式由虚拟机执行。
     Dalvik虚拟机依赖于 linux内核的一些功能,比如线程机制和底层内存管理机制。

4.Linux内核层:

     Android 的核心系统服务依赖于 Linux2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。Linux 内核也同时作为硬件和软件栈之间的抽象层。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值