各大互联网公司的 Java 类校招对本科生的要求

如今各大互联网公司,对Java类的校招要求愈来愈高,致使不少小伙伴都很迷茫,今天分享一篇谢照东关于Java学习进阶之路,但愿能帮助到一些人css

佛说五蕴六毒是妄,将因果都念做业障,知乎搜索“谢照东”html

把看过的书罗列一下前端

《java核心技术:卷一》,这个是我入门java的时候看的,很是适合新手!java

《java设计模式》这本书虽然是个外国人写的,可是感受不是很好。评价通常。学习设计模式的时候我通常都看大牛的博客。python

《深刻理解jvm虚拟机》 这本书不用多说,业界很是很是好的一本书!多看几遍,每一遍都有不少收获jquery

《深刻分析java web 技术内幕》不得不说,这本说在各个方面都很是优秀,不愧是偶像写的书!还求山哥多多照顾。嘿嘿linux

《Spring技术内幕》在spring源码讲解方面,我的感受很是不错。可以深刻理解内部机制,可是须要多看几遍git

《编程之美》业界翘楚,在算法方面终结的很是好,题目也很是有表明性程序员

《剑指offer》不用多说,和上面同样,能够锻炼一些算法能力github

《java编程思想》传说是java行业内的神书,可是目前表示还处于只知其一;不知其二状态

《Hadoop技术内幕》这个能够pass掉,学习hadoop的时候看的

《TCP/IP详解,卷一:协议》能够对tcp有更加深入的认识

《java网络编程》,不是很好,将就能够。学学api仍是能够的

《分布式java应用:基础与实践》这个是毕玄大大写的书,很是不错哦

《how tomcat works》在讲解tomcat内部原理方面,我的以为是很是不错的书!等级又要上升一个档次

《java并发编程实战》对java并发方面,讲得还算不错的书籍

固然还有一些杂七杂八的书(走了很多弯路,你懂的!),我就不列出来了,上诉都是笔者认为很是不错的书籍。

最近正在看《算法导论》,和《算法》,md,其实我也想成为算法狗

固然,上面这些书我表示只懂50%,惭愧。不能彻底吸取大牛的精髓啊!

数据结构不用多说,什么B树啊、红黑树啊、栈、队列等等,至少保证可以清楚的说出来,说出他们的原理!具体的应用场景是什么啊!,固然能写出来更好(手写btree会死人,其实还有一个数据结构叫skiplist,逃

算法的话,建议题目多看看算法题目,或者把leetcode上的算法题目刷一遍(目前本人只AC的几道题,惭愧。知道该资源的时候已经晚了,如今在努力刷刷刷)。另外能够看看july的博客,

数据库就更多了,索引(结合B+tree,两个引擎的不一样之处)、存储过程、引擎、触发器, SQL必须是要熟练的,写SQL的时候多考虑考虑效率,想一想还有没有其余的语句能完成这个任务,在哪方面提升了,为什么呢?数据库引擎要了解一下,分布式数据库也是,什么主从分离啊,分库、分表、分区啊,这些常见的解决方案

操做系统我属于渣渣,我的就知道一些进程、线程、一些调度算法之类的~~~~(逃

计算机网络若是是研发岗位得话,TCP/IP这一张须要好好看看,HTTP协议不用多说,常见的状态码等等,一次http请求有哪些过程,这个要理解透彻

java:基础很是重要,固然也要深刻理解原理,什么JVM,JMM,Classloader,还有一些常见类的源码,本身能够试着分析一遍,如今让你说出LinkedList的内部实现你能不能说出来,HashMap不用多说了,80%的面试都会问到。还有重要的,多线程,并发,网络,IO。这些都是要看看看看的!本身多思考!还有楼主说的那些框架,说实话,你要是基础好了,这些都是可以学得很快的,不少问题,看一下源码什么都就懂了!特别是spring的源码要好好看看,里面的架构设计得很是好!各类设计模式满天飞!

另外,linux要了解一下,至少要回基本命令吧,脚本语言能够学习一个。好比py!前端要了解一下.

关于如何看书:两个字,思考!三个字,不要脸的思考!…………,书不在多,在于精,选书要慎重!反正题主一本叫作“王者归来”的书,我看见名字我就不想看!

除了这些而后呢:天天刷几遍CSDN,日常能够上上oj刷刷题目,国内的牛客网(牛客网-专业IT笔试面试备考平台,最全求职题库,全面提高IT编程能力)很是不错,也能够去leetcode上面把题目刷一遍哦。关注一些好的社区(我通常混迹在CSDN高性能javaweb板块),睡觉以前看微信公众号,固然是技术方面的!推送的文章都挺不错的!

作程序员我的以为眼界很重要,就算这不是你的领域,可是你也要知道一点,因此常常关注其余的新技术是很是重要的!日常多接触一点开源技术,多上上github,争取能在github上面贡献一点本身的东西!

而后,多看看别人的技术博客。思考本身!

关于个人学习方法和面试经验的分享

一、基础

主要看《java核心技术:卷一》的重点章节

掌握java经常使用技术,io、多线程、反射、经常使用集合框架

数据结构看一遍,做用至少要清楚。如hash冲突解决办法,经常使用排序算法的应用场景和空间/时间复杂度等

数据库,能看懂ER关系,熟悉数据库三大范式,熟练经常使用SQL语句

能够掌握一点java网络编程方面的知识,对tcp/ip有初步的认识

课程不能落下,专业课程(计算机网络,操做系统,数据结构,数据库,计算机组成原理)要好好学。不要挂科

学习servlet/jsp,至少能写简单的图书管理系统,熟悉核心api

了解先后端交互方式,ajax、json/xml至少知道,会使用jquery,html,css,js最好

二、提升

学习后端框架,SpringMVC/Struts二、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算法都要弄死人,(

PS:本人的知识星球已经正式上线,3天加入人数已经140+,但愿更过的小伙伴能加入到这个小圈子。

一、我会分享本身的一些学习心得,以及一些思考,包括技术路线的指导等。 二、能够针对大家本身的一些特别的问题专门进行解答,作到因人而异。 三、为你们营造构建一个和谐的环境,方便你们深刻学习交流,可让你们认识更多的技术牛人等。 但愿加入到这个星球的小伙伴,都能提早找到本身的方向,站在前辈的肩膀上,看的更远,爬的更高。

本人公众号

相关文章
相关标签/搜索