工作系列 20:Android面试
闲聊一二句
谈到面试,那就是如何优雅的把自己卖出去。面试时给面试官的第一印象很重要;
你前面第一分钟的谈吐,优雅程度,表现出来的资深程度,在接下来的面试中,就会不断的被面试者去验证他的判断是否准确;
然后,然后就没有然后了;
面试应该有几个维度去判断:
离开原因 |
定位优缺点 |
公司产品看法 |
职业规划 |
工作态度 |
知识点覆盖
约束布局 |
GPS坐标系 |
SoundPool |
LocalBroadcastManager |
HandlerThread |
Handler |
git |
git pages |
动态权限 |
问题点
问题1:简单介绍下Android经历?
问题2:Android 4大组件之中,介绍下Activity横竖屏切换时生命周期的调用顺序?
问题3:加密类型?MD5加密使用场景?RSA非对称加密算法?DES,AES对称加密算法
问题4:getWidth getMeasureWidth这两个方法分别在何时获取到值以及区别,跟我讲下?
问题5:平常下拉刷新控件自己是如何实现的?
问题6:内存泄漏场景?如何进行定位的? 1. 匿名内部类持有外部类的引用 2. 静态变量持有该类的实例 3. 单例模式导致的内存泄漏
问题7:简单介绍下LruCache用法?
问题8:Map,HashMap,HashTable,LinkedHashMap之间区别?
- LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的
- HashMap最多只允许一条记录的键为NULL,允许多条记录的值为NULL
- HashMap不支持线程同步,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致性
- Hashtable与HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtable在写入时会比较慢
问题9:几种方式来实现视频的播放? * 1. 自带的播放器。指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型 * 2. VideoView来播放。VideoView结合MediaController来实现对其控制 * 3. MediaPlayer类和SurfaceView来实现,这种方式很灵活 * 4. MediaPlayer类和TextureView来实现,这种方式更灵活
* 1. SurfaceView优点及缺点:
优点:可以在一个独立的线程中进行绘制,不会影响主线程
使用双缓冲机制,播放视频时画面更流畅
缺点:Surface不在View hierachy中,它的显示也不受View的属性控制,所以不能进行平移,缩放等变换,也不能放在其它ViewGroup中。SurfaceView 不能嵌套使用
* 2. TextureView优点及缺点:
优点:支持移动、旋转、缩放等动画,支持截图
缺点:必须在硬件加速的窗口中使用,占用内存比SurfaceView高,在5.0以前在主线程渲染,5.0以后有单独的渲染线程。
* 3. 小结:
从性能和安全性角度出发,使用播放器优先选SurfaceView
问题10:平常项目中经常使用的一些开源库是那些,能跟我简单的说说么?
问题11:Git是否熟悉?Git合并部分代码,如何进行合并
问题12:ViewPage如何实现仅加载当前可见Fragment数据?
问题13:三级缓存 http://www.cnblogs.com/android-ljwBlobs/p/4844987.html
问题14:GPS几种常用的坐标系?
问题15:VideoView SurfaceView TextureView 区别联系 1. TextureView主要用来绘制流内容(比如视频,openGl场景) 2. TextureView和surfaceView很相似,但是surfaceView是重新创建新窗口,这种方式效率高,但是不支持变化(旋转缩放等)操作,也很难再listview中使用,所以TextureView就弥补了这个缺点。 3. TextureView仅支持硬件加速,是通过GPU来绘制图形的。
问题16:普通的Uri由哪几个部分组成?
问题17:序列化与反序列化之Parcelable和Serializable浅析
问题18:动态权限适配是怎样实现的?第三方框架是?期间遇到重难点?是否有有效方法避免请求SD卡访问权限?
问题19:线程中,能否临时有2个Looper存在?
问题20:开发中常用数据库框架是?选此框架原因是?
问题21:能简单介绍下Android分包原理么?
问题22: 如何处理View连击事件触发的问题?
问题23:LocalBroadcastManager设计目的?
问题24:Service 和 IntentService 区别和优劣势?IntentService设计的目的?Service启动方式,使用场景?START_NOT_STICKY,START_REDELIVER_INTENT,START_STICKY3个返回值区别
问题25:简单的介绍下onMeasure,onLayout,onDraw方法?
问题26:APP外打开应用如何实现?简单的介绍下
问题27:fillAfter,fillBefore是针对那种动画的属性?属性动画的概念和补间动画的优劣势?
问题28:为什么 View.post(Runnable) 的操作可以更新 UI?
问题29:简单描述下dispatchOnTouchEvent,onInterceptTouchEvent,onTouchEvent调用顺序? onTouch. return true; onTouch > onTouchEvent. onCLick onTouch 事件冲突
问题30:HandlerThread和Thread之间的区别?
问题31: 微信类似”输入中…“,这个功能如何实现?
问题32:Android引导实现思路?
补充:
- 什么时候继承SurfaceView,什么时候继承View
- SurfaceView,TextureView使用场景
- 几种线程切换的方式?
- 坐标系Gcj02跟bd09ll之间可否转换?
- probuffer有没有过了解?
- getWidth getMeasureWidth区别
- setUserVisibleHint方法是?