2019最新中级Android面试题目,有着几篇就够了,2020年android面试题

本文详细介绍了Android从6.0到10.0的新特性,包括动态权限管理、多窗口支持、通知渠道等。同时,涵盖了Android开发中的关键概念,如MeasureSpec的测量模式、布局类型及其效率、Animation与Animator的区别,以及图片加载库Glide的精妙设计。此外,文章还讨论了应用更新策略,包括灰度更新、强制更新和增量更新,并提及了Kotlin和Flutter在移动开发中的角色。
摘要由CSDN通过智能技术生成

4.2.Android6.0新特性

  • 动态权限管理
  • 支持快速充电的切换
  • 支持文件夹拖拽应用
  • 相机新增专业模式

4.3.Android7.0新特性

  • 多窗口支持
  • V2签名
  • 增强的Java8语言模式
  • 夜间模式

4.4.Android8.0(O)新特性

  • 优化通知:通知渠道 (Notification Channel) 通知标志 休眠 通知超时 通知设置 通知清除
  • 画中画模式:清单中Activity设置android:supportsPictureInPicture
  • 后台限制
  • 自动填充框架
  • 系统优化
  • 等等优化很多

4.5.Android9.0(P)新特性

  • 室内WIFI定位
  • “刘海”屏幕支持
  • 安全增强
  • 等等优化很多

4.6.Android10.0(Q)新特性

  • 夜间模式:包括手机上的所有应用都可以为其设置暗黑模式。
  • 桌面模式:提供类似于PC的体验,但是远远不能代替PC。
  • 屏幕录制:通过长按“电源”菜单中的"屏幕快照"来开启。

###5.说下Measurepec这个类

参考回答:

作用:通过宽测量值widthMeasureSpec和高测量值heightMeasureSpec决定View的大小
组成:一个32位int值,高2位代表SpecMode(测量模式),低30位代表SpecSize( 某种测量模式下的规格大小)。

三种模式:

  • UNSPECIFIED:父容器不对View有任何限制,要多大有多大。常用于系统内部。
  • EXACTLY(精确模式):父视图为子视图指定一个确切的尺寸SpecSize。对应LyaoutParams中的match_parent或具体数值。
  • AT_MOST(最大模式):父容器为子视图指定一个最大尺寸SpecSize,View的大小不能大于这个值。对应LayoutParams中的wrap_content。

决定因素:值由子View的布局参数LayoutParams和父容器的MeasureSpec值共同决定。具体规则见下图:

###6.请例举Android中常用布局类型,并简述其用法以及排版效率

参考回答:

Android中常用布局分为传统布局和新型布局

  • 传统布局(编写XML代码
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

浏览器打开:qq.cn.hn/FTe 免费领取

、代码生成):

  • 框架布局(FrameLayout):

  • 线性布局(LinearLayout):

  • 绝对布局(AbsoluteLayout):

  • 相对布局(RelativeLayout):

  • 表格布局(TableLayout):

  • 新型布局(可视化拖拽控件、编写XML代码、代码生成):

  • 约束布局(ConstrainLayout)

  • 对于嵌套多层View而言,其排版效率:LinearLayout = FrameLayout >> RelativeLayout

###7.区别Animation和Animator的用法,概述其原理

参考回答:

  • 动画的种类:前者只有透明度,旋转,平移,伸缩4种属性,而对于后者,只要是该控件的属性,且有setter该属性的方法就都可以对该属性执行一种动态变化的效果。
  • 可操作的对象:前者只能对UI组件执行动画,但属性动画几乎可以对任何对象执行动画(不管它是否显示在屏幕上)。
  • 动画播放顺序:在Animator中,AnimatorSet正是通过playTogether()、playSequentially()、animSet.play().with()、before()、after()这些方法来控制多个动画协同工作,从而做到对动画播放顺序的精确控制

###8.使用过什么图片加载库?Glide的源码设计哪里很微妙?

参考回答:

  • 图片加载库:Fresco、Glide、Picasso等
  • Glide的设计微妙在于:
  • Glide的生命周期绑定:可以控制图片的加载状态与当前页面的生命周期同步,使整个加载过程随着页面的状态而启动/恢复,停止,销毁
  • Glide的缓存设计:通过(三级缓存,Lru算法,Bitmap复用)对Resource进行缓存设计
  • Glide的完整加载过程:采用Engine引擎类暴露了一系列方法供Request操作

###9.如何绕过9.0限制?

参考回答:

###10.对于应用更新这块是如何做的? (灰度,强制更新、分区域更新)

参考回答:

10.1.内部更新:

  • 通过接口获取线上版本号,versionCode
  • 比较线上的versionCode 和本地的versionCode,弹出更新窗口
  • 下载APK文件(文件下载)
  • 安装APK

10.2.灰度更新:

  • 找单一渠道投放特别版本。
  • 做升级平台的改造,允许针对部分用户推送升级通知甚至版本强制升级。
  • 开放单独的下载入口。
  • 是两个版本的代码都打到app包里,然后在app端植入测试框架,用来控制显示哪个版本。测试框架负责与服务器端api通信,由服务器端控制app上A/B版本的分布,可以实现指定的一组用户看到A版本,其它用户看到B版本。服务端会有相应的报表来显示A/B版本的数量和效果对比。最后可以由服务端的后台来控制,全部用户在线切换到A或者B版本~
  • 无论哪种方法都需要做好版本管理工作,分配特别的版本号以示区别。 当然,既然是做灰度,数据监控(常规数据、新特性数据、主要业务数据)还是要做到位,该打的数据桩要打。 还有,灰度版最好有收回的能力,一般就是强制升级下一个正式版。

10.3.强制更新:

一般的处理就是进入应用就弹窗通知用户有版本更新,弹窗可以没有取消按钮并不能取消。这样用户就只能选择更新或者关闭应用了,当然也可以添加取消按钮,但是如果用户选择取消则直接退出应用。

10.4.增量更新:

二进制差分工具bsdiff是相应的补丁合成工具,根据两个不同版本的二进制文件,生成补丁文件.patch文件。通过bspatch使旧的apk文件与不定文件合成新的apk。 注意通过apk文件的md5值进行区分版本。

###11.会用Kotlin、Fultter吗? 谈谈你的理解

参考回答:

  • Kotlin是一种具有类型推断的跨平台,静态类型的通用编程语言。 Kotlin旨在与Java完全互操作,其标准库的JVM版本依赖于Java类库,但类型推断允许其语法更简洁。
  • Flutter是由Google创建的开源移动应用程序开发框架。它用于开发Android和iOS的应用程序,以及为Google Fuchsia创建应用程序的主要方法
  • 关于kotlin的重要性,相信大家在日常开发可以体会到,应用到实际开发中,需要避免语法糖(例如单列模式、空值判断、高阶函数等)
  • 至于Flutter,目前Google官方文档还不完善,市面上采用此语言编写的项目较少,如需要具体深入,请参考官方文档

Android中级面试题目汇总解答到此就结束了。想获取更多Android方面的技术知识或者面试资料的可以添加QQ群:925019412

](https://upload-images.jianshu.io/upload_images/14140248-171bd8f25d7cd87c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值