像文章中说的那样:大公司(腾讯、阿里、百度...),看重的是综合能力(数据结构与算法,计算机网络,操作系统,Java等) 小公司,看重的是实践能力,项目经验、学习中是否遇到他们开发中所遇到过的问题,面试偏向于Android里的关键知识。
Android学习之路:数据结构与算法,java,安卓,计算机网络,操作系统,后面是数据库或是设计模式之类的
一、数据结构与算法:
推荐书籍:大话数据结构,数据结构与算法分析(java语言描述),剑指offer,进军硅谷
推荐在线刷题网站:Leetcode(LeetCode Online Judge),Lintcod(LintCode - 主页),牛客网(在线编程_C++Java前端经典笔试面试题库\http://www.nowcoder.com/activity/oj)
1、买数据结构与算法分析(Java语言描述),看完
2、在Leetcode刷100道题
3、然后要分析一些常见数据结构的源码实现(比如队列,栈,hashmap之类的),数据结构与算法分析这本书有讲一些,可以结合一些博客进行准备。
二、java
入门书籍:
Java核心技术卷一,Head first in java(如果一点面向对象的概念都没有那就看这本)
提高书籍:
1、Java编程思想
2、 Java虚拟机:深入理解Java虚拟机
3、Java多线程:Java多线程编程核心技术,Java并发编程实践
其实我觉得如果有一定基础建议直接看Java编程思想,面试中的考点经常都会在这本书中有讲到。当然Java虚拟机和多线程这两块需要再看一些专门讲解的书,每一次java面试考查内容几乎都离不开这两块。
总体来说java考察内容包括以下这些:(找点面试题做,正好复习其中的一些知识和学习不熟悉的知识)
1,面向对象的一些基本概念:继承,多态之类的
2, 抽象类和接口
3, 静态类,内部类
4, Java集合类,同步和非同步
5, Java类加载机制
6, Java内存模型和垃圾回收算法
7, 线程同步机制(volatile,synchronized,重入锁,threadlocal),线程间通信(wait,notify)
8, 异常处理
9, 多线程同步问题,生产者消费者,读者写者,哲学家就餐,用java实现
10, 了解java中设计模式的思想,用了哪些设计模式,有什么好处
三、Android(就看完三本书,入门书籍跟提高书籍)
入门书籍:第一行代码。
- Google Android官方培训课程中文版:http://hukai.me/android-training-course-in-chinese/basics/index.html#
提高书籍:Android群英传,Android开发艺术探索。
上面的书看好了,一般问题不大。主要问的一些问题:
1, Activity,Service,BrocastReceiver,Intent,Fragemnet,ContentProvider,这些组件的基础知识,比如Activity两种启动方式,生命周期,四种启动模式,Service则主要是:两种启动方式,生命周期。还有组件之间怎么通信之类的问题。
2, Android的数据存储方式,数据库,sd卡,SharedPreferences 这些
3, Listview的优化,与scollview的区别
4, view状态与重绘,view的绘制过程,view的事件分发机制,view的事件冲突处理
5, Android多线程异步机制,AsyncTask工作原理与源码实现,Handler,Message,Looper异步实现机制与源码分析
6, Android常见的开源框架(主要是网络通信,图片加载这些),了解怎么使用,分析源码
7, Oom和anr异常引发的原因,怎么解决
8, 了解一些常见的图片缓存技术
推荐书籍:计算机网络自顶向下,tcp/ip协议详解卷一
主要看:主要看应用层,传输层,网络层,其中传输层最为重要。主要的一些考察内容有:
1, TCP和UDP的区别
2, TCP的三次握手,和四次挥手,为什么需要三次握手,为什么要四次挥手(这两个为什么要考虑非常清楚)
3, TCP拥塞控制算法(慢启动,拥塞避免,快速恢复),流量控制算法,滑动窗口协议,选择重传。
4, TCP可靠性是怎么保证的(通过哪些机制保证)?
5, HTTP协议报文格式,请求方法字段以及各个方法之间的区别,了解常见的响应状态码,了解cookie机制,了解WEB缓存技术(条件get方法)。
6, DNS协议的各层域名服务器,两种查询方式(递归和迭代),dns缓存
7, Udp的特点,适用场景,校验机制
8, 从输入一个网址到最后网页显示整个过程发生了什么?
9, IP地址组成,ARR,RARP,ICMP协议,路由选择算法
推荐书籍:《Linux鸟哥的私房菜》、《深入理解计算机系统》 、 《 UNIX环境高级编程》、 《linux环境编程》
六、数据库
网上找一下,很多数据库的视频都是免费观看的,慕课网、网易云课堂等。
学习一门数据库(Oracle、Mysql) 等。 可能只需要记得简单的语句就行了,然后范式、一些锁、主键外键、索引看一看记住就可以,事务是非常重要的,必须掌握。
七、设计模式
推荐书籍:大话设计模式
基础打牢之后再深入学习Android吧!!!
最后:强烈推荐一个面试经验+复习总结的很好的一篇文章,上面可以找到相应的博客。
地址:www.jianshu.com/p/2e7266c2cee5