毕业设计什么类型好做(java开发毕业设计做什么比较好鸭)
下面是好好范文网小编收集整理的毕业设计什么类型好做(java开发毕业设计做什么比较好鸭),仅供参考,欢迎大家阅读!
毕业设计的话,如果单纯做商业项目,怎么做都行,说难听点找个现成的代码借鉴下,顶多修改下功能就能写成一篇论文了,但这对找工作一点帮助也没,为什么这样说呢?因为找工作需要的是商业项目。
本文就将围绕java零项目经验求职者的实际,详细说下如何高效地准备java项目,以及在面试中通过项目全面展示java技能和相关亮点的技巧。
1 零项目经验、学习项目经验和商业项目经验的差别
我在做java技术面试官的时候,真会收到一些没有任何项目描述的简历,或者这些项目的描述相当简单,比如只列了项目的开始和结束时间,只给出了项目名,或者大致列些项目业务,但没有列所用的技术。
这种简历属于是零项目经验,可能求职者确实做过项目,而且在项目里还是技术顶梁柱,但这种简历没面试价值。
另外一种是学习项目,比如有些简历上会明说,在毕业设计中做了什么项目,或在培训班里做了xx项目,或者有些简历上是给出了xx电商系统、xx超市系统、xx图书馆系统或其他大而全的项目。
大家可以想一下,这种项目一般是有现成的例子,使用方,比如学校,一般没必要再出钱找公司开发一个新的,完全,完全可以使用现成的项目,或者说,也不是每个公司都有必要去开个电商网站。
这类项目属于学习项目,判断学习项目的标准是,这些项目没有开发或上线的价值。如果求职者在简历上写了这类项目,虽然总比什么都不写要好,但这种项目是不能算到经验年限里的。比如某java开发岗需要1年经验,求职者简历上虽然写了1年的项目,但属于学习项目,不算入总体年限,因此求职者可能也会无法得到面试机会。
可能一些应届生在求职时,会靠学习项目来加分,这也是校招时的实际情况,毕竟大多数应届生连学习项目都不会写,但这里要说的是,如果应届生有商业项目经验,就能更好地找到工作。
当然最值钱的是商业项目,说白了就是你做项目时公司给你钱,公司能靠这个项目盈利。由于商业项目开发过程正规,且用到的技术一般都是主流技术,所以面试所要求的经验指的只是商业项目经验。
怎么写在简历上写商业项目经验,面试中怎么让面试官确认你做的是商业项目,这块后文再说,但在本文的开篇,本人需要请大家注意,面试前准备项目时,方向一定要对,一定得把项目往商业项目方向上靠。
2 小白理解的项目经验和面试官眼里项目经验的差别
本人在面试官的经历中,发现不少java小白或是初级开发,在项目经验的理解上存在偏差,这就导致了在准备面试中存在方向性的问题。
先列出一些求职者对项目经验错误的理解。
1 认为面试官会问业务,所以会在面试时大说特说自己做的模块流程和业务逻辑。
2 认为面试会考核项目的所有细节,所以会准备前端后端以及数据库方面的问题。
3 过多关注项目的技术,忽略项目管理方式和运营方面的问题,这方面如果不准备的话,往往会被面试官质疑项目的真实性,或者被面试官认为是学习项目。
而面试官一般是怎么确认项目经验的呢?
1 问项目的基本情况,比如哪个公司做的,客户方是谁,是否上线,项目的人数和开发管理的方式。
2 如果求职者应聘的是java后端开发岗,不会问前端,当然会前端是加分项,只会确认后端技能。
3 不会关注业务,因为没指望你来开发一样的项目,而会着重看你项目里用了什么技术。
4 如果求职者在简历的项目里写了亮点,比如有数据库调优经验,有oom排查的经验,有分布式组件的使用经验等,这会一一落实,但如果没有亮点,只要求职者通过项目展示的技能达到招聘要求,并且商业项目的总体年限达标,一般就会让过面试。
3 增删改查流程+组件+少量业务=项目经验
如果java小白之前没有任何项目经验,那么一定是需要通过运行通若干个项目来积累经验。在积累经验时,可以采用如下高效的做法。
1 搭建好环境,运行通一个Web框架的案例,比如Spring Boot或SSM框架的案例。请注意首先运行通的不是项目,而是案例,即通过走完Controller,Service和DAO/Repo层,再整合完成一个增删改查的请求。
通过这个流程,大家可以了解业务请求处理时,会走哪些流程,需要哪些API,配置文件该怎么写,又该用到哪些注解。这里请注意,当你运行通一个流程后,运行其它流程,只是业务上的差异,流程本身还是这样。所以一开始,可以运行多个案例来熟悉Web框架的开发和运行流程,但没必要跑些业务逻辑比较复杂的项目。
2 熟悉流程后,需要关心一些常用的组件,比如logback写日志的组件,@Autowired注解关联的IOC,JPA怎么连数据库,怎么实现一对一一对多,或者怎么通过拦截器或AOP组件实现功能。
再啰嗦下,在面试中是通过技术,而不是通过业务逻辑来证明实力,所以在运行通增删改查流程后,要做的是在这个基本的流程基础上引入组件。该引入哪些组件?很多Java初级开发的招聘需求上都会写,无非是上文提到的IOC,AOP,拦截器,安全框架,Restful,logback或junit等。但这里请注意,如果你是准备后端面试,那么前端技术,比如JS或前端框架等,不需要关注,你只要关注从控制器接收到请求那一刻开始,后端怎么处理即可。
3 因为在真实的商业项目里,会用到组件来解决实际问题,所以大家在理解增删改查流程和必要的组件用法后,其实已经能达到做项目的最低标准。但面试时要展示的,不是案例,而是项目,所以你这时可以看下项目的业务需求。请注意也就是看一下,保证自己能写到简历上,面试时会说即可。
这块哪怕我没做过项目,我也能大致说上些,比如仓库管理系统,无非是入库出库盘点等,支付系统无非是入账盘点等。关于这些业务逻辑,你需要大致说下怎么做,比如控制器接收什么请求,参数是什么,调用什么业务模块的方法,最后插什么数据表。其实面试中,面试官不关心这个,但你准备了属于有备无患。
4 java小白如何在简历上写项目
按上文给出的步骤准备项目,其实花不了多少时间,一周一个案例,一个月快点的话能准备四个案例,然后把它们当成项目准备。前文也说了,找工作时更得关注商业项目,那么在简历上写项目时,一定得往这方面靠。
这里再多啰嗦下,如果简历上写的项目看上去像学习项目,不是商业项目,会有什么后果?
1 对应届生应该影响不大,毕竟应届生中能给出商业项目的人不多,而且很多人在简历上甚至没有写项目,但如果应届生简历上有商业项目,得到面试机会的可能一定大大增加。
2 对于想通过社招转java的求职者,一般目标职位都有项目年限,一般至少是1年,如果你简历上看山去想学习项目,这个项目会被排除在总体年限之外,这样的话,你这份简历可能根本得不到面试机会,或者可能会错过不少面试机会。
有些人说了,我确实没有商业项目,那怎么写?培训班给的建议一般是要包装,但出于实事求是的态度,你可以仔细挖掘下之前的商业项目经验。
1 你在校阶段,是否有利用假期或周末在软件公司里干过兼职?
2 一般大学的老师,尤其是博导硕导,是有机会接到基金项目或外面公司的项目,你有没有帮忙做过?
3 你做毕业设计项目时,如果这个项目是能挣钱的,那么也是商业项目。
4 你毕业后,是否继续在帮老师干实验室的项目?或者是否在和朋友一起创业或干兼职?做的是java项目。
总之有如果有商业项目,一定别客气,写上。再说下简历上怎么写项目会被确认是商业项目?而不会被误认为是学习项目?
1 写明所在的公司,或者写明是帮老师干活,和朋友创业等情况,同时说明从这个项目挣到钱。
2 如果这个项目时小公司做的,加上句,这是个维护项目,就小公司拿来代码后增加一些功能,不是从头开始开发,这样就比较可信些。如果这个不是在公司里做的,比如是帮实验室老师做的,或者是兼职项目,同时也说明。
3 写明项目所用的管理模式,比如是敏捷开发,写明项目的开发人数,比如5人,写明项目所用的管理软件,比如Maven,Git,Jira,Jenkins等,同时说明项目的部署方式,比如打成jar包,放在linux服务器上。
4 适当写些分布式组件,比如用到Redis缓存,用到Dubbo做远端调用。如果是初学者,这块可以不写,但这是个加分项。
5 适当写一些做了项目才会有的事情,同时可以把这些作为亮点,比如有过数据库调优的经历,有过排查OOM问题的经验,有过看linux服务器上的日志排查解决线上问题的经验。
其它的要素,比如业务,你做的模块,以及用到的技术,同时一个也别少地写上,这样这个项目经验看上去就像商业项目里。
其它的注意要点是,比如你应聘的公司写明要1年java开发经验,那么你得通过写明项目的开始和结束时间,以此证明你有足量的商业项目年限,如果你应聘的公司要求2到3年java开发经验,那么你可以写多个商业项目经验,这些商业项目经验的总时长得满足要求。
5 面试前可以准备的项目说辞和项目细节
你在简历上写好了项目描述后,一定得准备在面试中介绍项目的说辞,这部分的说辞其实就是你写在简历上的项目描述,这里大家可以参考如下的说辞,在简历上写项目。
1 介绍项目的背景和细节,以及来说明是商业项目。
这个项目是在xx公司做的,是从xx年x月做到了xx年x月,项目名是xx超市管理项目,这是个维护项目,我们公司是拿过拿来的新增和维护功能。项目组是6个人,一个项目经理,其它是开发,测试是另外的团队。
如果你这不是在公司里做的,比如是帮实验室老师做,或者是创业,也需要说明,同时要说,我是从这个项目里挣到了钱。
2 说下项目的管理方式和的管理软件。因为学习项目是只包含技术,你做的是商业项目,所以你才知道这些细节。
这个项目是用敏捷开发模式,我们每天有站会,一个月发布一次,每次发布是用迭代发布的模式。这个项目是用Maven管项目,用GIT来存代码,用jenkins来部署,每次发布时,我们会把项目打成jar包,然后放到linux服务器上。因为大多数项目都这样做的,你这样一说,事先再看看git,jenkins等细节,就能进一步证明是商业项目。
3 说下项目用到的技术,这里也可以提一下你做的模块。
这个项目用的是spring boot+jpa,日志是用logback写的,是用aop来统一处理异常,用到了redis来缓存数据,用dubbo实现了远端调用,在这个项目里,我做了入库和销售等模块,在做的时候,我会用junit来单元测试,或者说是用其它方式来确保质量。
4 同时抛出亮点,引导面试官的提问。
在这个项目里,我解决过数据库性能问题,解决过OOM内存问题,有看linux日志解决线上问题的经验,甚至可以进一步说,有用redis实现缓存和用dubbo做远端调用的经验。
这样一说,面试官就会确认你做的是商业项目,当然还有可能通过问如下的细节来进一步确认项目的真实性,不过这种问题不难回答。
1 你的项目有多少人做?做了多久?这个你只要别说太离谱就行。
2 有多少模块?多少表?表规模是多少?面试官这样问,其实是不知道答案的。你可以说,有多少模块我没算过,但我知道的有2,30个,其中我做了入库,销售等(一一列举)6,7个模块,表多少张我也没算过,但我用过订单表,明细表等6张表。表的规模可以说时候几十万条,为后面的高并发调优打下基础。
3 你做个模块大概多久?一般是3天一个开发,2天完成测试,3天联调,也就是说,一个模块大概是用1周时间完成,一个发布周期以1个月算,一个一个人是做2,3个模块,其它的工作量是测试或改已经发现的bug。这里大家在面试前得好好准备,即根据你做项目的时间,回想下你经历过多少个发布周期,按每个发布周期2,3个功能算,这样就能大致统计出你做了多少模块。当然这没绝度的,比如某业务很复杂,一个月做一个模块也有可能,但大致算的时候别算太离谱,因为有些面试官会以此来确认项目的真实性。
4 你项目是怎么开发的?敏捷开发模式,大家可以去了解细节。用了什么管理工具?Maven,Git,用了什么框架和组件?前文也已经说了,Spring Boot和 JPA。
这些点面试前可以准备,但说难听点,你哪怕不准备,就去多参加几场面试,被问倒了几次,也能知道面试官确认真实项目的方式,以及该怎么回答。
6 面试前可以准备的项目亮点
按上文给出的步骤介绍项目,如果中规中矩的话,能给面试官留下“能用spring boot等框架做业务“的印象,其实如果应聘一些小公司,能做到这点就可以了,但如果想要进一步提升面试成功的概率,还可以准备如下的亮点。
在上文给出的面试介绍项目经验的说辞里,列出了数据库性能调优,OOM调优和通过linux日志排查线上问题的亮点。说真的项目亮点绝对不止这三个,其它的比如用sonar扫代码提升质量,用分布式组件,甚至是解决过的实际问题太多太多,大家可以自行挖掘。不过如下三方面的说辞,哪怕是java零经验的,照样可以在短时间内准备,照样能在面试中有条理地展示,从而证明自己的能力。
1 先说排查数据库性能问题的亮点说辞。
我们项目的运维(或项目经理)做了配置,一旦linux服务器上的sql语句执行时间过长,我们就会收到邮件。收到邮件后,我们先用执行计划(execute plan)去扫一下该sql,会发现是索引没建,对应的建下索引即可。
上述说辞涵盖了发现问题、分析问题和解决问题的要点,大家在说之前可以去看下索引的八股文,同时去看下执行计划的描述。当然,如果你感觉还可以继续说,再可以引入如下用Redis缓存调优的说辞。
通过看日志,我们发现在超市的购买业务里(一定得找个业务落脚点,别空说),发现会多次访问商品货物的表,但这块是性能瓶颈。于是我们用的Redis缓存(单机版即可,未必要说Redis集群),设计了键是商品ID,值是商品对象(用redis的list类型数据),于是就能通过缓存提升性能。
2 再说说排查OOM问题的亮点说辞。
我们项目的运维(或项目经理)做了配置,一旦linux服务器上的JVM内存用量超过70%,而且时间超过5分钟,我们会收到邮件。(一样是先收到告警邮件)再说下排查方式,于是我们会看dump文件和业务日志,看日志后,发现在导入文件格式的进货清单时,导入后没关IO对象,于是就有OOM问题了。解决方法是导入后关掉。
其实说解决实际问题时,面试官未必会在意你解决过哪些问题,甚至你解决的问题在面试官眼里看上去太简单,但由于你是以零项目基础的情况面试初级开发,你一旦说出这些亮点,面试官一定不会再怀疑你项目的真实性,同时还会留下“能解决实际问题”的情况。
3 再说说排查线上问题的说辞
先描述下问题,比如客户抱怨说某个付款操作有问题,于是你就去看日志,这里再详细说下打开linux日志并排查问题的命令,一般是用vi命令打开文件,用grep等命令根据错误关键字搜索,根据问题的时间点找到异常后,再根据线程号找到上下文,这样就能定位到问题。
问题的原因你可以说,是因为这个请求的参数传入有问题,本来应该是数字,但不是,所以导致问题,解决步骤更可以一笔带过,毕竟这里你是展示排查线上问题的经验。
大家可以按上文给出的步骤,从监控、看日志分析问题、找原因和解决步骤等方面准备亮点,当然在准备时,一定得通过看八股文,了解索引,linux命令,OOM等方面的细节问题。这样的话,一旦面试官听你讲好亮点,同时问些细节问题你都能回答,说难听点,哪怕这些亮点是你准备的,你其实没在项目里做过,面试官也只能相信。
本人在做Java技术面试官的时候,发现了一种不怎么好的倾向:不少求职者,尤其是Java初级开发的求职者,会认为面试准备就是背八股文和准备算法,这本身没错,面试前也该充分准备这方面的问题,但更要准备项目。
1 在校招阶段,由于大多数应届生是没有商业项目经验的,所以对校招面试官来说,只能退而求其次,通过学习项目、八股文和算法题来选人,但话说回来,校招过程中如果能展示商业项目经验,一定能对其它竞争者形成碾压性的优势。
2 对想通过社招转行java的朋友来说,如果简历上没有足量的商业项目经验,可能根本没面试机会,如果不在面试中展示项目经验,那么大概率达不到“本职位需要xx年开发经验”的硬指标。
不过话说回来,如果按本文给出的步骤准备商业项目也不需要费多少时间。
1 搭建好环境,运行通过若干个案例,估计1周顶了天了。
2 在案例中引入组件,估计了不起也就一周。
3 按本文给出的方法准备说辞,外带背八股文,一周应该也足够了。
4 顶多再加上用面试试错的时间,估计一周也够了。
也就是说,通过本文给出的准备项目的方法,快的话一个月就能在项目描述方面(甚至还可以是八股文方面)达到入职的要求。如果求职者之前会些spring boot方面的技术,甚至能用更快的时间找到工作。
但话说回来,用本文给出的步骤积累的项目经验,只能帮java初学者应对面试,在技术层面,初学者未必能有多大的提升。不过这也够了,因为在自学阶段,一定无法高效地积累java经验,一定还得通过项目实践来进一步积累调优和高并发分布式等更值钱的经验。至于如何在项目里高效地积累java经验,从而更高效地提升自己的薪资,相关做法本人会用另外的文章来讲述。
如果大家想进一步了解简历和面试方面的技能,可以向我发起咨询。
本人的咨询一般会提供哪些服务呢?
1 用资料帮大家巩固spring boot,甚至是spring boot整合分布式组件和微服务的技能,同时提供Java面试方面的资料。这些资料在市面上有明码标价,这些资料的钱就超过咨询的费用了。
2 提供简历辅导服务,经本人辅导后的简历,基本上都能大大提升竞争力,从而得到面试机会。
3 以电话交流的方式提供面试辅导服务,包括但不限于教如何介绍商业项目经验,如何在面试中证明spring boot能力,如何在项目中证明调优看日志和分布式组件等方面的亮点。尤其地,在辅导过程中本人还会教授“引导方法”,告诉大家如何在准备的基础上,引导面试官问出你的亮点和技能。
4 甚至还能提供就业辅导和薪资方面的咨询。如果条件合适,还有外企能公司的内推机会。
最后祝广大程序员朋友都能找到心仪的工作,同时在技能和薪资方面实现双丰收,也请大家多多点赞我的文章。