2018最新大厂Android面试真题
前言
又到了金三银四的面试季,自己也不得不参与到这场战役中来,其实是从去年底就开始看,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虚拟机》,多看几遍。
大厂的面试流程比较长,面试是一场全面大考验,如果想换个工作,最好提前充分准备。
2018最新大厂Android面试真题的更多相关文章
- 秋招如何抱佛脚?2022最新大厂Java面试真题合集(附答案
2022秋招眼看着就要来了,但是离谱的是,很多同学最近才想起来还有秋招这回事,所以纷纷临时抱佛脚,问我有没有什么快速磨枪的方法, 我的回答是:有! 说起来,临阵磨枪没有比背八股文更靠谱的了,很多人对这 ...
- 2021年最新字节跳动Android面试真题解析
概述 时间过得是真TM快,回想自己是16年从学校毕业,现在是出来工作的第五个年头啦.在不同的大小公司都待过,就在前段时间顺利的完成了一次跳槽涨薪,面试了几家公司,最终选择了字节跳动.今特此前来跟大家进 ...
- 2019年6月份,阿里最新Java高频面试真题汇总,仅供参考(附福利)
目录 技术一面(23问) 技术二面(3大块) JAVA开发技术面试中可能问到的问题(17问) JAVA方向技术考察点(33快) 项目实战(7大块) 必会知识(48点) 面试小技巧 注意事项 1. 阿里 ...
- 【转】2019年7月份,阿里最新Java高频面试真题汇总
技术一面(23问)技术二面(3大块)JAVA开发技术面试中可能问到的问题(17问)JAVA方向技术考察点(33快)项目实战(7大块)必会知识(48点)面试小技巧注意事项1. 阿里技术一面 Java I ...
- 2020年!最全Android大厂面试真题合集(附答案)
这份Android面试真题涵盖了图片,网络和安全机制,网络,数据库,插件化.模块化.组件化.热修复.增量更新.Gradle,架构设计和设计模式,Android Framework .Android优秀 ...
- 面试系列二:精选大数据面试真题JVM专项-附答案详细解析
公众号(五分钟学大数据)已推出大数据面试系列文章-五分钟小面试,此系列文章将会深入研究各大厂笔面试真题,并根据笔面试题扩展相关的知识点,助力大家都能够成功入职大厂! 大数据笔面试系列文章分为两种类型: ...
- 大厂0距离:网易 Linux 运维工程师面试真题,内含答案
作为 Linux 运维工程师,进入大公司是开启职业新起点的关键,今天马哥 linux 运维及云计算智囊团的小伙伴特别分享了其在网易面试 Linux 运维及云计算工程师的题目和经历,希望对广大 Linu ...
- WEB前端面试真题 - 2000!大数的阶乘如何计算?
HTML5学堂-码匠:求某个数字的阶乘,很难吗?看上去这道题异常简单,却不曾想里面暗藏杀机,让不少前端面试的英雄好汉折戟沉沙. 面试真题题目 如何求"大数"的阶乘(如1000的阶乘 ...
- 分享13道上海尚学堂拿回来的Java面试真题,这些都是Java核心常见问题,想拿OFFER必看!
上海尚学堂Java培训学员参加面试带回来的真题,分享出来与大家,希望大家能认真地看看做一遍.后面有详细题解答案,对照下,看看自己做得怎么样,把这些面试遇到的真题全部掌握,做好面试笔试前的准备. 一.1 ...
随机推荐
- Taglist: Exuberant ctags (http://ctags.sf.net) not found in PATH. Plugin is not loaded
1 开发环境 Ubuntu16.04(64bit) 2 错误描述 安装好Vim的TagList插件后,打开Vim提示: 3 解决方法 根据参考资料[1]的提示,可知那是因为当前系统没有安装ctags导 ...
- redis lru实现策略
转载自http://blog.chinaunix.net/uid-20708886-id-5753422.html 在使用redis作为缓存的场景下,内存淘汰策略决定的redis的内存使用效率.在大部 ...
- Python常用模块——json & pickle
序列化模块 1.什么是序列化-------将原本的字典,列表等对象转换成一个字符串的过程就叫做序列化 2.序列化的目的 1.以某种存储形式使自定义对象持久化 2.将对象从一个地方传递到另一个地方 3. ...
- hdu 6086 -- Rikka with String(AC自动机 + 状压DP)
题目链接 Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, s ...
- Maven setting配置镜像仓库
国内Maven镜像仓库值得收藏 1.配置IDE构建的Maven存放目录(解压目录) 2.配置IDE的User setting file路径,修改setting配置文件 配置本地仓库 <!-- ...
- Java集合类常见面试知识点总结
微信公众号[Java技术江湖]一位阿里Java工程师的技术小站 Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾. 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java ...
- 可重入锁 & 不可重入锁
可重入锁指同一个线程可以再次获得之前已经获得的锁,避免产生死锁. Java中的可重入锁:synchronized 和 java.util.concurrent.locks.ReentrantLock. ...
- 基于redis的分布式ID生成器
基于redis的分布式ID生成器
- docker化java web应用
一.简介 Docker是一个使用Go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的机器上.Docker的发展速度和火爆程度着实令人惊叹,一 ...
- Docker安装(Debian8)-构建简单的SpringBoot应用
安装docker 1. 建立仓库 移除已安装的docker(docker以前被称为docker或者docker-enginer现在称为docker-ce) apt-get remove docker ...