Python 주니어 기술면접

Python 주니어 (1~3년) 종합 5문항 조회수 122 · 2026-04-30 (목) 19:10:37
1 Python 기초
Easy

Q. Python에서 리스트 컴프리헨션(List Comprehension)이란 무엇이며, 일반 for 루프와 비교했을 때 어떤 장점이 있나요?

A. 모범답안

리스트 컴프리헨션은 리스트를 생성하는 간결한 방법으로, 한 줄로 반복문과 조건문을 표현할 수 있습니다. 일반 for 루프보다 코드가 짧고 가독성이 좋으며, 내부적으로 최적화되어 있어 실행 속도가 더 빠릅니다. 예를 들어 [x*2 for x in range(10) if x%2==0]처럼 필터링과 변환을 동시에 수행할 수 있습니다. 다만 너무 복잡한 로직은 오히려 가독성을 해칠 수 있으므로 적절히 사용해야 합니다.

핵심 포인트
  • • 한 줄로 리스트를 생성하는 간결한 문법
  • • 일반 for 루프보다 빠른 실행 속도
  • • 조건문과 변환을 동시에 표현 가능
  • • 과도하게 복잡한 경우 가독성 저하 주의
Follow-up 질문

딕셔너리 컴프리헨션과 제너레이터 표현식의 차이점은 무엇인가요?

2 데이터베이스
Medium

Q. 데이터베이스 트랜잭션의 ACID 속성이 무엇인지 설명하고, 각 속성이 왜 중요한지 실무 예시와 함께 설명해주세요.

A. 모범답안

ACID는 Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durability(지속성)의 약자입니다. 원자성은 트랜잭션이 모두 성공하거나 모두 실패해야 함을 의미하며, 계좌 이체 시 출금과 입금이 동시에 성공해야 합니다. 일관성은 트랜잭션 전후로 데이터 무결성 제약조건이 유지되어야 하고, 격리성은 동시 실행되는 트랜잭션들이 서로 영향을 주지 않아야 합니다. 지속성은 커밋된 트랜잭션은 시스템 장애가 발생해도 영구적으로 반영되어야 함을 의미합니다.

핵심 포인트
  • • Atomicity: 전부 성공 또는 전부 실패
  • • Consistency: 데이터 무결성 유지
  • • Isolation: 트랜잭션 간 독립성 보장
  • • Durability: 커밋 후 영구 저장
Follow-up 질문

Python에서 데이터베이스 트랜잭션을 처리할 때 컨텍스트 매니저(with문)를 사용하는 이유는 무엇인가요?

3 Python 심화
Medium

Q. Python의 데코레이터(Decorator)는 무엇이며, 어떤 상황에서 사용하나요? 실무에서 자주 사용되는 예시를 들어주세요.

A. 모범답안

데코레이터는 함수나 클래스를 수정하지 않고 기능을 추가하거나 변경할 수 있는 패턴으로, @기호를 사용하여 표현합니다. 함수 실행 전후에 공통 로직을 적용할 때 유용하며, 코드 중복을 줄이고 관심사를 분리할 수 있습니다. 실무에서는 로깅, 인증/권한 체크, 실행 시간 측정, 캐싱, 트랜잭션 관리 등에 자주 사용됩니다. Flask의 @app.route나 Django의 @login_required가 대표적인 예시입니다.

핵심 포인트
  • • 함수에 기능을 추가하는 고차 함수 패턴
  • • 코드 중복 제거 및 관심사 분리
  • • 로깅, 인증, 캐싱 등에 활용
  • • @기호로 간결하게 표현
Follow-up 질문

여러 개의 데코레이터를 중첩해서 사용할 때 실행 순서는 어떻게 되나요?

4 API 설계
Medium

Q. RESTful API에서 상태 코드 200, 201, 400, 401, 404, 500의 의미를 설명하고, 각각 어떤 상황에서 사용해야 하는지 설명해주세요.

A. 모범답안

200(OK)은 요청이 성공적으로 처리되었을 때, 201(Created)은 새로운 리소스가 생성되었을 때(POST 요청) 사용합니다. 400(Bad Request)은 클라이언트의 잘못된 요청(유효성 검증 실패), 401(Unauthorized)은 인증이 필요하거나 인증 실패 시, 404(Not Found)는 요청한 리소스가 존재하지 않을 때 반환합니다. 500(Internal Server Error)은 서버에서 예상치 못한 오류가 발생했을 때 사용하며, 클라이언트 측 문제와 서버 측 문제를 명확히 구분하는 것이 중요합니다.

핵심 포인트
  • • 200: 성공, 201: 생성 성공
  • • 400: 클라이언트 요청 오류, 401: 인증 실패
  • • 404: 리소스 없음, 500: 서버 오류
  • • 클라이언트/서버 오류 구분이 중요
Follow-up 질문

403(Forbidden)과 401(Unauthorized)의 차이점은 무엇인가요?

5 알고리즘
Easy

Q. Python에서 문자열이나 리스트를 뒤집는 여러 가지 방법을 설명하고, 각 방법의 시간 복잡도와 장단점을 비교해주세요.

A. 모범답안

슬라이싱을 사용한 [::-1]은 가장 간결하고 파이썬스러운 방법으로 O(n) 시간 복잡도를 가지며 새로운 객체를 생성합니다. reversed() 함수는 이터레이터를 반환하여 메모리 효율적이지만 리스트로 변환하려면 list()로 감싸야 합니다. 리스트의 경우 reverse() 메서드를 사용하면 in-place로 뒤집어 추가 메모리를 사용하지 않습니다. 문자열은 불변 객체이므로 항상 새로운 문자열을 생성해야 합니다.

핵심 포인트
  • • [::-1]: 가장 간결, 새 객체 생성, O(n)
  • • reversed(): 이터레이터 반환, 메모리 효율적
  • • list.reverse(): in-place 수정, 추가 메모리 없음
  • • 문자열은 불변이므로 항상 새 객체 생성
Follow-up 질문

대용량 데이터를 처리할 때 메모리 효율을 고려한다면 어떤 방법을 선택하시겠습니까?

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!