如何学习JavaEE,项目又该如何作?

本文主要分为三个部分:java

  • 如何学习java基础
  • 如何学习javaEE
  • 你关心的项目问题

01 java基础学习

建议初学者看视频学习,不推荐看书。入门视频选择很是重要,最好是通俗易懂、深刻浅出的教学视频。若是入门视频选的很差,不知所云,容易产生厌倦心理:“从入门到放弃”。关于java书籍,前期的学习我的不推荐直接看书:书本较为枯燥、不直观、容易分心、可能坚持不下来。mysql

02 javaEE入门学习

上面的基础部分的学习主要是为后阶段打好基础。javaEE是java开发学习路上举足轻重的一员,那么javaEE该如何学习呢?框架那么多,该学哪些呢?从哪一个框架开始学习呢?从博主以及身边同窗的面试来看,javaEE主要须要掌握如下几个部分:servlet、jsp、hibernate、mybatis、springMvc、spring,有余力的同窗能够学习spring boot,它是轻量级的spring,互联网公司使用较多,学完spring以后,学习spring boot就很简单了。框架学习顺序,在整理的资料中有写。linux

servlet和jsp属于基础,高层框架都是创建在servlet和jsp的基础之上,博主和身边同窗建议学习。虽然如今项目中不多直接使用jsp和servlet,可是框架都是在这基础之上进行了封装,学习servlet和jsp能够帮助你更好的理解框架,而不是只会配置,调API,不知原理。另外,servlet在面试中问的不少,jsp面试问的少,可是后面作项目的时候你得会写简单的页面啊,不然项目都搭不起来,会产生严重挫败感。程序员

03 你关心的项目问题

怎么找项目呢?

公众号后台对话框回复 编程大礼包 有5T编程资源web

本身在里面找一个,我推荐牛客网高级项目面试

怎么选项目?

首先最好是使用SSM框架的项目,SSH用的不太多,不推荐;算法

分布式的项目最好是,不是也不要紧,大部分网络上的项目都不是分布式的;spring

最好不要找商城,由于商城已经烂大街 了。sql

数据库最好mysql,另外面试时数据库表设计也会是常问问题,你们学习的时候注意一下。数据库

怎么作项目?

不少同窗问作项目怎么才能避免只是跟着视频敲了一遍代码,好像什么都没学到的感受?

javaEE的挑战在哪里呢?在没有分布式、高并发场景下,项目显得很“low”(大几率就是写简单的页面,控制器查数据库准备数据、页面从域对象里面取出数据填充、返回给浏览器),但初学者应该如何学习呢?

要回答这一点,首先明白面试官问项目问的是什么?以前头条面试的时候,面试官提到一点:头条为何这么喜欢问算法呢?“应届生简历上的项目与生产环境相差很大,不太实用,因此咱们不太问项目,偏向算法、基础的考察”。面试官其实很清楚你的疑问,可是他们仍是会问项目,面试官考察的究竟是什么呢?考察的是你解决问题的能力。在面试中,项目中有的业务/问题可能你以前没有想过,可是面试官却给你假设了某个你以前没考虑到的场景。你说我以前没有考虑到这种状况;面试官会说,没有关系的,之前没有想过也没有关系,现场想一想怎么解决。也就是面试官考察的是你解决问题的能力。

在大多数面试中,项目部分大多会延升到分布式、高并发场合。由于用户一多、数据量一多,问题就来了,简单的业务在高并发,大数据的场景下瞬间就会产生不少问题。好比,新浪微博的分层评论/点赞如何实现、项目中的数据库如何设计、好比说你的分布式中的某一台机器损坏了,怎么解决服务不可用问题;再好比说淘宝天天订单量不少,数据库如何设计:分库分表策略;好比说文件上传时上传期间断网了,那么你如何实现下次在上次的基础之上继续上传,而不是所有从新上传?好比说,360的开机战胜百分之多少用户,这又怎么实现(360用户确定不少,使用尽可能小的代价实现)。上面这些基本都是面试中的问题,说了这么多,咱们在跟着视频作项目的时候,究竟应该注意什么?

你之因此会有上面“我仅仅是跟着视频敲完了代码”的感受(首先初学者有这种感受是很正常的),由于视频的项目大多不是分布式、没有海量用户、不用考虑容灾问题。怎么弥补这一点呢?在跟着视频作项目的时候,视频中的老师提出一个问题以后,你想一想解决思路,若是把场景延时到几亿的用户呢?海量的数据呢?这些问题相当重要,而且你须要把这些问题记录下来。

项目相关面试问题中必定会有:“你在作这个项目过程当中遇到哪些问题,你是怎么解决的?”、“项目的亮点在哪里?(和第一个问题同样回答)”。面试不像考试,“亮点”不是说非得独一无二,你能够转到你遇到了哪些问题,你是怎么解决的,或者还没解决的问题能够问问面试官的意见,这样在下次面试中,上一位面试官的解决方案就是你的了。

因此,项目这块就是这样经过面试不断积累的过程,这也是为何极力建议在实习招聘的时候投递简历,不管你最终可不能够去实习。由于这就是你“升级打怪”积累的过程,前期多投小公司,积累“升级打怪”的经验。后期在面对BAT、TMD等一些大boss的时候你才能不虚,才能顺利通关。上面说的在作项目时把场景延时到分布式、并发场景,这很难,只是建议,不要因噎废食,经过面试积累项目经验,后面你会发现,不少公司针对你项目提的问题都差很少,最后你会发现原来你认为“没有什么东西”的项目其实问题一大堆,这些问题的发现主要靠面试积累。最后强调一次,必定要把项目中遇到或者是你想到的问题记录下来,必定要。另外,有同窗可能会说:“我在作项目的时候没有遇到问题,或者没有难点,那怎么办?”

首先,你再看一遍这篇文章;其次,没有问题,咱们要学会创造问题。好比说:你知道java会有OOM,而且你知道OOM怎么排查,你彻底能够把OOM这个问题的排查过程认为这就是你遇到的问题;再好比说,JDK7以及以前的HashMap在并发状况下会发生死循环,若是你知道这个原理,也知道怎么解决,这也能够成为你的debug的经历;再好比说,linux自启动问题,一个项目部署到linux上,确定要配置自启动,若是你知道怎么作,这又能够是一个问题。上面这些例子只是但愿你们明白:没有问题能够创造问题。固然,项目业务相关的问题或者开始你没有考虑高并发,在考虑以后出现的问题等一些业务相关的问题可能会给面试官留下更好的印象,我只想传达:“你作项目过程当中不可能没有任何问题”。项目业务紧密相连的问题,其中一个问的比较多的问题是:若是其中某个业务在处理过程当中失败了,你应该怎么处理?

在web项目中通常用户的行为都会交由线程池处理,若是在处理某个业务的过程当中发生了异常,致使这个任务没有处理完,这时你要怎么处理?这里这样举例的意思是:你们要随机应变,要学会创造问题。只要你知道问题解决的方案,面试官怎么可能知道你在作项目的时候究竟有没有遇到过这个问题呢?问题来源于想象。

最后,注意积累项目问题,在每一场面试中,面试官会不断提出问题,面试完后,下来找到这些问题的答案或者和同窗讨论。这样每次面试下来你的问题库里面又多了几个高质量的问题。必定积累以后,面试会很顺利~。不要担忧面试官对你的项目提不出任何问题,若是是这样,这大几率是面试官的能力问题。

总之,项目面试是一个积累过程,前期多投小公司的实习和秋招,为后期“升级打怪”积累经验。项目面试没法一蹴而就,是一个积累的过程

出自:https://mp.weixin.qq.com/s/NT...

以为文章不错的欢迎关注个人WX公众号: 程序员乔戈里
我是 百度后台开发工程师,哈工大计算机本硕,专一分享技术干货/编程资源/求职面试/成长感悟等,关注送3000G编程资源,免费下载CSDN资源。

相关文章
相关标签/搜索