JAVA基础面试知识点
- java中equals,hashcode和==的区别
- String、StringBuffer、StringBuilder区别
- 进程和线程的区别
- Serializable和Parcelable的区别
- 开启线程的三种方式
- 线程和进程的区别
- run()和start()方法区别
- 在Java中wait和seelp方法的不同
- 谈谈wait/notify关键字的理解
- 什么导致线程阻塞
- 线程如何关闭
- 讲一下java中的同步的方法
- 数据一致性如何保证?
- 如何保证线程安全
- 如何实现线程同步?
- 两个进程同时要求写或者读,能不能实现?如何防止进程的同步?
- 线程间操作List
- Java中对象的生命周期
- Synchronized用法
- synchronize的原理
- 谈谈对Synchronized关键字,类锁,方法锁,重入锁的理解
- static synchronized 方法的多线程访问和作用
- 同一个类里面两个synchronized方法,两个线程同时访问的问题
- volatile的原理
- 谈谈volatile关键字的用法
- 谈谈volatile关键字的作用
- 谈谈NIO的理解
- synchronized 和volatile 关键字的区别
- synchronized与Lock的区别
- ReentrantLock 、synchronized和volatile比较
- ReentrantLock的内部实现
- lock原理
- 死锁的四个必要条件?
- 怎么避免死锁?
- 对象锁和类锁是否会互相影响?
- 什么是线程池,如何使用?
- Java的并发、多线程、线程模型
- 谈谈对多线程的理解
- 多线程有什么要注意的问题?
- 谈谈你对并发编程的理解并举例说明
- 谈谈你对多线程同步机制的理解?
- 如何保证多线程读写文件的安全?
- 多线程断点续传原理
- 断点续传的实现
- 如何避免多线程并发 点击打开链接
并发编程有关知识点
Java 内存模型
-
java线程安全总结
http://www.iteye.com/topic/806990
-
深入理解java内存模型系列文章
http://ifeve.com/java-memory-model-0/
线程状态:
-
一张图让你看懂JAVA线程间的状态转换
https://my.oschina.net/mingdongcheng/blog/139263
锁:
-
锁机制:synchronized、Lock、Condition
http://blog.youkuaiyun.com/vking_wang/article/details/9952063
-
Java 中的锁
http://wiki.jikexueyuan.com/project/java-concurrent/locks-in-java.html
并发编程:
-
Java并发编程:Thread类的使用
http://www.cnblogs.com/dolphin0520/p/3920357.html
-
Java多线程编程总结
http://blog.51cto.com/lavasoft/27069
-
Java并发编程的总结与思考
https://www.jianshu.com/p/053943a425c3#
-
Java并发编程实战-----synchronized
http://www.cnblogs.com/chenssy/p/4701027.html
-
深入分析ConcurrentHashMap
http://www.infoq.com/cn/articles/ConcurrentHashMap#
Android面试题
(一)Android基础知识点
1.四大组件及生命周期
2.Activity之间的通信方式
3.横竖屏切换的时候,Activity 各种情况下的生命周期
4.Activity与Fragment之间生命周期比较
6.两个Activity 之间跳转时必然会执行的是哪几个方法?
7.前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法。
8.Activity的四种启动模式对比
9.fragment各种情况下的生命周期
10.fragment之间传递数据的方式?
11.Activity 怎么和Service 绑定?
12.怎么在Activity 中启动自己对应的Service?
13.service和activity怎么进行数据交互?
14.Service的开启方式
15.请描述一下Service 的生命周期
答案同上
16.谈谈你对ContentProvider的理解
17.说说ContentProvider、ContentResolver、ContentObserver 之间的关系
18.请描述一下广播BroadcastReceiver的理解
点击打开链接 简介
点击打开链接 详解
19.广播的分类
答案同上
20.广播使用的方式和场景
答案同上
21.在manifest 和代码中如何注册和使用BroadcastReceiver?
答案同上
22.本地广播和全局广播有什么差别?
答案同上
23.BroadcastReceiver,LocalBroadcastReceiver 区别
24.AlertDialog,popupWindow,Activity区别
25.Application 和 Activity 的 Context 对象的区别
Context数量 = Activity数量 + Service数量 + 1
26.Android属性动画特性
27.如何导入外部数据库?
28.LinearLayout、RelativeLayout、FrameLayout的特性及对比,并介绍使用场景。
29.谈谈对接口与回调的理解
30.回调的原理
31.介绍下SurfView
32.RecycleView的使用
33.序列化的作用,以及Android两种序列化的区别
34.差值器
35.估值器
答案同上
36.Android中数据存储方式
(二)Android源码相关分析
- Android动画框架实现原理 点击打开链接
- Android各个版本API的区别 点击打开链接
- Requestlayout,onlayout,onDraw,DrawChild区别与联系 点击打开链接
- invalidate和postInvalidate的区别及使用 点击打开链接
- Activity-Window-View三者的差别 点击打开链接
- 谈谈对Volley的理解
- 如何优化自定义View 点击打开链接
- 低版本SDK如何实现高版本api? 点击打开链接
- 描述一次网络请求的流程
- HttpUrlConnection 和 okhttp关系 : 4.4之后的的 HTTP URL connection 基于 OK HTTP实现
- Bitmap对象的理解
- looper架构
- ActivityThread,AMS,WMS的工作原理 点击打开链接
- 自定义View如何考虑机型适配 点击打开链接
- 点击打开链接
- 自定义View的事件 点击打开链接
- 点击打开链接
- AstncTask+HttpClient 与 AsyncHttpClient有什么区别?
- LaunchMode应用场景 点击打开链接
- AsyncTask 如何使用?
- SpareArray原理
- 请介绍下ContentProvider 是如何实现数据共享的?
- AndroidService与Activity之间通信的几种方式
- IntentService原理及作用是什么?
- 说说Activity、Intent、Service 是什么关系
- ApplicationContext和ActivityContext的区别
- SP是进程同步的吗?有什么方法做到同步?
- 谈谈多线程在Android中的使用
- 进程和 Application 的生命周期
- 封装View的时候怎么知道view的大小
- RecycleView原理
- AndroidManifest的作用与理解
1. 性能优化,这是基本每个面试的都会问的问题
点击打开链接 更加全面的
sleep() 和 wait() 的区别就是 调用sleep方法的线程不会释放对象锁,而调用wait() 方法会释放对象锁
4.自定义控件的理解
5.设计模式(大公司面试高级开发 会问到源码中 都用到了哪些设计模式)
平时用的比较多有单例模式(在内存中仅实例化一个对象时使用),适配器模式(典型的就是ListView和GridView的适配器),建造者模式(AlertDialog.Builder)
模板模式,我最常用的就是把多个Fragment的相同代码抽象出一个基类,在onCreate, onCreateView把子类需要实现的逻辑抽象出来。
饿汉式和懒汉式区别()
饿汉就是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存在的了,
而懒汉比较懒,只有当调用getInstance的时候,才回去初始化这个单例。
6.socket
Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求。 那么,什么是socket?Socket又称套接字,在程序内部提供了与外界通信的端口,即端口通信。通过建立socket连接,可为通信双方的数据传输传提供通道。socket的主要特点有数据丢失率低,使用简单且易于移植。
7.TCP与UDP 以及区别。
8. HashMap和Hashtable的区别
主要的区别有:线程安全性,同步(synchronization),以及速度。
9.glide 的优缺点。及 加载图片遇到的问题
如果针对固定资源路径的请求,将导致请求得到的资源是缓存的,这样就不能保证最新。换句话说,如果给定资源地址下的资源的频繁更新的,而资源地址是固定,则Glide此时的缓存策略就显得不太合适。
解决方案:
skipMemoryCache(true) ,跳过内存缓存。
diskCacheStrategy(DiskCacheStrategy.NONE) ,不要在disk硬盘中缓存。
10. 内存溢出和内存泄漏
11. anr
12.举例线程间的 (原生方式,如Hander和Message 及 第三方的方式)
13.Android中进程间通信有哪些实现方式?原理是什么
14.跨进程访问
15.多线程高并发 的解决方式有哪些
16.Android中touch事件的传递机制是怎样的?
17.Android多线程的实现方式有哪些?它们的优缺点和适用场景是什么
18.Android下解决滑动冲突的常见思路是什么
19.android在线程中创建handler应注意什么
21.介绍一下Android线程间通信有哪几种方式
- 共享内存(变量);
- 文件,数据库;
- Handler;
- Java里的wait(),notify(),notifyAll()