Q:我看你简历写了MVC,说说你对它的认识?
A:MVC指的是 Modle,View,Controller.这种模式是为了让我们更好的将业务层和视图层分离开来,这样我们就可以在不依赖业务逻辑的情况下专注于视图设计.并且有利于项目组的团队开发. 像我刚完成的这个项目(从面试官的问题平滑过渡到自己的准备好的面试项目中去),就是用到了MVC.这个项目的框架呢,其实不是我写的,是我从上一家公司的一个项目中拔下来的.删掉了一些不能使用的,大体框架的代码都是可以复用的.这就是MVC的第一个好处,复用性比较高.第二呢,在我整理好框架之后,我们组的其他人,就可以同时开发视图,业务和逻辑层的代码了,效率会比较高.
Q:恩,好,那你除了知道MVC,还知道什么其他的设计模式吗?
A:额,MVC并不算设计模式吧,它应该算是框架模式.设计模式应该指工厂模式那些.(我是看着面试官年轻,不是很严肃那种才说的,大家要看情况,指出面试官的口误是否能帮助你能到offer,如果碰到技术大牛,就记住,所有的答案都不要说死,比如加个前缀:我知道的方法有.....如果被问到不会的,你可以以谦虚的态度,说:这个确实之前没有想到/遇到过,不知道您有什么办法解决呢?总之,秘诀就是,虐菜鸟,哄老鸟).除了MVC之外呢 , 我自己还做过一个小Demo,用的是MVP框架模式.MVP和MVC最大的区别就是,View不再直接使用Modle,所有的交互都放在Presenter内部.Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。而且,Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变.除此之外呢,最近比较火的一个MVVM也有所了解,他呢是根据微软的WPF集合MVP来的,这种模式和经典的MVP模式很像,唯一不同的是,我们需要为view量身定制model,也就是ViewModel,ViewModel中包含所有由UI特定的接口和属性,最后由这个ViewModel的视图绑定属性.
Q:嗯嗯,那再说说handler与AsyncTask的区别?
A:(像这种xx和xx有什么区别的问题,很多同学都答不上来,可能对两者都熟悉,但是之前从没想过拿两者比较,像这样的情况,建议同学们分别讲清楚这两个概念,再陈述过程中,可能你就发现有什么不同了,就算最后不能总结,你好歹也答出来了一大部分,比你傻愣着,大眼瞪小眼总要好些)
首先说说handler+thread,由于在android中ui线程是单线程,如果在ui线程中执行耗时操作,那么就会导致类似死机一样的体验.那么我们如果新开一个线程呢,让这个复杂耗时的任务到后台去执行,但是执行完毕了我们也无法和ui进行交互.所以这里就引入了handler+thread这个概念.我们通常在UI线程中创建一个handler,handler相当于一个处理器,它主要负责处理和绑定到该handler的线程中的message。每一个handler都必须关联一个looper,并且两者是一一对应的,looper负责从其内部的messageQueue中 拿出一个个的message给handler进行处理。因为我们这里handler是在UI线程中实现的,所以经过这么一个handler、message机制,我们就可以回到UI线程中了.
如果消息阻塞了呢?还有很多其他的原因都可能导致handler+thread会出现问题.从android1.5开始,系统将AsyncTask引入到android.os包中,用于在某些Thread+Handler不适用的情况.它最大的特点,个人经验来说,在于过程
可控,自带多线程.
最后就是问我多少k,我说我上家公司13,然后他就出去了,,,去叫hr啦,又扯了扯闲话,给了14k,俺只能表示回去考虑下,之后再回复她..
这次分享差不多就到这,要跟大家补充的就是: 在班上成绩怎么样,学的怎么样,代码敲的怎么样其实和拿到offer的成功率都不一定是成正比的,我上面说的那些 , 我相信每一个同学,多出去面试几次,多在网上搜搜资料看,都是能答得上来的.就是很多同学迈不开第一步!!!窝在寝室 , 总催眠自己 , 还没复习好,还没准备好 , 然后在寝室超低效率的"复习着". 复习的东西还不如他忘的速度 . 所以同学们 , 这次最想和大家说的就是 : 勇敢的出去面 , 在面试中成长!