今天将分享一位求职者在金蝶公司的Java面试经验。尽管他最终获得了offer,但由于公司声誉的原因,他选择了拒绝。

技术面试第一轮

  1. 请做一个自我介绍。
  2. 能否绘制一下项目的架构图?
  3. 项目是如何部署到服务器的?
  4. 请解释使用Docker的原因。
  5. 在项目过程中,遇到了哪些问题?您是如何解决的,并从中学到了什么?
  6. 项目的数据库表设计情况如何?
  7. 项目的日志系统是如何构建的?
  8. 您的项目是否实施了权限管理,具体是如何实现的?
  9. 请分享您对于IoC和AOP的理解。
  10. 请谈谈网络协议。
  11. 你有进行数据库优化的经验吗?
  12. 针对多表查询,您是否有过优化的经验?

HR面试

  1. 请做一个自我介绍。
  2. 您在学校的成绩如何?是否获得过奖项?
  3. 请介绍一下您的项目及其业务背景,您是如何参与其中的?
  4. 在项目中,您担任了什么角色,负责哪些内容?
  5. 这个项目给您带来了哪些最大的收获?
  6. 请分享一件您在校园中最有价值的经历。
  7. 在您看来,一名优秀的开发工程师应具备哪些素质?
  8. 您平时有健身运动的习惯吗?频率如何?
  9. 请谈谈您的个人优势。
  10. 您手中有其他offer吗?
  11. 您有什么问题想问我?

技术面试第二轮

  1. 自我介绍。
  2. 请阐述Spring、Spring MVC和Spring Boot之间的关系。
  3. @Autowired与@Resource的区别是什么?
  4. 静态代理和动态代理之间有什么差异?
  5. 除了JDK提供的动态代理实现,还有其他实现方式吗(例如CGLIB)?
  6. 请谈谈您对MySQL索引的理解,哪些字段应该创建索引,哪些字段应避免创建索引?
  7. 为什么InnoDB引擎选择B+Tree作为索引数据结构?
  8. MySQL中一条SQL语句的执行流程是什么?
  9. 从执行流程的角度,如何优化一条SQL语句的查询速度,主要是在什么环节?
  10. 当进行多表联合查询时,SQL语句的执行流程是怎样的?
  11. 目前您正在学习什么知识?
  12. 有什么问题想问:公司的新人培训体系是怎样的?

技术面试第三轮

  1. 自我介绍。
  2. 请简单介绍一下自己的项目。
  3. 您的项目中使用了哪些设计模式?
  4. 单例模式的优点是什么?
  5. 项目中使用线程池的目的是什么?
  6. 为什么在实际生产环境中建议使用ThreadPoolExecutor构造函数创建线程池?
  7. 如何理解线程安全和不安全?
  8. 您平时是怎样学习的?
  9. 有什么问题想问:公司的技术栈是怎样的,是否有Code Review?

在第三轮技术面试中,面试官基本上没有问到太多技术方面的问题,最后与我进行了长时间的闲聊,谈论了一些大学生活的经验。

总结

金蝶的面试流程整体上相对简单,大多数问题并不复杂,整体体验一般。