
Android经典面试题
IT_YangKun
此博客停止更新,可以关注我新博客地址。https://juejin.im/user/578259398ac2470061f3a3fb/posts
展开
-
面向 Android 高级工程师的一份面试宝典 (持续更新)
## 前言疫情一过,我相信将会是面试求职的高峰时期,如果此时手里有份高质量的面试宝典,那么你将得心应手面对考官各种问题。虽然不敢保证你能应聘上心仪的职位,但是能保证看完这些内容你的收获将超乎你的想象! 此份面试宝典搜集各大网络平台(如果侵权,请您告知),在此感谢他们的用心总结,才有这份足够全面的面试宝典; int min(int x , int y ); } build一下gen目录下会生成ICalcAIDL.java文件/* * This file i原创 2016-10-05 15:40:42 · 268 阅读 · 0 评论 -
Binder机制
Binder机制首先Binder是Android系统进程间通信(IPC)方式之一。Binder使用Client-Server通信方式。Binder框架定义了四个角色:Server,Client,ServiceManager以及Binder驱动。其中Server,Client,ServiceManager运行于用户空间,驱动运行于内核空间。Binder驱动程序提供设备文件/dev原创 2016-10-05 15:42:37 · 185 阅读 · 0 评论 -
Zygote和System进程的启动过程
Zygote和System进程的启动过程init脚本的启动+------------+ +-------+ +-----------+|Linux Kernel+--> |init.rc+-> |app_process|+------------+ +-------+ +-----------+ create and pub转载 2016-10-05 15:43:48 · 275 阅读 · 0 评论 -
MVC,MVP,MVVM的区别
MVC,MVP,MVVM的区别MVC软件可以分为三部分视图(View):用户界面控制器(Controller):业务逻辑模型(Model):数据保存各部分之间的通信方式如下:View传送指令到ControllerController完成业务逻辑后,要求Model改变状态Model将新的数据发送到View,用户得到反馈Tips:所有的通信都是单向的原创 2016-10-05 15:44:33 · 320 阅读 · 0 评论 -
MVP
MVP为什么需要MVP尽量简单 大部分的安卓应用只使用View-Model结构,程序员现在更多的是和复杂的View打交道而不是解决业务逻辑。当你在应用中只使用Model-View时,到最后,你会发现“所有的事物都被连接到一起”。复杂的任务被分成细小的任务,并且很容易解决。越小的东西,bug越少,越容易debug,更好测试。在MVP模式下的View层将会变得简单,所以即便是他请求原创 2016-10-05 15:46:37 · 494 阅读 · 0 评论 -
Android开机过程
Android开机过程BootLoder引导,然后加载Linux内核.0号进程init启动.加载init.rc配置文件,配置文件有个命令启动了zygote进程zygote开始fork出SystemServer进程SystemServer加载各种JNI库,然后init1,init2方法,init2方法中开启了新线程ServerThread.在SystemServer中会创建一个socket客原创 2016-10-05 15:47:29 · 196 阅读 · 0 评论 -
Retrofit2 源码解析
Retrofit2 源码解析字数3578 阅读10271 评论16 喜欢48原文链接:http://bxbxbai.github.io/2015/12/13/retrofit2-analysis/开发Android App肯定会使用Http请求与服务器通信,上传或下载数据等。目前开源的Http请求工具也有很多,比如Google开发的Volley,loopj的An转载 2016-10-05 15:48:02 · 306 阅读 · 0 评论 -
Android Glide源码解析
Android Glide源码解析AndroidJava编程源码功能介绍使用文章介绍以及和Picasso的对比分析请参考Introduction to Glide, Image Loader Library for Android, recommended by Google由于这篇文章使用glide的老版本,因此有些转载 2016-10-05 15:49:31 · 574 阅读 · 0 评论 -
EventBus
EventBus概述EventBus是一款针对Android优化的发布/订阅(publish/subscribe)事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息。简化了应用程序内各组件间、组件与后台线程间的通信。优点是开销小,代码更优雅。以及将发送者和接收者解耦。比如请求网络,等网络原创 2016-10-05 15:50:12 · 206 阅读 · 0 评论 -
EventBus 源码解析
EventBus 源码解析 作者:Trinea本文为 Android 开源项目源码解析 中 EventBus 部分项目地址:EventBus,分析的版本:ccc2771,Demo 地址:EventBus Demo分析者:Trinea,校对者:扔物线,校对状态:完成1. 功能介绍1.1 EventBusEventBus 是一个 Android转载 2016-10-05 15:50:54 · 190 阅读 · 0 评论 -
Android ORM 框架之 greenDAO 使用心得
Android ORM 框架之 greenDAO 使用心得GreenDao 2015-07-28 14:51:23 发布您的评价: 5.0收藏 12收藏原文:http://itangqi.me/android/using-greendao-experience/转载 2016-10-05 15:52:14 · 370 阅读 · 0 评论 -
给 Android 开发者的 RxJava 详解
给 Android 开发者的 RxJava 详解作者:扔物线此文由以下厂商为作者提供 2000 元资金赞助:成为赞助方 /开始写作前言我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。而最近这几个月,我也发转载 2016-10-05 15:53:25 · 663 阅读 · 0 评论 -
Git 操作
Git 操作git 命令创建本地仓库git init获取远程仓库git clone [url]例:git clone https://github.com/you/yourpro.git创建远程仓库// 添加一个新的 remote 远程仓库git remote add [remote-name] [url]例:git remote add原创 2016-10-05 15:58:40 · 205 阅读 · 0 评论 -
经典面试题(不断更新中)
——————————————————————–史上最强面试题————————————————————————————-AIDL1、 要使用AIDL的前提的条件我们要只知道它是干什么的? #AIDL 也就是在Android中定义的一个语言,他是进行进程间通讯的一种实现方式,通过定义AIDL接口,可以实现进程间通讯机制2、 要知道它的使用步骤,前提条件?? #需求:比如现在有2个进程需原创 2016-10-05 02:59:51 · 8720 阅读 · 0 评论 -
Android图片中的三级缓存
Android图片中的三级缓存为什么要使用三级缓存如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的状况下,对于非wifi用户来说,流量还是很贵的,一个很耗流量的应用,其用户数量级肯定要受到影响特别是,当我们想要重复浏览一些图片时,如果每一次浏览都需要通过网络获取,流量的浪费转载 2016-10-05 15:37:55 · 205 阅读 · 0 评论 -
APP启动过程
APP启动过程上图就可以很好的说明App启动的过程ActivityManagerService组织回退栈时以ActivityRecord为基本单位,所有的ActivityRecord放在同一个ArrayList里,可以将mHistory看作一个栈对象,索引0所指的对象位于栈底,索引mHistory.size()-1所指的对象位于栈顶Zygote进程孵化出新的应用进程后,会执行A原创 2016-10-05 15:37:15 · 219 阅读 · 0 评论 -
Android几种进程
Android几种进程前台进程:即与用户正在交互的Activity或者Activity用到的Service等,如果系统内存不足时前台进程是最后被杀死的可见进程:可以是处于暂停状态(onPause)的Activity或者绑定在其上的Service,即被用户可见,但由于失去了焦点而不能与用户交互服务进程:其中运行着使用startService方法启动的Service,虽然不被用户可见,但是原创 2016-10-05 15:36:00 · 762 阅读 · 0 评论 -
Android基础知识
Android:五种布局: FrameLayout 、 LinearLayout 、 AbsoluteLayout 、 RelativeLayout 、 TableLayout 全都继承自ViewGroup,各自特点及绘制效率对比。FrameLayout(框架布局)此布局是五中布局中最简单的布局,Android中并没有对child view的摆布进行控制,这个布局中所有原创 2016-10-05 15:18:03 · 315 阅读 · 0 评论 -
Android 内存泄漏总结
Android 内存泄漏总结内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致 GC 不能回收。最近自己阅读了大量相关的文档资料,打算做个 总结 沉淀下来跟大家一起分享和学习,也给自己一个警示,以后 coding 时怎么避免这些情况,提高应用的体验和质量。转载 2016-10-05 15:19:32 · 284 阅读 · 0 评论 -
Handler内存泄漏分析及解决
Handler内存泄漏分析及解决一、介绍首先,请浏览下面这段handler代码:public class SampleActivity extends Activity { private final Handler mLeakyHandler = new Handler() { @Override public void handleMessage(M原创 2016-10-05 15:20:09 · 281 阅读 · 0 评论 -
Android性能优化
Android性能优化合理管理内存节制的使用Service如果应用程序需要使用Service来执行后台任务的话,只有当任务正在执行的时候才应该让Service运行起来。当启动一个Service时,系统会倾向于将这个Service所依赖的进程进行保留,系统可以在LRUcache当中缓存的进程数量也会减少,导致切换程序的时候耗费更多性能。我们可以使用IntentServ原创 2016-10-05 15:21:02 · 222 阅读 · 0 评论 -
ListView详解
ListView详解直接继承自AbsListView,AbsListView继承自AdapterView,AdapterView又继承自ViewGroup。Adpater在ListView和数据源之间起到了一个桥梁的作用RecycleBin机制RecycleBin机制是ListView能够实现成百上千条数据都不会OOM最重要的一个原因。RecycleBin是Ab原创 2016-10-05 15:23:35 · 292 阅读 · 0 评论 -
RecyclerView和ListView的异同
RecyclerView和ListView的异同ViewHolder是用来保存视图引用的类,无论是ListView亦或是RecyclerView。只不过在ListView中,ViewHolder需要自己来定义,且这只是一种推荐的使用方式,不使用当然也可以,这不是必须的。只不过不使用ViewHolder的话,ListView每次getView的时候都会调用findViewById(int原创 2016-10-05 15:25:06 · 337 阅读 · 0 评论 -
AsyncTask
AsyncTask首先从Android3.0开始,系统要求网络访问必须在子线程中进行,否则网络访问将会失败并抛出NetworkOnMainThreadException这个异常,这样做是为了避免主线程由于耗时操作所阻塞从而出现ANR现象。AsyncTask封装了线程池和Handler。AsyncTask有两个线程池:SerialExecutor和THREAD_POOL_EXECUTOR原创 2016-10-05 15:25:44 · 248 阅读 · 0 评论 -
Android动态加载dex技术初探
Android动态加载dex技术初探http://blog.youkuaiyun.com/u013478336/article/details/50734108Android使用Dalvik虚拟机加载可执行程序,所以不能直接加载基于class的jar,而是需要将class转化为dex字节码。Android支持动态加载的两种方式是:DexClassLoader和PathClassLoad原创 2016-10-05 15:26:35 · 370 阅读 · 0 评论 -
自定义控件
自定义控件自定义View的步骤:自定义View的属性在View的构造方法中获得我们自定义View的步骤[3.重写onMeasure](不必须)重写onDraw原创 2016-10-05 15:27:34 · 263 阅读 · 0 评论 -
图解 Android 事件分发机制
图解 Android 事件分发机制字数3882 阅读19164 评论92 喜欢251在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说转载 2016-10-05 15:29:11 · 176 阅读 · 0 评论 -
ANR
ANR1、ANR排错一般有三种类型KeyDispatchTimeout(5 seconds) --主要是类型按键或触摸事件在特定时间内无响应BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成ServiceTimeout(20 secends) --小概率事件 Service在特定的时间内无法处理完成2原创 2016-10-05 15:30:16 · 229 阅读 · 0 评论 -
ART和Dalvik区别
ART和Dalvik区别Art上应用启动快,运行快,但是耗费更多存储空间,安装时间长,总的来说ART的功效就是"空间换时间"。ART: Ahead of Time Dalvik: Just in Time什么是Dalvik:Dalvik是Google公司自己设计用于Android平台的Java虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备原创 2016-10-05 15:31:50 · 417 阅读 · 0 评论 -
Android关于OOM的解决方案
Android关于OOM的解决方案OOM内存溢出(Out Of Memory)也就是说内存占有量超过了VM所分配的最大出现OOM的原因加载对象过大相应资源过多,来不及释放如何解决在内存引用上做些处理,常用的有软引用、强化引用、弱引用在内存中加载图片时直接在内存中作处理,如边界压缩动态回收内存优化Dalvik虚拟机的堆内存分配自定义堆内存大小原创 2016-10-05 15:32:27 · 183 阅读 · 0 评论 -
Fragment
Fragment为何产生同时适配手机和平板、UI和逻辑的共享。介绍Fragment也会被加入回退栈中。Fragment拥有自己的生命周期和接受、处理用户的事件可以动态的添加、替换和移除某个Fragment生命周期必须依存于ActivityFragment依附于Activity的生命状态生命周期中那么多方法,懵逼了的话我们就一起原创 2016-10-05 15:34:09 · 191 阅读 · 0 评论 -
为什么要使用SurfaceView来实现动画?
为什么要使用SurfaceView来实现动画?因为View的绘图存在以下缺陷:View缺乏双缓冲机制当程序需要更新View上的图像时,程序必须重绘View上显示的整张图片新线程无法直接更新View组件SurfaceView的绘图机制一般会与SurfaceView结合使用调用SurfaceView的getHolder()方法即可获得SurfaceView关联的Surf原创 2016-10-05 15:35:26 · 290 阅读 · 0 评论 -
国内一线互联网公司面试题
java接口的意义-百度规范、扩展、回调抽象类的意义-乐视为其子类提供一个公共的类型 封装子类中得重复内容 定义抽象方法,子类虽然有不同的实现 但是定义是一致的内部类的作用-乐视内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立。在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。创建内部类对象的时刻转载 2016-10-05 15:10:27 · 5485 阅读 · 0 评论