转一篇实用校招面经 @谢xiao东东
Published on 2015 - 04 - 26
转载自阿里巴巴研发Intern - @谢xiao东东,原地址:http://coderxie.duapp.com/shard。
关于我的学习方法和面试经验的分享
下面是我写给我现在带的学弟在学习路线上的一些建议,大家可以参考一下!希望能够帮助到大家,有写得不太合适的地方,还请大家指正!
一、基础
- 主要看《java核心技术:卷一》的重点章节
- 掌握
java
常用技术,io
、多线程
、反射
、常用集合
框架 - 数据结构看一遍,作用至少要清楚。如
hash
冲突解决办法,常用排序算法的应用场景和空间/时间复杂度等 - 数据库,能看懂
ER
关系,熟悉数据库三大范式,熟练常用SQL
语句 - 可以掌握一点
java
网络编程方面的知识,对tcp/ip
有初步的认识 - 课程不能落下,专业课程(计算机网络,操作系统,数据结构,数据库,计算机组成原理)要好好学。不要挂科
- 学习
servlet/jsp
,至少能写简单的图书管理系统,熟悉核心api
- 了解前后端交互方式,
ajax
、json/xml
至少知道,会使用jquery
,html
,css
,js
最好
二、提高
- 学习后端框架,
SpringMVC/Struts2
、Mybatis
、Spring
,熟悉MVC
模式,知道三层架构及每一层之间的关系 - 会用
chrome/firefox
浏览器分析http
请求,解决、定位问题。知道常用http状态码,了解TCP/IP
,知道一次http
请求发生了哪些事情 - 学习
设计模式
,23
种设计模式都需要了解一点,熟悉常用的如:单例,工厂,模板,适配器,代理,责任链,构造器,装饰器,迭代器,策略,命令,观察者,外观,享元。理解他们的好处,可以找找在其他框架哪些用了这些设计模式。 - 可以适当的看一些源码,
Spring
的源码可以着重的看一下。tomcat
可以从源码的角度看看tomcat
的整体设计方案,一次请求tomcat
如何处理,servlet
在tomcat
中的加载,编译过程。tomcat自定义的ClassLoader
有什么作用。 - 会设计数据库,
多对多
,一对多
,迭代
,会写复杂的SQL
,了解SQL
调优,会写存储过程
,触发器
。熟悉索引
的使用,了解视图
。去了解一些常用NOSQL
,比如Redis/mongodb
- 学习
Linux
,熟悉基本命令
,学习一种脚本
语言(shell/python
)。会在linux
下写脚本开发
三、深入
算法
,可以看看编程之美
,算法导论
。学习一些算法相关的知识- 深入
java
:理解JVM
,JMM
,Classloader
,GC
算法,GC
收集器。学会定位OOM
问题所在。 - 源码分析,常用集合类如:
Hashmap
,Arraylist
,linkedList
,HashSet
,ConcurrentHashmap
等的源码分析,要非常熟悉java
集合框架设计。最好能够分析一种框架源码,比如Spring
- 深入数据库,理解至少两种
数据库引擎
(Inndb/Mysiam
)的差异性,熟悉索引的内部数据结构,熟悉常见的索引方式(Btree,hash)
,和索引类型(unique,full text,normal)
,会使用explain
分析SQL
语句,会优化SQL
语句,熟悉一种NOSQL
,知道内部实现原理(内部数据结构,在算法优化,内部机制),掌握分布式数据库
的知识,分表,分库,分区,分布式事务等,可以学习一个数据库中间件(TDDL/COBAR
) - 架构设计,看看大型高流量/高并发的网站设计(CDN,异步,前端优化),了解缓存(分布式
memcached
/常用本地缓存),搜索引擎(lucene/solr/elasticSearch
),分布式(负载均衡/分布式数据库/分布式应用集群
),消息队列(ActiveMQ/Rabbitmq
)在大型网站中的作用 - 还有一些其他的知识,如
RPC
框架,分布式服务架构,SOA
,REST
架构等等 - 可以接触一些云计算方面的知识,如
Hadoop/Storm/Spark
等,要是再能接触一点机器学习
就更棒啦(反正我是没有,听着就吓人,跑个kmeans算法都要弄死人,(+﹏+)逃
我看过的书籍,留个参考!(当然没有全部掌握)
- 《深入分析Java Web技术内幕》
@淘宝君山
写的书,经历了taobao.com从一亿到十亿的pv变化(二面面试管么么哒(+﹏+)) - 《java编程思想》这个至今觉得一般,可能是功力还没有达到 (๑¯ิε ¯ิ๑)
- 《java核心技术:卷一卷二》,对java入门非常不错,基本上涵盖了java很多知识
- 《java并发编程实战》并发肯定要看这本书啦,从理论和实践上面讲得非常不错哦
- 《编程之美》,《剑指offer》这两本本书不用说,刷
offer
必备 - 《深入理解jvm虚拟机》看了这本书,基本上
JVM
相关的知识难不倒,唯一缺的就是实战经验 - 《Spring技术内幕》比较透彻的解读了
spring
的源码,浅显易懂 - 《大型网站技术架构》alibaba.com架构师
@李智慧
写的书,在大型网站架构方面有非常深刻的认识,我等膜拜 - 《java设计模式》这本书一般般,主要看看大牛的博客
- 《java网络编程》一般般,讲得不是很深,可以对io和网络有进一步的认识
- 《java分布式应用:基础与实践》
@毕玄
写的书,大牛写的书都要膜拜 - 《java数据结构与算法》外国人写的书,一般,不评价!用java实现了80%的数据结构
- 《how tomcat works》在讲解
tomcat
的架构和设计模式方面讲得非常不错,虽然和现在的版本上有一些差别,但是影响不大 - 《tcp/ip详解,卷一:协议》深入理解
tcp
。对tcp
各个方面都有更加深刻的认识,正在看 - 《hadoop技术内幕》可以
pass
掉,当时学习hadoop
的时候看的书籍,讲解hadoop
的源代码 - 《算法导论》正在看,(逃,其实我也想做一个算法狗
那么除了看书籍之外还有哪些学习方式呢?下面说说其他的学习方式
- 参加开源项目/自己写点东西放在
GITHUB
上面,笔者我写了一个自己的MVC
框架(Dreamvc
),github
地址->点击.另外可以去fork
下其他人的开源项目,如果感兴趣就贡献一下,不感兴趣就学习别人的编码风格,去其糟粕! - 多看看大牛的博客,这里我列举一些大牛的博客
- 结构之法,算法之道,july大神的博客
- xieyuooo的专栏,《java特种兵作者》
- @兰亭风雨人任平生|兰亭风雨的专栏, 目前人在腾讯,博客都写得很好,很深入!受益匪浅
- 机会永远留给有准备的人,享受编程和技术所带来的快乐(目前人在VMware)
- 分布式架构、大数据、机器学习、搜索、推荐、广告
- 赵伊凡's Blog,涉及各个领域
- 搜索技术博客-淘宝,搜索团队的blog
- 廖雪峰的官方网站,python就是跟着他学的
- 空虚浪子心的灵魂,java安全,alibaba的安全专家
- 阿里中间件团队博客,咱事业部的中间件,很厉害 (๑¯ิε ¯ิ๑)
- 服务器运维与网站架构|Linux运维|X研究,里面提到的技术都碉堡,博客质量也高。曾经memcached在哪里学到了很多
- 淘宝沈询_WhisperXD的博客,TDDL作者,ONS消息服务负责人,差点就跟着沈沈混了(•‾̑⌣‾̑•)✧˖° (๑´ڡ`๑) (๑¯ิε ¯ิ๑),在数据库方面强烈推荐
- 跟阿铭学Linux
- 刘未鹏 | MIND HACKS,这个大牛简直不要太叼
- 多上一些高质量的网站,下面我列举一些,每天都最好抽时间去走一遍
- 关注一些技术类的微信号(晚上睡觉或者平时杂碎时间看)@Michael282694|我家cindy总结的 (๑¯ิε ¯ิ๑),这是原地址
挂了一门化学,补考过了。
要重修刷分么~