信永中和大数据技术部,后端初试(机试)题。
其中:
- 2小时机试(全程开启屏幕共享)
- 5分钟以内成果展示及(或)代码讲解
- 10分钟以内面试
注意
在机试结束前,请务必将您的Code提交至fork的代码仓库中。
面试过程有问题电话联系面试官。
两道必做题,一道选做题
- 请为前端同学设计如下页面所需接口
- 倒推数据库设计,创建数据库(数据库不限)
- 实现接口(框架不限)
其中:
日期选择为季度: Q1(1-3),Q2(4-6),Q3(7-9),Q4(10-12)
有一组长度为n的对象,每个对象里都有一个startTime和endTime,表示一个时间段。请面试者设计一个小算法,把这些对象中时间段存在重合关系的所有对象列出来。
demo:
obj0:
2019-11-10 8:20:00
2019-11-10 15:50:00
obj1:
2019-11-10 10:10:00
2019-11-10 11:10:00
obj2:
2019-11-10 16:30:00
2019-11-11 18:45:00
obj3:
2019-12-31 02:00:00
2019-12-31 12:00:00
obj4:
2019-12-31 13:00:00
2020-01-05 18:00:00
obj5:
2020-01-05 16:00:00
2020-01-05 18:00:00
obj6:
2020-01-06 16:00:00
2020-01-06 18:00:00
obj7:
2020-01-07 16:00:00
2020-01-07 18:00:00
obj8:
2020-01-08 16:00:00
2020-01-08 18:00:00
obj9:
2020-01-01 16:00:00
2020-01-01 18:00:00
> 样例输出:
>
> 0, 1, 4, 5, 9
Orders 表中存所有用户的订单信息。每个订单有唯一键 Id,Customer_Id 和 Business_Id 是 Users 表中 Users_Id 的外键。Status 是枚举类型,枚举成员为 (‘completed’, ‘cancelled_by_b’, ‘cancelled_by_c’)。
+----+-----------+-----------+---------+--------------------+----------+
| Id |Customer_Id|Business_Id| City_Id | Status |Request_at|
+----+-----------+-----------+---------+--------------------+----------+
| 1 | 1 | 10 | 1 | completed |2018-11-11|
| 2 | 2 | 11 | 1 | cancelled_by_b |2018-11-11|
| 3 | 3 | 12 | 6 | completed |2018-11-11|
| 4 | 4 | 13 | 6 | cancelled_by_c |2018-11-11|
| 5 | 1 | 10 | 1 | completed |2018-11-12|
| 6 | 2 | 11 | 6 | completed |2018-11-12|
| 7 | 3 | 12 | 6 | completed |2018-11-12|
| 8 | 2 | 12 | 12 | completed |2018-11-13|
| 9 | 3 | 10 | 12 | completed |2018-11-13|
| 10 | 4 | 13 | 12 | cancelled_by_b |2018-11-13|
+----+-----------+-----------+---------+--------------------+----------+
Users 表存所有用户。每个用户有唯一键 Users_Id。Banned 表示这个用户是否被禁止,Role 则是一个表示(‘customer’, ‘business’, ‘partner’)的枚举类型。
+----------+--------+--------+
| Users_Id | Banned | Role |
+----------+--------+--------+
| 1 | No |business|
| 2 | Yes |customer|
| 3 | No |customer|
| 4 | No |customer|
| 10 | No |business|
| 11 | No |business|
| 12 | No |business|
| 13 | No |business|
+----------+--------+--------+
通过 SQL 查出 2018-11-11 至 2018-11-13 非Banned用户的取消率。
取消率 = (被取消的非Banned用户生成的订单数量) / (非Banned用户生成的订单总数)
+------------+-------------------+
| Day | Cancellation Rate |
+------------+-------------------+
| 2018-11-11 | 0.33 |
| 2018-11-12 | 0.00 |
| 2018-11-13 | 0.50 |
+------------+-------------------+
祝您顺利