到了整个面试课的最后一章了,我想给大家总结一下,这一章没有给大家做PPT,因为我想把整个课程的整个内容框架给大家罗列出来,然后一一给大家做一个总结。
首先是,第一部分,我们讲了Android基础相关的面试问题,Android基础当中我们讲到了Activity,Service,Fragment,还包括一些广播和WebView等等比较基础的,但是也是很容易被忽视的,重要的知识点。就像在Activity当中,它其实有很多知识点是大家平时有可能会,但是如果面试官一问你的话,你会觉的说不上来的。比如说Activity和Fragment之间的通信,它其实有很多种方式。比如Fragment与Fragment之间的通信等等。还有Service与Activity之间的通信。这写都是比较重要的,但是容易被大家忽视的。还有一些生命周期,包括Activity和Fragment的生命周期中一些不同的回调方法,大家也需要注意。
第二部分,我们讲了异步消息处理相关的面试问题,在异步消息处理里面,我们着重讲解了Handler和AsyncTask ,而Handler其实是我们线程之间通信的最主要的工具,大家要理解Handler内部的机制是如何运作的。面试的时候,很多的面试官,包括我自己也会问我们的候选人Handler相关的问题,其实我并不是想从候选人嘴里面听到有关Handler的很新颖的东西,其实Handler已经是一个很普通的知识点了,应该每个候选人都会,但是面试官会考察你是怎么有条理的,有逻辑的把Handler说出来,这是大家需要注意的有关异步消息处理的知识。
第三部分,我们讲了View相关的面试问题,有View绘制,View事件分发等等。其实View的事件分发在很多年前应该算是一个难点,但是在这两年,因为博客,书籍等的普及,这块已经成为了很多人都强化的一个点,但是在平时的项目当中,你真真正正的用到了View的事件分发的机制了吗?这其实是大家需要思考的一个问题,也是大家怎么站在候选人的角度去揣摩面试官出题思路的一个问题,大家在课后一定要好好思考下这个问题。
第四部分,我们讲了Android构建相关的面试问题,首先它很重要。一个项目,你代码写的再好,代码再规范,架构的再完美,你不打包发布到市场上,谁都不会知道,而且你发包的时候,用户是根本不知道你代码内部的事的,所以说,无论是开发还是面试,大家平时一定要注意与项目构建有关的问题。但是据我了解很多人在准备面试的时候依然容易忽视它,因为平时其实并不是每一个人都参与项目打包,但是我建议大家在面试前还是要着重的复习一下这块的内容。包括Git,Gradle等原理和使用,面试过程中会有一些刁钻的面试官,他会出这方面的题目来靠你整个人的深度和潜力。
第五部分,我们讲了开源框架相关的面试问题,包括网络,图片,IOC注入框架等等,这部分由于时间的限制,并没有给大家摊开来讲,但是这些框架之所以能在GitHub上有那么多的Star,就是因为它们真的经得起考验,它们设计的真的很好,对于这些框架的学习,大家首先要站在一个使用者的角度,先学会用,然后在业余时间要细读某一块的源码,你不用全读,也读不完,大家要站在框架者的角度来看待源码,这也是很多同学在问我如何学习源码问题的一个方法。
第六部分,我们讲了性能优化相关的面试问题,性能的优化其实是这两年所有的APP都比较重视的,因为不论你的APP如何和竞争对手相竞争,像启动速度,APK包的大小,以及它的内存上的消耗,都是非常容易被对比的,这些性能的领先非常容易在竞争者面前占得优势。所以说在这部分课程里,包括启动速度,内存优化等等大家都需要抓住。
第七部分,我们讲了热门前沿相关的面试问题,大家平时一定要关注新技术,比如现在的热更新, 插件化,Rxjava,Kotlin等等这些知识。但是大家对这些新技术的学习和掌握一定要有的放矢。面试准备的时候,重头戏还是把基础打扎实了,只有这样,你才能有整个的技术核心力,有了核心竞争力,在懂一些热门技术,让面试官知道你是一个很好学的人,是一个有潜力的人,是一个对技术有热情的人就非常好了。
第八部分,这部分以及后面的部分是我们的2.0升级内容,首先是Java高级技术,包括IO流,Socket,BIO,NIO,多线程,异常,注解,类加载器,堆栈,反射等比较重要的知识点。这部分知识和我们的Android是紧密关联的,所以在面试前,做为Android工程师也应该关注下这部分的内容的复习和准备。
第九部分,我们讲了设计模式相关的面试问题,当然我并没把23种设计模式都给大家讲完,因为就面试来说,没那个必要,其实面试官一般的问题是你使用过哪几种设计模式,课程中也是只讲解常用的几个设计模式,给大家抛砖引玉,比如:观察者模式,单例模式,工厂模式,构建者模式,策略模式等,大家平时多注意积累,不断补充对这些经典的设计模式的理解和应用。
第十部分,我们讲了网络协议相关的面试问题,网络协议这块的知识点说实话比较琐碎,我们也主要侧重讲面试常遇到的问题,比如:http,https,response与request的区别,http1.0与http1.1的区别 ,get和post的区别,cookie与session的区别, tcp/ip, tcp的三次握手,四次挥手,dns,https加密算法等。
第十一部分,我们讲了算法相关的面试问题,算法的面比较广,面试题也是非常灵活,有可能面试官冷不丁从网上抽出一道算法题来考你,所以大家要掌握学习算法的方法和思路。当然更重要的还需要大家平时多积累。我在这里主要提供了一些如:链表,栈,队列,二叉树的一些常被面试官问到的经典的算法题,也会给大家提供一些算法源码,供大家阅读。
最后,分享一点面试技巧:大家在面试的时候还是要站在候选者的角度,不能站在一个藐视面试官的角度,因为你毕竟是求职,态度上一定要端正,还有就是,面试的时候,一定要自信,面试前一天一定要把心态放稳,不要再看任何东西了,考试前你看任何东西,从记忆学心理学上你都是记不住的,你所记住的就是你之前记住的熟悉的那部分内容,所以这里也提醒大家,面试的准备要尽早的着手,别等到明天就要面试了,今天才开始疯狂的准备。最后非常感谢大家对课程的肯定,也祝大家好运,祝大家都能像很多同学一样,都能拿到满意的offer,谢谢大家。