安卓 每日一题 2020年4月问题及答案
最新 文章连接,本文不再同步
Android4月1日题: 什么是代理模式
答:为其他对象提供一种代理以控制对这个对象的访问,它主要解决在直接访问对象时带来的问题, 比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象 创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或 者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层
Android4月2日题: 当两个对象的hashcode相同会发生什么?
答:如果是在存储阶段,两个对象如果作为key,他们的hashCode相同,就会引起hash 碰撞,面对hash碰撞,jdk1.7 采用的是链表来解决,相同的hashCode的对象会放到一个链表中,在链表中,通过对比对象本身和hashcode 是否都相同来判断是否是同一个节点,如果有不同,那么就不是同一个节点,如果相同,那就是同一个节点,而在jdk 1.8中采用的不是链表,而是采用红黑树来解决冲突。
Android4月3日题:ViewModel和AndroidViewModel区别是什么?
答:如果需要在viewmodel中使用上下文,则应使用AndroidViewModel,因为它包含应用程序上下文(以检索上下文调用getApplication()),否则使用常规ViewModel.
Android4月7日题:GC算法有哪些
答:标记-清除算法:一般为老年代的垃圾回收算法,效率高,但可能产生大量内存碎片
标记-整理算法:parallel old收集器与serial old收集器使用了此算法,解决了标记清除的内存碎片问题,但是效率低
复制算法:一般用于新生代的垃圾回收。会导致可用內存缩小;需要額外空间做分配担保(老年代)
Android4月8日题:LiveDataBus优点
答:LiveDataBus的实现及其简单,相对EventBus复杂的实现,LiveDataBus只需要一个类就可以实现
LiveDataBus可以减小APK包的大小
LiveDataBus只依赖Android官方组件LiveData,本身实现只一个类。EventBus 57Kb、RxJava 2.2M
LiveDataBus 依赖方支持更好
LiveDataBus只依赖Android官方组件LiveData,相比RxBus依赖的RxJava和RxAndroid,依赖方支持更好
LiveDataBus具有生命周期感知
Android4月9日题:什么是内存抖动?如何避免
答:非常频繁的创建与销毁对象。这可能会导致大量内存碎片的产生,同时GC频繁的工作会影响程序流畅性。所以需要避免在频繁调用的方法中new对象,同时也可以使用对象池来管理需要经常创建的小对象完成复用,如:Handler的message池
Android4月10日每日一题:讲下View的绘制流程?
答:View的工作流程主要是指measure、layout、draw这三大流程,即测量、布局和绘制,其中measure确定View的测量宽/高,layout确定View的最终宽/高和四个顶点的位置,而draw则将View绘制到屏幕上
View的绘制过程遵循如下几步:
绘制背景 background.draw(canvas)
绘制自己(onDraw)
绘制 children(dispatchDraw)
绘制装饰(onDrawScollBars)
Android4月13日题:MotionEvent是什么?包含几种事件?什么条件下会产生?
答:MotionEvent是手指接触屏幕后所产生的一系列事件。典型的事件类型有如下:ACTION_DOWN:手指刚接触屏幕
ACTION_MOVE:手指在屏幕上移动
ACTION_UP:手指从屏幕上松开的一瞬间
ACTION_CANCELL:手指保持按下操作,并从当前控件转移到外层控件时触发
正常情况下,一次手指触摸屏幕的行为会触发一系列点击事件,考虑如下几种情况:点击屏幕后松开,事件序列:DOWN→UP
点击屏幕滑动一会再松开,事件序列为DOWN→MOVE→…→MOVE→UP
Android4月14日题:(灵魂拷问)你的职业发展之路是怎样的?未来有什么打算吗?(开放性问题,说出你的想法)
参考:Android开发的职业发展路径,基本上有两条:技术专精路线和技术转产品路线。
1、技术为王。晋升轨迹:Android初级开发程序员—中级—高级–软件架构师–系统架构师–项目经理–首席技术官
2、由技术向产品方向转型。晋升轨迹:Android初级开发程序员—中级—高级–软件架构师–系统架构师–产品经理–产品总监
其实还有第三条路线,就是自己创业,但不管哪个方向,对自己的未来提前客观的做出职业发展规划是有必要的,还是那就老话,机会是留给有准备的人的。
最后,希望每个人都有一个好的职业生涯,祝最后梦想都实现~
(很多人会说这个东西还有答案呀,在这里说一下这个并非是答案,只是一个大佬给予的参考)
Android4月15日题:如何解决View的事件冲突 ?举个开发中遇到的例子 ?
参考答案:
常见开发中事件冲突的有ScrollView与RecyclerView的滑动冲突、RecyclerView内嵌同时滑动同一方向
滑动冲突的处理规则:对于由于外部滑动和内部滑动方向不一致导致的滑动冲突,可以根据滑动的方向判断谁来拦截事件。
对于由于外部滑动方向和内部滑动方向一致导致的滑动冲突,可以根据业务需求,规定何时让外部View拦截事件,何时由内部View拦截事件。
对于上面两种情况的嵌套,相对复杂,可同样根据需求在业务上找到突破点。
滑动冲突的实现方法:外部拦截法:指点击事件都先经过父容器的拦截处理,如果父容器需要此事件就拦截,否则就不拦截。具体方法:需要重写父容器的onInterceptTouchEvent方法,在内部做出相应的拦截。
内部拦截法:指父容器不拦截任何事件,而将所有的事件都传递给子容器,如果子容器需要此事件就直接消耗,否则就交由父容器进行处理。具体方法:需要配合requestDisallowInterceptTouchEvent方法
Android4月16日题:Jni静态注册的弊端是什么
参考答案:
1.编写不方便,JNI 方法名字必须遵循规则且名字很长;
2.编写过程步骤多,不方便;
3.程序运行效率低,因为初次调用native函数时需要根据根据函数名在JNI层中搜索对应的本地函数,然后建立对应关系,这个过程比较耗时;
Android4月17日题:您在项目开发中使用的屏幕适配方案是什么样的?
参考答案:
1.使用dimens
2.使用谷歌的自动布局或百分比布局
3.自定义适配布局文件
4.对于手机与平板的适配,使用Layout目录
5.切入源码层实现
Android4月20日题:isAssignableFrom 与 instanceof 的区别
参考答案:
isAssignableFrom是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。
instanceof是用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例。
Android4月21日题:Butterknife和GsonFormat这类代码自动生成是如何实现的?
答:需要使用AS插件开发技术
1.在Intellij中新建项目
2.新建Action以设置菜单
3.在Action关联的类中进行功能开发开发完成生成对应的插件包
Android4月22日题:自定义View有哪几种?
答:1、自定义组合控件
多个控件组合成为一个新的控件,方便多处复用
2、继承系统View控件
继承自TextView等系统控件,在系统控件的基础功能上进行扩展
3、继承View
不复用系统控件逻辑,继承View进行功能定义
4、继承系统ViewGroup
继承自LinearLayout等系统控件,在系统控件的基础功能上进行扩展
5、继承ViewViewGroup
不复用系统控件逻辑,继承ViewGroup进行功能定义
Android4月23日题:v3签名key和v2还有v1有什么区别
答:在v1版本的签名中,签名以文件的形式存在于apk包中,这个版本的apk包就是一个标准的zip包,V2和V1的差别是V2是对整个zip包进行签名,而且在zip包中增加了一个apk signature block,里面保存签名信息。
v2版本签名块(APK Signing Block)本身又主要分成三部分:
SignerData(签名者数据):主要包括签名者的证书,整个APK完整性校验hash,以及一些必要信息
Signature(签名):开发者对SignerData部分数据的签名数据
PublicKey(公钥):用于验签的公钥数据
v3版本签名块也分成同样的三部分,与v2不同的是在SignerData部分,v3新增了attr块,其中是由更小的level块组成。每个level块中可以存储一个证书信息。前一个level块证书验证下一个level证书,以此类推。最后一个level块的证书,要符合SignerData中本身的证书,即用来签名整个APK的公钥所属于的证书
Android4月24日题:弱引用应用场景
参考答案:1. 如果一个对象是偶尔的使用,并且希望在使用时随时就能获取到,但又不想响此对象的垃圾收集,那么应该用 Weak Reference 来记住此对象。
- 想引用一个对象,但是这个对象有自己的生命周期,你不想介入这个对象的生命周期,这时候就应该用弱引用,这个引用不会在对象的垃圾回收判断中产生任何附加的影响。
Android4月27日题:JVM运行时数据区栈区中的栈帧主要由哪些部份组成?它们的作用分别是?
参考答案:
1.局部变量表
用于存放八大基本数据类型和对象的引用
2.操作数栈
存放操作数的一块临时空间
3.动态链接
存放编译时不能确定方法入口的方法的地址
需要在运行时来保证方法调用的正确性
4.方法出口(返回地址)
Android4月28日题:你知道观察者设计模式和 发布订阅设计模式的区别吗?
参考答案:
表面上看:
1、观察者模式中,两个角色:观察者和被观察者
2、发布订阅模式中,三个角色:发布者,订阅者,经纪人
深层次的看:
1、观察者模式:观察者和被观察者,是松耦合的关系
2、发布订阅模式:发布和订阅者是完全不存在耦合的
从使用层面上看:
1、观察者模式:多用于单个应用内部,维护的是单一事件对应多个依赖的
event -> [obj1,obj2,obj3,…]
2、发布订阅模式:多用于跨应用的模式,比如我们说的消息的中间件,维护的是多个事件以及依赖的
event1 -> [obj1,obj2,…] event2 -> [obj1,obj3,…]
Android4月29日题:请简述 retrofit 中,一个方法的执行流程
参考答案:
首先我们通过我们 create 出来的 retrofit 实例来调用接口方法。所有的 interface 方法都会在 java 动态代理机制的作用下,调用一个匿名类 new InvocationHandler 中的 invoke。在 invoke 中,会根据我们想调用的方法 method 构造出一个 serviceMethod,然后调用 serviceMethod.callAdapter.adapt(okHttpCall) 作为返回结果。
构造 serviceMethod 的时候,会根据 interface 中 method 的的返回类型,构造出 converter 和 callAdapter。其中, converter 一般使用 gson converter。gson converter 可以自动将服务器返回的 json 数据转化成 java 中的 model 类的实例。callAdapter 绝大多数的实现方式是在构造函数中接收一个 okHttpCall 实例,然后将 enqueue 和 execute 委托给这个 okHttpCall 实例来执行。okHttpCall 在获取到服务器数据之后,会利用 serviceMethod.toResponse(body) 来对数据进行转化。其中,转化的时候便利用了 converter。数据转化完成后,封装成 Response ,传递给调用方。其中 R 就是我们的数据类。
Android4月30日题:AOP实际常见的场景有哪些?
参考答案:
统计埋点
日志打印
数据校验
行为拦截
性能监控
动态权限申请
转载自 安卓2020年4月每日一题
安卓 每日一题 2020年4月问题及答案相关推荐
- 安卓 每日一题 2020年3月问题及答案
Android 3月2日题: onMeasure是干什么的? 答案: onMeasure方法主要是用于度量ViewGroup的子view的大小同时确定和保存自己ViewGroup的大小,将xml中的布 ...
- 安卓 每日一题 2020年5-6月问题及答案
最新 文章连接,本文不再同步 Android5月7日题: 在使用 HashMap 的时候,用 String 做 key 有什么好处? 参考答案: HashMap 内部实现是通过 key 的 hashc ...
- 安卓 每日一题 2020年9-10月问题及答案
最新 文章连接,本文不再同步 Android9月1日题: 请解释下 Android 程序运行时权限与文件系统权限的区别? 参考答案: apk 程序是运行在虚拟机上的,对应的是 Android 独特的权 ...
- 安卓 每日一题 2019年9-12月问题及答案
最新 文章连接,本文不再同步 安卓 每日一题 2019年9-12月问题及答案 文章目录 安卓 每日一题 2019年9-12月问题及答案 安卓2019年09月每日一题 安卓2019年10月每日一题 安卓 ...
- 第11届 蓝桥杯-第1、2次模拟(软件类)真题-(2020年3月、4月)-官方讲解视频
蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...
- 实验室每日一题 2020.11.30
实验室每日一题 2020.11.30 先打开没有加密的文本文档,里面有一串密文,根据结尾的+推测应该是XXencode,直接找个在线网站解密,又得到一串密文:fwilvyhublqwhuhvwlqj, ...
- 计算机统考多媒体技术操作题,2020年9月网络教育统考《计算机应用基础》多媒体技术模拟题试卷操作题...
2020年9月网络教育统考<计算机应用基础>多媒体技术模拟题试卷操作题 操作题: 1.在考生文件夹中,有一个"Test.rar"压缩文件,其中包括"Test1 ...
- 全国青少年编程等级考试python一级真题2020年9月(含题库答题软件账号)
对青少年编程等级考试Python真题答题考试系统关注的请点击 https://blog.csdn.net/zhengzyx2040/article/details/119329247 青少年软件编程( ...
- 计算机专业英语自考真题,2020年4月自考《专业英语》真题及答案
距离2020年10月成人教育自学考试愈发临近,考生该如何高效复习?中国教育在线自考频道小编为各位考生整理了2020年4月自考<专业英语>真题及部分答案,考生可针对历年考试真题重要知识点强化 ...
最新文章
- SQL Server 行转列,列转行
- linux卸载netbeans,如何清除NetBeans中的缓存
- Spring boot登录错误提示
- C语言学习之输入两个正整数m和n,求其最大公约数和最小公倍数。
- python语言学习零基础教学视频_Python告白小白视频教程(零基础入门)
- vue验证整数_前端Vue中常用rules校验规则
- Qt|设计模式工作笔记-对单例模式进一步的理解(静态加单例实现专门收发UDP对象)
- 《大道至简》阅读笔记02
- java 注册表 下载_Java修改windows注册表(完全修改)
- sql语句优化的几种方法
- C语言实现QQ刷屏,绝对实用
- Python实现键盘操作方法
- 【ARTS】01_07_左耳听风-20181224~1230
- Thinkpad e450c 如何关闭触控板
- Android调用聚 合 API
- Essentially No Barriers in Neural Network Energy Landscape
- Maven裁剪反应堆
- 宝宝大脑发育差异背后肠道菌群的故事
- AUL恢复truncate删除的表
- Illustrator插件开发之ADM列表
热门文章
- ES集群切换单机,健康值为黄色
- UE4 DownTown大城市道路-摩天大楼-中央公园-汽车200个场景资源包
- 英语针对顾客购买计算机所做的介绍,华南理工网络教育_网络营销课程作业(一)...
- Vue 打包后报错 Uncaught TypeError: Cannot redefine property: $router
- SQL Server存储过程学习(通俗易懂)
- mysql中日期函数_mysql中日期函数ADDDATE()函数用法大全
- 大华门禁SDK二次开发(二)-SignalR应用
- Linux下的段错误分析
- NTP时钟服务器(NTP时间服务器)助力校园网络建设
- halcon倾斜字体矫正(举一反三)