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

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. 性能优化,这是基本每个面试的都会问的问题

点击打开链接

点击打开链接    更加全面的

点击打开链接    

3. sleep() 和 wait() 的区别

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()

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值