安卓面试题(持续更新中)

基于泓洋公众号的总结

JAVA基础面试知识点

1.java中equals,hashcode和==的区别

点击打开链接

2. String、StringBuffer、StringBuilder区别

3.进程和线程的区别

点击打开链接

4. 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.csdn.net/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应注意什么

20.Android Webview安全交互

21.介绍一下Android线程间通信有哪几种方式

  1. 共享内存(变量);
  2. 文件,数据库;
  3. Handler;
  4. Java里的wait(),notify(),notifyAll()



猜你喜欢

转载自blog.csdn.net/q9104422999/article/details/79645341