面试官:你连MVCMVPMVVM都讲不清楚,还要我怎么放水?
Posted 塞尔维亚大叔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试官:你连MVCMVPMVVM都讲不清楚,还要我怎么放水?相关的知识,希望对你有一定的参考价值。
一天,风和日丽,小明迎来了人生中的第一次面试;
面试官是个头发稀疏的大叔,从事 android 开发9年,既是也是公司的技术Leader也是一名架构师,有严肃的一面,也有着专业的一面。
(他的差不多发量就这样,千万不要介意,头越秃,技术越强。)
面试开始
面试官:你好,请你做下自我介绍!
小明递过了自己简历:我叫小明,毕业于XXXX大学软工专业,大学里自学了Android、Java,之前有一段实习经历,然后是今年刚毕业打算找一份Android相关的工作。
面试官撇了撇嘴:明白了,咱们问个简单的问题吧!请你简述一下MVC、MVP、MVVM的定义吧?
小明:MVC的定义是;M:业务逻辑处理。、V:处理数据显示的部分。、C:Activity处理用户交互的问题。MVP的定义是;M:依然是业务逻辑和实体模型、V:对应于Activity,负责View的绘制以及与用户交互、P: 负责完成View与Model之间的交互。而MVVM,它是Model-View-ViewModel的缩写,View:对应于Activity和XML,负责View的绘制以及与用户交互,它是不能做任何与业务相关的操作。Model:实体模型,这跟咱们平常定义的Model层是不一样的。ViewModel:负责完成View与Model之间的交互,负责业务逻辑。它不能做任何与UI相关的操作,也就是不能持有任何View的引用。
面试官:很好,书上都回答出来了。那你知道MVC、MVP、MVVP的应用架构模式吗?
小明:emmm,这个就不是很清楚了。
面试官:好的,Android常用的设计模式你熟悉吗?
小明:熟悉,观察者模式、适配器模式、代理模式、工厂模式、单例模式、命令模式。
面试官:我是说的适用场景;
小明:emmm,我不知道了。
于是面试官就说了雷同标题的这句话“你连MVC、MVP、MVVM、设计模式都不清楚,还要我怎么“放水”?”
其实上面模拟这场面试的例子,就发生在很多朋友的面试过程中,大部分朋友都只知道一些基础、书本上记载的技术知识点,但是对于知识的拓展面却一点也不了解。
比如上面说到的Andorid的基本架构模式适用场景和设计模式中Builder模式、使用场景和实战,这些知识都是面试官问的最多的。
其实无论是大厂、小厂,面试时刷题理解真的很重要,一些基本的知识和思维拓展你也要知道。这样帮助你在面试理解面试官想考察的知识点是什么,从容回答留下好印象,顺利拿下offer。
这里给大家推荐一份Android工程师面试刷题笔记,但苦于篇幅有限,不能完全展现,需要完整pdf版的朋友,点这里来可以查看获取全部内容!
以JVM面试题为例:
- Java 类加载过程?
- 描述一下JVM 加载 Class文件的原理机制?
- Java 内存分配
- GC 是什么? 为什么要有GC?
- 如何判断一个对象是否存活?(或者 GC 对象的判定方法)
- 垃圾回收的优点和原理。并考虑 2 种回收机制
- 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
- Java 中会存在内存泄漏吗,请简单描述
- ......
Android面试笔记(组件+View+线程)
以Android四大组件为例
- 说下Activity的生命周期?
- onStart()和onResume()/onPause()和onStop()的区别?
- Activity A启动另一个Activity B会回调哪些方法?如果Activity B是完全透明呢?如果启动的是一个Dialog呢?
- 谈谈onSaveInstanceState()方法?何时会调用?
- onSaveInstanceState()与onPause()的区别?
- 如何避免配置改变时Activity重建?
- 优先级低的Activity在内存不足被回收后怎样做可以恢复到销毁前状态?
- 说下Activity的四种启动模式?(有时会出个实际问题来分析返回栈中Activity的情况)
- 谈谈singleTop和singleTask的区别以及应用场景
- ......
Android面试笔记(Binder+Handler+Bitmap)
以binder为例
- Binder的定向制导,如何找到目标Binder,唤起进程或者线程
- Binder中的红黑树,为什么会有两棵binder_ref红黑树
- Binder一次拷贝原理
- Binder线程、Binder主线程、Client请求线程的概念与区别
- Binder线程的睡眠与唤醒(请求线程睡在哪个等待队列上,唤醒目标端哪个队列上的线程)
- Binder协议中BC与BR的区别
- Binder在传输数据的时候是如何层层封装的–不同层次使用的数据结构(命令的封装)
- Binder驱动传递数据的释放(释放时机)
- 一个简单的Binder通信C/S模型
- ......
Android面试笔记(RecyclerView+Webview)
以RecyclerView为例
- 请说一下RecyclerView?adapter的作用是什么,几个方法是做什么用的?如何理解adapter订阅者模式?
- RecyclerView绘制原理如何理解?性能优化本质是什么?RecyclerView绘制原理过程大概是怎样的?
- RecyclerView常见的优化有哪些?实际开发中都是怎么做的,优化前后对比性能上有何提升?
- 如何解决RecyclerView嵌套RecyclerView条目自动上滚的Bug?如何解决ScrollView嵌套RecyclerView滑动冲突?
- RecyclerView的Recyler是如何实现ViewHolder的缓存?如何理解RecyclerView三级缓存是如何实现的?
- RecyclerView源码分析
- ......
因图文太多影响朋友们的阅读,整理成PDF部分截图已上传,需要完整Android面试笔记的朋友可以在 文末或者文首领取;
Android面试笔记(架构篇)
Android面试笔记(Jetpack篇)
Android面试笔记(NDK开发篇)
后话
故事的最后,我猜大家已经想到了。小明的第一次面试以失败告终。
其实原因很简单,能掌握基础却没有对技术进行一些简单的拓展是他最大的失败。
做程序员,千万不能停止学习。或许一年、两年的差距不大,但是如果隔着3—5年以后,年薪百万的他和年薪不到十万的你同为程序员,这时 差距就出来了。
而差距出来,圈子也就形成了。好的圈子能够让你少走弯路,拓宽人脉,拓展思路,学习他人失败和成功的经验,获取最新经验与信息,抱团取暖等!
而差的圈子,只能让你固步自封,每日生活着压抑与煎熬之中。所以说,好的圈子+努力决定人生的高度,望谨记!
最后需要完整Android面试笔记的朋友点击可以查看获取全部内容直达!
以上是关于面试官:你连MVCMVPMVVM都讲不清楚,还要我怎么放水?的主要内容,如果未能解决你的问题,请参考以下文章