Android开发工程师面试心得

   今天是第一次面试,面试的是长沙一家规模并不是很大的一家公司。因为这公司有一个Android项目急需人手,抱着试一把的心态懵懵懂懂的来到了面试现场。
   面试官是三位,两位老总一位主管,在等待面试的间隙,心里很忐忑,可能是对自己的技术不是很有信心吧。因为公司非常有针对性,只是希望招聘Android方面的开发师,恰好自己的Android知识相对的缺乏一点。
   我是第二个进入面试室的,一站在面试官面前,随着聊天的深入,紧张感慢慢的消除了很多。刚入座是自我介绍。把自己的基本信息介绍了一遍,这不是重点。
   慢慢的面试官开始往技术方面问答,技术方面其实主要分为几大块,一是Android基本知识,二是网络交互方面。
      Android:
     问题一:介绍自己之前做的一个音乐播放器。
    音乐播放器在技术上是集中在Activity方面,其中一个问题是:怎么处理界面混乱的情况,当时可能确实也是没怎么接触,心里又有稍许紧张,感觉对这个问题回答的不是很好,最后还是由面试官提醒的是由ActivityManager这一个类来处理的。
     问题二:五大布局中FrameLayout和TableLayout的使用。
   这两个布局是自己平时最少用的,当时自己只能顺着自己的感觉说了点,也不知道说的对不对。
    问题三:Android四大天王用的最多的是哪一个?怎么用的?
       我当时回答的是,从使用的最多的这一方面来说,肯定要属Activity了,因为只要涉及到Android开发,基本都得涉及到Activity的使用。至于怎么用的,考官的具体又深入到自定义组件的使用。这个我倒是可以说一说,因为之前也做过一些自定义适配器的使用,以及一些自定义按钮的美化。
     问题四:Android数据存储的四种方式了解吗?
    这个问题对于我来说可能是最陌生的一个问题。因为当时可能没有理解考官问问题的意思,理解错误了。所以到最后也没有答出来。
   现在来回答这个问题吧。Android系统一共提供了四种数据存储方式。分别是:SharePreference、SQLite、Content Provider和File。由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共享,正确方式是使用Content Provider。
   SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。
   SharedPreference: 除SQLite数据库外,另一种常用的数据存储方式,其本质就是一个xml文件,常用于存储较简单的参数设置。
   File: 即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
    ContentProvider: Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个Content Provider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用Content Provider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。

  网络交互:
    问题一:音乐播放器下拉刷新从网络上获取歌曲怎么实现?
    这个问题也是比较头疼的,就目前的情况来说,我自己的情况确实还没有好好掌握这一知识点。其实ActionBar-PullToRefresh提供了一种简单的方法来在您的应用程序中添加实现一个现代版的下拉来刷新交互。
     问题二:解析XML和json对象的区别?
      这个区别直观的来说,json对象会简单一点。json是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于Javascript Programming Language。而xml实质上其实就是符合了很多规范的txt文件。在解析上相较json而言,更有难度,也比较容易缺损文件。

   以上就是这次面试的一些基本问题,还有一些技术之外的问题,比如现在Android的最新版本是多少?现在最新的版本是4.4。由谷歌推出,但是没有开发布会,所以考官问这个问题是想了解你对该方面的关注度吧!

   总结一下吧,这次面试因为该公司比较有针对性,所以关于技术问题都集中在Android方面。就自己而言,确实这方面的基础知识还不是太牢靠,像五大布局,四大天王等方面自己只注重了平常自己用的知识,像用的比较少的方面,FramLayout和TableLayout,以及BroadCast Recevicer/Content  provider的使用则缺少了一个明确的了解。所以今后还是得加强基础知识的加强。这次算是一次历练吧,从好的方面想,毕竟现在还只是大三第一学期,以后的机会还很多。不过,从紧迫感来说,确实时间也很紧迫了,明年有实习了。
   加油!任重道远.......

猜你喜欢

转载自326301045.iteye.com/blog/1997471