Android面试常见问题列表。
Java基础
简述题(一)
- &和&&的区别。
- Get和Post的区别
- http response code
- udp连接和TCP的不同之处
- java中的soft reference是个什么东西
- 抽象类和接口的区别
- 谈一下对java中的abstract的理解
- Overload和Override的区别
- Static Nested Class 和 Inner Class的不同
- 内部类机制
简述题(二)
- 怎么用接口来连接两个层的
- 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concreteclass)?
- private和default有什么区别
- java里的常量是怎么定义的
- 类前边加+final的用处?
- finally final finalize的作用?
- java中final定义的类有什么特点
- try{ return} catch{} finally{}; return还是finally先执行。
- 数组有没有length()这个方法? String有没有length()这个方法?
- 是否可以继承String类?
- swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
- 常量final string str=“ab”可不可以变成”abd”,为什么?
- StringBuffer的作用?
- String s=new String(“abc”); new了几个对象
简述题(三)
- 启动一个线程是用run()还是start()?
- 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
- 同步和异步的区别?
- sleep和wait有什么区别? 一个是用来让线程休息,一个是用来挂起线程
- abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
- 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
简述题(四)
- Error与Exception的区别
- Java中的异常处理机制的简单原理和应用。
- Java内存回收机制,GC 垃圾回收机制,垃圾回收的优点和原理。并考虑2种回收机制。
- 对象Object读写的是哪两个流
- 反射,求字段的值和方法名
- Socket编程的步骤
- 什么是Java序列化
简述题(五)
- 常见集合及区别
- ArrayList和Vector区别,HashMap和HashTable区别
- ArrayList和LinkedList的区别
- List, Set, Map是否继承自Collection接口?
- hashCode方法的作用
- Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
- 当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对?
- JSON,fastjson和GSON的区别
- XML,解析XML的几种方式的原理与特点:DOM、SAX、PULL
- MD5加密原理,可否解密。
- heap和stack有什么区别。
- 用最有效率的方法算出2乘以8等於几? (2<< 3)
Android基础
Activity
- 生命周期及横竖屏切换时生命周期
- 启动模式
- 内存不足时,怎么保持Activity的一些状态,在哪个方法里面做具体操作?
- 介绍Activity、Service、Broadcast、BroadcastReceiver、Intent、IntentFilter
- 怎么在启动一个activity时就启动一个service
- 同一个程序不同的Activity如何放在不同的任务栈中?
- 如何将一个Activity设置成窗口的样式
- 如何退出Activity?如何安全退出已调用多个Activity的Application?
- Activity中如何动态的添加Fragment?
- activity的启动过程 参考
- 不用Service,B页面为音乐播放,从A跳到B,再返回,如何使音乐继续播放?
- windows和activity之间关系?
- 一个activity打开另外一个activity,再打开一个activity?回去的时候发生了什么操作?
- onActivityResult(int requestCode, int resultCode, Intent data)方法的用法;
Fragment
- 生命周期
- Fragment嵌套多个Fragment会出现bug吗?
Broadcast Receiver
- 注册广播有哪几种方式,有什么区别
- Android引入广播机制的用意?
- 无序广播、有序广播 -1000——1000
- 同优先级,清单文件中上面先收到
- Broadcast、Content Provider 和 AIDL的区别和联系
Android基础——广播接收者BroadcastReceiver
Service
- 注册Service需要注意什么
- 什么是Service以及描述下它的生命周期。
- Service与Activity怎么实现通信
- Service有哪些启动方法,有什么区别,怎样停用Service?
- 什么是IntentService?有何优点?
- Service和Activity在同一个线程吗 main 线程 UI线程
- Service里面可以弹土司么
- 如何启用Service,如何停用Service
- 什么时候使用Service?
- 说说Activity、Intent、Service是什么关系
- AIDL,两个android应用间的互相调用方法?
- AIDL的全称是什么?如何工作?能处理哪些类型的数据
Android基础——Service
Android基础——IntentService
Android开发指导——Service
Android开发指导——绑定Service
Android开发指导——进程间通信AIDL
ContentProvider
- 自定义一个contentProvider。
- 请介绍下ContentProvider是如何实现数据共享的
创建一个属于你自己的Content provider或者将你的数据添加到一个已经存在的Content provider中,前提是有相同数据类型并且有写入Content provider的权限。 - contentProvider权限;
AsyncTask简介
- Asynctask具体用法?
- Asynctask的Do in background方法是怎么通知UI线程刷新进度条的?
- Asynctask的Do in background方法默认是返回 true ,表示任务完成,如果想返回具体的数据呢,怎么做。如果Activity被销毁了,还会执行到postexcutd方法吗?
ListView
- 手指快速拖动ListView时,如何处理惯性引起的加载问题;
- 怎么实现ListView多种布局?
- ListView与数据库绑定的实现
- 怎么实现一个部分更新的 ListView?
- ListView卡顿的原因与性能优化,大量数据时,说的越多越好
UI相关
- 谈谈UI中,Padding和Margin有什么区别?
- drawable-hdpi的dpi是什么意思?
- 请介绍下Android中常用的五种布局
- Android中px,sp,dip,dp的区别与联系
- 怎么处理屏幕适配的
简述题(一)
- android开发中怎么去调试debug
- 请解释下Android程序运行时权限与文件系统的权限的区别
- JVM 和Dalvik虚拟机的区别
- android dvm的进程和Linux的进程应用程序是否为同一个概念
- sim卡的ef文件有何作用。
- 你如何评价Android系统?优缺点
- 谈下android系统的架构
- 根据自己的理解描述下android数字签名
简述题(二)
- 如何加载音乐信息,如何改善其效率。
- Android程序与java程序的区别?
- 什么是 MVC 模式?MVC 模式的好处是什么?
- 在Android中MVC的具体体现
- 简述Android应用程序的组成
简述题(三)
- 如何让程序自动启动
- 如何让程序不被系统自动销毁
- 常见异常,5种运行时异常
- 运行时异常与一般异常有何异同?
- 什么情况会导致Force Close?如何避免?是否捕获导致其的异常
- 什么是 ANR 问题?为什么会引起 ANR 问题?
- 系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由
- ContentValues相关,key是不是任意类型,value是不是任意类型
- URL和URI区别用法
- 数据存储,数据持久化的方式有哪些
- 进程优先级
- intent-filter属性及其含义;
- 如何打开res/raw 目录中的数据库文件?
简述题(四) - NotifactionManager使用原理
- Asset与raw都能存放资源,他们有什么区别?
- postInvalidate与invalidate有什么区别?
- notifyDataSetChanged 和notifyDataSetInvalidated的区别
- Serializable和Parcelable的区别
- 子线程中更新UI的方法
- Scrollview怎么判断是否滑倒底部
- ViewPager 怎么做性能优化
- 布局如何动态加载
- 外存储器文件遍历输出文件名
- Intent启动Activity有几种方式,请分别简述
- AndroidManifest.xml文件中主要包含哪些信息
- 列举常用的Android开源项目及应用场景
- 文件和数据库哪个效率高
简述题(五)
- 常见设计模式,并手动简单实现观察者模式
- Handler机制
- 热修复
- 简述静默安装的原理,如何在无需Root权限的情况下实现静默安装
- 什么是65535问题,如何防止或解决65535问题
- 简述实现Android APK插件化的简单方法
- 如何实现资源文件的混淆
- 如何在不引用第三方工具的情况下防止应用二次打包?并对应用进行简单加固
- 简述控制反转(Inversion of Control)的应用场景
- 怎么考虑数据传输的安全性
- xmpp openfire 基于xmpp openfire smack开发之Android客户端开发
- 应用常驻后台,避免被第三方杀掉的方法,讲讲你用过的奇淫巧技?
- 简述实现Android APK插件化的简单方法
JS交互
- 如何实现点击网站某个链接就自动下载一个程序到手机上并自动安装运行;
- java和JS的交互 Android中Java和JavaScript交互
- WebView 远程代码执行漏洞浅析 解决方案:WebView中的Java与JavaScript提供【安全可靠】的多样互通方案
Android动画
- Android中有哪些类型的动画,用属性动画实现控件的缩放
- 不使用动画,怎么实现一个动态的 View?
- Android中的动画有哪些,区别是什么
自定义View
- View,SurfaceView,GLSurfaceView有什么区别
- View的绘制
- 如何自定义ViewGroup?
- View刷新机制
- android UI中的View如何刷新
- 事件传递及处理机制
- View中onTouch,onTouchEvent,onClick的执行顺序
JNI
- JNI怎么使用
- 简单描述你是如何进行JNI开发的
- 在哪些情况下java代码中需要调用C代码
性能优化
- 图片缓存及优化,设计一个图片缓存加载机制
- 内存优化,布局优化,代码优化
- 内存溢出OOM是怎么引起的?怎么尽量避免OOM问题的出现?
- Android中引起内存泄露的原因
Android面试——APP性能优化
(译)Android性能优化——避免内存泄露
数据库
- 分页查询数据
- 如何将SQLite数据库与apk文件一起发布?
- 左连接与右连接的区别
- 描述Sqlite数据库(类型、关系);
- 你的项目中Sqlite数据库中存储的数据用SharePreference来处理也可以,为什么不用SharePreference呢;
网络编程
- Rest API
- Volley相关 Volley Android Volley完全解析
- 如何控制TCP连接时的拥塞 TCP的流量控制和拥塞控制
- 三次握手 TCP协议中的三次握手和四次挥手(图解)
- Android客户端和服务端如何使用Token和Session
- 移动端获取网络数据优化
编程算法题
- 冒泡排序
- 求素数
- 单例模式——写一个Singleton出来
- 二叉树遍历
- 最长不重复子串(最长重复子串)
- 有一个一维整型数组int[]data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片所有的白色不透明(xffffffff)像素点的透明度调整为5%。
- 写一个求递归程序 求54321
- 请使用java或者C++实现反转单链表
- 生产者、消费者
- 死锁(同步嵌套同步且锁不同)
- 写一个多线程实例代码;
- 写一个方法,交换两个变量的值?
- 给最外层的rootview,把这个根视图下的全部button背景设置成红色,手写代码,不许用递归
- 给一串字符串比如abbbcccd,输出a1b3c3d1,手写代码(注意有个别字符可能会出现十次以上的情况)
- 一个序列,它的形式是12349678,9是最高峰,经历了一个上升又下降的过程,找出里面的最大值的位置,要求效率尽可能高
- 二叉查找树的删除操作,手写代码
- 二分查找,手写代码
- 有海量条 url,其中不重复的有300万条,现在希望挑选出重复出现次数最高的 url,要求效率尽可能的高
- 一篇英语文章,去掉字符只留下k个,如何去掉才能使这k个字符字典序最小
- 弗洛伊德算法和 Dijkstra算法的区别?复杂度是多少?讲讲 Dijkstra算法的具体过程
- 反转字符串,要求手写代码,优化速度、优化空间
- 给出两个无向图,找出这2个无向图中相同的环路。手写代码
Java实现单例模式的正确姿势
Android面试——编程算法题
部分答案可参考:CSDN:剑萧舞蝶