中等
技术面试0 次浏览

小红书的推荐系统需要根据用户的浏览历史和兴趣标签来推荐相关的笔记。假设用户的浏览历史存储在一个列表中,每个元素是一个笔记的 ID,兴趣标签存储在一个集合中。笔记信息存储在一个字典中,键为笔记 ID,值为一个包含笔记标签的集合。请设计一个函数,根据用户的浏览历史和兴趣标签,返回推荐的笔记 ID 列表。推荐规则为:优先推荐包含用户兴趣标签且在浏览历史中出现次数较多的笔记。

小红书后端工程师
Python数据结构推荐系统

答题要点

使用分层分析法。答题框架:先统计浏览历史中每个笔记的出现次数,然后筛选出包含用户兴趣标签的笔记,最后根据出现次数排序。关键要点:1. 统计浏览历史中每个笔记的出现次数,可使用 collections.Counter 来实现。2. 遍历笔记信息字典,筛选出包含用户兴趣标签的笔记。3. 根据笔记的出现次数对筛选后的笔记进行排序。4. 返回排序后的笔记 ID 列表。示例思路:首先,我会用 Counter 统计浏览历史中每个笔记的出现次数。接着,遍历笔记信息字典,找出包含用户兴趣标签的笔记。然后,根据出现次数对这些笔记进行排序。最后返回排序后的笔记 ID 列表。代码示例: python import collections def recommend_notes(browse_history, interest_tags, note_info): note_count = collections.Counter(browse_history) recommended_notes = [] for note_id, tags in note_info.items(): if any(tag in interest_tags for tag in tags): recommended_notes.append((note_id, note_count[note_id])) recommended_notes.sort(key=lambda x: x[1], reverse=True) return [note[0] for note in recommended_notes]