杭州Android培训
达内杭州Android培训中心

13732203138

热门课程

怎么设计项目架构

  • 时间:2018-04-26 11:09
  • 发布:杭州android中心
  • 来源:疑难解答

首先,我们需要记住一点,在回答任何问题前,揣摩一下面试官的出题意图总是没错的。作为一个刚毕业的学生,面试官真的指望你能设计出多么巧妙的架构么?恐怕并不是,他们更多地只是想考察你有没有项目分层、功能模块划分以及公共模块提取等基本意识,然后再顺带考察一下你对一些经典架构的理解,什么MVC,MVP,MVVM,CLEAN等。好了,让我们看看在架构设计这一方面会问哪些相关的问题吧。

1.你为什么选择使用MVC而不是MVP或者其他架构?

这道题实际考察的是你对市面上主流的Android架构模式的了解。你至少需要知道每种架构的大致结构,然后了解一下它们各自解决的是其它架构无法解决的什么问题。最后,在谈你自己的选择时,结合项目的特点来说就可以了。其实,大部分学生时期的项目用个MVC就足够了,如果你代码行数最多的Activity都不到7、8百行,那么使用MVP或者其它架构给你带来的额外负担恐怕要比你的收益高很多,切忌矫枉过正。不过,抱着学习心态去使用这些架构都是值得鼓励的。

2.写过BaseActivity,BaseFragment么?怎么设计的?

关于详细介绍如何设计BaseActivity的文章,大家有兴趣可以自行百度一下。我这里说两点:一是在项目开始阶段可以先提出一个基类,但不用花太多时间想着怎么填充内容进去,很可能得不偿失,其实随着你项目的进展,那些重复实现的内容就会慢慢浮现,这些内容就是需要你在基类里实现的。二是在你实在不知道BaseActiviy里要放些什么的时候,至少可以编写各个生命周期方法中的的log,以及像eventbus这类第三方库的初始化以及销毁操作。

3.你项目中的package划分,是按照层次划分的呢,还是按照功能划分的呢?为什么?

按层次划分的package这个大家可能比较常用,那么按功能划分呢?可以看下面这张图。 这么做的好处是什么呢?看到代码结构你就能辨别这个app是干嘛的;更加模块化;代码切换更容易;更高级别的抽象;功能和层都分离开来了;可读性更强以及更易维护的结构更高的内聚;更易扩展;更少遇到改动无关类或者文件的情况;添加或者移除功能要容易很多;更多可复用的模块。 我这里并不是说按功能划分就比按层次划分好,只是想让大家看看别的思路。这题没有绝对的答案,但一定说出你在划分时的思考。

4.了解过AOP么?项目中有用到过么?

AOP面向切面编程与面向对象编程对应。我们都知道面向对象描述的是纵向上的关系,从父到子再到孙。而面向切面解决的是横向的问题,这些问题可以简单地理解为与业务逻辑无关的代码重用问题。大家在自己的项目其实都或多或少的用到过,比如在处理Http, SharedPreferences, Json, Xml, File, Device, System, Log, 格式转换等是,我们提取出来的公共类。 这样做能够使得App整体的结构更清晰合理,避免局部的代码臃肿,方便开发、测试以及后续的维护。

上一篇:Android数据存储的方式
下一篇:安卓工程师是怎样炼成的
选择城市和中心
贵州省

广西省

海南省