欢迎你们来到乐字节Java学习基地~前端
做者:乐字节java
在校生如何面向面试地学习Javapython
图片来源:上海尚学堂web
最近我在博客园里,看到很多在校的同窗在学java,并且,在我最近举办的一次直播活动中,也有很多在校生同窗来提问,java该怎么学。面试
对于那些已经工做的同窗,哪怕才工做不久,毕竟也能从项目实践里总结和探索java的学习途径和相关方法。但在校生同窗因为没机会接触实际项目,在学习内容、进阶途径和学成标准这些方面都是两眼一抹黑,而大学里的内容可能偏重于理论,讲述的技术每每也和软件公司里经常使用的技术不匹配。redis
这就致使了不少上心的在校生,虽然很努力,但到毕业时,才发现本身起早贪黑学成的技能并不能帮他们找到工做。在本文里,就将结合我面试实习生和毕业生的标准,专门给在校生这个群体一些学习Java方面的建议。算法
我最近可能都在大公司,到毕业季,会到一些学校去校招,校招的标准描述起来很简单:Java方面能干活,或者能经短时间帮带后能干活,具体标准以下。数据库
一、Web框架方面,须要以全栈的形式,了解SSM,或Spring Boot或Spring Cloud从前端到后端的基本语法,至少能在项目经理短时间帮助下,能照着别人的例子写代码。应届生候选人只要能讲清楚相关框架的语法点和流程便可,最多再附带说明下mybatis等组件的用法,至于redis,dubbo,根本没要求。编程
二、数据库方面,能会基本的增删改查便可,外带一些基本概念,好比事务怎么处理,JDBC里批处理怎么处理。后端
三、Java语法(也就是核心方面),其实若是能讲清楚SSM等Web框架技能,这块只要刷题就能过,好比就问些ArrayList和LinkedList的差异,以及多线程等的概念。
四、人看上去听话,想法少,学习能力强,责任心强,不是刺头,这块其实大多数人均可以达标。
以上不要求有商业项目经验,固然若是有,绝对是加分项,并且这仍是大公司的面试应届生的标准。至于一些小公司,或者是一些外包公司,有时候能招到人就阿弥陀佛了(至于有些能力比较强的一本的应届生愿不肯意去还难说)。有些在招收应届生的时候,很多小公司甚至在“项目经验”方面没要求,哪怕没学习项目经验也没关系,只会问些网上比较大路的面试题,能说上来便可。
从面试官角度来看,招收应届生的标准实际上是很低的,对应的,在招初级开发时,多少都须要有商业项目经验。从这个角度来看,应届生最好在校期间就找到工做,毕业后两三个月找不到工做问题还不怎么大,但若是半年后再找不到工做,那么到时候被面试的标准就高于“应届生”的标准了。
这里我无心贬低应届生的水平,毕竟咱们都是从这个阶段过来的,但从面试状况来看,至少有将近一半的应届生达不到标准,下面列些具体的表现。
一、没有框架开发的经验,这里最低要求是能自行搭建个SSM项目,但很多同窗根本没有。
二、数据库方面,就知道理论上的增删改查,甚至不会在MySQL, Oracle和SQL Server平台上运行过SQL语句。
三、Java核心方面,掌握了一大堆项目里必定不会用的,好比Swing之类的界面编程技术,但该掌握的多线程集合等,一些经常使用的概念也不清楚。
论动手能力,有些同窗甚至没有在Eclipse等IDE上运行通Java代码,或者出了基本的语法错误不知道如何自行解决,至于没有debug调试经验的,就更加见怪不怪了,而在代码里须要加必要的try…catch异常处理语句,这就更加百里挑一了。
在一些一本大学里,理论和实际操做能力较差的同窗虽然很少,但也有,就更别提其它大学和大专了。我也和一些大学老师打过交道,也看过一些大学里用的Java和数据库等编程方面的教材,再结合诸多应届生在面试时的表现,个人感觉是,或许大学阶段更会培养学生的理论素养,但大学生朋友在读大学阶段,必定要提高实际的编程能力,包含但不限于(SSM)框架的编程能力,数据库实际操做能力和Java核心部分代码的开发和调试能力 。
前几天我看到篇大学生朋友写的文章,匹马行天下之思惟决定高度篇——大学再努力,培训机构作兄弟,或许不少大学生朋友也知道上进,平时也在不断看各类资料,但可能苦于方法不当,可能有些大学老师也没真在公司里干过,也无法给出合适的学习建议,因此致使最终毕业找工做时,能力没达到基本的指望要求。
也就是说,大学教育和公司面试需求之间存在差距,这就给一些培训机构带来了商机。但培训机构收的钱也不便宜,而培训班也不是必定能保证学生能找到工做,关键要靠本身。从这里开始,就将给出有实际操做性的学习建议。
我最近接触到很多大学生朋友,发现他们努力正在学的知识,面试时未必会问,也就是说,这些点白学了。以前已经提到了面试的标准,这里就将结合具体的知识点,列出面试时须要掌握的最低技能标准,除此以外,大几率不会问的。
一、Java核心方面,集合,多线程,异常处理,IO,JDBC,面向对象技能,大几率会问到,其它的没提到的,好比图形化界面,NIO,Socket网络编程,甚至Applet之类的,不会问到。
二、数据库方面,会写增删改查的SQL语句,知道存储过程之类的概念,会经过索引优化查询条件,会建表,会些诸如子查询,group by,having,表关联查询等基本SQL技能,这里请注意,至少得用过一种商业化数据库。
三、框架方面,须要有Spring+Spring MVC+mybatis框架的实际操做能力(不是商业项目开发能力),至于有Spring Boot或Spring Cloud,那更好了。
四、综合技能方面,能知道基本的数据结构知识(线性表外带排序外带一些树的技能),基本的操做系统知识(通常仅限于线程进程概念),基本网络通信知识(通常仅限于网络通信模型和tcp udp协议),但这仅仅是“须要知道”而已。
你们其实也能够经过看各类职位描述和招聘需求,看下哪些技能其实是不会问的,对于这些知识,就不用学,从而把精力用到学实际Java相关技能上。
这里须要说明,在大学阶段学的不少知识,不能说没用。好比网络通信里的tcp底层通信细节,这些技能或者要等到工做5年后升级到高级开发或架构师的时候才会用到,并且以高级开发视角观察须要掌握的通信协议细节知识,绝对要比大学阶段要复杂。
换句话说,不少技能,在大学阶段也就“须要了解有这事”,以在大学阶段的经历,再多用时间学,估计也没法达到“实际项目的需求”,并且等到有实际项目经验时,再学这类技能也就是一两周的事情。两厢一对比,结论就很明确了:在校阶段应该更多积累实际开发能力,由于更得靠这个找工做。
经过上文,你们大体能够了解到毕业时找工做的目标,若是再不了解,能够实际看下招聘要求,甚至直接多去参加招聘会和面试,总之优先考察实际的开发能力,具体在Java核心部分,该如何高效学习呢?
一、在电脑上装jdk,eclipse,别用editplus之类的工具,最好再用eclipse的自动编译功能。这方面,实际上是锻炼本身的动手搭建环境的能力,工做后,开发是一方面,搭建环境的能力一样重要。
二、刚开始,必定得去找两三本Java入门书,先经过运行现有代码,理解代码的含义。别光看书不运行,开始阶段,也多运行别人的代码,别本身敲代码。这里建议直接找书,由于相比一些视频教材,毕竟书上的知识很系统,并且能正式出版的书通常没代码问题,能直接运行。不建议本身敲代码,是由于本身敲代码时,多少会遇到问题,遇到问题后延误学习进度是小,由于一直得不到解决从而影响学习信心,甚至终止学习了,事情就大了。
三、若是找到两三本Java入门书,通常其中涵盖的知识系统大多很类似,你们能够先运行一遍全部代码,这样就能大体掌握代码结构和基本知识点,并且因为书上代码通常问题不大,并且质量也不会低,至少不会有太大的阻碍性问题。
四、当运行好之后,着重观察集合,面向对象,多线程,IO处理,JDBC,异常处理相关章节,这个阶段,是以掌握API用法为主,在这基本上再看下诸如接口,抽象类,异常处理流程,垃圾回收之类的高级知识点。
在上述基础上,若是能够经过资料的帮助,用Java实现堆栈,链表,队列,散列表,树等的数据结构,同时操练各类排序算法,这对找工做也有些帮助。
上海尚学堂官网这个没什么好说的,有从事多年的Java开发的高级教师及架构师为你们带来的最新版2020年针对企业,新研发出来的python,Java,大数据,人工智能等教学视频及项目源码及文档!!
在数据库方面,最好也去找本书,同时在MYSQL上实践。为何选MYSQL?由于这比较轻,相比Oracle而言,好安装,固然若是有条件装SQL Server之类的,那就更好了。
一、在MySQL数据库上,实践各类增删改查的SQL语句,实践建表,建索引能技巧,同时实践一下诸如子查询,with as等等复杂的SQL语句。
二、用JDBC连同MYSQL,在Java代码里作各类增删改查的操做。
三、在此基础上,了解诸如索引,范式和锁等概念,这时候虽然认识也会很肤浅,但至少不会一头雾水了。
这样,在数据库方面,好歹有实际操做经验了,这为以后的项目实践,能打下很好的基础。
面试时更看重的是框架经验,这块学习的建议以下。
一、先经过运行代码,了解Spring里IOC, AOP,这时应该注意各类配置。
二、熟悉Spring的基本概念后,能够尝试跑一个SSM的小例子,这个例子能够很是简答,就一个页面也行,但要包含Spring MVC和Mybatis诸多要素,这样你们好歹能知道框架的构成,在这个基础上,能够继续扩展,加些必要的业务,从而进一步了解这个框架。
在这个阶段,仍是最好看书上的例子,由于书上的例子必定能通,并且还会带部署和运行的步骤,仍是不建议本身敲代码,由于SSM框架相对复杂,在这个阶段若是本身敲,颇有可能会由于问题太多而放弃。
三、在本身机器上跑通SSM框架的案例后,能够网上找个带业务的系统,好比图书管理系统等,从中看些前端和后端交互数据的流程,同时,结合业务看Mybatis里的ORM过程,以及Spring里的经常使用注解。
Java方面,本人按照上述步骤辅导过很多在校的同窗,只要肯上心练习,效果不会太差,不过不少同窗在实践过程当中会走弯路,这里列些广泛存在的问题,请你们在操练的过程当中尽可能避免。
一、别钻牛角尖,先面再点。好比有同窗对一个知识点不理解,或者一段代码运行有问题,就会在这个点上耗费不少时间,不解决就不继续。其实在这个过程当中,首先须要全方位掌握SSM框架、Java技术和数据库,个别点若是有问题,能够跳过,或者一个案例运行不通能够运行其它相似的,总之别在一个点上花费太多的时间。
二、再啰嗦一下,最好先照着书上代码运行,开始阶段的学习方法是“复制粘贴运行理解”,在本身已经有必定的基础后,再尝试本身写代码。
三、在操练SSM项目时,有些同窗会照着视频上提到步骤作,若是有些视频步骤不对,这样就会有问题,因此仍是建议照着书作。
四、工具要选对,刚开始就eclipse,或者Idea,别用editplus或命令行。
上述是方法上的误区,其实最大的问题出在态度上,上述学习过程持续时间不会短,快则两三个月,慢则半年,若是中途由于效果不明显而放弃,那就很惋惜了。
按照上述步骤,让本身拥有最基本的SSM以及其它Java和数据库相关技能后,要作的毫不是继续积累学习项目经验,而是尽量去找实习的机会,以积累商业项目的经验。在找实习经验方面,你们能够参照以下的建议。
一、在我以前的博文里也提到,大三时,打听计算机学院里哪些老师和外面公司有合做,通常硕导都有这样的项目,而后直接去找老师,刚开始不要钱,只求经验,或许对各位在校生同窗而言,这种方式是比较可行的,本人第一个商业项目经验也是由此获得的。
二、通常学校里都会安排实习,实习的过程当中,必定要重视,这个是实打实的商业项目经验。
三、寒暑假,找软件公司,这可能会比较艰辛,由于在校阶段本身很是难找相关实习机会,但要去找。
四、这个你们根据本身的实际状况本身斟酌:若是报培训班,多少能积累些项目经验,但这仅仅是学习项目经验,不过在培训班里,能够找相关老师推荐实习的机会。
五、若是实在找不到实习的机会,那么尽量经过各类渠道,去找商业项目经验的案例,我知道有些网站有,但不作广告。虽然靠这种方式积累的商业项目经验质量就打折扣了,但好歹聊胜于无,并且毕竟不少毕业生,连学习项目经验都没。
很多在校的同窗发现,哪怕实际只干了三个月的商业项目经验,本身的技能也会很大程度提高,并且实际的商业项目经验,会让你们掌握书本上根本不会多提但项目里必定会用的技能,好比JVM内存调优或多线程并发。从这意义上来说,只要有条件,大学生朋友应该挤破头去找商业项目的经验,而不是悠哉游哉地坐在机房里敲代码。只要你有商业项目的经验,哪怕就三个月,找工做时你就有代差优点。
按照上述步骤,你们在毕业时,多少会有些商业项目经验,再不济也能有学习项目经验,请记住,在招聘毕业生时,第一看项目经验,第二看项目里包含的技能,第三再问算法和理论问题,至于逻辑题和情商题,只供参考。
对此,毕业生在简历中,必定得突出作过的项目经验,优先挖掘商业项目经验,实在没有学习项目也行。若是没任何项目经验,那么找工做时会吃力不少。本文的重点是讲学习方法,准备简历的技能只是稍微提到。这块能够参考的以前写的博文,《你的简历能帮你争取到面试机会吗》。若是有时间的话,或许我会再专门针对毕业生朋友,写篇文章讲在java方面,如何准备简历和面试,以及如何找工做。
若想了解更多Java相关知识,那就关注乐字节吧,天天更新哦~