当前位置:网站首页 > 技术博客 > 正文

java面试项目经验介绍



image.png

前段时间分享了一下我是如何学习八股文,然后很多小伙伴就询问了我项目相关的问题,这里就整体讲下面试是怎么考察项目的,然后讲一下我第一次面试时项目踩得一些坑,和吸取教训后我是怎么准备的面试项目,话不多说,下面直接进入正题。

(tip:成功没有捷径,都是靠长时间累积和短期的努力实现的,这里不鼓励0基础包装自己去突击面试,而是明白要往哪些方向去努力)

【关于我】 双非大三,前段时间拿到了字节开发岗实习offer,无交流群、公众号(有B站可以关注下我,hh),单纯分享经验希望能给有需的小伙伴提供一些帮助,欢迎找我 私信交流、简历修改字节内推( )

很多小伙伴对于面试更熟悉的可能是八股文,往往会不太看重项目。等意识到的时候就发现自己手头没什么项目,临时写时间不够,跟着课程走又经验不够,面试官一问漏洞百出。或者有些有项目经历的同学对自己项目不满意,对于人手一个的商城、微服务又望而止步。再或者就是项目很好,但准备不充分导致项目亮点并没有被面试官发掘。所以在面试前有必要对面试项目有个全面的认知。

  • 项目需要从哪几个方面准备?本文从四个方面讲下如何备战项目。
    • 项目本身准备:完成一个技术栈合适的项目
    • 项目简历描述:不管你项目多厉害多酷炫,你接到面试通知前只能通过文字去描述它(后文详细讲)
    • 项目内容口述:你成功约到了面试,这时候更需要的是你把你项目讲出来(同后文)
    • 项目技术点提问:面试官一定会从技术角度对你的项目进行提问,关键答好了加分,答不上就尴尬
  • 到底怎样准备项目才足够面试或者怎样的项目才适合面试呢? 这个问题没有答案,最好的就是是你能理解这个项目,并且这个项目技术栈足够,以后端为例,一个简单的评级
    • 秒杀商城 > 普通项目 ;
    • 上线项目 > 本地项目
    • 分布式/微服务 > 单体项目
    • 后端相关项目 > 后端不相关项目
  • 然后讲几点一个项目注意点
    • 【尽量避开大众项目】: 项目一定要有你的痕迹,自己写的项目就要高原创,复刻他人的项目就要添加自己的元素内容,切记不要用烂大街的项目,你花时间准备常见项目可以,但一定要改内容(具体怎么改参考后文)
    • 【别太纠结原创】 做项目未必是自己原创度100%的好,可以基于开源改,也可以复刻,不要太纠结自己花时间写一个好项目去准备面试(除非你是大一大二做准备)。大三或者面临找工作的同学可以基于开源项目去准备一个自己能理解,并且自己理解后去尝试改动的项目。
    • 【别太在意秒杀商城】 如果你是开发经验少的小白千万不要随大众做一些秒杀电商的项目,完全是给自己挖坑,面试扎实的基础 + 完善的两个项目 + 对项目的准备 就足够了,你应该考虑的是做一个适合你的项目,然后这个项目你所有技术栈都清楚,这个就够了,而不是B站随随便便点开一个教育机构的电商项目就看几个月,完全没意义(开发大佬除外)。
    • 【保持学者的态度】 学生项目在面试官眼里其实都一样,除了一些特别亮眼的高技术力的作品,面试的重点都是讲你从项目里面收获了什么,你能不能讲你这个项目,所以更多的是你作为学者去和面试官探讨挖掘你写项目的收获以及你个人在写项目的时候的亮点。
    • 【技术栈要广/深】 项目一定往深度或者广度去发展,要不基于旧轮子造个新轮子(就类似实现一个你自己的RPC),要不基于最新的技术栈造一个完整的项目(像分布式、消息队列、搜索引擎、缓存同步、云容器、流水线等)弄个大杂烩。

看完注意点,就讲讲面试是如何考察项目的,这个最重要了,对于小白可以提前准备,对有项目的可以更全备的准备。我回想起我第一次面试就很呆qwq。。下面讲讲面试如何考察项目的。

了解面试官如何考察项目前,先讲讲如何把你项目的信息传达给面试官。

  • 简历项目介绍: 介绍一定要全面,不然可能筛选都过不了!也不能为了好看而造假(后文会细致介绍)
  • 在线演示网站: 事实胜于雄辩,扔一个网站面试官不一定会看,但至少项目印象会好一点。
  • 项目总结博客: 项目不方便上线,又想简历文字不足以展示你项目,可以试着后面加个博客链接

然后说说面试官考察出题的几个角度

  • 开放性提问:
    • *介绍一下你这个项目? *
    • 讲讲你在这个项目中的工作。
    • 可以简单说说你项目的技术栈吗?
    • 讲讲你项目的亮点?
    • 讲讲你项目中遇到的问题?
    • 如果让你继续完善这个项目你会怎么做。
    • 如果让你设置一个
  • 非开放性提问:
    • 你为什么使用xxx技术呢?
    • 你可以讲讲xxx技术的工作原理吗?
    • 你项目是怎么上线的?
    • 你项目为什么没上线。
    • 讲讲你项目的xxxx(登录/购物车/消息通知..)模块怎么实现的
    • 讲讲你系统xxx(RBAC/支付/聊天室)功能怎么实现的

场景题一般都是跟着项目来的,有时候你会发现面试官不是无故抛出场景题,很多时候都是基于你项目定制的

  • 开放性场景题:
    • 如果我现在有xxx个用户来访问你的网站,你网站能顶住吗。
    • 如果你网站收集了2亿个日志,你能在小内存情况下找到相同的两份记录吗。
    • 如果网站用户激增你会怎么应对
    • 如果记录对不上,你会怎么办
    • 开发场景题目太多了,这里就不一一举例了,说几个我面试遇到的吧

年初字节三面,前面里面都是八股文,清楚第三面我要准备好项目内容,我的项目是两个增删改查项目但内容都挺丰富的,但面试前我的心态是:我才大三上(他还只是个孩子.jpg)所以觉得应该不会像秒杀项目一样刁难我,并且这两个项目是我独立完成的,有什么问题尽管来(ps,我真的没一点意识去准备这几个问题:讲讲你项目的亮点、讲讲你项目的难点),我的想法是他问我技术栈,问我怎么写的,我问心无愧肯定可以答下来。下面就还原下现场

  • 三面面试官:哦,看你这两个项目都是学校写的吧。
  • :对对对,紧张到疯狂点头(第一次见三面面试官)
  • 面试官:那我你给我简单介绍下第一个
  • :讲了下我为什么写这个,花了多久,甚至还多次表达自己能独立完成前后台。
  • 面试官:噢,既然如此,你写的时候有没有遇到什么困难。
  • :好像没太多,(讲了几个无关紧要的,我觉得我能力够解决一些小问题,所以没啥说的),然后说这个项目就是基本的增删改查,我写了很多类似的,很熟悉了。
  • 面试官:额(⊙o⊙)…那讲讲第二个项目吧,你为什么用xxx技术

然后第一次面试凉了(项目这里扣分了,然后多线程打印abc是不熟悉地写出来的扣分;反思了一下双非面试的机会不多,有机会就尽量100%表现,让面试官没有拒绝你的理由,找到问题就赶紧补)然后我就开始认真准备面试项目了。我后文是分享对我后面怎么准备面试项目的。

这里讲一些攻略,适合小白和准备优化项目或者准备面试的同学。

讲讲怎么选择项目

  • 一般准备两个项目;时间不够就重点准备一个项目
  • 按照自己学习进度,最好是 springboot 项目,有能力就微服务或者分布式

这里讲讲获取项目的途径

  1. 自己码一个项目
  2. 参加同学组队项目
  3. 参加实验室老师的项目
  4. 开源项目:
    • 自己找
    • 找学长、大佬推荐
    • * `*有一个*论坛项目,吹爆,技术栈适中,适合小白,教学文档丰富,关键免费`
    • 上慕课
    • 上B站
    • 加知识星球

如果看到这里还是不清楚自己需要什么项目,那就再看一遍上面第四点,一定要主动去找,不论什么方式,不去找项目看到不会自己找上门,后文项目细节就不讲了,默认都有一个已经运行起来的项目了

一个刚刚上手的项目需要做什么准备呢?这里就拿大众化的 博客项目 来讲。虽然博客项目烂大街,但好好准备的博客项目效果不一定比秒杀电商差。很多时候晚上的项目都是以代码流程为主,讲课质量也参差不齐,但都没有单独把如何应对面试拿出来讲,下面我就以博客项目为例,讲一下如何全面备战面试。
image.png

  1. 最基础的你需要了解代码,不是说全部看懂,而是你能根据一个功能快速定位代码在哪,能把代码流程走一遍,这是最基础的。
  2. 给你的项目写篇总结博客,把用了什么技术栈、数据库设计、模块设计(登录注册、用户模块、博客模块、点赞) 写一遍,一个你可以更熟悉你的项目,第二也可以放到简历上面如果你博客没上线的话。
  3. 基于已有的代码修改一个模块或者增加一个模块,例如把登录注册的账号密码登录改成邮箱验证码登录;或者增加一个信息通知模块(点赞、评论等都会站内通知 + 站外邮箱推送)。这样可以帮助快速熟悉项目(自己写的项目忽视~)。
  4. 对你项目里面可以优化的地方记录下来,然后去看高质量文章或者看一些项目实战是怎么解决这些问题的。我推荐关注一下下面几个模块
    1. 登录鉴权模块
    2. <stron>:</stron>
    3. 消息通知模块:
    4. 其它模块:
  5. 对于你项目开放的后端API能不能再做几个平台,试着做个小程序或者做个app都可以(和后端无关,时间有多可以考虑)
  6. 在开发流程上下功夫,别人都是普普通通的本地项目或者在线项目,那我可以考虑用用flow工作流(feature/master)去使用git管理代码,使用云容器流水线部署。这样也可以成为你项目的亮点。
  7. 最后就是在文字上面下功夫了,把你实现的内容用文字简洁专业地写在简历上面(博客的项目介绍百度一大堆可以去参考)。然后自己准备好一个文档提前记录好以下的问题。
    1. 简单介绍下你的项目:
    2. 你可以讲讲你的项目吗:
    3. 你可以讲讲你项目的亮点吗:
    4. 你可以讲讲你项目找那个遇到的困难吗
  8. 对你项目用到的技术栈进行简单的学习,熟悉简单的八股文,博客一般都是 springboot + mysql + redis 高级一点的有消息队列,有MongoDB,有ES。你用了什么就要去准备基础八股文,以及为什么用他,他能解决什么问题,像我消息队列RabbitMq就项目里面提了一下,就被刨根问底问了好多,这里你要做的是基于项目去了解他能解决什么问题,同类型产品为什么用他,就可以了。

大概的项目准备方法就在上面了,这个全部都是我自己总结的,不一定适合每一个人或者每一场面试,但如果你项目准备到上面这样充足了,我觉得基础面试应该是没问题的了,再困难点就是场景问题了,具体见下面。

关于我项目的分享就到这里了,做项目一定要脚踏实地,没有捷径。经历不够努力来凑,短期能做完项目,但不能构建一些分析问题解决问题的能力,参考我上面的一些建议,应对一些场景多去思考,多去动手实践,才能让自己的能力快速提升。祝大家尽早完成自己的项目啦也祝大家都能拿到心仪的offer

image.png




版权声明


相关文章:

  • 命令模式的概念2025-06-15 18:30:04
  • 私库是正品吗2025-06-15 18:30:04
  • c语言fread怎么用2025-06-15 18:30:04
  • opencv的imread函数参数2025-06-15 18:30:04
  • nlp销售说服技巧答案2025-06-15 18:30:04
  • 三态门的功能和主要用途2025-06-15 18:30:04
  • 游戏测试主要测试什么2025-06-15 18:30:04
  • 有锁和无锁哪个好2025-06-15 18:30:04
  • js判断一个数组是否有某个元素2025-06-15 18:30:04
  • string c++ 分割2025-06-15 18:30:04