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需要带简历不,不需要就不用带了,他们自己会打印。