当前位置:   article > 正文

如何在面试中介绍自己的项目经验(面向java改进版),字节跳动超高难度三面java程序员面经_java面试 项目介绍

java面试 项目介绍

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

1 具有3年Java开发经验,2年Spring Boot开发经验,2年数据库开发经验。(这里的年限需要大于等于职位介绍上的要求,如果达不到,很多公司就不给面试机会)

如下再根据职位介绍上要求的技术,总纲性列出你掌握的技术,以此证明你很匹配

2 有Oracle,MySQL等数据库开发经验。

3 有多线程,集合等方面的开发经验

4 有大数据方面的xx技术和xx技术的开发经验。

这里你可以尽可能多地列出你掌握的JD上的技能,然后,你可以照着如下的范例列些你的亮点。

5 具有用索引,执行计划进行数据库调优的经验。(当前不会就自己查,这块资料太多)

6 熟悉Java JVM虚拟机结构,熟悉垃圾回收流程,有JVM性能调优的经验。(当前不会也自己查)

7 有在linux分析日志和排查问题的经验。(如果不会就去看些linux文件打开和搜索的相关命令)

8 熟悉面向对象思想,在项目里用过设计模式。(自己去看个单例或工厂模式,然后套到项目需求里)

9 有分布式组件的开发经验。(如果没有就别写,但对初级开发来说,这绝对是加分项)

10 熟悉Java集合等方面的底层代码。(自己去看HashMap,ConcurrrentHashMap,快速失效,ArrayList增删改查的底层代码,不难)

11 工作责任心强,具有一定的承压能力,肯加班。(写上去总不会错)

其实对大多数初级开发而言,应该都具备上述技能,哪怕当下不具备,用个把月绝对也能学会,所以大家完全可以写在简历上。

但我收到的很多Java开发的简历,只是简单地列出会的技术,没有任何润色性的文字,这样的简历或许就无法完全地展示候选人的能力,对应地,得到的面试机会可能就大大降低了。

相反,姑且先不论候选人是培训班出身还是科班出身,但就凭在简历第一页醒目地展示和该职位的匹配度,至少面试官就肯继续往下看项目经验了,这样得到面试的机会,乃至通过面试的机会,就大大增加了。

2  自我介绍时,立即全面抛出技术栈和亮点


在面试的开始阶段,面试官大概率会让候选人自我介绍,这部分别的不用说,就直接根据上文给出的简历上列出的总纲性要点介绍自己,如下给出范例说辞。

先说技能和jd的匹配度。

我叫张三,今年25岁,18年从交大大学毕业,计算机系,目前有3年Java开发经验(这个是jd上的要求),有Oracle,MySQL的开发经验,有xx等技术经验(这些经验也是jd上的要求)

再说自己的亮点。

在项目里,我用过用索引和执行计划等进行数据库调优经验,有JVM方面排查OOM的经验,大数据方面,用过Spark等框架,分布式组件方面,用过Redis和Dubbo等,有在linux上看日志然后排查线上问题的经验。

其实天地良心,上述提到的亮点,除了大数据spark以外,其它技能亮点初级开发应该都会,哪怕不会也能轻易学会。但就这样,很多候选人不会说,不过反过来,你说了就比别人强。然后立即引申出最近的项目,因为大多数公司会衡量jd技术是否在最近项目里用过。

在最近的项目里,我用到了Spring Boot框架,具体用到了JPA组件,数据库用Oracle,最近的项目是xx系统,用到了敏捷开发模式,在这个项目里,我除了做coding外,还做过单元测试,讨论需求和详细设计等工作,并且最近的项目进度比较紧,我自己感觉还能主动加班,一起和同事们保质保量地完成项目。

在自我介绍阶段甚至也不必展开项目,因为后面你有机会详细说明,但你第一要以此进一步突出你最近的技能经验和职位介绍很匹配,第二还要以此说明你肯加班等特性(毕竟通过项目举例说明自己肯加班,比单纯说肯加班要可信得多)。

再强调下,在自我介绍阶段,只需要说明自己能胜任当前工作的要点,这些要点不需要展开,比如不必展开说明自己如何排查OOM异常的。而其它没和找工作没关系的,比如兴趣爱好,家庭成员,个人性格等一概不需要说。

大家在面试前,可以根据上述范例练习下说辞,不紧不慢地说这些话,估计也就需要2分钟,哪怕再腼腆再内向口才再不好的人,多练几遍也能说好,但如果因为没说好被面试官认为沟通能力差,就太冤枉了。

3  先介绍项目背景,打消面试官疑问


由于你在自我介绍阶段已经涉及到最近项目了,所以面试官一定就会再问下去。不过不管怎么样,面试官总会问及你最近的项目,所以你总是有机会通过介绍项目经验来验证自己能胜任这份工作。

当面试官让你介绍下最近的项目时,你可以先大致先说下项目背景。因为有些候选人在简历上的项目经验看上去就像学习项目(其实我知道不少项目经验还真是),但你可以通过如下的说辞,证明这个项目是商业项目经验。

我最近是在xx公司(以此突出商业项目)里做了xx项目,这个项目的客户方是xx,已经上线(但如果是web项目面试官大概率会去核对)。这个项目用到了敏捷开发模式(提一下别展开,算抛出个提问点), 这个项目组人员是xx人,做了n个月,我在里面做了xx和xx模块。

你这样一说,能通过项目所在公司和客户方等要素,说明这个项目不是你编的。有人会问了,如果项目真的是编的,该怎么说?这块我不管,你自己想办法说。

但你这样说之前,事先需要做好如下的功课。

1 了解敏捷开发模式,比如站会每个人该说什么,用jira管理进度,一年定好若干个发布日期,一个月发布一次等,因为你提到了,面试官大概率后继会问到。

2 如果你说的是xx财务系统xx图书馆系统等,一些资深的面试官可能会问,这块有现成的项目,为什么你们公司还要自己开发?所以说你在准备项目描述时,不能夸张,比如把一个数据收集模块的维护项目夸张成xx财务系统。不过我也遇到过一些候选人,他们就说这是公司接的项目,为什么人家还要下订单做此项目他们管不着。

3 你一旦说了这个项目,那么面试官就会认为你真实做过,所以其中每个业务需求,比如数据从哪里收集,客户从哪个前端发请求,客户请求处理的流程,以及数据表的规模等信息,你得知道并且事先准备好回答预案,我就经常用此来确认候选人的项目是真实项目还是编的项目。

4 通过说项目管理工具,说明你不仅会写代码


在介绍项目背景之后,你更可以说些项目管理的工具,以此证明你在项目里还做过其它事情,不仅是仅会写代码,具体的说辞范例如下。

在这个项目里,我们用到了maven,用git来管理代码,用jira来管理任务和bug,用jenkins工具来发布。我还用过junit编写过单元测试,我们还用sonar来统计代码的测试覆盖度,我们项目经理要求,只有当“行覆盖率高于80%”,代码才能提交。

上文提到maven,Git和junit这块不难,jira管理bug和task这个也没什么可问,但你要事先了解下sonar管理代码质量的基础知识以及行覆盖率等要点,至于jenkins发布脚本,这个无需一般开发操心,你说下就行了。在上文里你仅仅提到的是工具,但你更要通过这些工具,来进行自我表扬。

我在使用junit时,不会敷衍地编写案例,而会根据真实的业务数据来编写案例,并且我还会着重考虑各种边界情况(这些哪怕初级开发也有本事做到),而且在编写代码时,我会非常注意编码规范,比如定义变量时会让人一看就理解 ,在关键代码地方多写注释,在if等条件里不会写太复杂,一个方法不会写太长,或者你可以再说些其它好的编码规范。而且,一旦遇到我的bug,我会第一时间跟进,并会和相关对应的人一起解决掉。

上述文字,虽然说是自卖自夸,但由于你结合到了项目,所以面试官不会有违和感。而且你这样一说,面试官就会认为你除了写代码外,其它开发项目的综合能力也很强。

不过千万注意,介绍项目经验的目的主要是证明技能的匹配度,所以上文提到的“介绍项目背景”和“说明项目用到的工具”以及“自卖自夸”的说辞,你别说太多,可以通过练习把它们控制在1分钟以内。

5  用Spring Boot项目举例,说明你的技术基本面


然后就需要介绍项目里用到的技术,哪怕你的亮点说辞再说,你也得保证技术的基本面说辞,这里就用当前Java项目的主流框架Spring Boot为例,告诉大家如何以此展示Java开发的基本功。

我们这个项目用到了Spring Boot框架,其中用JPA连接Oracle(或MySQL等)数据库,在控制层里用到了@RequestMapping注解来编写业务处理方法。在业务代码里,是用@Autowired注解来以IOC的方式引入类,还用到了@Service和@Component注解。当我们从数据库里拿到数据后,会用包含@Entity和@Table注解的模型类来映射数据。在这个项目里,我们还用到了@Transactional注解来定义事务,这个注解是作用在Service层上的,在这个项目里,我们还用到多个Java集合类和异常处理类。

通过上文的范例,大家应该可以很好地展示Spring Boot的基本技术面,其实对大多数Java初级开发而言,日常工作也就是用Spring Boot写一些增删改查的工作,所谓根据现有的业务再编写新的业务,所以上述说辞足够了。但是由于你提到了Spring Boot,所以在提问阶段,面试官大概率会问及如下的问题。

1 @Service和@Component注解的差别?

2 各种Restful请求格式以及各种http请求返回码。

3 @Transactional事务里的事务隔离级别和事务传播机制概念。

4 Spring依赖注入概念和@Autowired的用法。

5  Spring Bean的生命周期。

6  甚至可能还会问Spring Boot启动流程以及底层源码。

对Java 0到3年的初级开发而言,其实能按本范例给出的说辞,并结合网上题目说好前4个问题,应该就足以应对大多数的面试了。

6  用实例说明你在内存调优方面的经验


当你介绍好基于Spring Boot的技术基本面以后,你还可以进一步说明诸多亮点,这里就先给出结合项目展示内存调优方面说辞的范例。

(之前是介绍项目技术基本面,比如Spring Boot)在本项目里,我会非常注意内存的使用性能,并在项目里有过排查分析OOM的项目经验,我在编码的时候,也会非常注意内存性能,同时我也了解过JVM内存结构以及GC算法。

不管怎么组织语言,这方面你需要突出四点:第一强调你有内存调优意识,第二说明你有排查OOM的经验,第三说明你写代码的时候也会注意内存性能,第四说明你还了解JVM结构和GC流程的知识。但这里依然要强调,你尚在项目介绍阶段,你说明要点即可,别展开,如果这里你展开说明内存调优的做法,面试官会认为你思路不清晰,不过既然你提到了,面试官可能立即就打断你介绍让你详细说明,或者你介绍完项目后会继续问,总之你是有机会详细展示内存调优亮点技能了。

这里不仅给出项目介绍阶段怎么说,还会给出你后继如何详细回答。

如果面试官事后详细问你排查OOM经验细节时,你可以这样回答。

在测试环境,我们经常会收到内存使用率高于70%的告警,(至于怎么告警的相关设置,你可以看下new relic,如果你是初级开发,甚至不需要掌握相关经验),收到告警后,我第一通过dump命令观察当前内存镜像(你得熟悉下dump命令以及dump文件的打开方式和dump文件的内容),第二通过日志观察是哪个方法抛出的,最后发现是因为在订单模块(或其它模块)一个JDBC连接对象没关闭(或一个大的Hashmap对象用好没clear),所以导致了内存无法回收,发现问题后对应回收掉即可。

这里你结合的业务(比如订单模块)来说明,然后面试官再问dump细节时,你再说下dump文件的结构,这就行了。

如果面试官再问你如何在代码里注意内存性能,你可以这样说:

在写代码时,我会非常注意,在try…catch…finally从句里关闭或释放Connection和大的集合,一些大的对象用好以后,我会及时把它们设置成null,以此提升它们的回收时间,在for等循环里,我不会频繁地操作String对象,因为会产生大量内存碎片。同时,我会非常谨慎地使用finalize方法(事先看下),因为这可能会导致对象无法回收。

其实说上这四点就够了, 如果你自己感觉有本事,可以在了解强引用、弱引用和软引用的前提下在说如下的点,这很值钱。

在数据同步的业务场景里,我用到了弱引用(或软引用),以此提升数据对象的回收时间。

如果面试官问你JVM内存结构及GC(垃圾回收)流程,这其实是理论问题,网上资料太多,靠背就行了,所以这里就不再详细说了。但话说回来,GC流程以及JVM体系结构这方面的理论知识,这属于面试常用考点,你准备下不吃亏。

7  展示你在数据库调优方面的经验

结尾

查漏补缺:Java岗 千+道面试题Java基础+全家桶+容器+反射+异常等

这不止是一份面试清单,更是一种”被期望的责任“,因为有无数个待面试者,希望从这篇文章中,找出通往期望公司的”钥匙“,所以上面每道选题都是结合我自身的经验于千万个面试题中经过艰辛的两周,一个题一个题筛选出来再次对好答案和格式做出来的,面试的答案也是再三斟酌,深怕误人子弟是小,影响他人仕途才是大过,也希望您能把这篇文章分享给更多的朋友,让他帮助更多的人,帮助他人,快乐自己,最后,感谢您的阅读。

由于细节内容实在太多啦,在这里我花了两周的时间把这些答案整理成一份文档了,在这里只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
我花了两周的时间把这些答案整理成一份文档了,在这里只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!**

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-dpmZW51f-1713320812189)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/459858
推荐阅读
相关标签
  

闽ICP备14008679号