2018 Android面试题总结经验

前言

最近离职了,目前在上海,前后面试了几家公司,有Offer的,也有很多🙂。有的不想去,有的面试不好,做了四年的android了,2家公司都是2年一骚,想休息一下,同时现在想找个正经的互联网公司,自己抽空学习了很多,如C++,ES6,RN等等,希望能真正实战到项目中。到面试的时候,才发现,android基本知识忘却了很多(面试的时候说的不太清楚),上家公司做的项目,框架搭建完善,怎么简单怎么来,话说当时也没有怎么去写一下自己的笔记,毕竟找的是android工作,试了下水,还是觉得,既然找android,还是稳住几天回顾下功课,免得遇见喜欢的公司面试不好,毕竟候选人那么多,有的人文凭好,优势,大公司更加要求高。

以后打算开始写点笔记,积累下东西吧,就从面试,一个新的开始。

好吧,进入正题,Android知识图谱。


20170528132642034.png

面试,更多的是问基础知识,毕竟基础不好更别说延伸了,聘请中高级的安卓开发往深的去问,framework层,数据结构,Hybrid开发等等

基础知识 – 四大组件
这个就不多说了基础入门只是,但是还是要看下的,面试的时候会问,要说清楚,别简要的概括。

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

Activity的启动模式以及使用场景
(1)manifest设置,(2)startActivity flag
http://blog.csdn.net/CodeEmperor/article/details/50481726
BroadcastReceiver
https://www.jianshu.com/p/ca3d87a4cdf3

service 生命周期和启动方式
https://blog.csdn.net/jiaohanhan/article/details/71880914

数据持久化 – SQLite,SharedPreferences,ContentProvider
主要的还是ContentProvider
https://www.jianshu.com/p/ea8bc4aaf057

java基础 – 数据结构, 多线程编程,mvc,mvp框架,设计模式
与mvc之间的区别,mvp的优势
http://blog.csdn.net/lmj623565791/article/details/46596109
设计模式(单例,工厂,观察者。作用,使用场景)
一般说自己会的就ok,不要只记得名字就一轮嘴说出来,不然有你好受。
http://blog.csdn.net/jason0539/article/details/23297037/
此处延伸:Double Check的写法被要求写出来。
String,Stringbuffer,Stringbuilder 区别
http://blog.csdn.net/kingzone_2008/article/details/9220691
ConurrentHashMap和Hashtable的区别
https://blog.csdn.net/wangxing233/article/details/79452946
多线程编程问的很多。思路清晰一些回答。
https://blog.csdn.net/fang323619/article/details/73904351
如果你还有多线程优化了解的东西
https://www.cnblogs.com/bugly/p/5519510.html

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

通信 – 网络连接(HttpClient,HttpUrlConnetion),Socket
HTTP协议原理
https://blog.csdn.net/itachi85/article/details/50982995

Socket是很大几率必问的,没做过,但是也要清楚他的原理
https://www.jianshu.com/p/fb4dfab4eec1

性能优化 – 布局优化,内存优化,电量优化,OOM检测与优化
2015年伊始,Google发布的关于Android性能优化典范的专题
https://blog.csdn.net/love_techlive/article/details/52787153
内存优化
https://mp.weixin.qq.com/s/2MsEAR9pQfMr1Sfs7cPdWQ
https://blog.csdn.net/guolin_blog/article/details/42238627
加载大图
http://blog.csdn.net/lmj623565791/article/details/49300989
三级缓存(各大图片框架都可以扯到这上面来)
(1)内存缓存,(2)本地缓存,(3)网络
内存:http://blog.csdn.net/guolin_blog/article/details/9526203
本地:http://blog.csdn.net/guolin_blog/article/details/28863651
android LruCache
https://www.jianshu.com/p/b49a111147ee

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

安全 – 数据加密,代码混淆,WebView/Js调用,https与http的区别
https与http的区别必须掌握,没用过的话,自己可以尝试一下
https://blog.csdn.net/lyhjava/article/details/51860215
WebView与js交互(调用哪些API)**
http://blog.csdn.net/cappuccinolau/article/details/8262821/

UI– 动画,自定义view,事件分发机制
Android事件分发机制详解:史上最全面、最易懂
https://www.jianshu.com/p/38015afcdb58
自定义view
https://www.jianshu.com/p/146e5cec4863
以下两个讲解都讲得很透彻,这部分面试官多数不会问很深,要么就给你一个效果让你讲原理。
(1)http://www.gcssloop.com/customview/CustomViewIndex
(2)http://blog.csdn.net/yanbober/article/details/50577855

其他 – JNI,AIDL,Handler,Intent,context等
讲解一下Context
http://blog.csdn.net/lmj623565791/article/details/40481055
JNI
http://www.jianshu.com/p/aba734d5b5cd
此处延伸:项目中使用JNI的地方,如:核心逻辑,密钥,加密逻辑

RecyclerView
我之前面试人时候,这个都没用过还在用listView的话,嘿嘿嘿。。。。
http://blog.csdn.net/lmj623565791/article/details/45059587

开源框架 -Gilde,Retrofit + RxJava + OkHttp等
简历上写你会的,用过的,如果技术面试的时候有时候他回一些刁钻的问题,有一次就有人问Gilde的默认加载格式,Emmmmm....想不起来当时- -..... 还有问Retrofit 源码设计模式,和返回的是什么。所以还是要去看看源码讲解的。

Retrofit :
https://www.jianshu.com/p/0c055ad46b6c

第三方SDK
拓展 – Android6.0/7.0/8.0特性,kotlin语言,I/O大会,ES6,FFMGEG,OPENGL ES,c++
NDK 注册方式,以及Cmake( 这个问的少,你要应聘职位需求),framework层的了解等

总结

好了,大概就这些。虽然大家工作都简单化工作,框架什么搭建好封装号,很容易长时间忘记基础的东西。如果都能详细的将清楚的话,那就基本稳了,记得要思路清晰,哈哈,我也打算全都整理好,然后一个一个的自己的巩固和理解,最好不要死记硬背,要去理解,以自己的理解去讲解清楚,面试官一般面试那么多,其实听的话如果是套语其实,很容易犯困的。

语速最好慢点,说清楚最重要的,这个能说明你的技术和基础水平的问题。
上海这边面试貌似可以不带简历,开始我打算准备的,后来发现他们都有猪呢比的,但是最好还是带着,或者你提前问好HR需要带简历不,不需要就不用带了,他们自己会打印。

ps: 工作多久技术再牛叉,还是要礼貌待人,嫌弃诚恳,不要吹自己多牛逼,毕竟世界这么大,大牛多的是,有时候你跟那些技术比你好很多的人聊天你就会感觉到很亲切和舒适。一些CTO 有goole 工作过的,有阿里P8的,由华谊回归的,跟他们聊天实话,蛮是开心的,沟通的时候就可以学习到他们个人优点。好了,就这样吧。

推荐阅读更多精彩内容