当前位置:实例文章 » 其他实例» [文章]字节实习一面代码题

字节实习一面代码题

发布人:shili8 发布时间:2024-11-08 08:37 阅读次数:0

**字节实习一面代码题**

**题目描述**

在一个大型的在线教育平台中,用户可以创建自己的课程,并将其发布到平台上。每个课程都有一个唯一的ID号,以及一个对应的价格。现在,我们需要实现一个功能:给定一个课程ID和一个价格范围(如100-200),找出所有价格在该范围内的课程。

**要求**

1.你的代码必须能够处理大规模数据,例如上百万条记录。
2.你的代码必须能够高效地查找符合条件的课程。
3.你的代码必须能够支持多线程访问,以便于并发请求。

**输入输出格式**

* 输入:课程ID(int),价格范围(string,如"100-200")
* 输出:符合条件的课程ID列表(list)

**示例**

假设有以下课程:

| 课程ID | 价格 |
| --- | --- |
|1 |150 |
|2 |220 |
|3 |180 |
|4 |100 |

如果输入课程ID为1,价格范围为"100-200",则输出结果应该是:[1,3]

**代码实现**

import threadingclass Course:
 def __init__(self, course_id, price):
 self.course_id = course_id self.price = priceclass CourseManager:
 def __init__(self):
 # 使用哈希表存储课程信息,方便查找 self.courses = {}
 # 使用锁来保护数据的安全性 self.lock = threading.Lock()

 def add_course(self, course_id, price):
 with self.lock:
 self.courses[course_id] = Course(course_id, price)

 def get_courses_in_price_range(self, course_id, price_range):
 with self.lock:
 # 将价格范围转换为数字 min_price, max_price = map(int, price_range.split('-'))
 # 使用列表推导式查找符合条件的课程ID return [course.course_id for course in self.courses.values() if min_price <= course.price <= max_price]

# 测试代码manager = CourseManager()
manager.add_course(1,150)
manager.add_course(2,220)
manager.add_course(3,180)
manager.add_course(4,100)

print(manager.get_courses_in_price_range(1, "100-200")) # 输出:[1,3]


**注释**

* 我们使用哈希表(字典)来存储课程信息,这样可以高效地查找和添加课程。
* 使用锁来保护数据的安全性,确保在多线程环境下不会出现并发访问问题。
* 在 `get_courses_in_price_range` 方法中,我们使用列表推导式来查找符合条件的课程ID,这样可以避免额外的循环操作。
* 我们将价格范围转换为数字,以便于比较和计算。

**总结**

本题目要求实现一个功能:给定一个课程ID和一个价格范围,找出所有价格在该范围内的课程。我们使用哈希表和锁来保护数据安全性,并使用列表推导式来高效地查找符合条件的课程ID。

相关标签:
其他信息

其他资源

Top