搜广推校招面经八十八

发布于:2025-07-08 ⋅ 阅读:(16) ⋅ 点赞:(0)

滴滴定价策略算法

一、CNN和全连接的区别

1.1. CNN(卷积层)

  • 局部感受野:每个神经元只与输入的一部分连接。使用局部连接(卷积核只与输入数据的局部区域连接),通过滑动窗口的方式提取局部特征。
  • 权重共享:同一卷积核在整个输入中滑动,提取局部特征。通过参数共享(同一卷积核在整张输入上共享权重)减少参数量。
  • 输出为多维张量(特征图)。

1.2. 全连接层(FC层)

  • 每个神经元与前一层所有神经元相连接。
  • 无权重共享。
  • 输出为一维向量。

1.3. 参数数量

  • CNN:参数量少(因局部连接和参数共享),适合处理高维数据(如大尺寸图像)。
  • FC:参数多(连接数=输入维度×输出维度)。

二、LSTM 相比 RNN 的改进

LSTM(Long Short-Term Memory)是为了解决传统 RNN 存在的长期依赖问题(Long-Term Dependency)而设计的,其在结构上做了关键改进。

2.1. RNN 的缺点

  • 梯度消失或爆炸:在长序列中,RNN 很难有效传播梯度,导致模型难以学习长期依赖信息。
  • 记忆能力弱:标准 RNN 结构缺乏机制去保留长期记忆,只能捕捉短期上下文。

2.2. LSTM 的改进

LSTM 引入了门控机制,通过精细控制信息的流动来缓解上述问题。

主要改进点:

结构 作用
遗忘门(Forget Gate) 决定丢弃多少先前的记忆(细胞状态)
输入门(Input Gate) 决定当前输入信息有多少被写入细胞状态
输出门(Output Gate) 决定当前细胞状态有多少被输出为隐藏状态
细胞状态(Cell State) 类似信息通道,可以长期传递和保留信息

在这里插入图片描述

三、预测一个城市不同区域一天的发单量。设计一些调度策略

3.1. 发单量预测模型设计

1. 数据需求

数据类型 示例
历史发单数据 区域、时间、订单数量
天气数据 气温、降雨、风力等
地理信息 区域划分、POI(商圈/办公区/住宅)
特殊事件 节假日、大型活动
实时流量 道路拥堵、交通事故

2. 特征工程

  • 时间特征:小时、星期几、节假日、是否高峰期
  • 空间特征:区域 ID、区域 POI 类型密度
  • 历史统计特征:该区域历史同一时段平均订单数、波动率
  • 天气特征:是否下雨、温度等级
  • 用户行为特征:APP 打开率、下单转化率(如有)

3.2. 调度策略设计(基于预测结果)

1. 区域运力调配策略

  • 预测高发单区提前补充运力
    • 若预测订单数 > 当前司机数 + buffer,则提前调度空闲司机前往
  • 动态运力流转
    • 利用图优化算法(如最大流/最短路)将空闲运力从低需求区流转到高需求区

2. 动态定价(Surge Pricing)

  • 预测需求高而供给低时,提高价格激励司机前往
    • 基于供需比动态调整价格
    • 降低乘客因等待放弃订单的概率

3. 热门区域临时站点调度

  • 在大型活动或节假日临近区域设立临时接驳点
    • 聚合乘客与司机,提升匹配效率

4. 时间窗口调度

  • 按小时预测每区域订单需求波动
    • 制定小时级调度策略,避免过早/过迟调度

5. 跨区域合作调度

  • 相邻区域间联动
    • 考虑司机移动路径和订单来源,规划最优迁移路线

四、143. 重排链表

在这里插入图片描述

  • 思路:从中间阶段截断为两截列表,并对后面那一段链表反转。然后两截链表一个加一个,拼接起来
  • 代码:
def middleNode(head):
    slow = head
    fast = head
    while fast and fast.next:
        slow = slow.next
        fast = fast.next.next
    return slow

def reverseList(head):
    pre = None
    cur = head
    while cur:
        nxt = cur.next
        cur.next = pre
        pre = cur
        cur = nxt
    return pre
    
class Solution:
    def reorderList(self, head: Optional[ListNode]) -> None:
        """
        Do not return anything, modify head in-place instead.
        """
        mid = middleNode(head)
        head2 = reverseList(mid)
        while head2.next:
            nxt = head.next
            nxt2 = head2.next
            head.next = head2
            head2.next = nxt
            head = nxt
            head2 = nxt2

网站公告

今日签到

点亮在社区的每一天
去签到