工作系列 20:Android面试

Published: 26 Jun 2017 Category: 工作

闲聊一二句


谈到面试,那就是如何优雅的把自己卖出去。面试时给面试官的第一印象很重要;

你前面第一分钟的谈吐,优雅程度,表现出来的资深程度,在接下来的面试中,就会不断的被面试者去验证他的判断是否准确;

然后,然后就没有然后了;

面试应该有几个维度去判断:


离开原因 定位优缺点 公司产品看法 职业规划 工作态度

知识点覆盖


约束布局 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引导实现思路?

补充:

  1. 什么时候继承SurfaceView,什么时候继承View
  2. SurfaceView,TextureView使用场景
  3. 几种线程切换的方式?
  4. 坐标系Gcj02跟bd09ll之间可否转换?
  5. probuffer有没有过了解?
  6. getWidth getMeasureWidth区别
  7. setUserVisibleHint方法是?