面试总结一

领导的思路

结果导向,性能优化中,在界面流畅性问题上,以前指标是多少,现在指标是多少?
内存优化上,以前指标是多少,现在指标是多少?

http://toughcoder.net/blog/2015/09/11/android-performance-profiling-made-easy/

TraceView和SysTrace

RecycleView与ListView区别

http://dev.qq.com/topic/5811d3e3ab10c62013697408

ANR

http://droidyue.com/blog/2015/07/18/anr-in-android/index.html

Android各版本之间的差异

5.0 Level21

加入了64位系统版本、ART模式作为默认选项、Material Design

6.0 Android M 22:

  1. App Permissions(软件权限管理):在Android M里,应用许可提示可以自定义了。它允许对应用的权限进行高度管理,比如应用能否使用位置、相机、麦克风、通讯录等,这些都可以开放给开发者和用户。

  2. Chrome Custom Tabs(网页体验提升):新版的M对于Chrome的网页浏览体验进行了提升,它对登陆网站、存储密码、自动补全资料、多线程浏览网页的安全性进行了一些列的优化。

  3. App Links(APP关联):Android M加强了软件间的关联,谷歌在现场展示了 一个例子,比如你的手机邮箱里收到一封邮件,内文里有以个Twitter链接,用户点击该链接可以直接跳转到Twitter应用,而不再是网页。
  4. Android Pay(安卓支付):终于来了!Android支付统一标准。新的M系统中集成了Android Pay。其特性在于简洁、安全、可选性。Android Pay是一个开放性平台,使用户就可以选择谷歌的服务或者使用银行的APP来使用它,Android Pay支持4.4以后系统设备,在发布会上谷歌宣布Android Pay已经与美国三大运营商700多家商店达成合作。支付功能可以使用指纹来进行支付,这意味着今年基于安卓M的Nexus产品肯定会有指纹识别了。
  5. Fingerprint Support(指纹支持):Android M增加了对指纹的识别API,谷歌开始在M里自建官方的指纹识别支持,力求Android统一方案,目前所有的Android产品指纹识别都是使用非谷歌认证的技术和接口。
  6. Power & Change(电量管理 ):新的电源管理模块将更为智能,比如Android平板长时间不移动时,M系统将自动关闭一些App。同时Android M设备将支持USB Type-C接口,新的电源管理将更好的支持Type-C接口。

7.0 Android N:

  • Multi-Window Support (分屏多窗口支持)
  • Direct Replay & Bundle Notifications (快捷回复和归拢通知)
  • 归拢通知
  • Data Saver (节约数据)
  • 支持 Java 8
  • Jack ( Java Android Compiler Kit )全新的编译工具集
  • Background Optimizations(后台优化)

Android N 为了节约内存和电量,移除了三种广播通知。移除的三种分别是:

ACTION_NEW_PICTURE:拍摄了新的图片
ACTION_NEW_VIDEO:拍摄了新的视频
CONNECTIVITY_ACTION: 用户网络发生变化
当我看到这些的时候,脑子里第一想法居然是好爽,那些国内的推送服务药丸!!推送服务又少了三种最有用的唤醒!!哈哈哈哈哈哈

不过对开发者来说影响还好,乍一看,CONNECTIVITY_ACTION 可能会影响比较大,但是官方给出了一个替代方案,想要接收网络变化的 App 需要注册一个 CONNECTIVITY_CHANGE 事件,当用户手机网络发生变化的时候,只有 App 正在运行的时候,才能收到 CONNECTIVITY_CHANGE 的回到,如果 App 已经被干掉,那么是不会回调的。这样既避免了网络变化监听的功能性缺失,又节约了用户电量,减少了唤醒。对国内第三方推送服务也是沉重的一击。

官方对 ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO 移除,也提供了缓和之计。就是使用 JobScheduler 这也是 Android 团队安利已久的一个定时任务方案,大家不要辜负了 Android 开发团队的一番苦心,快去读读文档,争取在下个项目里用上。

而且官方还说了,未来,很会广播机制都会有所改动。所以… 国内的 Android 目测也会越来越好用,国内无良厂商们能玩儿花样也会越来越少。撒花。

  • Scoped Directory Access (特定文件夹权限)

    有的时候,App 可能只需要读写特定文件夹,在此之前,你得申请 READ_EXTERNAL_STORAGE或者 WRITE_EXTERNAL_STORAGE 的权限,这个权限会让用户很不放心而且对于心怀鬼胎的 App,没准也会瞎搞,新的体系下,App 可以申请一个特定文件夹的权限来证明自己的清白。

    做个干干净净的 App,就用这个特性吧!

8.0 Android O

  1. 后台限制
    (1)后台运行限制 当应用进入到后台,没有可见且运行的组件(如后台Service),系统会释放应用所持有的唤醒锁(wakelock)

使用 NotificationManager.startServiceInForeground()方法启用foreground Service,旧方法不再有效

(2)后台位置获取限制
在Android O系统上,后台运行的应用,不再能频繁的收到位置更新的信息;但具体更新频次减少到多少,还需要最重版发布后测试确定

  1. 安全相关的变化
    (1)平台不再支持SSLv3
    (2)HttpsURLConnection在HTTPS链接建立时,不再自动切换到早期TLS协议版本重试
    (3)应用的WebView实例,将运行在独立的进程中

  2. 隐私策略变化
    (1)ANDROID_ID 不再是设备中所有应用共享的,而是每个应用获取到的都不一样,而且以包名和签名作为区分;卸载后重新安装也不会发生变化;但是手机恢复出厂设置后,应该和上一次的不再一致
    (2)获取系统属性net.hostname,将得到null

  3. 应用快捷方式变化
    以com.android.launcher.action.INSTALL_SHORTCUT广播方式创建快捷方式不再有效,而要使用 ShortcutManager的 requestPinShortcut()方法。

  4. Alert Window显示变化
    在声明SYSTEM_ALERT_WINDOW 权限后,选择使用TYPE_SYSTEM_ALERT等来使弹窗显示在其他应用之上;在Android O系统上都将显示在TYPE_APPLICATION_OVERLAY类型的窗口之下。而targetSdkVersion为android O的应用直接使用TYPE_APPLICATION_OVERLAY显示Alter Window。这样你的弹框可能还是在别人的弹窗之下。

  5. 其他
    (1)蓝牙:ScanRecord.getBytes()方法变化
    (2)键盘导航:使应用支持实体键盘导航(以前就有,只是重新提一下)
    (3)网络连接及HTTPS相关:在connect失败之后,调用send(DatagramPacket)会抛出SocketException,以及其他一些细节的变化
    (4)当集合为空时,AbstractCollection.removeAll() 和 AbstractCollection.retainAll() 将抛出 NullPointerException
    (5)本地化与国际化:如Currency.getDisplayName()等方法默认调用 Locale.getDefault(Category.DISPLAY),默认时区的解析等
    (6)联系人统计数据:不再提供联系人邮件或电话准确的联系过的次数信息,而是仅提供近似值

MVC MVP的优势与区别

http://kaedea.com/2015/10/11/android-mvp-pattern/

https://www.tianmaying.com/tutorial/AndroidMVC

MVP优势:

  1. 解耦复用
  2. 利用团队合作,负责写M和P层的可以分开
  3. 利于单元测试

缺点:
1. 因为持有View的引用,其实就是ActivityFragment的引用,会造成Leak.不过在onDestory时可以解除引用
2.

不同线程池的选择使用场景

如果是计算密集型的就用CPU核数 + 1。如果是I/O密集型的就可以用CacheExectors线程池,可以创建很多线程。

你可能感兴趣的:(面试)