北京面试(一)

         14-4-11日(星期五)中午一点多我来到了这个怀揣着自己梦想的地方开始找寻自己曾经希望在这里开花结果的种子。虽然我知道这个路程会是很艰辛的,但是不经历风雨怎能见彩虹,不经历挫折怎么会成功呢?谁又知道呢?我一来到这里就开始这里的第一次面试。

         经历了一番路程的搜索后,我终于找到了那个我要面试的地方。

         开始的时候  我认为北京的面试肯定会严格于以前我生活的城市,所以,我很谨慎的进去了那个面试我的房间。

         我可以说着真是我第一次面对这样的面试,也可以说是因为我面试的机会本来就不多也行。

         进去最礼貌的招待是必须有的。。。。

    好吧,我们直接进入主题吧。

    开始 ,他就是给了1一张答题单和一张Android方面的题,然后叫我做完了叫他。丫丫,我觉得这是很直接的一种面试方式,但是我不讨厌哦

         好的,我现在把这些题目以及答案附上,希望可以帮到那些在Android方面有困惑或者正在寻找Android职位的人群。

         1:介绍一下Android中的四大组件。

         Activity,Service,BrodCastReceiver,ContentProvider。学了Android的这个应该是常识哦。

这里我给出了一个详细链接:           http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html

       2:用图形简要叙述一下Activity的生命周期。

其实这个Android的生命周期是很重要的,而且有很多人知道如何绘制它,但是却不知道如何能将他成功的用自己的知识语言绘制出来

       这个生命周期在上一道题中给的链接中可以看到这里需要的答案。

       3:说说你用的Android中的布局。

        Android中的布局有LinearLayout,RelativeLayout,FrameLayout,TableLayout,GridLayout,AbsoluteLayout.

 这里有六种布局,然后这六种布局各有各的特色。

 一般情况下都是在LinearLayout的开头就设定方向和宽高,至于里面摆放的控件,就具体设定其控件的属性。可以根据自己的需要来设置起水平与垂直,RelativeLayout的就是需要一个有Id的控件来作为一个基准点(参照物)

帧布局(FrameLayout)是从屏幕的左上角坐标(0,0)开始布局,多个组件层叠排序,后面的组件覆盖前面的组件。

  帧布局中没有权重这一说。

 表格布局以行、列表格的方式布局子组件。

  TableLayout中使用TableRow来定义多行。

  TableLayout中如果不用TableRow,则所有控件从上到下排列。

  用了TableRow,每个TableRow中的控件构成多列。

绝对布局通过指定子组件的确切XY坐标位置,该类已经过期,可以使用其他布局代替之。(但是由于其太死板的布局方式,所以现在这种布局基本已废了!)

       4:写一个单例模式

     其实在开始我真的懵了哦!其实这单列模式应该是所有设计模式中最简单的一种设计模式,所以,这个也应该至少是我们应该熟知的哦!

这里做了一个简单的列子:

    public class SingleModel{

//to define a static of the SingleModle

   public static SingleModel single=null;

       pubic SingleModel(){

}

    //to write the method of the getinstence

     public staic SinleModel getInstence(){

if(single==null){

return new SingleModel();

}

return single;

}

}

   当然单列模式一共分为三种,然后我今天写的这种为懒汉式,还有饿汉式以及登记式。

 

       这里我给出一个详细的链接:http://www.cnblogs.com/ytaozhao/p/3385680.html

       5:Android中的数据存储方式。

        Android中的数据存储方式有五种,1 使用SharedPreferences存储数据

                                                      2 文件存储数据;

                                                      3 SQLite数据库存储数据;

                                                      4 使用ContentProvider存储数据,严格意义上说ContentProvider并不是数据存储,只是应用程序之间数据存储和检索的一个桥梁,它的作用就是使得各个应用程序之间实现数据共享

                                                      5就是网络云存储咯

       6:写一个类来继承 SQLiteOpenHelper

                 1.创建一个版本为1的“diaryOpenHelper.db”的数据库,

                 2.同时创建一个 “diary” 表(包含一个_id主键并自增长,topic字符型100

                     长度, content字符型1000长度)

                 3.在数据库版本变化时请删除diary表,并重新创建出diary表。

 

        

       public class DBHelper  extends SQLiteOpenHelper {

 

               public final static String DATABASENAME = "diaryOpenHelper.db";

            public final static int DATABASEVERSION = 1;

 

//创建数据库

public DBHelper(Context context,String name,CursorFactory factory,int version)

{

super(context, name, factory, version);

}

//创建表等机构性文件

public void onCreate(SQLiteDatabase db)

{

String sql ="create table diary"+

"("+

"_id integer primary key autoincrement,"+

"topic varchar(100),"+

"content varchar(1000)"+

")";

db.execSQL(sql);

}

//若数据库版本有更新,则调用此方法

public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)

{

 

String sql = "drop table if exists diary";

db.execSQL(sql);

this.onCreate(db);

}

}

 

 

  

 

7:了解Java的线程吗?简要叙述一下,然后写一个简单的Main方法,在里面启动另外一个线程。

        这里我给出详细的链接:http://hi.baidu.com/52113148087/item/fc77d5bd69586cd385dd794e

    然后在这里呢:我们写一个方法,然后里面给出相应启动线程的一个列子:

  

     // 先建立一个内部类

class MyThread extends Thread{

          public void run(){

              //这是线程要实现的这个run方法

         }

}

//建立一个main方法

           public static void main(String [] args){

                 new myThread().start();//启动线程

           }

}

8:叙述一下你心目中的Handler机制的原理。

 

一切只是为了充实自己!!stay hungry and stay foolish!!
原文地址:https://www.cnblogs.com/Catherine-Brain/p/3660619.html