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

目录
相关文章
|
4天前
|
Java Android开发
Android面试题经典之Glide取消加载以及线程池优化
Glide通过生命周期管理在`onStop`时暂停请求,`onDestroy`时取消请求,减少资源浪费。在`EngineJob`和`DecodeJob`中使用`cancel`方法标记任务并中断数据获取。当网络请求被取消时,`HttpUrlFetcher`的`cancel`方法设置标志,之后的数据获取会返回`null`,中断加载流程。Glide还使用定制的线程池,如AnimationExecutor、diskCacheExecutor、sourceExecutor和newUnlimitedSourceExecutor,其中某些禁止网络访问,并根据CPU核心数动态调整线程数。
14 2
|
18天前
|
ARouter IDE 开发工具
Android面试题之App的启动流程和启动速度优化
App启动流程概括: 当用户点击App图标,Launcher通过Binder IPC请求system_server启动Activity。system_server指示Zygote fork新进程,接着App进程向system_server申请启动Activity。经过Binder通信,Activity创建并回调生命周期方法。启动状态分为冷启动、温启动和热启动,其中冷启动耗时最长。优化技巧包括异步初始化、避免主线程I/O、类加载优化和简化布局。
32 3
Android面试题之App的启动流程和启动速度优化
|
19天前
|
安全 Java 编译器
Android面试题之Java 泛型和Kotlin泛型
**Java泛型是JDK5引入的特性,用于编译时类型检查和安全。泛型擦除会在运行时移除类型参数,用Object或边界类型替换。这导致几个限制:不能直接创建泛型实例,不能使用instanceof,泛型数组与协变冲突,以及在静态上下文中的限制。通配符如<?>用于增强灵活性,<? extends T>只读,<? super T>只写。面试题涉及泛型原理和擦除机制。
20 3
Android面试题之Java 泛型和Kotlin泛型
|
2天前
|
存储 安全 Java
Android面试题之ArrayList源码详解
ArrayList是Java中基于数组实现的列表,提供O(1)的索引访问,但插入和删除操作平均时间复杂度为O(n)。默认容量为10,当需要时会通过System.arraycopy扩容。允许存储null,非线程安全。面试常问:List是接口,ArrayList是其实现之一,推荐使用List接口编程以实现更好的灵活性。更多详情见[ArrayList源码](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/ArrayList.java#ArrayList.Node)。
9 2
|
3天前
|
Android开发
Android面试题经典之如何全局替换App的字体
在Android应用中替换字体有全局和局部方法。全局替换涉及在`Application`的`onCreate`中设置自定义字体,并创建新主题。局部替换则可在布局中通过`ResourcesCompat.getFont()`加载字体文件并应用于`TextView`。
15 2
|
4天前
|
算法 Java API
Android性能优化面试题经典之ANR的分析和优化
Android ANR发生于应用无法在限定时间内响应用户输入或完成操作。主要条件包括:输入超时(5秒)、广播超时(前台10秒/后台60秒)、服务超时及ContentProvider超时。常见原因有网络、数据库、文件操作、计算任务、UI渲染、锁等待、ContentProvider和BroadcastReceiver的不当使用。分析ANR可借助logcat和traces.txt。主线程执行生命周期回调、Service、BroadcastReceiver等,避免主线程耗时操作
18 3
|
12天前
|
缓存 网络协议 安全
Android网络面试题之Http基础和Http1.0的特点
**HTTP基础:GET和POST关键差异在于参数传递方式(GET在URL,POST在请求体),安全性(POST更安全),数据大小限制(POST无限制,GET有限制),速度(GET较快)及用途(GET用于获取,POST用于提交)。面试中常强调POST的安全性、数据量、数据类型支持及速度。HTTP 1.0引入了POST和HEAD方法,支持多种数据格式和缓存,但每个请求需新建TCP连接。**
22 5
|
9天前
|
SQL XML Java
Android 这 13 道 ContentProvider 面试题,你都会了吗?
Android 这 13 道 ContentProvider 面试题,你都会了吗?
|
9天前
|
安全 Android开发 Kotlin
Android面试题之Kotlin协程并发问题和互斥锁
Kotlin的协程提供轻量级并发解决方案,如`kotlinx.coroutines`库。`Mutex`用于同步,确保单个协程访问共享资源。示例展示了`withLock()`、`lock()`、`unlock()`和`tryLock()`的用法,这些方法帮助在协程中实现线程安全,防止数据竞争。
13 1
|
10天前
|
安全 网络协议 算法
Android网络基础面试题之HTTPS的工作流程和原理
HTTPS简述 HTTPS基于TCP 443端口,通过CA证书确保服务器身份,使用DH算法协商对称密钥进行加密通信。流程包括TCP握手、证书验证(公钥解密,哈希对比)和数据加密传输(随机数加密,预主密钥,对称加密)。特点是安全但慢,易受特定攻击,且依赖可信的CA。每次请求可能复用Session ID以减少握手。
17 2