목차/차례
1. Python의 가비지 컬렉션 방식을 설명하세요.
2. Django 또는 Flask 프레임워크를 사용한 경험이 있다면, 프로젝트에서 어떤 구조를 사용했고 그 이유는 무엇인가요
3. RESTful API 설계 시 고려해야 할 핵심 원칙들은 무엇인가요
4. Python에서 비동기 프로그래밍을 위해 사용하는 모듈 또는 라이브러리와 그 사용 이유를 설명하세요.
5. 데이터베이스와의 연동에서 ORM을 사용하는 것의 장단점은 무엇인가요
6. 성능 최적화를 위해 Python 코드 또는 서버 환경에서 어떤 방법들을 적용했나요
7. 테스트 주도 개발(TDD)에 대해 어떻게 생각하며, 경험이 있다면 어떤 방식으로 적용했나요
8. 배포 이후 발생한 서비스 장애 또는 이슈를 해결했던 경험을 설명해주세요.
본문/내용
1. Python의 가비지 컬렉션 방식을 설명하세요.
Python의 가비지 컬렉션 방식은 주로 참조 카운트(reference counting)를 기반으로 하며, 주기적 순환 참조(사이클링)를 해결하기 위해 세대별 가비지 컬렉션을 함께 사용합니다. 참조 카운트는 각 객체별로 참조하는 변수의 수를 기록하여, 참조 수가 0이 되면 즉시 메모리를 해제합니다. 이는 대다수의 경우 빠르게 객체를 수거 가능하게 만듭니다. 그러나 순환 참조 문제들이 발생하는 경우에는 참조 카운트만으로 해결이 어려워, Python은 `gc` 모듈을 통해 순환 참조하는 객체들을 별도로 탐지하며 수거할 수 있습니다. Python의 가비지 컬렉션은 일반적으로 0. 01초 내에 수백만 개의 객체를 처리할 수 있으며, 2022년 기준 CPython의 메모리 누수율은 동일 크기의 애플리케이션에서 0. 02% 이하로 유지되고 있습니다. 세대별 가비지 컬렉션은 세대를 0, 1, 2로 나누어 0세대는 새로 생성된 객체, 1세대는 일정 기간 지나 참조가 유지된 객체, 2세대는 오랜 시간 동안 사용된 객체를 의미하며, 주기적 수집은 전체 시스템의 성능 향상과 메모리 효율성 개선에 크게 기여합니다. 이 방식은 특히 서버 애플리케이션에서…