加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

关于Android机能、架构和技能题目的试探

发布时间:2019-08-27 04:13:59 所属栏目:业界 来源:Growup
导读:整体机能怎样探测,有哪些方面,什么指标,怎么担保更流通 谈谈架构。大项目,逻辑多怎么办,怎样应对多App和多终端 android的成长大变乱和首要技能成长 avtivity(service)启动流程简述 动态化的几种方案 热修复的道理 收集这块怎么优化 数据库机能怎么保
副问题[/!--empirenews.page--]

  1. 整体机能怎样探测,有哪些方面,什么指标,怎么担保更流通
  2. 谈谈架构。大项目,逻辑多怎么办,怎样应对多App和多终端
  3. android的成长大变乱和首要技能成长
  4. avtivity(service)启动流程简述
  5. 动态化的几种方案
  6. 热修复的道理
  7. 收集这块怎么优化
  8. 数据库机能怎么担保
  9. 线程安详怎么担保,异步并发这块你怎么做的

这几个题目是我按照本身的口试经验总结的,各人一路交换进修。

着实不必然口试时才相识这些,而且相识绝对不是重点,而是实践,绝知此事要躬行是真理,这样的题目也好像没有“最佳谜底”,可是可以颁发一下本身概念和实践结论。

有些做法或概念一下子想不起来,必要详细做的时辰再google一下,可能跟伴侣雷同拓展一下,以是先做个简朴的答复,请各人增补。

关于Android机能、架构和技能题目的试探

1. App机能怎样探测,有哪些方面,什么指标,怎么担保更流通?

机能可以按照帧率、内存、CPU、GPU等指标的数据和示意帮助判定,可以从/proc文件夹下读取文件获取cpu、内存等信息,也可以用dumpsys呼吁获取帧率等信息,也可以通过android API获取相干信息。

尚有许多机能相干的说明器材很重要,帮助判定和说明,好比Heap Tool、Memory Monitor、Lint、HierarchyView、WireShark、TraceView等。

担保流通有许多点可以去研究,好比机关、代码、缓存、收集、数据库、异步并发等方面的优化,涉及许多的常识点,可以google下,先简朴说下,偶然刻再细述。

机关充实操作include、viewstub、merge 等标签,节制层级,停止太过渲染(绘制)。

代码上只管行使final、局部变量、体系函数如arraycopy等、位移操纵是否可以取代乘除、for轮回是否可以停止size计较和new工具等等。

缓存方面,线程、位图、视图、收集数据是否可以被缓存,IO用缓冲流。

收集方面,如只管停止轮询,节制节拍和频率,IP直连,回收SPDY方案(或HTTP2.0)来实现压缩header、多路复用、双向通讯等,API数据压缩,多个哀求是否可以归并,数据压缩和实行protocol buffer相干序列化方案。

数据库方面,实行用SQLiteStatement取代SQLiteDatabase完成操纵,索引和事宜的充实领略和行使,留意SQL语句语法和拼接,回收部门查询和耽误加载。

异步并发方面,全App只有一个线程池,节制焦点并发数目,节制超载时列队数目和计策,公道调治使命,优化营业逻辑。

最后关于帧率,你看到的视觉卡顿,直接缘故起因根基是“掉帧”。关于帧率,只管担保主线程里做的工作,不会高出16毫秒(其拭魅这挺难的),16毫秒大法好,详细可以去领略下CPU、GPU、屏幕三者怎样共同完成渲染的,保举老罗的博客。

2. 谈谈架构。大项目,逻辑多怎么办,怎样应对多App和多终端

恰当参考我的答复 奈何搭高质量的Android项目框架,框架的布局详细描写? ,团结模块化、组件化头脑去做,多实践一下mvp、mvvm等计策。

3. android的成长大变乱和首要技能成长

额,挺多的,伴侣们增补吧。

这个题目蛮好的 Android 开拓有哪些新技能呈现?

4. avtivity(service)启动流程简述

可以本身阅读源代码,团结罗先生的博客,研究的很是棒:Android应用措施启动进程源代码说明

5. 动态化的几种方案

早期的H5方案,通过js和java互通加强h5的手段。

尚有DexClasssLoader团结反射署理的方案。

尚有React Native方案,手淘的Weex框架。

尚有Lua等剧本实现动态化方案。

6. 热修复的道理

Github上读一下AndFix这个项目标源码,尚有xposed、dexposed。

大抵道理就是将java要领通过c/c++修改属性变为public native要领,上下文携带到native层,然后按照上下文指向另一个java要领,从而“偷梁换柱”,假如是支持ART的手机,那么计策纷歧样,将bug method的要害信息(classloader、theadid等)保存,将修复过的要领的各类信息赋给bug method,完成“移花接木”。

其它,着实有挺多的计策改变运行时举动的,好比:

  • Javasisst:字节码修改类库,依靠字节码修改和DX类库,可以完成动态替代和切面编程。
  • AspectJ:依靠字节码编织器,必要凭证其语法来编写,必要一点“编织”时刻。
  • Xposed:的确是一个Bug,神器般的存在,没准往后会被Android体系修复呢,不只可以改变本身的类举动还可以hook体系的要领,root过的呆板还可以hook其他App和体系历程。

7. 收集这块怎么优化

只管停止轮询,节制节拍和频率。

IP直连节减DNS理会时刻。

实行其他数据序列化方案好比protocol buffer等。

回收SPDY方案(或HTTP2.0)来压缩header、多路复用、双向通讯等。

处事器做优化,好比漫衍式、缓存之类的,镌汰API涉及的营业操纵所必要的时刻嘛。

API接口数据精简,多个哀求是否可以归并,增量哀求啊、GIP压缩啊什么的,等等。

8. 数据库机能怎么担保

实行行使SQLiteStatement代替SQLiteDatabase工具完成操纵,停止直接行使SQLiteDatabase提供的update、inset等要领。

索引和事宜的充实领略和行使,批量操纵行使事宜极大晋升速率,这个我是做过试验的,结果惊人。

SQL语句拼接和自己的优化,仅查询部门局部数据,行使耽误加载计策。

10万条数据插入比体系SQLiteDatabase操纵快一倍,保举我的LiteOrm数据库框架 https://github.com/litesuits/android-lite-orm

9. 线程安详怎么担保,异步并发这块你怎么做的

领略并行使ReentrantLock,Synchronized掩护工具或进程,final来掩护不行变工具,无状态和只读工具是安详的,公道行使一些 concurrent容器,好比concurrenthashmap等,重量级耗时使命思量是否可以开释锁,多线程下实例化或耽误加载必要掩护起来,掩护多线程下要害数据会见的原子性,等等尚有许多的。。。

保举研究下Doug Lea主写和计划的java concurrent包,领略CountDownLatch、CyclicBarrier、Semaphore、FutureTask等工具。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读