VO辅助 / 面试训练复盘

Startup VO 面试真题解析:Implement get_available_slots(raw_slots) 预约时段合并与校验

实现 get_available_slots:先过滤字段缺失、时间戳非法或时长不是 10 分钟的时段,再把重叠或相邻的时段合并。用排序加区间合并即可。

预约时段:解析、校验、合并:输入时段、校验过滤、合并结果。原创主题示意图。
训练主题配图 · 非客户现场证明

题目描述

实现 get_available_slots(raw_slots)。Part 1 解析与校验:移除字段缺失、ISO 时间戳非法、或时长不等于 10 分钟的时段。Part 2 聚合:把剩余时段中重叠或相邻的合并成一个连续时段。

解题思路

先做校验,用 try/except 或时间解析把非法项过滤掉,并检查时长是否恰为 10 分钟。然后把合法时段按开始时间排序,顺序扫描:当前时段与已合并的最后一段重叠或相邻时,扩展其结束时间;否则新开一段。

from datetime import datetime, timedelta

def get_available_slots(raw_slots):
    valid = []
    for slot in raw_slots:
        if not slot.get('start') or not slot.get('end'):
            continue
        try:
            s = datetime.fromisoformat(slot['start'])
            e = datetime.fromisoformat(slot['end'])
        except ValueError:
            continue
        if e - s != timedelta(minutes=10):
            continue
        valid.append((s, e))
    valid.sort()
    merged = []
    for s, e in valid:
        if merged and s <= merged[-1][1]:
            merged[-1] = (merged[-1][0], max(merged[-1][1], e))
        else:
            merged.append((s, e))
    return merged

复杂度与易错点

校验 O(n),排序 O(n log n),合并 O(n)。时长的比较用 timedelta 而非字符串拼接;「相邻」是否合并(上一段结束恰好等于下一段开始)要按题面确认,比较条件据此用 < 还是 <=。

FAQ

校验时长为什么用 timedelta 比较而不是算字符串?

时间戳带时区或毫秒时,字符串拆分容易出错;解析成 datetime 后用 timedelta 差值判断最稳,也能顺带识别非法格式。

参考来源

联系 VOPathway

如果你希望把这套方法用于自己的 OA 或 VO 准备,可以把目标岗位、当前阶段、面试时间和主要难点发给 VOPathway,我们会据此安排针对性的练习与复盘。

  • 微信:Coding0201
  • 邮箱:[email protected]
  • Telegram:@OAVOProxy
  • WhatsApp:+86 178 6396 8105

可提供 OA辅助、OA辅导、VO辅助与 VO辅导。文章用于训练参考,不代表相关公司的官方流程;实际安排请以候选人收到的通知为准。

每一步,都更接近准备充分的自己。

本文用于面试准备与训练复盘。公司名称仅用于标识题型素材主题,不代表官方合作或录用承诺。

预约一次训练复盘 ↗