从4月份开始参加校招, 到现在持续了快一个半月的时间, 尽管目前战绩是0 offer,不过既然互联网求职的寒冬已经来了, 春天还会远吗?大家一起加油!!! 心真的很累了, 被虐得不知道春招什么时候才能结束, 真诚希望能在下周全部结束
在经历了这么多场面试后, 我觉得有以下经验是可以分享的:
(我一个0 offer的人扯这些鸭汤其实感觉蛮脸红的…) 下面列举一些我觉得对我来说非常有用的书单和网站, 还有推荐使用的工具, 仅供参考, 希望能帮助到跟我一样找工作的兄弟姐妹们, 还有尚未定位自己的师弟师妹. 以下所有书籍(网站)建议阅读, 不一定要读完, 但关键和核心得抓住
个人认为Java入门最好的书籍. 这本书比什么《Java编程思想》好理解得多, 可能是因为翻译者水平堪忧吧, 反正Thinking in java是真的看不下去, 知乎上那些推荐Thinking in java入门的程序员真是有毒…然后对于这本书而言, 除了图形界面编程以外, 其他内容最好认真读完并实践一遍, 会对理解Java Web有不少的帮助
建议有一定项目经验的人才去看这本书, 里面列举了很多开发必须注意的条目. 说实话这本书真的不那么好看, 但是你会发现在某些笔试题上会出现这本书的很多条目
学习Java怎么能不知道有这么个牛逼轰轰的IDE! 可以说彻底提升了我的开发效率, 简直相见恨晚, 在所有教程中我觉得极客学院做得最为认真, 附上极客学院的学习地址
为什么我把Maven放在这里? 因为它蛮重要的(其实用gradle也可以). 一个解决java web项目开发中所需要的依赖问题, 同样论工具的使用教程, 极客学院最给力, 附上教程地址
(阅读此书时建议把基础部分的全部搞定,)这本书跟《疯狂Java讲义》是配套的, 里面先讲解Servlet/Jsp(Java Server Page)等技术, 然后就是SSH(Struts/Spring/Hibernate)等后台框架的各种使用, 其实说白了就是把这些技术的官方文档给翻译一遍给你而已. 有人觉得struts2都过时了还有没有学习的必要? 我认为理解一下也不会花太长时间, 因为学习任何框架的重点也不仅仅是用而已. 初学者把重点放在一些思想上的东西(尽管很虚, 但是后续的框架基本都会延续这些思想), 比如控制翻转IoC|面向切面编程AOP|对象关系映射ORM|模型-视图-控制器MVC等, 把这些弄懂后之后的SpringMVC, mybatis等后台框架上手会很快的. 这些东西真的太太太太太太基础了, 搞不懂就要考虑转行了(= . =) 另外看这本书入门Java web的时候不要对作者那种用记事本编程的方式太较真, 会debug到天昏地暗的, 使用Intellij Idea就好了(如果不懂使用Intellij Idea可以先去慕课网或极客学院或csdn等网站看看别人是怎么操作的即可). 还有想说的就是, 请务必学会使用maven, 手工导jar包学习Java Web的方式简直就是弱智行为, 而我居然坚持了三个月…最后, 把这本书当成工具书比较合适: 初次阅读理解就好没必要动手实践, 等到需要的时候再翻阅查询
还在用xml配置各种依赖注入/数据源/事务管理器? out啦! 随着微应用的流行, 以注解替代xml配置的开发方式将越来越流行. 作者汪云飞没有讲太多废话, 内容基本都是说Spring Boot的某个特性然后举个例子实战, 有利用SSH开发过简单项目的同学可以尝尝先(我去实习的岗位早就开始用了, 觉得蛮新颖的) 实际上学习任何一个框架的时候要先了解这个框架解决了什么问题, 只有理解了这个后才能更有针对性也更有效率地去进行学习
隆重推荐这本神书, 很有趣. 刚开始读觉得很深, 但是和《轻量级Java EE企业应用实战》一起看, 思考那些设计模式存在的意义, 会对软件架构方面的知识豁然开朗…
一本用Java教你开发脚本语言的教材, 实际上可以把它当做编译原理的正课来学习. 我之前以为编译原理不重要, 没有认真学, 结果阿里面试官问了我Json字符串如何转换成一个对象我就懵逼了. : 你知道编译原理的重要性了吗? 一个问题答不好可能就断送了你的求职生涯啊! 不止是简单的词法分析和语法分析, 重排序等编译器的性能优化方式也最好能理解一番
又是个歪果仁写的书, 里面详细介绍了Java并发工具包java.util.concurrent的各种工具以及很多的并发编程实践之道, 是并发编程的入门之作.
国人写的书, 也是写Java并发编程的, 与上一本相比个人认为比较凝练/干净/易懂
作者叫黄勇, 一本非常让我拍手叫绝的书…首推! 绝对干货! 如果你不想看spring源码也没有太大关系, 这本书带你一步步地开发出一个类似spring mvc的简单框架, 并且逐步地增加需求和完善, 理解了每个细节对于理解Java Web的开发是很有帮助的
这本书我觉得是必看的, 可以说是对我帮助最大的一本技术书籍, 覆盖了Java Web很多方面的知识, 比如计算机网络|Tomcat结构|Spring架构|SpringMVC原理|模板引擎实现原理等, 绝对很有收货, 足够有深度也很有难度
一本比较详细的书, 其实对于阅读源代码, 跟着作者的思路读, 再结合自己的断点调试进行学习的方式是最好的
想知道Java虚拟机为什么会帮你自动收集垃圾而不需要你管理资源释放吗? 想知道Java虚拟机的内存区域是如何划分的吗? 想知道Java虚拟机是如何唯一确定一个Java实现类, 并且如何加载类的吗? 想知道JVM凭什么能够将远程服务器发送的网络字节加载到JVM内存, 从而实现远程过程调用的吗? 这本书你值得拥有!(感谢这本书让我回答出RPC的实现原理)
500行代码! 尽管跟Java没有太大关系, 强烈推荐, 里面的程序主要是一些玩具轮子, 都是用python实现的, 学习这个主要是理解别的程序员在开发软件的时候所做的决策/思路/取舍, 虽然我也没看完, 但是觉得这个资源很赞!!! 官方网址
其实讲道理这种书应该给DBA看才对, 不知道为什么Java Web开发也要看- - 有次面试就问到说对mysql数据库的性能调优有什么看法, 所以就列在上面. 不过说真的有点晦涩难懂, 如果想简单粗暴地应付面试的话就看这个博客 这篇博客应该是我目前看到的对于mysql索引的解释最最通俗易懂的了
李智慧著, 确实是很好的入门书籍. 实际上如果有操作系统和Web项目后台开发的基础话阅读起来不会特别困难, 主要内容是介绍当今企业应对大型网站高并发请求的种种策略
这本书比较深, 介绍分布式Java应用和相应的应用场景, 什么远程过程调用(RPC)呀, 基于服务的体系架构呀(SOA)等, 同时也讲了很多java比较底层的知识, 最后介绍构建高可用/可伸缩系统的工程经验
与上一本书类似, 不过个人觉得更偏向于"介绍"互联网安全架构和分布式系统的各种组件(比如分布式缓存|消息队列|搜索引擎等), 目前我只接触了Redis, 相应的组件实在太多了- - 此外对系统监控和数据分析等也做了相应介绍, 这些我感觉比较偏向运维岗的工作人员
Redis的基本用法和在生产环境的应用, 值得拥有, 虽然书籍是用python, 不过官方github也有放java的源码
Redis的源码解读, 怎么说呢, 反正比spring源码好读太多了…而且作者读得很用心, 整理出了带注释版本的redis源码, 去读个痛快吧少年
最后呢, 小弟在这里列举了一些个人在面试的时候遇到的面试问题, 希望能够对后续的求职者有所帮助, 祝愿大家成为offer收割机!
附录:
阿里巴巴Java开发工程师 内推一面
阿里巴巴Java开发工程师 实习一面
腾讯后台开发工程师 实习一面
网易互联网Java开发工程师 一面
欢聚时代Java开发工程师 一面
华为互联网开发 一面
华为互联网开发 二面
微众银行后台开发(Java) 一面
微众银行后台开发(Java) 二面
我在这里总结了一下,首先是基础工作需要的,spring,IOC,AOP,spring mvc,mybatis,这些源码都是需要读的。
其次JVM,程序性能优化,Tomcat,并发编程,MySQL,netty,Linux也是需要了解的。
高性能架构,分布式,Zookeeper,Nginx,active mq,rabbit mq,kafka,memcached,Redis,mongoDB。
微服务,不用多说,spring boot ,spring cloud,docker。
团队开发,Git,Maven,Jenkins,sonar。