Python 주니어 CS 기초 면접

Python 주니어 (1~3년) CS 기초 5문항 조회수 107 · 2026-05-30 (토) 11:10:44
1 자료구조
Easy

Q. Python에서 스택(Stack)과 큐(Queue)의 차이점은 무엇이며, 각각을 Python의 어떤 자료구조로 구현할 수 있나요?

A. 모범답안

스택은 LIFO(Last In First Out) 방식으로 마지막에 들어온 데이터가 먼저 나가는 구조이고, 큐는 FIFO(First In First Out) 방식으로 먼저 들어온 데이터가 먼저 나가는 구조입니다. Python에서 스택은 리스트의 append()와 pop() 메서드로 구현할 수 있고, 큐는 collections.deque를 사용하여 appendleft()와 pop() 또는 append()와 popleft()로 효율적으로 구현할 수 있습니다. 리스트로도 큐를 구현할 수 있지만 pop(0)은 O(n)의 시간복잡도를 가지므로 deque 사용이 권장됩니다.

핵심 포인트
  • • 스택은 LIFO, 큐는 FIFO 구조
  • • 스택은 리스트의 append/pop으로 구현
  • • 큐는 collections.deque 사용이 효율적
  • • 리스트의 pop(0)은 O(n) 시간복잡도
Follow-up 질문

웹 브라우저의 뒤로가기 기능이나 함수 호출 스택처럼 실제로 스택이 사용되는 예시를 더 들어볼 수 있나요?

2 네트워크
Medium

Q. HTTP와 HTTPS의 차이점은 무엇이며, HTTPS가 안전한 이유를 SSL/TLS 관점에서 설명해주세요.

A. 모범답안

HTTP는 평문으로 데이터를 전송하는 프로토콜이고, HTTPS는 HTTP에 SSL/TLS 암호화 계층을 추가한 프로토콜입니다. HTTPS는 SSL/TLS를 통해 클라이언트와 서버 간 데이터를 암호화하여 중간에서 데이터를 가로채더라도 내용을 알 수 없게 만듭니다. 또한 인증서를 통해 서버의 신원을 검증하여 중간자 공격을 방지하고, 데이터 무결성을 보장하여 전송 중 데이터가 변조되지 않았음을 확인할 수 있습니다. 기본 포트는 HTTP가 80, HTTPS가 443을 사용합니다.

핵심 포인트
  • • HTTP는 평문, HTTPS는 암호화 프로토콜
  • • SSL/TLS로 데이터 암호화 및 기밀성 보장
  • • 인증서를 통한 서버 신원 검증
  • • 데이터 무결성 보장 및 중간자 공격 방지
Follow-up 질문

대칭키 암호화와 비대칭키 암호화의 차이는 무엇이며, HTTPS에서는 어떻게 함께 사용되나요?

3 알고리즘
Medium

Q. 정렬 알고리즘 중 버블 정렬(Bubble Sort)과 퀵 정렬(Quick Sort)의 시간 복잡도를 비교하고, 각각의 장단점을 설명해주세요.

A. 모범답안

버블 정렬은 평균/최악의 경우 O(n²)의 시간 복잡도를 가지며, 인접한 요소를 비교하며 정렬하는 단순한 알고리즘입니다. 퀵 정렬은 평균적으로 O(n log n)의 시간 복잡도를 가지지만 최악의 경우 O(n²)가 될 수 있으며, 피벗을 기준으로 분할 정복 방식으로 동작합니다. 버블 정렬은 구현이 간단하고 추가 메모리가 필요 없지만 성능이 느리고, 퀵 정렬은 평균적으로 매우 빠르지만 이미 정렬된 데이터에서 피벗 선택이 나쁘면 성능이 저하될 수 있습니다. 실무에서는 대부분 퀵 정렬 기반의 최적화된 알고리즘을 사용합니다.

핵심 포인트
  • • 버블 정렬: O(n²), 퀵 정렬: 평균 O(n log n)
  • • 버블 정렬은 구현 간단하지만 성능 느림
  • • 퀵 정렬은 분할 정복 방식으로 빠름
  • • 퀵 정렬은 최악의 경우 O(n²) 가능
Follow-up 질문

Python의 내장 sorted() 함수는 어떤 정렬 알고리즘을 사용하며, 그 이유는 무엇인가요?

4 운영체제
Easy

Q. 프로세스(Process)와 스레드(Thread)의 차이점은 무엇이며, 각각 독립적으로 가지는 자원과 공유하는 자원을 설명해주세요.

A. 모범답안

프로세스는 실행 중인 프로그램의 인스턴스로 독립적인 메모리 공간을 가지며, 스레드는 프로세스 내에서 실행되는 작업의 단위입니다. 프로세스는 각각 독립적인 코드, 데이터, 힙, 스택 영역을 가지고 있어 서로 격리되어 있지만, 스레드는 같은 프로세스 내에서 코드, 데이터, 힙 영역을 공유하고 스택만 독립적으로 가집니다. 프로세스 간 통신은 IPC(Inter-Process Communication)가 필요하지만, 스레드 간에는 메모리를 공유하므로 통신이 쉽고 빠릅니다. 다만 스레드는 공유 자원에 대한 동기화 문제를 주의해야 합니다.

핵심 포인트
  • • 프로세스는 독립적 메모리, 스레드는 프로세스 내 실행 단위
  • • 프로세스는 모든 영역 독립, 스레드는 스택만 독립
  • • 스레드는 코드/데이터/힙 영역 공유
  • • 스레드는 통신 빠르지만 동기화 필요
Follow-up 질문

Python의 GIL(Global Interpreter Lock)이 멀티스레딩 성능에 어떤 영향을 미치나요?

5 데이터베이스
Medium

Q. 데이터베이스 정규화(Normalization)가 무엇인지 설명하고, 제1정규형(1NF)과 제2정규형(2NF)의 조건을 예시와 함께 설명해주세요.

A. 모범답안

데이터베이스 정규화는 데이터의 중복을 최소화하고 무결성을 유지하기 위해 테이블을 구조화하는 과정입니다. 제1정규형(1NF)은 각 컬럼이 원자값(atomic value)을 가져야 하며, 반복 그룹이 없어야 합니다. 예를 들어 전화번호 컬럼에 여러 번호를 쉼표로 구분해 저장하면 1NF 위반입니다. 제2정규형(2NF)은 1NF를 만족하면서 부분 함수 종속성이 없어야 하며, 모든 비주요 속성이 기본키 전체에 완전 함수 종속되어야 합니다. 예를 들어 복합키(학생ID, 과목ID)를 가진 테이블에서 학생이름이 학생ID에만 종속된다면 2NF 위반입니다.

핵심 포인트
  • • 정규화는 중복 최소화 및 무결성 유지
  • • 1NF: 원자값 보장, 반복 그룹 제거
  • • 2NF: 1NF + 부분 함수 종속성 제거
  • • 정규화로 데이터 일관성과 유지보수성 향상
Follow-up 질문

과도한 정규화의 단점은 무엇이며, 역정규화(Denormalization)는 언제 고려해야 하나요?

댓글 0

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

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