金九银十:备战跳槽季,Android程序员这些技术面试点可要随时
一年中第一段跳槽高潮就要来了,看到同事一个个离职,又有一部分同事已经找到满意的工作,于是自己也盲目的开始面试起来(期间也没有准备充分),日夜奔走,简历投了很多家公司,然后就是一连串的面试蜂拥而来,但是很大一部分似乎技术面试还没有准备好,肚子里没有足够的存“货”,可能被面试官问到某个新的知识点或者你没有准备好的,而准备不充分的面试,完全是浪费时间,更是对自己的不负责(如果title很高,当我没说)。
今天给大家分享下在跳槽时需要准备的Android面试大纲,其中大部分都是面试过程中的面试题,可以对照这查漏补缺,当然了,这里所列的肯定不可能覆盖全部方式。(答案领取方式在文末)
Java基础
java中==和equals和hashCode的区别?
int、char、long各占多少字节数?
int与integer的区别?
抽象类和接口区别?
抽象类的意义?
抽象类与接口的应用场景?
泛型中extends和super的区别?
父类的静态方法能否被子类重写?
进程和线程的区别?
静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?
静态内部类的设计意图?
成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用?
谈谈对kotlin的理解?
Java进阶
哪些情况下的对象会被垃圾回收机制处理掉?
讲一下常见编码方式?
utf-8编码中的中文占几个字节;int型几个字节?
静态代理和动态代理的区别,什么场景使用?
Java的异常体系?
Java中实现多态的机制是什么?
如何将一个Java对象序列化到文件里?
说说你对Java反射的理解?
说说你对Java注解的理解?
说说你对依赖注入的理解?
说一下泛型原理,并举例说明?
Java中String的了解?
数据结构
常用数据结构简介?
并发集合了解哪些?
列举java的集合以及集合之间的继承关系?
集合类以及集合框架?
List,Set,Map的区别?
List和Map的实现方式以及存储方式?
HashMap的实现原理?
HashMap数据结构?
HashMap源码理解?
堆的结构?
堆和树的区别?
手写链表逆序代码?
讲一下对树,B+树的理解?
判断单链表成环与否?
线程、多线程和线程池
开启线程的三种方式?
线程和进程的区别?
为什么要有线程,而不是仅仅用进程?
在Java中wait和seelp方法的不同?
谈谈wait/notify关键字的理解?
什么导致线程阻塞?
线程如何关闭?
Synchronized用法?
synchronize的原理?
谈谈对多线程的理解?
多线程有什么要注意的问题?
谈谈你对并发编程的理解并举例说明?
谈谈你对多线程同步机制的理解?
Android基础
四大组件的生命周期和简单用法?
Activity之间的通信方式?
横竖屏切换的时候,Activity 各种情况下的生命周期?
Activity与Fragment之间生命周期比较?
Activity状态保存于恢复?
fragment各种情况下的生命周期/
Fragment状态保存startActivityForResult是哪个类的方法,在什么情况下使用?
如何实现Fragment的滑动?
fragment之间传递数据的方式?
Activity 怎么和Service 绑定?
怎么在Activity 中启动自己对应的Service?
service和activity怎么进行数据交互?
Service的开启方式?
请描述一下Service 的生命周期?
Android属性动画特性?
如何导入外部数据库?
LinearLayout、RelativeLayout、FrameLayout的特性及对比,并介绍使用场景?
Android进阶
Android动画框架实现原理?
Android各个版本API的区别?
Requestlayout,onlayout,onDraw,DrawChild区别与联系?
invalidate和postInvalidate的区别及使用?
looper架构?
ActivityThread,AMS,WMS的工作原理?
自定义View如何考虑机型适配?
自定义View的事件?
谈谈多线程在Android中的使用?
进程和 Application 的生命周期?
封装View的时候怎么知道view的大小?
RecycleView原理?
请介绍下ContentProvider 是如何实现数据共享的?
AndroidService与Activity之间通信的几种方式?
Android原理
Handler机制和底层实现?
Handler、Thread和HandlerThread的差别?
handler发消息给子线程,looper怎么启动?
Touch事件传递流程?
事件分发中的onTouch 和onTouchEvent 有什么区别,又该如何使用?
View和ViewGroup分别有哪些事件分发相关的回调方法?
View刷新机制?
View绘制流程?
自定义控件原理?
为什么不能在子线程更新UI?
ANR产生的原因是什么?
ANR定位和修正?
oom是什么?
什么情况导致oom?
有什么解决方法可以避免OOM?
Oom 是否可以try catch?为什么?
Activity栈?
Android线程有没有上限?
线程池有没有上限?
ListView重用的是什么?
混合开发
Hybrid做过吗?
Hybrid通信原理是什么,有做研究吗?
react native有多少了解?讲一下原理?
weex了解吗?如何自己实现类似技术?
lutter了解吗?内部是如何实现跨平台的?
Dart语言有研究贵吗?
快应用了解吗?跟其她方式相比有什么优缺点?
说说你用过的混合开发技术有哪些?各有什么优缺点?
Python会吗?
会不会PHP?
Gradle了解多少?groovy语法会吗?
最后
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!在这里我给大家准备了一些高级安卓进阶资料,自己整理和分类的,还请尊重知识产出。
分享给大家的资料包括高级架构技术进阶脑图、Android开发面试专题资料,还有高级进阶架构资料包括但不限于【高级UI、性能优化、移动架构师、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术】
希望能帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也是可以分享给身边好友一起学习的!
资料免费领取方式:私信回复“面试”即可获取