파이썬의 Garbage Collection과 메모리 관리
파이썬의 가비지 컬렉션 메커니즘과 참조 카운팅(Reference Counting) 방식에 대한 이해도를 평가하기 위한
질문이었습니다. 특히 순환 참조(Circular Reference)로 인한 메모리 누수가 발생하는 원인을 코드 리뷰를 통해
확인하였습니다.
- 아래 코드를 실행 시키면 출력이 어떻게 될까요? 그 이유도 같이 설명해주세요.
class A:
def __init__(self):
pass
def __del__(self):
print("deleted")
def main():
a = A()
print("end")
if __name__ == "__main__":
# 출력이 어떻게 될까요?
main()- 아래 코드를 실행 시키면 출력이 어떻게 될까요? 그 이유도 같이 설명해주세요.
class A:
def __init__(self):
pass
def __del__(self):
print("delete")
def main():
a = A()
del a
print("end")
if __name__ == "__main__":
# 출력이 어떻게 될까요?
main()- 아래 코드를 실행 시키면 출력이 어떻게 될까요? 해당 코드는 어떤 문제점을 가지고 있을까요? 그 이유도 같이 설명해주세요.
class A:
def __init__(self, name, parent=None):
self.name = name
self.parent = parent
self.children = set()
def __del__(self):
print("delete", self.name)
def main():
a = A(name=1)
a.children.add(A(name=2, parent=a))
print("end")
if __name__ == "__main__":
main()
- 아래 코드는 어떤 문제점을 가지고 있을까요? 메모리 누수가 일어난다고 하면 얼마나 일어날까요? 그 이유도 같이 설명해주세요.
class A:
def __init__(self, name, parent=None):
self.name = name
self.parent = parent
self.children = set()
self.workload = ' ' * 128 * 1024 * 1024
def __del__(self):
print("delete", self.name)
def main():
for _ in range(10):
a = A(name=1)
a.children.add(A(name=2, parent=a))
print("end")
if __name__ == "__main__":
main()알고리즘 라이브코딩 테스트
기초적인 동적 프로그래밍 문제를 통해 알고리즘에 대한 기본기를 확인하였습니다. 알고리즘과 자료구조가 실무에 당장 사용되는 경우는 드물 수 있습니다. 하지만 개발자의 성장을 위해서는 반드시 갖추어야 할 기본 소양이라고 판단합니다.
사람은 한번에 한 칸 혹은 두 칸의 계단을 오를 수 있다.
계단을 오르는데 필요한 비용(cost)이 있다고 가정할 때, 꼭대기까지 오를 수 있는 최소비용을 얼마인가?