java android 面试题汇总

JAVA篇

java内存回收机制:
java内存分配和回收机制
JAVA中的引用
强引用,软引用,弱引用,虚引用
能说清各个引用的意思,了解ReferenceQueue
Java中四种引用类型
final关键字使用场景
修饰类,修饰方法,修饰变量的意义
Final关键字
static关键字使用场景
修饰类,修饰变量,修饰方法,静态块,静态导入。
static关键字的使用场景
集合类相关
ArrayList,LinkedList,HashMap,TreeMap等内部实现原理。
ArrayList与LinkedList区别,ArrayList与Vector的区别,HashMap与HashTable区别
40个java集合类面试题
内部类
静态内部类,局部内部类简介,及内部类为什么默认持有外部类的引用
JAVA编译器会在内部类中加入类型为外部类的成员变量,并提供相关参数的构造函数
JAVA4种内部类详解
JAVA中如何实现多继承
通过实现多个接口及内部类的方式
Java中如何用接口实现多继承和多态
线程池相关
搞清Executor,ExecutorService,ThreadPoolExecutor关系。
java中Executor、ExecutorService、ThreadPoolExecutor介绍

ThreadPoolExecutor中的参数使用。可以结合Executors工具类的newFixedThreadPool,newSingleThreadExecutor,newCachedThreadPool等方法说一说
ThreadPoolExecutor使用

简述下线程池原理
当时没看过源码,结合Volley中自己实现的线程池说了说,主要涉及到BlockingQueue,核心线程,最大线程等概念,需要多看源码
线程池的实现原理
JAVA线程的几种状态
java线程的5种状态
如何终止线程,进程与线程的区别。
创建,就绪,运行,阻塞(同步块,IO阻塞),主动睡眠,主动等待,销毁

JAVA的wait,notify,notifyAll的用法
JAVA的wait,notify,notifyAll的用法
wait与sleep的区别
wait挂起当前线程,等待sychronized的对象,notify唤醒一个wait的线程,notifyAll唤醒所有wait的线程。wait后线程会放弃锁,sleep会持有锁。
什么是线程安全,如何保证线程安全
什么是线程安全,如何保证线程安全
JAVA的concurrent中的一些类,JAVA的锁
一些原子操作类,一些并发操作的集合类,一些更灵活的锁
Java多线程并发锁和原子操作,你真的了解吗?
JAVA并发内存模型,三大特性(原子性,可见性,有序性)
Java并发编程:volatile关键字解析
,volatile,synchronized关键字
注意volatile的作用使用场景,原理,
什么是多态,多态的使用场景,使用多态的意义
什么是多态?为什么用多态?有什么好处?
switch中可以使用的类型
int,byte,short,char,枚举,JAVA7以上String
JAVA的ClassLoader,双亲委派
类加载器和双亲委派模型
判断一个类是否相同,类加载器与类全名称都得相同,优先委托父类加载器来加载类
JAVA对象的初始化顺序
加载类
初始化父类静态变量
执行父类静态块
初始化子类静态变量
执行子类静态块
初始化父类成员变量
执行父类构造函数
初始化子类成员变量
执行子类构造函数

try,catch,finally执行顺序,finalize的调用时机,作用
try catch finally的执行顺序
final finally finalize区别
JAVA的异常
都实现Throwable接口,分Error,Exception两类
Error 和 Exception区别
instance of与getClass的区别
object是否可以强转为某类型,可以用instanceof判断。getClass获得即某对象的Class对象
Iterator,foreach,for,效率与线程安全
Iterator迭代器可以在迭代过程中调用remove方法,做移除操作。foreach类似于迭代器,缺陷是不能移除,会出现并发异常。for过程中可以移除操作,注意一个问题索引问题。
String,StringBuilder,StringBuffer
探秘Java中的String、StringBuilder以及StringBuffer
object类中都有什么方法,重写equals方法也要重写hashcode方法。
long是否可以移位操作
java中的位移操作

设计模式篇

面向对象的六大原则
单一职责原则
里氏替换原则
依赖倒置原则
接口隔离原则
开闭原则
迪米特原则
Java开发中的23种设计模式详解

单例模式,最常被要求手写的设计模式
一般写懒汉式:双重判断的写法(使用了volatile关键字,由于禁用指令重排优化,有一定的性能损耗),内部静态类写法(利用了JAVA类加载机制保证了线程安全),枚举写法(简单逼格高,出现在effective java中,支持序列化),最好能说出他们的各种优势缺点
观察者模式
工厂模式:简单工厂,工厂方法,抽象工厂
代理模式(代理模式的意义与作用)
装饰模式(Context,JAVA的流相关类,装饰模式与代理模式区别)
组合模式(Android的View与ViewGroup)
建造者模式(AlertDialog)
MVP,MVC,MVVM等等,结合自己的项目讲讲

android

消息机制

Handler,Looper,Message原理(几乎所有技术面都会问到,最好详细阅读下源码,能讲清各个类的关系,他的消息处理流程,最好详细看懂MessageQueue的next 方法,了解native层的消息机制。epoll机制等等,我自己阅读源码的分析(写的不好请大家多多包涵)http://blog.csdn.net/industriously/article/details/50933315
被问到的几个Handler的问题:Activity内部Handler是否可以创建多个,Looper会把消息发给哪个Handler;子线程是否可以直接创建Handler,可以了解下HandlerThread与IntentService这两个类;
Message队列是个链表,插入删除如何保证线程安全,非线程安全会出现什么后果,画图描述下;Message.obtain()为啥效率高。
Activity生命周期(onSaveInstanceState 的调用时机,onWindowFocusChange调用时机,onConfigurationChanged)
Activity的四种启动模式,与onNewIntent回调
Fragment生命周期(结合实际例子分析)
Fragment与Activity通信
Fragment使用中踩过的坑
(必须有一个参数为空的public构造函数,getActivity()空指针,与viewPager使用生命周期函数不会被调用,show,hide方法在被回收后恢复的fragment重叠问题等等,纯fragment架构坑比较多)
Service的生命周期(start,bind两种)
Service的onStartCommand方法的返回值,及其意义(START_STICKY,START_NO_STICKY,START_REDELIVER_INTENT,START_STICKY_COMPATIBILITY)
Service运行在哪个进程,哪个线程。
Android的事件派发机制
android事件传递机制
Android触摸屏事件派发机制详解与源码分析一(View篇)
画出一些View嵌套之后,能讲清DOWN,MOVE,UP是怎么传递的。dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent。如何处理事件冲突。
《Android开发艺术探索》中有一章专门介绍了事件的传递,与冲突处理。
requestDisallowInterceptTouchEvent,onInterceptTouchEvent两个方法
事件是如何知道要派发到哪个view上的
MotionEvent中有点击的x,y坐标,结合view自身的坐标大小,应该可以判断
Android的绘制流程 如何使用onMeasure,onLayout,onDraw方法,ViewGroup的onDraw在没有背景下不调用,可以调用dispatchDraw。结合自己写过的自定义控件说一说。
Android实现View移动的方法
Scroller(注意移动的是子view),layout等等
AsyncTask的原理(Handler,线程池,Future),AsyncTask使用过程的坑
HandlerThread的原理,与IntentService的原理
说一说Android中的动画
Android 属性动画(Property Animation) 完全解析 (上)
Android 属性动画(Property Animation) 完全解析 (下)
Android Animation动画
视频播放涉及到的,MediaPlayer的生命周期

SurfaceView与View的区别
RemoteView的用处
Android进程优先级
Android进程优先级
(前台进程,可见进程,服务进程,后台进程,空进程)
Android的跨进程通信,AIDL,Messager,Binder

Android插件化原理
插件开发机制研究
android插件化的一种研究
结合流行的插件原理,与自家公司的插件框架讲讲。还有插件如何通信。
Android常见的框架OKHttpVolleyRetrofitOrmLite
Android 快速开发系列 ORMLite 框架最佳实践
ImageLoaderFrescoLeakCanaryRx JavaReact Nativefastjson等自己熟悉的,最好看过他们源码,能讲清原理。
ListView如何优化
UI优化(内存优化,绘制优化,布局优化)
内存泄露处理,一般Context的泄露。如何发现,处理
Intent-Filter过滤规则,显示意图,隐式意图。
常用adb命令
Android的大图载入,保证不OOMLRUDecode次数,RegionBitmapDecoder
图形矩阵变换,颜色矩阵变换
如何避免ANR
JAVA对象序列化Android序列化
apk的打包流程
关注过哪些Android新技术,对Google IO大会关注,你如何做性能优化的

网络篇

TCP协议三次握手过程及其的目的。TCP断开4次挥手。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值