Java知识
java是Android开发的基础,在BAT的初面中,会涉及到比较多的java基础知识,所以比较重要,下面我介绍的书籍内容是由浅到深。
- 1.Thinking in java:这本书被称为Java的三大圣经之一,虽然书比较厚,里面的例子也比较冗长。但是如果细细去翻阅并且把例子都敲一遍的话,那么我想你的java基础会变得非常扎实。
- 2.Effective java:很多人会把Thinking in java 和这本书进行比较,但是我觉得两本书的侧重点还是不同的,TIJ侧重的是java基础,而EJ中会介绍大量的设计模式和最佳编程技巧。所以说这本书的层次比TIJ稍微高一点。这本书比较薄,所以看起来也不会很吃力。
- 3.深入理解Java虚拟机:前两本书都是介绍java,所以最后一本书我们需要了解java运行的基础,而这本书就是一本很好的材料。JVM族语言是一个大家庭,了解了JVM和字节码,那么你的视野就不再被java语言所限制了,你会了解到更多与Java同族的语言,这些语言比java优美同时又能使用丰富的java类库。
- 4.Java并发编程:虽然Effective java和Thinking in java中都有花一些时间讲并发,但是里面讲的都不够深入。并发编程是一个非常难的事情,所以需要通过一本专门的书籍来学习。
下面是我看上面几本书写的笔记和总结,大家可以看看我着重看了哪几章,然后根据自己的需求观看书籍。
Android知识
BAT对于Android知识的要求不仅仅停留在调用表层的API,在面试的时候他们经常会问一些Framwork层面的知识,所以Android Framwork层的源码是必须要看的,但是该看到什么程度呢?这时候就需要一些书籍来对你进行指导,下面的书籍的内容是由浅到深,大家把握一下自己的层次酌情选择。
- 1.android群英雄传:这本书其实也没有涉及太多的Android源码,但是对一些API有比较深的解读,如果你入门Android已经有1年了,可以读读这本书。
- 2.android开发艺术探索:这本书就涉及到了很多Android源码了,每一章都会由浅到深,从API的调用讲到具体源码的执行流程,所以读这本书需要一点耐心,建议入门android 2到3年的开发者观看。
- 3.Android系统源代码情景分析:这本书我也没看多少,里面全是讲Framwork的源码的工作机制甚至还会深入到Linux驱动,所以大家可以选择性观看。
下面是我看上面几本书写的笔记和总结,大家可以看看我着重看了哪几章,然后根据自己的需求观看书籍。
java设计模式知识
设计模式面试的时候不常靠,但是如果问到了,都是必须要回答出来的,要不然很丢分。这里结合Android也介绍一本书
- Android源码设计模式解析与实战:这本书以Android的源码例子来讲java的设计模式,起到了一举两得的作用,非常适合大家学习设计模式。
下面是我看上面几本书写的笔记和总结,大家可以看看我着重看了哪几章,然后根据自己的需求观看书籍。
算法和数据结构知识
算法和数据结构是大家老生常谈的一块,不管什么面试笔试他们都会占据较大的比例。所以这里我就推荐一本书
- 算法导论:这本书非常厚,里面也有许多艰深的算法知识。我们不需要全部看完,抓住几个章节并用java语言将伪代码全书实现一遍,那么你的算法能力就不会弱。以下是我推荐实现的算法章节
- 1.第二章 算法基础,算法全部实现,课后题全做
- 2.第四章 分治策略,算法全部实现,课后题全做
- 3.第六章 堆排序,算法全部实现,课后题全做
- 4.第七章 快速排序,算法全部实现,课后题选做
- 5.第八章 线性时间排序,算法全部实现,课后题选做
- 6.第九章 中位数顺序统计量,算法全部实现,课后题选做
- 7.第十章,基本数据结构,没有数据结构基础的人,算法全部实现,课后题选做。有基础略过
- 8.第十一章,散列表,没有数据结构基础的人,算法全部实现,课后题选做。有基础略过
- 9.第十二章,二叉搜索树,算法全部实现,课后题选做
- 10.第十三章,红黑树,算法全部实现,课后题选做
- 11.第十五章,动态规划,算法全部实现,课后题选做
- 12.第十六章,贪心算法,算法全部实现,课后题选做
- 13.第十八章,B树,算法全部实现,课后题选做
- 14.第二十二章,基本的图算法,算法全部实现,课后题选做
- 15.第二十三章,最小生成树,算法全部实现,课后题选做
- 16.第二十四章,单源最短路径,算法全部实现,课后题选做
计算机系统知识
BAT面试的时候有几率会问到计算机系统的知识,比如进程和线程,虚拟内存,文件系统之类的知识。所以需要在这方面补充一下知识。
- 现代操作系统:这本书挺厚的,所以大家只要看一些常考的知识块就行了:
- 1.进程和线程
- 2.内存管理
- 3.文件管理
- 4.死锁
下面是我看上面几本书写的笔记和总结,大家可以看看我着重看了哪几章,然后根据自己的需求观看书籍。
数据库知识
BAT常常会让一些做java的面试官去面Android,所以此时数据库知识就常常会被当成广度知识来考察面试者。因为我是使用Mysql比较多所以这里就介绍一本书
- Mysql高性能笔记:这本书也比较厚,所以我们也只需要抓重点来看。重点有以下内容
- 1.Mysql概述相关章节
- 2.索引相关章节
- 3.SQL优化有关章节
计算机网络知识
计算机网络也是BAT面试官常考的地方,这个也是很多人讲烂了的东西,所以就不介绍书籍了,给大家画画重点
- 1.HTTP相关知识,包括一个Http请求的内部结构,Http各个版本的不同,Http的特性等等。
- 2.TCP相关知识,包括三次握手、四次挥手、窗口滑动、拥塞控制等等
- 3.IP相关知识
- 4.5层和7层网络架构知识,这里只需要了解框架就行,各个层的具体协议除了上面说的其他都不需要特别了解。
Android开源项目知识
在BAT面试的时候,面试官常常会问到项目中使用过什么开源框架,如图片加载框架、HTTP请求框架等等。此时你光会用是远远不够的,你需要将开源框架的架构和源码分析一遍,这样才会给面试官带来好的印象。我这里推荐几个开源框架,大家可以去看看他们的源码,在面试的时候也好有一些说的材料。
- 1.Http请求框架:Volley、OkHttp、Retrofit、NoHttp
- 2.图片加载框架:Fresco、Picasso、Glide
- 3.异步框架:RxJava
- 4.架构框架:Databinding
下面是我翻译Fresco源代码项目的总结和databinding的源码解析,大家对这个有兴趣的可以看看