在一家金融科技公司进行面试时,面试官提出了这样一个“你作为一名计算机专业毕业生,请设计一个简单的银行账户管理系统,并实现一个功能:当用户尝试将账户中的金额从100元减少到50元时,系统应抛出一个异常,提示用户余额不足。请编写相应的代码,并说明你的设计思路。”
设计思路
在解答这个之前,我们需要先明确几个关键点:
1. 需要一个类来表示银行账户,这个类应该包含账户的余额信息。
2. 需要一个方法来更新账户的余额,并在余额不足时抛出异常。
3. 需要一个方法来检查账户余额是否足够。
是我的设计思路:
1. 创建一个`BankAccount`类,包含一个属性`balance`来存储账户余额。
2. 在`BankAccount`类中实现一个`withdraw`方法,用于减少账户余额。
3. 在`withdraw`方法中,检查余额是否足够,不足,则抛出一个自定义异常。
4. 创建一个`InsufficientFundsException`类,继承自`Exception`,用于表示余额不足的情况。
代码实现
python
class InsufficientFundsException(Exception):
def __init__(self, message="Insufficient funds"):
super().__init__(message)
class BankAccount:
def __init__(self, initial_balance=0):
self.balance = initial_balance
def withdraw(self, amount):
if self.balance < amount:
raise InsufficientFundsException()
self.balance -= amount
return self.balance
# 测试代码
try:
account = BankAccount(100)
print("Initial balance:", account.balance)
account.withdraw(50)
print("Balance after withdrawal:", account.balance)
account.withdraw(150) # 这将抛出异常
except InsufficientFundsException as e:
print(e)
解答分析
在上面的代码中,我们定义了一个`InsufficientFundsException`类,它是一个自定义的异常类,用于处理余额不足的情况。我们定义了`BankAccount`类,包含了一个构造函数`__init__`,用于初始化账户余额,以及一个`withdraw`方法,用于从账户中提取金额。
在`withdraw`方法中,我们检查当前账户余额是否小于用户请求提取的金额。是,我们抛出一个`InsufficientFundsException`异常。余额足够,我们从账户中扣除相应的金额,并返回新的余额。
在测试代码中,我们创建了一个`BankAccount`实例,并尝试了两次提取操作。第一次提取50元成功,第二次提取150元时,由于余额不足,抛出了异常,并打印出了相应的错误信息。
通过这个面试题,面试官考察了面试者对异常处理、类的设计和测试代码的编写能力。在设计类时,我们需要考虑异常情况的处理,并确保代码的健壮性和可读性。通过编写测试代码,我们可以验证我们的设计是否满足业务需求。在面试中,清晰地表达自己的设计思路和代码逻辑也是非常重要的。
还没有评论呢,快来抢沙发~