Android开发工程师笔试题

时间:2022-10-04 17:49:30

1.请谈一下Android系统的架构

Android系统从下往上分为Linux内核层(linux kerner),运行库(runtime library),应用程序框架层,应用程序层

linuxkernel:负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。

libraries androidruntimelibraries:即c/c++函数库部分,大多数都是开放源代码的函数库,例如webkit,该函数库负责 android网页浏览器的运行

applicationframework(应用软件架构),Java应用程序开发人员主要是使用该层封装好的api进行快速开发。

applications: 该层是 java 的应用程序层, android 内置 e-mail 、即时通信工具、浏览器、 mp3 播放 器等处于该层, java 开发人员开发的程序也处于该层,而且和内置的应用程序具有平等的位置,可以调用内置的应用程序,也可以替换内置的应用程序。

Android开发工程师笔试题

下层为上层服务,上层需要下层的支持,调用下层的服务,这种严格分层的方式带来的极大的稳定性、灵活性和可扩展性,使得不同层的开发人员可以按照规范专心特定层的开发。

android应用程序使用框架的api并在框架下运行,这就带来了程序开发的高度一致性,另一方面也告诉我们,要想写出优质高效的程序就必须对整个 applicationframework进行非常深入的理解。精通applicationframework,你就可以真正的理解android的设计和运行机制,也就更能够驾驭整个应用层的开发。

2.textview如何支持HTML标签,webview中如何获取超链接,如何适配图

public class Main extends Activity {  

@Override  

   public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  

        txtFirst=(TextView)findViewById(R.id.txtFirst); 

          String html="<font color='red'>样式一</font> ";  

        html+="<font color='#0000FF'> <big> <i> 样式二 </i> </big> <font>";  

        html+="<font color='@"+android.R.color.white+"'> <tt> <b> <big> <u> 样式三 </u> </big> </b> </tt> </font> ";  

        html+="<big> <a href='http://blog.csdn.net/a_mean'>我的博客:http://blog.csdn.net/a_mean </a> </big>";  

        CharSequence charSequence=Html.fromHtml(html);  

        txtFirst.setText(charSequence);  

        //该语句在设置后必加,不然没有任何效果  

        txtFirst.setMovementMethod(LinkMovementMethod.getInstance());   

    }  

网络连接地址:https://zhidao.baidu.com/question/330524401458264085.html

3.浅谈Android常用5中布局

1.线性布局(linearlayout):

android:orientation为horizonal,表示的是水平布局,顶部,底部,水平居中生效

android:orientation为vertical,表示的是垂直布局,左右对齐,垂直居中生效

另如果使用以下方法

android:layout_weight= "1"//表示按比例分配剩余宽度,称为权重

android:layout_width= "0dp"//水平布局使用该方法

如果是垂直布局使用以下方法

android:layout_weight= "1"//表示按比例分配剩余宽度,称为权重

android:layout_height= "0dp"//垂直布局使用该方法

2.相对布局(Relativelayout):

默认的是顶部左对齐,没有方向,故没有android:orientation,并无权重的概念

几个常用的方法如下:

android:id = “@+id/tv4”//定义一个id

android:layoout_toRightof= "@id/tv3"//引用一个id

android:layout_centerInParent= "true"//水平垂直都居中

android:layout_above= “@id/tv2” //引用id,表示在tv2之上

android:layout_alignleft= “@id/tv2”//与tv2左对齐

3.帧布局(FrameLayout):

默认是左上角对齐,帧布局相当于一个TestView,常用的方法如下:

android:layout_gravity= "center"

4.表格布局(TableLayout):

不用指定宽和高

<tablelayout

    <tableRow

        //行

    />

    <TestView

        //列

    />

/>

5.绝对布局(absolutelayout)

指定x,y坐标,一般用的比较少,在电视这块会用到

4.Android常见数据存储方式

Android系统一共提供了四种数据存储方式。分别是:

  1 SharePreference

  2 SQLite

  3 Content  Provider

  4 File

由于Android系统中,数据基本都是私有的,都是存放于“data/data/程序包名目录下,所以要实现数据共享,正确方式是使用Content  Provider

SQLite

SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API

SharedPreference

SQLite数据库外,另一种常用的数据存储方式,其本质就是一个xml文件,常用于存储较简单的参数设置。

File

即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。

ContentProvider:

Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个ContentProvider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用ContentProvider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。

5.APP版本升级注意事项

http://blog.csdn.net/qq_30716173/article/details/50911819

6.消息推送流程

http://jingyan.baidu.com/article/ce4366491084313772afd34a.html

7.简述Android广播机制

http://www.cnblogs.com/RMBP975/archive/2013/03/12/2955733.html

8.Android常见异步处理实现原理

http://blog.csdn.net/yanbober/article/details/45936145

9.Android内存回收机制

http://www.cnblogs.com/bastard/archive/2012/08/17/2644169.html

10.金字塔

请写出返回金字塔的函数drawPyramid,例:drawPyramid(4)

   *   

 ***

*****

http://blog.csdn.net/lissdy/article/details/7792305

11.颠倒(reverse)

请写出颠倒单词(不是字母)顺序的函数myReverse.每一个单词以空格区分。不可直接使用split或separate等的字符串分割函数。例:myReverse(“These questions are tooeasy for me”)==>”me  for easy to arequestions These”

StringmyReverse(String s){

将代码写在下面空白处

http://blog.sina.com.cn/s/blog_6217219f0101q2o8.html

}

12.只修改一个字节(1 byte)使其for循环能够输出20个星号(2种办法即可)

int i,n=20;

for(I=0;i<n;i--)

printf(“*”)

13.listview下拉刷新的实现过程

http://blog.csdn.net/loongggdroid/article/details/9385535

14.图片内存优化

http://blog.csdn.net/gao_chun/article/details/45391401