背景
在计算机专业的面试中,面试官往往会针对者的专业知识和技术能力提出一些具有挑战性的。业务上BUG一条是一个常见的考察点,旨在考察者对业务逻辑的理解和解决能力。是一道典型的业务上BUG一条及其解答。
陈述
假设你正在开发一个在线书店的购物车功能。用户可以在购物车中添加书籍,每本书籍都有一个单价。购物车中的书籍可以按照用户的选择进行结算。是一个简化的购物车结算逻辑:
python
class ShoppingCart:
def __init__(self):
self.books = []
def add_book(self, book_id, price):
self.books.append((book_id, price))
def calculate_total(self):
total = 0
for book_id, price in self.books:
total += price
return total
# 测试代码
cart = ShoppingCart()
cart.add_book(1, 29.99)
cart.add_book(2, 19.99)
total_price = cart.calculate_total()
print("Total price:", total_price)
上述代码中存在一个BUG,请找出并修复它。
分析
在上述代码中,`calculate_total` 方法用于计算购物车中所有书籍的总价。用户添加的书籍ID(`book_id`)重复,在计算总价时,重复的书籍价格会被错误地累加多次。
解答
要修复这个BUG,我们需要确保每本书籍只被计算一次。是修复后的代码:
python
class ShoppingCart:
def __init__(self):
self.books = []
def add_book(self, book_id, price):
# 检查书籍是否已存在于购物车中
if (book_id, price) not in self.books:
self.books.append((book_id, price))
def calculate_total(self):
total = 0
for book_id, price in self.books:
total += price
return total
# 测试代码
cart = ShoppingCart()
cart.add_book(1, 29.99)
cart.add_book(2, 19.99)
cart.add_book(1, 29.99) # 重复添加书籍1
total_price = cart.calculate_total()
print("Total price:", total_price)
在这个修复版本中,`add_book` 方法中增加了一个检查,确保在添加书籍之前,购物车中不存在相同的书籍。这样,即使用户尝试添加重复的书籍,它们也只会被计算一次。
通过上述面试官不仅考察了者对编程基础的理解,还考察了者对业务逻辑的敏感度和解决能力。在面试过程中,者应该能够清晰地表达自己的思路,能够有效地解决。这也提醒我们在开发过程中要注重代码的健壮性和错误处理。
还没有评论呢,快来抢沙发~