Java程序员怎么尽快学会某项技术,达到应付面试水平?
沈阳市和平区爱尚职业培训机构
发表于:2022-12-06 16:44:40 12次浏览在说程序员该如何把某个技术学到能应付面试的水平前,先以java为例,说下面试一般会问哪些点?每个技术会问到什么程度。
其实要去了解面试会问什么技术,这很简单,你就去看职位介绍。一般java开发分初级开发,开发和架构这些层次,不同公司给出的职位介绍里,所要求的技术可能会有差异,但基本上应该遵循如下的套路。
1 对java初级开发的要求一般是,具有1到3年开发经验,会用spring boot(或其他web框架)做增删改查的业务,所以这个的要求一般是(Spring boot)框架技术,外带jpa等连数据库的技术,外带些其它杂七杂八的因素。
有些公司在招初级开发时,可能还会要求会分布式组件或性能调优的技术,但这块应该是加分项。
2 对java开发的要求一般是,具有3到5年开发经验,除了会做spring boot等web框架开发外,还需要能排查和调试单机版的问题,比如线上运行抛异常了,程序员应当能通过看日志解决。
除此之外,对java开发的要求还会集中在性能调优(数据库或内存性能调优)和高并发分布式组件这块。对公司对java开发的要求是,除了分布式组件之外的单机版问题,开发应当能解决掉大多数的单机版问题。
3 对架构师的要求更偏重于分布式这块,即不仅要求能解决项目开发中的大多数问题,更要会搭建分布式集群,能应对高并发,同时能解决些因高并发而带来的限流、熔断或OOM等问题,以及分布式组件本身的问题。
当然在实际过程中不会分那么细,比如不少公司会对初级开发加上些“会用分布式组件”等的要求,会对开发加些“应对高并发”对要求。
而且,程序员在跳槽前,应该去看下目标公司目标岗位的职位介绍,这样就能清晰地知道对方会问什么问题。这个道理其实大家都懂,但根据我做面试官的经验,很多求职者就直接来面试了,就准备些通用性的问题,未必会对应聘职位做精准化的准备。
这里再多说一句,如果求职者没有掌握职位介绍上的技术,其实问题不大,但是需要证明自己在项目开发中做过类似的事情,或掌握其他同类的技术。
比如某个岗位要求应聘者会docker,应聘者之前没用过,但有过在linux上部署系统的经验,这也可以。或者某个岗位要求会用spring boot,应聘者用的是ssm,或者是公司自己封装的mvc框架,这其实也行。再说多些,比如职位介绍上写了要会redis,但求职者没用过,但其他技术不错,这同样能过。
其实面试是确认能力,而不是确认技术,比如求职者会了3个技术,但关键2个技术不会,依然过不了面试,所以下文就分两个层面写,说说零基础的java小白怎么把技术学到能应付初级开发面试的程度,以及开发怎么把技术学到应对架构师面试的程度。
先说说零基础的java小白怎么应付初级开发面试。
1 如果想通过单纯准备理论说辞,靠在面试中吹,大概率过不了面试。
2 但是不要慌,大多数的培训班学员其实能通过学习和相关面试技巧,从而地通过面试。
这里其实有个操作要点,零基础的java开发要过技术面试,其实不是要把技术学多好,而是要能证明相关技术有项目实践经验。比如某人哪怕把spring boot学到天花乱坠的地步,但不能证明spring boot项目开发经验,一般过不了面试。相反某人学spring boot磕磕绊绊,就会用jpa连数据库,但能证明自己的项目经验,一般还真能过初级开发的面试。
3 在明白这层道理后,就可以更好地准备面试了。
比如你之前学习项目是电商系统,你就结合一个流程,比如下订单,说下spring boot里,控制器怎么定义方法,jpa怎么处理数据库请求,相关注解是什么,遇到异常该怎么处理。这中间可能会涉及到@RequestMapping,@Service等注解,也会用到@Entity和@Table等注解定义实体类。总之只要你运行通一个流程,一个流程就够了,然后结合里面的需求,讲下spring boot的方法,配置参数以及注解是怎么用的。
这样面试时说出来,面试官就能确信你的经验是来自项目,而不是单学。然后再背些java八股文,再通过几场面试去磨合,那么就能过面试了。
后面再讲讲java开发,该怎么学技术以及怎么准备架构师的面试。在这之前,其实还有个初级开发升级到开发的流程,但这个升级过程是比较容易的,因为java开发所需要的调优和项目管理等技能,在平时项目实践中都能接触到,所以大多数初级开发就能在不知不觉中自动升级到开发了,而且还能通过项目实践达到应对开发面试的水准。
但是架构师所需的技术,比如高并发分布式组件设计、开发、部署和排查问题等相关技术,不少项目是用不到的,比如不少小公司的项目只会做业务,而不会用到这些技术。由于平时接触不到,所以java开发把相关技能学到能应对架构师面试的程度,就不怎么容易了,但绝非不可能。
后文就将讲下如何把架构师相关技术学到能面试的程度。总体来说,架构师相关技能分为如下几个层次。
1 了解理论,会用API开发功能,比如会用Redis的API缓存数据。
2 能根据项目的高并发需求,使用组件解决实际问题,比如会用Kafka组件实现高并发场景下的异步处理或消息缓存的流程,同时能根据实际需求,配置Kafka或dubbo等组件的参数。
3 使用组件实现高并发需求时,能解决遇到的实际问题。比如项目中遇到Netty或Dubbo方面的OOM问题,能通过查资料和查日志解决。
4 熟练掌握扩容、搭建集群和部署组件和业务模块的技术,能在一无所有的前提下,帮助项目组搭建一个能应对高并发的系统,同时能解决里面的问题。
对应的相关学习步骤如下所述。
1 一步步来,刚开始的时候,就学一些高并发组件的API,这里的组件是指Redis,nginx,dubbo,mycat,dubbo或zookeeper组件,或者是spring cloud alibaba体系下的nacos,sentinel,gateway,ribbon或seata组件,这是两个不同的方向,学好一个方向即可。
这里需要说明的是,学的时候绝不能但看理论,更要动手实践,如果项目里有用这些组件的机会,就从项目里学,否则的话,就在自己的电脑上搭建个环境学。
2 在自学阶段,由于缺乏项目实践机会,其实只能掌握到“熟悉组件API”的程度。有些程序员在工作中有分布式组件的实践机会,或者还能结合项目来学,但大多数程序员,真是因为在平时项目开发过程中只接触到基本技能,所以才要通过自学来掌握分布式高并发的技能。
自学阶段需要达成的目标一般不是熟练掌握高并发相关的实践技能,而是能在未来的面试中证明自己有高并发相关的项目经验。
3 通过自学组件或其他技能,能让自己掌握基本但必需的分布式高并发技能后,就要准备面试,争取挑战大厂或互联网公司的那些真正能提供高并发项目实践机会的职位。
在这个阶段,由于程序员一般只具有并发方面的理论知识,或是api技能,顶多外带些实际应用和解决相关问题的经验,所以在这个准备面试阶段,可以采用“项目嫁接”的技巧,即尽量在你当前做的项目里,结合该技术的项目使用情况,这样就能证明该并发技术项目实践经验,进而能证明大多数并发技术有项目实践经验。
比如对于基于redis的缓存技术,大家可以在熟悉基本缓存和读取数据的api前提下,为缓存找个项目需求落脚点,比如因为在本项目里,多次去查询用户数据会导致性能慢,所以会引入redis。引入后redis的键是什么,值是什么,同时设的超时是多少,解决过缓存穿透问题,同时用RDB的方式做redis持久化。
当然,在面试中证明并发技术的项目实践经验也是个互动的过程,你说了以后,面试官会问细节问技术,所以在为技术找好项目实践背景后,还要背题,比如背redis面试题,甚至去看redis背后的线程和缓存处理流程。
4 通过了解并发技术外带按上文准备好面试说辞,当然再需要经过多次面试试错,程序员一般有机会找到能真正提供并发技术实践机会的公司和项目。
当然真正做起来不怎么容易,但不少开发(包括我在内)就这样成功地升级到架构师。
写了不少了,做个总结。
1 把某个技术学到能应对面试的技术很简单,但用处不大,毕竟面试官更多地是看该项技术的项目实践能力,而且面试官也不会单看技术,而会综合看应聘者的综合能力。
2 程序员为了过面试,不仅应当学技术,而且还应当通过“找项目背景”等方式准备面试,而不能在面试前单纯准备技术。
3 面试标准也分“初级开发”、“开发”和“架构师”等标准,虽然把技术学到能应对架构师面试的程度,并最终过架构师的面试不容易,但按上文给出的方法,也能找到架构师的相关工作。
Java程序员怎么尽快学会某项技术,达到应付面试水平?原创内容,请点击 沈阳JAVA培训
热门课程
-
沈阳Python就业培训班
询价
-
web前端工程师零基础培训班
询价
-
javaweb实战课程
询价
-
沈阳java线下基础课程
询价
-
java编程就业培训班
询价