android面试中常会问到的问题总结

1、android中主要用到的几种设计模式:

(1)模板模式

如Activity,每次新建一个Activity时都会覆盖onCreate(),onStart()方法等,这些方法在父类中就相当于一个模板。

(2)观察者模式

Listener相当于一个观察者,对一些事件的响应都进项观察,当发现有响应就进行相应的处理。

(3)单例模式(目的:希望对象只创建一个实例,并且提供一个全局的访问点。)

Application

(4)适配器模式(相当于现实生活中的插头)

BaseAdapter、SimpleAdapter

(5)工厂模式(创建位图)

BitmapFactory.decodeResource();BitmapFactory相当于位图工厂。

(6)代理模式

android系统中利用AIDL定义一种远程服务时就需要用到代理模式。

2、android的四大组件

Activity、Service、Broadcast Receiver、content provider

3、自定义控件的步骤

(1)定义一个Class继承于系统View;

(2)在xml中配置layout布局文件;

(3)重写父类的一些方法,如onMeasure、onDraw、onLayout等;

(4)在程序中应用自定义的View;

4、onMeasure、onDraw、onLayout的作用

onMeasure()用来设置视图的大小,即视图的宽度和高度;

onLayout(),layout操作用于设置视图在屏幕中显示的位置。onLayout(),在view中这个函数什么都不做,为viewgroup类型布局子视图用;

onDraw(),draw操作利用前面两部分得到的参数,将视图显示在屏幕上。

(1)绘制背景;

(2)绘制视图本身,调用ondraw()方法;

(3)绘制子视图,dispatchDraw()容器类会用到这种方法;

(4)绘制滚动条。

5、Activity的生命周期

(1)启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。

(2)当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。

(3)当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。

(4)当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。

(5)用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

(6)当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。

(7)用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。

6、Handler机制原理

发送消息和处理消息

7、 GC内存泄露

出现情况: 
(1)数据库的cursor没有关闭 
(2)构造adapter时,没有使用缓存contentview 
   衍生listview的优化问题-----减少创建view的对象,充分使用contentview,可以使用一静态类来优化处理getview的过程/ 
(3)Bitmap对象不使用时采用recycle()释放内存 
(4)activity中的对象的生命周期大于activity 
调试方法: DDMS==> HEAPSZIE==>dataobject==>[Total Size]

8、什么是ANR 如何避免它

ANR:Application Not Responding,五秒

在Android中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应。当出现下列情况时,Android就会显示ANR对话框了:

  对输入事件(如按键、触摸屏事件)的响应超过5秒

  意向接受器(intentReceiver)超过10秒钟仍未执行完毕

  Android应用程序完全运行在一个独立的线程中(例如main)。这就意味着,任何在主线程中运行的,需要消耗大量时间的操作都会引发ANR。因为此时,你的应用程序已经没有机会去响应输入事件和意向广播(Intent broadcast)。

因此,任何运行在主线程中的方法,都要尽可能的只做少量的工作。特别是活动生命周期中的重要方法如onCreate()和 onResume()等更应如此。潜在的比较耗时的操作,如访问网络和数据库;或者是开销很大的计算,比如改变位图的大小,需要在一个单独的子线程中完成(或者是使用异步请求,如数据库操作)。但这并不意味着你的主线程需要进入阻塞状态已等待子线程结束  -- 也不需要调用Therad.wait()或者Thread.sleep()方法。取而代之的是,主线程为子线程提供一个句柄(Handler),让子线程在即将结束的时候调用它(xing:可以参看Snake的例子,这种方法与以前我们所接触的有所不同)。使用这种方法涉及你的应用程序,能够保证你的程序对输入保持良好的响应,从而避免因为输入事件超过5秒钟不被处理而产生的ANR。这种实践需要应用到所有显示用户界面的线程,因为他们都面临着同样的超时问题。

9、listview如何优化(这个很重要,多次被问到)
(1)分页加载
(2)convertView缓存
(3)viewHolder
(4)scrollListener,记住滑动的状态

10、Activity的四种启动模式

(1)standard

模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。

(2)singleTop

如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。

(3)singleTask

如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。

(4)singleInstance

在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。

时间: 2024-10-14 19:47:36

android面试中常会问到的问题总结的相关文章

【PHP面试题】通俗易懂的两个面试必问的排序算法讲解:冒泡排序和快速排序

又到了金三银四找工作的时间,相信很多开发者都在找工作或者准备着找工作了.一般应对面试,我们无可厚非的去刷下面试题.对于PHPer来说,除了要熟悉自己所做的项目,还有懂的基本的算法.下面来分享下PHP面试中常会问到的算法:冒泡排序和快速排序 冒泡排序:一一对比排序 基本思想: 重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小)错误就把他们交换过来.走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成. 图解: 1.第一次:拿着数组的第一个元素

我的android 面试之路(五:同学你有什么想问的么?)

同学你有还什么想问的么? 好吧 排版问题 还是强调一下我不喜欢用标点符号(, .) 这样很纯净 我喜欢 看到题目好搞笑 可是几乎每个面试者都遇到过 也知道这意味着什么 一般情况下 技术面如果遇到这句话 那应该是木有戏了 这时大致面试官已经问完技术问题 开始失去耐心 开始唠(kan)家(da)常(shan) 你家哪的 有木有意向考研 有木有....balabalabala 但是如果已经进入了终面 开始和hr唠家常的时候 有些问题就不是随意问的了 有些问题对于hr来讲 在你身上是要扣分的(有家公司是

转:Android面试

http://blog.csdn.net/singwhatiwanna/article/details/49230997 可以说是对android知识的总结,列在这里了.上面的博文地址里有详细介绍,感兴趣可以仔细阅读. 基本知识点.深入知识点.基本知识点的细节和系统核心机制. 1. 基本知识点 比如四大组件如何使用.如何创建Service.如何进行布局等.这类知识是需要熟练掌握的,并且也没什么难度. 2. 稍微深入的知识点 比如AIDL.Binder.多进程.View的绘制流程.事件分发.消息队

android面试感言

面试了几乎所有国内的稍大点的互联网公司(百度.**.阿里.金山.小米.360.美团.去哪.网易.搜狐等等吧).国企.电商(万达电商).还有些小公司.安全类(360)的等等吧,上面都是我一点点整理出来的,希望大家认真的把每一个题弄懂,你去面试任何一家公司,我认为都是没有问题的.说几个点,注意一下. 1.数据结构和算法 一般情况下,工作中是用不到的,但是就是问,每个公司都问,而且有的公司还问的特别深,还让你手写代码.我觉得这个确实有点恶心,我个人也是很讨厌算法的,但是真是没办法,人家就问,你说怎么办

我的android 面试之路(四:惊吓)

生活中充满惊吓 上一秒还是乌云密布 回头看却海阔天空 生活中充满惊吓 上一秒乌云密布 回头看 却海阔天空 恭喜自己了 今天下午收到了offer 北京 待遇也很好 凭自己的好运气能得到这样一个offer是非常开心的 我最终还是找到了android的工作 上午也是比较心急吧 旁边的朋友收到了offer 自己也比较上火 但是下午hr给我打电话的一刻 真的吓到了 感觉一切努力就为了这一刻一样 总之 我爱这个世界 说到惊吓 面试官总喜欢吓人 这个是我目前的经历里感受到的 有些人很和蔼 但是也会吓人! 吓人

我的android 面试之路(一:写在前面)

就是那么的随意 又像是不经意的刻意 我热爱移动互联网 像标题一样 随意又像是刻意 总之我很喜欢 尤其当自己的app真正部署到手机上的时候 那种感觉 倍爽!写这个博客也是一样 随意或是故意 我也分不清 没有坏处 我想坚持罢了 so 就这样开始了 我是2015届的应届毕业生 说起这个 就想到这几天面试的时候 无论是几面 面试官上来都会劈头盖脸的说 介绍下你自己吧 - - “您好 我是黑龙江大学的学生 现在大四 是2015届的应届毕业生” “接触编程这件事 还是我初中的时候”  此时面试官会把眼神从简

Android面试题目2

1. 请描述下Activity的声明周期. onCreate->onStart->onRemuse->onPause->onStop->onRestart->onDestroy 2. 如果后台的Activity由于某种原因被系统回收,如何在回收之前保存当前状态.onSaveInstanceState().程序中的某一个Activity A 在运行时,主动或被动的运行另一个新的Activity B,这个时候A会执行onSaveInstanceState().B完成以后又回

今天的android面试总结

今天早上去一家公司面试android开发,现在总结一下 首先,这家公司没有笔试环节,而是直接和技术面试官面谈.面试官问我有没有带简历,我说没带.然后他就叫我等一下,估计是打印我的简历去了. 不一会,一共两位技术面试官进来,其中一个进来后直接叫我把我的项目作品展示给他看,连自我介绍都不用了.够直接,好,那我就打开我的应用给他看 他就针对这个项目说你这个是怎么实现的,那个又是怎么实现的.我就说这个是用viewpager,那个是用slidingmenu什么的..他还问到你这个图片加载是怎么实现的,我说

android面试

http://www.apkbus.com/android-115989-1-1.html 面试的几个回答技巧 http://blog.sina.com.cn/s/blog_ad991b1601018mjc.html 2013-5-9号补充:今天最新的腾讯面试题.应该说是全部面试中最难的.我个人感觉.并且是个女面试官.好嗨皮啊,哈哈. 腾讯面试题 1.int a = 1; int result = a+++3<<2; 2.int a = 2; int result = (a++ > 2)