2018年最新Android面试分享
*版权声明:本文为博主原创文章,未经博主允许不得转载。
*原文链接:https://www.jianshu.com/p/7d3963974fbb
楼主13毕业,一直在六朝古都。学渣一枚,代码一般。从学习资源匮乏年代走到现在,感慨很多~
见识了很多拥抱开源,乐于分享的大神、发自内心的佩服你们,感谢你们。
在现东家4年了,成长了很多。生于忧患死于安乐,最近总感觉要失业了~决定拿起锄头试水Android市场(原来写Java)。
都说互联网烧钱的时代已经过去了,剩下的都是某某系了。岗位竞争变成都只招专家了,楼主亲测了一把,面试了几家公司—结论:没有核心竞争力,offer不容易。好点的去不了,一般的不想去~
总结了遇到的面试题。网上可能也有,但实战细节汇总一下:
1.APP体系图谱-引用 2.APP优化图谱-引用
前言:
基本都来源Android上面2个图谱。专注技术的,可以定个学习计划,深入浅出。
1.F4基础-Activity:
(1.1)Activity的4种启动模式,区别,回调
https://www.jianshu.com/p/4c8d6e2117ac
(1.2)Activity代码设置启动模式,
https://www.jianshu.com/p/4c8d6e2117ac
(1.3)Activity几种退出方式,
https://blog.csdn.net/a15286856575/article/details/50883807
(1.4)Activity是否可以配置独立进程,是否可以修改进程名,
https://blog.csdn.net/Simon_Crystin/article/details/70315106
(1.5)两个Activity之间跳转时必然会执行的是哪几个方法?
https://blog.csdn.net/m_xiaoer/article/details/72881082
(1.6)保存Activity状态
https://blog.csdn.net/timejay/article/details/52838221
2.F4基础-Service:
(2.1)Service与IntentService的区别与使用场景,
https://www.jianshu.com/p/332b6daf91f0
(2.2)Service两种启动|关闭方式,
https://blog.csdn.net/imxiangzi/article/details/76039978
(2.3)Activity与Service 通信方式,
https://www.jianshu.com/p/cd69f208f395
(2.4)Service默认运行的线程,是否可以配置隔离进程,是否可以修改进程名,
https://blog.csdn.net/Simon_Crystin/article/details/70315106
3.F4基础-Broadcast:
(3.1)Broadcast几种类型,
https://blog.csdn.net/carson_ho/article/details/53160580
(3.2)Broadcast拦截,
https://blog.csdn.net/dream19861009/article/details/6361553
(3.3)Broadcast运行的线程,
https://blog.csdn.net/anzhu_111/article/details/6662369
(3.4)Broadcast动态和静态的区别,
https://blog.csdn.net/u012925008/article/details/49701423
(3.5)Broadcast动态和静态的优先级、为什么,
https://blog.csdn.net/qq_35823924/article/details/52159351
4.View相关:
(4.1)view事件传递分发机制,
https://www.jianshu.com/p/38015afcdb58
(4.2)view绘制过程,
https://www.jianshu.com/p/5a71014e7b1b
(4.3)view过渡渲染优化,
https://blog.csdn.net/wl9739/article/details/57416433
(4.4)LinearLayout和RelativeLayout的绘制区别,性能差异对比,
https://blog.csdn.net/su_1106941640/article/details/53026208
5.Animation相关:
(5.1)动画的分类,
https://www.jianshu.com/p/420629118c10
(5.2)属性动画使用,自定义插值器和估值器,举例说明,
https://www.jianshu.com/p/420629118c10
6.网络通信:
(6.1)http与https的区别,
https://blog.csdn.net/bryant_liu24/article/details/56488603
(6.2)Tcp和Udp的区别,
https://blog.csdn.net/li_ning_/article/details/52117463
(6.3)socket是什么?
https://www.cnblogs.com/wangcq/p/3520400.html
(6.4)简述3次握手和4次挥手,
https://blog.csdn.net/zixiaomuwu/article/details/60965466
7.通信相关:
(7.1)为什么需要 Handler?Handler 原理
https://www.jianshu.com/p/9e4d1fab0f36
(7.2)进程间通信AIDL,
https://www.jianshu.com/p/beaf4d595cf6
(7.3)广播,
同上
(7.4)Messenger
https://blog.csdn.net/u011240877/article/details/72836178
8.进程|线程相关:
(8.1)线程和进程在操作系统是什么,
进程:操作系统分配的独立内存空间,执行一系列CPU指令集。
线程:是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
(8.2)sleep()和wait()的区别,
https://blog.csdn.net/xyh269/article/details/52613507
(8.3)线程同步、安全方式,
https://www.cnblogs.com/lizhangyong/p/8029287.html
(8.4)线程池理解,
https://blog.csdn.net/ymrfzr/article/details/51479816
(8.4)JAVA 锁有几种,
https://www.cnblogs.com/lxmyhappy/p/7380073.html
9.三级缓存:
(9.1)内存缓存\本地缓存\网络缓存
https://www.jianshu.com/p/97455f080065
(9.2)LRUCache,用来做什么?原理是什么?
https://www.jianshu.com/p/b49a111147ee
10.设计模式:
(10.1)单例,工厂,观察者,代理等
https://www.cnblogs.com/malihe/p/6891920.html
(10.2)Android源码用到了哪些设计模式
https://www.jianshu.com/p/a436c15d1de2
(10.2)MVP框架、 MVVM框架
https://blog.csdn.net/limonzet/article/details/53328315
https://blog.csdn.net/wlcm603/article/details/78182868
11.性能优化:
(11.1)ANR产生的原因是什么?
https://www.jianshu.com/p/7fd95bc2a55c
(11.2)内存泄露和OOM的分别是什么,有什么区别?
https://www.jianshu.com/p/7fd95bc2a55c
https://www.jianshu.com/p/eef57e3ace13
(11.3)APP各种优化系列,都要稍微了解一点https://blog.csdn.net/u010853225/article/details/79724938
12.其他:
(12.1)讲解一下Context
https://blog.csdn.net/wzy_1988/article/details/51539503
(12.2)ThreadLocal原理,实现及如何保证Local属性
https://blog.csdn.net/singwhatiwanna/article/details/48350919
(12.3)JNI
https://www.jianshu.com/p/fa613762f516
(12.4)Opengl\渲染管线(初学太好理解)
https://blog.csdn.net/cjneo/article/details/50538033
(12.5)多媒体播放、解码
https://www.jianshu.com/p/f6ac01c3f994
(12.6)JVM、DVM(Dalvik VM)和ART虚拟机对比
https://blog.csdn.net/evan_man/article/details/52414390
(12.7)JDK1.8新特性?
https://blog.csdn.net/haiyoung/article/details/52693212
13.JAVA基础:
(13.1)集合种类
https://www.cnblogs.com/leeplogs/p/5891861.html
(13.2)String|StringBuffer|StringBuilder区别
https://blog.csdn.net/qq_30278639/article/details/51362754
(13.3)几种内部类的实现方式,优化,内存泄露风险
https://blog.csdn.net/nysyxxg/article/details/10133141
https://blog.csdn.net/qq_22706515/article/details/51321718
(13.4)抽象类和接口区别
https://www.cnblogs.com/dolphin0520/p/3811437.html
(13.5)java反射理解
https://blog.csdn.net/the_fire/article/details/6020402
(13.6)java注解理解
https://blog.csdn.net/javazejian/article/details/71860633
(13.6)java依赖注入理解
https://www.cnblogs.com/qiangweikang/p/4865486.html
14.开源框架:
很多,比如Rx全家桶,写自己用过。没用过的,就说大概了解~
15.常见算法(了解一下):
(15.1)数据结构部分
栈 Stack
队列 Queue
链表 Linked List
数组 Array
哈希表 Hash Table
二叉树 Binary Tree
堆 Heap
并查集 Union Find
字典树 Trie
(15.2)算法部分
快速排序算法
最排序算法
归并排序
二分查找算法
BFPRT(线性查找算法)
DFS(深度优化算法)
BFS(过度优化搜索)
Dijkstra算法
动态规划算法
结语
1.面试不要迟到,不要放鸽子,即使有特殊情况,也要合理沟通。最起码的尊重,即是对自己也是对他人。
2.面试前,问清HR是否需要带什么(简历,笔等)
3.面试内容没法固化,每家问的都不一样,随机性很强,但基础的容易忽略的知识,往往占一半。
4.面试稍微准备个几天,做个复习。一定要夯实基础,注意细节,专注技术,强化业务。
希望大家都能获得上帝的眷顾,都获得心水的offer,谢谢。