7年经验PHP开发转行成功拿到Java开发Offer的亲身面试经历与心得分享

第一家公司面试经历

这家公司主要专注于供应链采购,面试时提出了以下问题:

  1. 请做自我介绍。
  2. 有一个多文件上传的需求,要求在5M带宽的服务器上上传超过100张图片,并确保用户能迅速看到上传结果,你如何实现?
  3. 在Spring Cloud中,A服务调用B服务时,需要将token传递给B服务,应该使用何种方式?
  4. 请讲解一下你当前系统的业务逻辑及所用技术。
  5. MyBatis的分页是如何实现的?
  6. 你有使用过事务吗?
  7. 你用过什么工具类?在处理时间和JSON时,使用了哪些工具?
  8. 针对MongoDB的百万级数据,你会如何优化查询、分页和创建索引?如果进行动态查询,你如何进行数据统计?

总结: 这家公司较小,主要需要快速上手的技术人员。我面试时表现良好,本以为会很快收到通知,结果过了两天才收到回复,且还降低了薪资,所以我选择放弃。该公司更看重业务能力,项目经验是面试的重点,底层原理的问题较少,接下来的一家公司则更为重要。

第二家公司面试经验

这家公司是一个大型集团,面试流程包括笔试和面试,面试时的问题包括:

  1. 请进行10分钟的简短介绍,内容包括你的工作经验、优势和擅长领域。
  2. MyBatis中的#{}和${}有什么区别?默认使用哪个,为什么?
  3. 请介绍一下Spring及其常用注解的用途。
  4. Spring AOP的概念及实际应用场景。
  5. 将一个对象User传递到其他方法中,若User的name改变,那么传递的这个对象是值传递还是引用传递?请解释值传递和引用传递的区别。
  6. 项目中如何使用事务?
  7. 你是否使用过多线程?如何确保多线程的线程安全?你采取了哪些具体措施?
  8. 你曾从事PHP开发,请谈谈PHP和Java的区别。

总结: 这家公司对技术要求较高,许多问题不仅要求回答,还需了解底层原理。由于我当时回答的是业务型开发,面试因此被中断,因为他们更希望找到架构型开发人员。

第三家公司面试体验

这是一家较小的公司,最终收获了Offer,面试中的问题包括:

  1. 请做自我介绍(这是必须的)。
  2. 请详细讲解你之前项目的业务流程。
  3. 该项目中你使用了多线程吗?如何实现的?
  4. 你提到在多线程方面进行了性能优化,可以分享优化的方法和结果吗?
  5. 你使用过事务吗?事务与锁一起使用时,会出现什么问题?是先使用锁还是先使用事务?
  6. Spring Cloud的注册服务使用了什么?你还有其他了解吗?
  7. 你有使用消息队列吗?请大致讲述。

总结: 此公司主要关注项目能力,具体是如何解决实际问题。之前的两家公司也问过这些问题,但当时回答得不够好,因此在这家公司的面试中,我提前准备了相关内容,顺利通过了。

总结

最后,再次强调在进行自我介绍时,首先需介绍开发经验,然后是上一家公司,最后是自己擅长的项目。在面试中,大部分问题与项目相关,因此我们需要提前准备好项目的业务逻辑,即使只涉及一小部分功能,也要对整个项目的业务流程有所了解。此外,技术方向主要包涵底层逻辑的实现和技术在项目中的实际应用。这些问题可能不会在面试中实际遇到,但我们需要提前设想如何处理。总结而言,面试考察的是应聘者的问题处理能力和学习能力。