2020-2021最新Android面试题

在跟大家介绍面试题和面试经验之前,我先简单介绍一下我自己

接触Android已经4年,之前在遇到一些技术上的问题的时候,经常在百度上面搜索解决办法,一些大佬会把自己遇到的问题分享出来给我们一些参考和解决方案,在这里由衷感谢大佬们的分享,于是我便萌生了分享一下自己知识的一些想法,来帮助大家。

随着时间的流逝,很多人说互联网这一块前景已经不好了,随着互联网红利期的过去,Android开发进入了平稳发育期,砸钱的时代已经过去,因为前两年红利期还没过去的影响,还是有一大批人进军互联网,人多了,自然就不好做了,这点我深有体会。

2020.05月,本人离职(此时4年工作经验,深圳就职),开始试水安卓市场,寻求一份合适自己,稳定的中大型公司。投了很多公司,面试机会并不是我想象中的那么多,即时面试过程顺利,也没有获得offer(候选人太多太多)。不过借此机会,前前后后我面了10家公司,现在就把我遇到的面试题,并且提供一些面试技巧给各位即将面试的同志们。

OK,进入主题,请看Android知识图谱。

 

面试,无非都是问上面这些问题(挺多的 - -!),聘请中高级的安卓开发会往深的去问,并且会问一延伸

二 ,以下我先提出几点重点,是面试官基本必问的问题,请一定要去了解!

基础知识 – 四大组件(生命周期,使用场景,如何启动)
java基础 – 数据结构,线程,mvc框架
通信 – 网络连接(HttpClient,HttpUrlConnetion),Socket
数据持久化 – SQLite,SharedPreferences,ContentProvider
性能优化 – 布局优化,内存优化,电量优化
安全 – 数据加密,代码混淆,WebView/Js调用,https
UI– 动画
其他 – JNI,AIDL,Handler,Intent等
开源框架 – Volley,Gilde,RxJava等(简历上写你会的,用过的)
拓展 – Android6.0/7.0/8.0特性,kotlin语言,I/O大会
急急忙忙投简历,赶面试,还不如沉淀一两天时间,再过一遍以上内容。想稳妥拿到一个offer,最好能理解实现原理,并且知道使用场景了。不要去背!要去理解!面试官听了一天这些内容是很厌倦的,最好能说出一些自己的见解。

面试题(固定答案不解答,自己可以找到)

顺序是根据记忆排的,没有优先级之分,都是重点。

**1.Activity的启动过程(不要回答生命周期) **
http://blog.csdn.net/luoshengyang/article/details/6689748

2.Activity的启动模式以及使用场景
(1)manifest设置,(2)startActivity flag
http://blog.csdn.net/CodeEmperor/article/details/50481726
此处延伸:栈(First In Last Out)与队列(First In First Out)的区别

**3.Service的两种启动方式 **
(1)startService(),(2)bindService()
http://www.jianshu.com/p/2fb6eb14fdec

4.Broadcast注册方式与区别
(1)静态注册(minifest),(2)动态注册
http://www.jianshu.com/p/ea5e233d9f43
此处延伸:什么情况下用动态注册

5.HttpClient与HttpUrlConnection的区别
http://blog.csdn.net/guolin_blog/article/details/12452307
此处延伸:Volley里用的哪种请求方式(2.3前HttpClient,2.3后HttpUrlConnection)

6.http与https的区别
http://blog.csdn.net/whatday/article/details/38147103
此处延伸:https的实现原理

7.手写算法(选择冒泡必须要会)
http://www.jianshu.com/p/ae97c3ceea8d

8.进程保活(不死进程)
http://www.jianshu.com/p/63aafe3c12af
此处延伸:进程的优先级是什么(下面这篇文章,都有说)
https://segmentfault.com/a/1190000006251859

9.进程间通信的方式
(1)AIDL,(2)广播,(3)Messenger
AIDL : https://www.jianshu.com/p/a8e43ad5d7d2
https://www.jianshu.com/p/0cca211df63c
Messenger : http://blog.csdn.net/lmj623565791/article/details/47017485
此处延伸:简述Binder , http://blog.csdn.net/luoshengyang/article/details/6618363/

10.加载大图
PS:有家小公司(规模写假的,给骗过去了),直接把项目给我看,让我说实现原理。。
最让我无语的一次面试,就一个点问的我底裤都快穿了,就差帮他们写代码了。。
http://blog.csdn.net/lmj623565791/article/details/49300989

11.三级缓存(各大图片框架都可以扯到这上面来)
(1)内存缓存,(2)本地缓存,(3)网络
内存:http://blog.csdn.net/guolin_blog/article/details/9526203
本地:http://blog.csdn.net/guolin_blog/article/details/28863651

12.MVP框架(必问)
http://blog.csdn.net/lmj623565791/article/details/46596109
此处延伸:手写mvp例子,与mvc之间的区别,mvp的优势

13.讲解一下Context
http://blog.csdn.net/lmj623565791/article/details/40481055

14.JNI
http://www.jianshu.com/p/aba734d5b5cd
此处延伸:项目中使用JNI的地方,如:核心逻辑,密钥,加密逻辑

15.java虚拟机和Dalvik虚拟机的区别
http://www.jianshu.com/p/923aebd31b65

16.线程sleep和wait有什么区别
http://blog.csdn.net/liuzhenwen/article/details/4202967

17.View,ViewGroup事件分发
http://blog.csdn.net/guolin_blog/article/details/9097463
http://blog.csdn.net/guolin_blog/article/details/9153747

18.保存Activity状态
onSaveInstanceState()
http://blog.csdn.net/yuzhiboyi/article/details/7677026

19.WebView与js交互(调用哪些API)
http://blog.csdn.net/cappuccinolau/article/details/8262821/

20.内存泄露检测,内存性能优化
http://blog.csdn.net/guolin_blog/article/details/42238627
这篇文章有四篇,很详细。
此处延伸:
(1)内存溢出(OOM)和内存泄露(对象无法被回收)的区别
(2)引起内存泄露的原因

21.布局优化
http://blog.csdn.net/guolin_blog/article/details/43376527

22.自定义view和动画
以下两个讲解都讲得很透彻,这部分面试官多数不会问很深,要么就给你一个效果让你讲原理。
(1)http://www.gcssloop.com/customview/CustomViewIndex
(2)http://blog.csdn.net/yanbober/article/details/50577855

23.设计模式(单例,工厂,观察者。作用,使用场景)
一般说自己会的就ok,不要只记得名字就一轮嘴说出来,不然有你好受。
http://blog.csdn.net/jason0539/article/details/23297037/
此处延伸:Double Check的写法被要求写出来。

24.String,Stringbuffer,Stringbuilder 区别
http://blog.csdn.net/kingzone_2008/article/details/9220691

25.开源框架,为什么使用,与别的有什么区别
这个问题基本必问。在自己简历上写什么框架,他就会问什么。
如:Volley,面试官会问我Volley的实现原理,与okhttp和retrofit的区别。
开源框架很多,我就选几个多数公司都会用的出来(框架都是针对业务和性能,所以不一定出名的框架就有人用)
网络请求:Volley,okhttp,retrofit
异步:RxJava,AsyncTask
图片处理:Picasso,Glide
消息传递:EventBus
以上框架请自行查找,太多了就不贴出来了。

26.RecyclerView
这个挺搞笑的。有另外一个同事也在找工作,面试官嫌他没用过RecyclerView直接pass掉。
http://blog.csdn.net/lmj623565791/article/details/45059587

OK,点到即止。

结语
面试官面什么,完全是看他们个人的(性格,心情,天气,你的面相)。以上只是一些我觉得重要的点,当然还有很多深层的东西不是一时半日可以补上来的,还是要看自己平时的经验积累。面试不单单是技术面,还有高层面,人事面,这些都要看个人发挥了。

PS:如果面试官说,还有什么想问的,千万不要给自己挖坑,说今天自己表现怎样,能不能被录取。要往公司的团队,氛围去问,尽量表现的对公司有兴趣。
如:我想知道公司是否定期有开技术会议,老员工是否会分享自己的一些经验等这些问题。

生活不易,如果有面试官(你将来有一天也会面试别人)看到这篇文章,请放下架子或者偏见,尊重每一位面试者。

最后,我列出以下面试需要注意的几个点。

面带微笑,有礼貌,谦逊
穿的体面一点,穿拖鞋的gg了8成
一定要带简历和笔
来了说谢谢,面完说谢谢
要学会看面试官的表情,如果答的不好不要继续往下说
不要吹的自己以前做过的项目有多牛b,也不要自吹
答题要冷静,不要一轮嘴说一堆,面试官很烦的
接下来会写几篇针对BAT等大厂的面试题锦集,很快就出炉拉,已经在整理。喜欢的同学请点个赞哈!
最后祝大家面试顺利,早日找到自己心仪的公司。

个人面试经历总结文章:

Android 2020-2021最新面试题(3-5年经验个人面试经历)
BAT面试系列文章:
一、Android(2020-2021)BAT面试题整理(java篇,含答案)
二、Android(2020-2021)BAT面试题整理(Android篇,含答案)
三、Android(2020-2021)BAT面试题整理(深入技术篇,含答案)未完待续
四、Android(2020-2021)BAT面试题整理(高层/HR篇,含答案)未完待续
这个博主从各个网站收集到了很多的面试题和面经,可以点个关注以后慢慢看。

整合

简历上写的东西,一定要先搞懂,特别是简历上的专业技能。这次面试收到的最多反馈就是:基础知识不够扎实,技术深度不够。现在Android开发大部分需要懂点C++和Linux知识,大厂也需要刷算法面试题,在后面的学习过程中,我将从以上几个方面着手。当然也必须把基础知识学牢固,技术深度搞深入点。

鉴于这样的要求,我收集整理了几个月的时间,在面经和Android学习资料方面,我有较为深入的整理和探究,资料已经全部贡献在Github上了

项目地址: Github

面试题部分

当然,三个月的时间绝对不止这点东西,由于篇幅问题,关于图片我就不过多展示,我给广大开发者创建了一个分享基地,点击进入Android技术交流平时收集到的新鲜面经,开发资料,都可以上传。而且还能有一帮大佬为你摆平关于Android的技术问题~

最后祝大家都能拿到心仪的offer!

更多相关文章

  1. 超新鲜的字节客户端Android面经,附面试题答案解析
  2. android博客导航总结,以及个人常用android免费学习干货(文章,视频,矢
  3. Android开发实战!总结2020年最全180道Android岗面试题,大厂面试题
  4. Android开发者面试如何系统复习?帮你突破瓶颈
  5. Android教父高焕堂谈Android“开源”与“兼容”――川科创新
  6. Android面试过程描述
  7. 年后面试,差点就痛失了字节跳动Android岗的Offer,原因竟是因为性能
  8. 跳槽的新公司,我直接让项目的性能提升了一半
  9. Android(安卓)面试题总结之Android(安卓)进阶(一)

随机推荐

  1. Android(安卓)在PreferenceActivity 中移
  2. ViewGroup中的onInterceptTouchEvent和on
  3. Android(安卓)内部存储安装apk文件实现
  4. android 自分辨式布局
  5. Android(安卓)6.0 变更
  6. android在程序中打开另一个程序
  7. Android(安卓)SDK Manager Failed to fet
  8. 初涉Android设计原则,设计模式
  9. 【Android】OpenGL ES---绘制3D图形、应
  10. 快速学会开发Android(安卓)App