Android面试题,了解一下?

作者:流船 地址:https://www.jianshu.com/p/b62e23a75d36 声明:本文是流船原创,未经原作者允许请勿转载

前言

又到了金三银四的面试季,自己也不得不参与到这场战役中来,其实是从去年底就开始看,android的好机会确实不太多,但也还好,3年+的android开发经历还是有一些面试机会的,不过确实不像几年前门槛那么低了,总的体会就是小的创业公司比较注重你的项目经历是否和自己的贴合,直接能过来独当一面。大厂除了看中项目经历外,还比较注重你知识面的广度,是广度、深度和解决方案等多方面的考察,平时够工作要好好积累临时刷题只聊点皮毛估计是过不了关的。

下面就总结一些遇到的题目,各种风格的都有。这里先列举问题。

面试真题

又坐标hz,各厂名字字母表示,自己猜。本题目整理不保证你会遇到相同的问题,根据岗位和面试官本身情况,问题可能差别很大,比如有做中间件的同学被问到热修复的细节等等。总体说来阿里的面试是很正规的,从android基础到一定程度的理解总结性问题,然后回到java基础及原理,主要着重问简历上的,或从简历出发发散问题,问题会由表及里逐渐深入,很考察对你负责的项目的理解和其中用到知识原理。因为是凭着记忆后记的,以下问题不分先后。这里按岗位来分类,能有个渐进的感觉。

一.

tb:电面一

  • dp是什么,sp呢,有什么区别
  • 自定义View,ViewGroup注意那些回调?
  • 界面卡顿的原因以及解决方法
  • android中的存储类型
  • service用过么,基本调用方法
  • Handler机制
  • LinearLayout、FrameLayout、RelativeLayout性能对比,为什么
  • Activity的生命周期,finish调用后其他生命周期还会走么?
  • FW层熟悉么,源码看过么
  • GC回收机制熟悉么,分代算法知道么
  • Java的类类加载原理
  • 内存泄漏如何排查,MAT分析方法以及原理,各种泄漏的原因是什么比如
  • Handler为什么会泄漏
  • gradle熟悉么,自动打包知道么
  • 介绍下先的app架构和通信
  • 自己负责过哪些模块,跟同事相比自己的优势是什么
  • 遇到过什么印象深刻的问题,怎么解决的

现场面试:三场 First:

  • 最近都做了哪些工作?
  • 遇到了什么印象深刻的问题。A:会顺着你介绍的项目问下具体实现。
  • 推送消息有富文本么?
  • 热修复了解么,用的什么?
  • apk包大小有限制么?怎么减少包大小?
  • 工作中有没有用过或者写过什么工具?脚本,插件等等
  • 比如:多人协同开发可能对一些相同资源都各自放了一份,有没有方法自动检测这种重复之类的
  • 写过native的底层代码么
  • view的绘制熟悉么,介绍下
  • gc相关的算法
  • anr是因为什么产生的,怎么排查
  • 界面上的话,有什么优化措施么?比如列表展示之类的,平时遇到过内存问题吗,怎么优化的?
  • 平时用过哪些设计模式?

Second:

  • 介绍下最近一年主要做了什么工作
  • 会对简历上突出的技能进行详情的询问: 比如:音频合成的具体步骤,以及遇到的一些问题和细节处理。 会根据面试发散一些问题,问到,seek方法播放到末尾后重新播放会有一些卡顿的不流畅问题,怎么避免,从交互设计或者技术角度。(个人表示没怎么关注这种)。
  • 项目团队多少人,怎么分配工作
  • 线程之间怎么通信的?
  • app的架构是怎么样的,并且为什么这样,有什么优缺点?
  • 算法熟悉么?给了一个二叉排序树,出了一个给定节点找到它的下一个元素(指的是大小顺序的下一个)的算法题。
  • 为什么找工作,自己的优势是什么

Third: 技术问题不再局限于简历,可能根据简历和回答情况渐进并扩散。

感觉各个技术面试官之前并没有沟通,可能会问到类似的问题

  • 介绍下自己主要负责的工作
  • Activity的生命周期有哪些,知道onRestart么,介绍下
  • savedInstanceState知道么,干什么用的,什么时候有值,什么时候为空,平时是怎么用的
  • View绘制熟悉么,介绍下,能说下是实现原理么?
  • 平时用过什么开发工具,分析工具?
  • ANR是怎么回事?怎么查?Service会引起ANR么?
  • Activity的启动模式有哪些?栈里是A-B-C,先想直接到A,BC都清理掉,有几种方法可以做到?这几种方法产生的结果是有几个A的实例?
  • 有什么工具可以看到Activity栈信息么?多个栈话,有方法分别得到各个栈的Activity列表么
  • 都熟悉哪些命令?知道怎么用命令启动一个Activity么?
  • SharedPrefrences的apply和commit有什么区别
  • java里带$的函数见过么,是什么意思
  • MD5是加密方法么,Base64呢
  • 有博客和github,主要是写的什么?有哪些关注
  • android 8.0 有哪些新特性

差不多就这些吧。。最后每个面试官都会让你问他问题。

二.

  • glide缓存策略?同一个图片跟size有关么
  • android中的动画有哪些
  • View事件传递机制
  • 界面卡顿怎么排查和优化?
  • Fragment的replace和end??的区别?
  • MVP,MVVM,MVC解释和实践
  • 项目之外的,对技术的见解,拓展知识

二面:

  • 微信跳一跳外挂怎么实现,检测怎么做的?
  • 一张纯色背景下怎么有效检测各个矩形?
  • 对接的so算法了解么,有接触过相关的库么?
  • 三个算法题选一个并写出测试用例:打印n-m之间所有的素数;计算n-m之间1出现的次数;指定数字序列的排序;
  • android api层的源码熟悉哪些?解释一下
  • ACTION_CANCEL什么时候触发,触摸button然后滑动到外部抬起会触发点击事件吗,在+ + 滑动回去抬起会么
  • 怎么处理嵌套View的滑动冲突问题
  • 热修复相关的原理,框架熟悉么
  • gradle打包流程熟悉么
  • 任意提问环节:其实可以问之前面试中遇到的问题:比如,多模块开发的时候不同的负责人可能会引入重复资源,相同的字符串,相同的icon等但是文件名并不一样,怎样去重?

三.

NetBase:

  • Canvas的底层机制,绘制框架,硬件加速是什么原理,canvas lock的缓冲区是怎么回事
  • surfaceview, suface,surfacetexure等相关的,以及底层原理
  • android文件存储,各版本存储位置的权限控制的演进,外部存储,内部存储
  • 上层业务activity和fragment的遇到什么坑??页面展示上的一些坑和优化经验
  • 网络请求的开源框架:OKHttp介绍,写过拦截器么

四.

Netbase:AI

  • 数据层有统一的管理么,数据缓存是怎么做的,http请求等有提供统一管理么?
  • 有用什么模式么,逻辑什么的都在Activity层?怎么分离的
  • 如果用了一些解耦的策略,怎么管理生命周期的?
  • 有什么提高编译速度的方法?
  • 对应用里的线程有做统一管理么?
  • jni的算法提供都是主线程的?是不是想问服务类的啊
  • 边沿检测用的啥?深度学习相关的有了解么?
  • 上线后的app性能分析检测有做么

五.

yz:

  • 进程间通信方式?Binder的构成有几部分?
  • HttpClient和HttpConnection的区别
  • View的事件传递机制
  • MVC,MVP,MVVM分别是什么?
  • Android中常用的设计模式,说三个比较高级的?
  • 内存优化,OOM的原因和排查方法
  • 想改变listview的高度,怎么做
  • Https是怎么回事?
  • 除了日常开发,其他有做过什么工作?比如持续化集成,自动化测试等等

六.

DiDi:比较全面

  • ActivityA跳转ActivityB然后B按back返回A,各自的生命周期顺序,A与B均不透明。
  • Synchronize关键字后面跟类或者对象有什么不同。
  • 单例的DCL方式下,那个单例的私有变量要不要加volatile关键字,这个关键字有什么用
  • JVM的引用树,什么变量能作为GCRoot?GC垃圾回收的几种方法
  • ThreadLocal是什么?Looper中的消息死循环为什么没有ANR?
  • Android中main方法入口在哪里
  • jdk1.5?SparseArray和ArrayMap各自的数据结构,前者的查找是怎么
  • 实现的,与HashMap的区别
  • Runnable与Callable、Future、FutureTask的区别,AsyncTask用到哪个?AsyncTask是顺序执行么,for循环中执行200次new AsyncTask并execute,会有异常吗
  • IntentService生命周期是怎样的,使用场合等
  • RecyclerView和ListView有什么区别?局部刷新?前者使用时多重type场景下怎么避免滑动卡顿。懒加载怎么实现,怎么优化滑动体验。
  • SQLite的数据库升级用过么
  • 开放问题:如果提高启动速度,设计一个延迟加载框架或者sdk的方法和注意的问题。
  • Scroller有什么方法,怎么使用的。
  • 分享下项目中遇到的问题
  • webwiew了解?怎么实现和javascript的通信?相互双方的通信。@JavascriptInterface在?版本有bug,除了这个还有其他调用android方法的方案吗?
  • ReactiveNative了解多少
  • JNI和NDK熟悉么?Java和C方法之前的相互调用怎么做?

几点建议

1.简历要如实写,相关的知识点一定要烂熟于心。 2.基础扎实,android和java相关的知识树网上有很多资料,看过但让你讲出来未必能说的好。 3.提前总结,你还擅长什么其他技术?这种开放问题要看知识面了。 4.学会提问,你有什么问题要问我吗?这种礼貌性问题也是一个了解对方的好机会。 5.良好的心里素质,无论遇到什么情况,面试官迟到、面试官态度冰冷说话不客气、质疑你的回答等等各种问题都不要慌也不要排斥,一定要沉住气,耐心积极的思考并回答对方的提问。 6.推荐几本书,也是好几次面试后发现里面涵盖了大部分答案。《Android开发艺术探索》《Android源码设计模式-解析与实战》《Android进阶之光》《深入理解Java虚拟机》,多看几遍。

大厂的面试流程比较长,面试是一场全面大考验,如果想换个工作,最好提前充分准备。

原文发布于微信公众号 - 刘望舒(liuwangshuAndroid)

原文发表时间:2018-04-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信终端开发团队的专栏

关于Android N的那些事

今年3月,Google破天荒提前半年发布了Android N开发者预览版。当然,作为一个不合格的谷粉并没有第一时间体验安装,因为至今仍然能够回忆起来去年今日此门...

3026
来自专栏北京马哥教育

Linux 内核学习经验总结

学习内核,每个人都有自己的学习方法,仁者见仁智者见智。以下是我在学习过程中总结出来的东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下。

6952
来自专栏帘卷西风的专栏

开源CEGUI编辑器之二(MFC重写的ImagesetEditor)

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)

1031
来自专栏我和PYTHON有个约会

大牧夜话——爬虫篇-预告片PYTHON爬虫-江湖夜话

应大家的要求,最近打算整理一下PYTHON爬虫的东东,希望能对入门的童鞋们有所助益!本人技术一般水平有限,如有不妥请联系或者私信本人,互相进步。 内容会同步在...

992
来自专栏编舟记

架构整洁之道导读(三)

上回说到组件聚合,反映的是组件内部的“基本元素”的选择标准。第14章介绍的组件耦合则是指组件和组件之间的关系,这些依赖关系有些是好的,有些是不好的,我们即将看到...

1543
来自专栏WeTest质量开放平台团队的专栏

国庆长假综合症?云真机新功能让你迅速重回高效测试状态

可是,假期远去,日子还得照样过,为了让技术人员在国庆假期结束后能够加快测试效率,WeTest开发人员,在长假期间中开发了一个新功能——云真机键盘输入。

1064
来自专栏码神联盟

高效编程所需要做的那点事

聊聊如果才能高效编程 计划(Plan) 所谓Plan,其实就是对应于编程中的设计阶段,当然,这里的Plan并不像设计那样重量级。它要求我们程序员在正式...

2839
来自专栏杨建荣的学习笔记

运维平台元数据稽核小结

数据库运维中的元数据建设都是重中之重,如果元数据不具有参考的价值,那么后续的操作都会受到影响,但是元数据的建设也应该是分成几个步子来走,首先得能够收集到元数...

1474
来自专栏ytkah

微信整人游戏高级版 友谊的小船真会翻【微信高级教程5】

  虽然愚人节已经过去好长一段时间了,但好友之间的整蛊游戏不会就这样结束。看好了,微信整人游戏高级版来了:在微信任意聊天窗口输入 //fullexit ,相当于...

37514
来自专栏Python爬虫与数据挖掘

用代码向90后逝去的青春致敬

前段时间,腾讯宣布停止乐斗Ⅱ和QQ宠物的运营,然后就订阅号里就被各种回忆杀的推文刷屏了。今天也来称蹭一下"热点",虽然有点晚。

951

扫码关注云+社区

领取腾讯云代金券