Java开发人员的沃尔玛面试经验
第1轮:
要求我们在 90 分钟内用Java编写工作代码来解决这个问题。这一轮没搞清楚,但觉得这个问题很重要,所以分享一下。
事件:
- 一个事件通常包含 {start, end, location, owner, user-list, title}
- 活动可以像会议(有专门的地点和适当的客人名单),也可以像假期、生日、提醒等。
- 一个事件一旦创建,就可以被组成用户接受或拒绝——如果两者都不应该处于中立状态
实现任意 2 个 API:
- 用于创建、更新或取消其事件的用户 API。只有在没有资源冲突的情况下,创建/更新操作才能成功
- 给定一个用户,提供一个 API 来获取给定日期范围内的事件/会议列表。
- 给定一个会议 ID,提供一个 API 以提供受邀者的详细信息及其响应,即。接受、拒绝等。
- API 在特定时间段查找特定建筑物中的可用房间
期望:
- 代码质量应该为生产准备好合并和部署
- 指南比完成更多 api 的权重最高
- 代码应该可以演示。在文件、测试用例或主驱动程序本身(无外部数据存储)中创建示例数据。不要花时间解析输入。
- 代码应该是可读的、模块化的(没有单体式的)、可测试的、可扩展的,并具有适当的命名约定
- 代码应该正确处理边缘情况并优雅地失败
指导方针:
- 为系统所需的实体定义详细的对象模型
- 正确使用继承、抽象、接口、异常处理
- 在代码中有适当的注释,并应遵循最佳编码实践
- 在适用的情况下使用 Builder、Factory、Visitor 等设计模式
- 证明您的编码选择,即。你为什么选择为一个特性定义一个单独的函数,或者你为什么不定义一个构造函数来初始化类
- 在适用的地方定义枚举、单例类
- 关注点分离得到解决
- 为他/她的代码的关键部分实施单元测试用例
- 使用Java 8/7 特性,如功能接口、自动关闭资源等。