Android面试二三事儿

最近开始接触Android方面的面试,收到Hr推荐过来的一份简历,看过之后大喜,工作技能完全符合要求,从事同样的产品开发(从竞品那里找来的)。技能水平里的描述如下

个人技能:
(1) 有良好的JAVA基础,熟练掌握面向对象思想。
(2) 熟练使用集合、IO流及多线程。
(3) 熟练掌握Android四大组件,常用的布局文件,自定义控件等。
(4) 熟悉掌握ListView的优化及异步任务加载网络数据。
(5) 熟悉XML/JSON解析数据,以及数据存储方式。
(6) 精通Android下的Handler机制,并能熟练使用。
(7) 熟悉图片的缓存技术,并且能够对图片的优化进行相应的处理。
(8) 掌握OOM异常的处理,并可以对应用进行相应的优化。
(9) 熟悉Android中的动画,选择器,样式和主题的使用。
(10) 熟悉Android系统下消息推送机制。
(11) 熟悉掌握各种常见的设计模式。
(12) 熟悉UML设计,可以设计程序的用例图、类图、活动图等。
(13) 有丰富的屏幕适配经验,对Fragment操作熟练。
(14) 对OAuth2认证有一定的了解。
(15) 对Android底层有一定的认识,研究过相关的Android源码。
(16) 对Activity、Window和View三者间的关系有一定的见解。
(17) 熟悉Android的JNI/NDK 开发。
(18) 能够使用英语进行口语交流。

应聘者是2014年7月的本科毕业生,到现在(2016.2)的工作经验为18个月,如果对Android 的理解能如上面描述的那样,这样的Android开发是相对的出色,自己瞬间增加许多压力,想想要认真准备下面试内容。

针对技能描述里的内容,准备了以下几个问题

1.Handler 和 Looper 的实现机制是怎么样的?//针对第6点,谁让人家是精通这点呢,想着我要趁机会好好学习下

2.简单描述下自定义控件的事件分发流程。//熟练掌握自定义控件,滑动事件,点击事件分发总会遇到吧,不然怎么解决事件冲突呢?

3.简单阐述下Activity,Window和View的关系。//我就是想知道 ‘有一定见解‘是什么见解

4.业务逻辑相关,如何进行核心模块的逻辑切换(具体不表)?

5.开发过程中有没有主导或者参与技术攻关,做了哪些技术难点的调研,有什么样的解决方案?//主要想了解下技术研究的能力,学习能力,解决问题能力。

其他的性能优化啊,内存泄露啊,框架设计啊,这些准备看面试情况发挥下。

面试开始,还没到我们(我和老大)怎么开口,就开始分析我们的app

首页这里,用的是自定义view,一个个绘制上去,底部的Menu,使用的Popup window ,底部的导航条,使用的LinearLayout,里面放的图片,设置个背景......

听到这些评论,基本没有靠谱的,你就是简单的研究下,做个竞品分析,使用DDMS 看下,也不会错的这么离谱啊。

忍不住打断,问了下一个问题

你们App 首页数据更新逻辑是怎么样的?

数据更新与View显示本身的逻辑不复杂,但由于首页内容较多,如何做到数据更新,内容展示的最佳效果,不影响启动速度,显示之后的UI滑动卡顿,这些可都是有难度的问题,我们特意为此发布一个版本优化。

他的回答我也是无言以对

启动之后发送网络请求,然后将请求的数据显示出来

这时我就发觉,简历的描述和实际能力严重不符,开始询问一些常规的业务问题

平常的开发过程中,主要负责哪些模块?

'主要做一些UI绘制相关的东西,现在正在做二维码扫描,添加闪光灯功能,功能已经做好了,还没添加上去'

最后又简单介绍了我们现有团队的基本情况,面试基本告一段落。

通过这次面试,发现简历书写中的两个突出问题。

1.简历内容要简洁明了,突出重点

2.不要轻易写 精通 两个字

最后希望大家都能找到一份满意的工作,我也要回家整理我的简历了o(╯□╰)o。

转自:简书

http://www.jianshu.com/p/8c4d050eba7e

时间: 2024-08-02 00:06:47

Android面试二三事儿的相关文章

Android面试之高级篇

结合自己之前去很多大公司的面试经历和自己面别人的一些题,这里做一些总结,Android面试中常见的面试题. 1,Android的Handler运行机制     要解释Handler的运行机制就要讲几个对象:Message.Handler.Message Queue.Looper.Handler获取当前线程中的looper对象,looper用来从存放Message的   MessageQueue中取出Message,再有Handler进行Message的分发和处理. Message Queue(消

android面试题-android面试问题 android中 HTTP 和webservice 哪个通信好

问题描述 android面试问题 android中 HTTP 和webservice 哪个通信好 RT Http和Webservice各有什么特点 有木有demo什么的 解决方案 首先,这个问题问的是否明确? 1.HTTP是一种通讯协议,Webservice是一组自包含的web服务,可以理解成一套Web服务开放出来的一组服务接口. 2.在Android中可以使用HTTP通信进行网络请求,而HTTP请求的目的就是调用某个服务开放出来的接口

营销教程:新虫友必须知道的虫软二三事儿

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 很多新的虫虫营销助手的朋友 (简称虫友)拿到软件后,不知道要干些什么,总天真的以为软件嘛不就那回事嘛,肯定拿到就会用.然而在收到虫软加密狗的那一刻心情甭提有多兴奋了,插上加 密狗之后,打开软件,就开始直接发外链,然后在看到那叫人沮丧成功率,顿时就傻眼了.然后就开始在群里质问,这是什么软件,是人用的吗?成功率这么低的, 杯具,早知道不买了.本人

android 面试之listview

ListView优化一直是一个老生常谈的问题,不管是面试还是平常的开发中,ListView永远不会被忽略掉,那么这篇文章我们来看看如何最大化的优化ListView的性能.· 1.在adapter中的getView方法中尽量少使用逻辑· 2.尽最大可能避免GC· 3.滑动的时候不加载图片· 4.将ListView的scrollingCache和animateCache设置为false· 5.item的布局层级越烧越好· 6.使用ViewHolder1.在adapter中的getView方法中尽量少

Android 面试精华题目总结

下面的题目都是楼主在android交流群大家面试时遇到的,如果大家有好的题目或者好的见解欢迎分享,楼主将长期维护此帖. 某公司高级面试题(2015-03-14)[感谢helder分享] 1.详述Android系统架构,包括层与层之间调用.binder.jni.底层文件读写方法 2.描述自己的一个项目,要求画出结构图,UML图,详细描述项目种的技术点,技术难点以及解决方案 3.一道算法 4.谈谈自己项目管理的方法.对敏捷软件开发的理解 基础面试题(2014-04-18) 1.请解释下在单线程模型中

android面试手册

1. Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念.2.sim卡的EF 文件有何作用sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本 身可以有自己的操作系统,EF就是作存储并和手机通讯用的3.嵌入式操作系统内存管理有哪几种, 各有何特性页式,段式,段页,用到

Android面试笔记之常问的Context_Android

前言 Context,在翻译为上下文,也可以理解为环境,是提供一些程序的运行环境基础信息.基本上在开发项目的时候,时刻都有接触到.Android程序不像Java程序,随便创建一个类,写个main()方法就能跑,而是要有一个完整的Android工程环境,在这个环境下,有像Activity.Service.BroadcastReceiver等系统组件,而这些组件并不是像一个普通的Java对象new一下就能创建实例的了,而是要有它们各自的上下文环境,也就是Context.可以说Context是维持An

Android面试笔记之常问的Context

前言 Context,在翻译为上下文,也可以理解为环境,是提供一些程序的运行环境基础信息.基本上在开发项目的时候,时刻都有接触到.Android程序不像Java程序,随便创建一个类,写个main()方法就能跑,而是要有一个完整的Android工程环境,在这个环境下,有像Activity.Service.BroadcastReceiver等系统组件,而这些组件并不是像一个普通的Java对象new一下就能创建实例的了,而是要有它们各自的上下文环境,也就是Context.可以说Context是维持An

Spark UDF变长参数的二三事儿

在复杂业务逻辑中,我们经常会用到Spark的UDF,当一个UDF需要传入多列的内容并进行处理时,UDF的传参该怎么做呢? 下面通过变长参数引出,逐一介绍三种可行方法以及一些不可行的尝试... 引子 变长参数对于我们来说并不陌生,在Java里我们这么写 public void varArgs(String... args)  在Scala里我们这么写 def varArgs(cols: String*): String  而在Spark里,很多时候我们有自己的业务逻辑,现成的functions满足