先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
正文
对于项目开发而言,只要项目是真实的,你就一定会经历过一些场景,对于技术而言,只要你用到了,那么一定能说出些“海底针”。所以在写简历时,建议大家列些如下的关键点,以证实真实性。
1 项目的背景,多少人做?做了多久?用什么工具打包部署发布(比如ant加jenkins)?用到哪些测试工具?用什么来进行版本管理(比如Maven+JIra)?如何打印日志(比如logger)?部署环境时,用到哪个web服务器和数据库(比如spring boot+oracle)。
这些话在简历中一笔带过也用不了多少文字,但这样不仅能提升项目的真实性,更能展示你的实际技能。
2 项目的开发模式和开发周期,比如用敏捷开发,那么每一个月作为一个周期,每次发布个若干功能,在每个周期发布前几天,会冻结开发,在开发过程中,会有每天的站会,代码开发完成后,会有code review。
3 在写技术(尤其是值钱技术)描述时,最好写些细节,比如用到了dubbo,那么可以写需要设置dubbo超时时间和重试次数是1,否则可能会出现调用,如果用到了线程池,那么如何避免线程池中的OOM问题,或者用到了nginx,你就把配置文件里的关键要素写些出来。
也就是说,你写技术时,不仅得结合项目需求写(即xx技术实现了xx功能),最好再些一些(不用太多)这个技术的用法细节(也未必太深)。面试官其实就看你用到的技术是否和职位匹配,如果职位介绍里的技术点你有都招这点要求写了,至少在筛选简历的时候,你过关的可能性就很大了。
4 最好写些你解决的实际问题,大而言之,实际问题可以包括配置集群时的要点(比如一定要设置某个配置),小而言之,你可以写如何实现一个功能(比如出统计报表时,你用到了数据库里的行转列的功能)。哪怕是学习项目和培训项目,你运行通现有代码的时候,也会遇到各类的坑,这就更不用说商业项目了。在简历里项目描述部分,你就写上一两个,这样证明真实性的力度绝对会非常高。
5 加上单元测试和分析问题和排查问题的描述。
比如,在这个系统里,我是用SoapUI作为自测的工具(或者用JUnit),在测试环境上,如果出现问题,我会到linux里,用less等命令查看日志,再用JMeter等工具查看JVM的调用情况,以此来排查问题。
这种话在简历中写下大概的描述,给出关键字(比如Jmeter,SOAPUI或职位介绍里出现的关键字)即可,不用展开,但在面试前要准备说辞。
我知道有些候选人会对项目描述做些改动,比如在最近的项目描述里,加上些之前项目里用到的技术,或者加上职位描述里提到的技术。在这种做法是否恰当,大家自己评估,但如果你在这类技术描述里,加上本部分提到的一些要点,面试官就很难甄别了。
4 事先得排练介绍项目的说辞,讲解时,一定得围绕职位需求要点
这里说句题外话,我面试过的候选人,从他们的表现来看,很多人是不准备项目描述的,是想到哪说到哪,这样的话,如果你准备了,和你的竞争者相比,你就大占优势了。
在本文的第3部分里,我给出了5个方面,在简历里,你未必要写全,但在准备面试说辞时,你一定得都准备。
1 你在项目描述里列到的所有技术点,尤其是热门的以及在职位介绍里提到的技术点,你一定得准备说辞。也是按“技术如何服务需求”以及“技术实现细节”来说,更进一步,你最好全面了解下这个技术的用法。比如nginx如何实现反向代理,该如何设置配置以及lua脚本,如果分布式系统里某个结点失效了,我想在反向代理时去掉,那该怎么在nginx配置里设。针对这个技术的常用问题点,你最好都准备下。
2 介绍项目时,可以介绍用到哪些技术,但别展开,等面试官来问,所谓放长线钓大鱼。这个效果要比你直接说出来要好很多。
3 有些基础的技能需求,在职位描述里未必会列,但你一定得掌握。比如通过设计模式优化代码架构,熟悉多线程并发,熟悉数据库调优等。关于这些,你可以准备些说辞,比如在这个项目里,遇到sql过长的情况,我会通过执行计划来调优,如果通过日志发现JVM性能不高,我也能排查问题,然后坐等面试官来问。
4 开阔你的视野,别让面试官感觉你只会用非常初步的功能点。比如你项目里用到了dubbo,但在项目里,你就用到了简单的调用,那么你就不妨搜下该技术的深入技术以及别人遇到的坑,在面试过程中,你也可以找机会说出来。
5 在项目介绍时多准备些“包袱”
刚才也提到了,在介绍项目里,你可以抛些亮点,但未必要展开,因为介绍项目时,你是介绍整体的项目以及用到的技术,如果你过于偏重介绍一个技术,那么面试官不仅会认为你表达沟通方面有问题,而且还会认为这个技术你事先准备过。
如下列些大家可以抛出的亮点:
1 底层代码方面,大家可以说,了解Spring IOC或Nginx(或其它任何一个职位介绍里提到的技术)的底层实现代码。面试时,大家可以先通过UML图的形式画出该技术的重要模块和过程流程,再通过讲述其中一个模块的代码来说明你确实熟悉这个技术的底层实现。
2 数据库调优方面。比如oracle,你可以用某个长SQL为例,讲下你通过执行计划看到有哪些改进点,然后如何改进,这样的例子不用多,2,3个即可,面试时估计面试官听到其中一个以后就会认为你非常熟悉数据调优了。
3 JVM调优和如何通过设计模式改善代码结构,在Java核心技术及面试指南里我已经提到了,这里就不展开了。
4 架构层面的调优方法,比如通过分库分表,通过数据库集群,或者通过缓存。
其实关于亮点的内容,我在Java Web轻量级开发面试教程里,也有详细描述。这里想说的是,大家可以准备的亮点绝不止上述4个,大家可以从调优(比如通过分布式优化并发情况场景)和技术架构(比如SSM, 分布式消息队列)上准备。再啰嗦一句,职位介绍里提到的技能点,比如Redis,大家还可以用熟悉底层实现代码来作为“亮点”,比如介绍项目时,轻描淡写地说句,我熟悉Redis底层代码(当然也可以写到简历上),然后等面试官来问时,动笔说下。
6 别让面试官感觉你只会使用技术
按照上述的建议,只要你能力可以(哪怕可上可下),你通过技术面试的可能性就大大增加了。但面试时,如果你表现出如下的软实力,比如在简历上项目描述部分写上,或介绍项目时说出,那么面试官甚至会感觉你很优秀。
1 该项目的工期比较紧,我会合理安排时间,必要时,我会在项目经理安排下周末加班。(体现你的责任心)
2 这个项目里,用到了分布式组件技术,刚开始我对此不熟悉,但我会主动查资料,遇到问题,我会及时问架构师,解决问题后,我会主动在组内分享。(有责任心,学习能力强,有团队合作意识,有分享精神)
3 遇到技术上或需求上的疑点或是我个人无法完成问题点,我会主动上报,不会坐等问题扩大。
4 在开发项目的过程中,通过学习,我慢慢掌握了Git+Ant+Jeninks的打包发布部署流程,现在,我会负责项目里的打包工作。或者说,在组内,我会每天观察长SQL脚本和长Dubbo调用的情况,如果遇到问题,我会每天上报,然后大家一起解决问题。(不仅能完成本职工作,而且还能积极分担项目组里的其它工作)
5 如果出现问题,我主动会到linux里通过xxx命令查看日志,然后排查问题。(不仅积极主动,而且掌握了排查问题的方法)
6 我会和测试人员一起,用xxx工具进行自动化测试,出现问题然后一起解决。(工作积极,而且掌握了测试等的技巧)
7 在项目里,我会用Sonar等工具扫描代码,出现质量问题,我会和大家一起协商改掉。(具有代码质量管理的意识,而且具有提升代码质量的能力)
7 版权说明,总结,求推荐
本文欢迎转载,转载前请和本人说下,请全文转载并用链接的方式指明原出处。
最后总结我的面试经验
2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。
另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。
BAT面试经验
实战系列:Spring全家桶+Redis等
其他相关的电子书:源码+调优
面试真题:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
*
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-htL6MUEF-1713449879567)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!