12월 21, 2025
27 분 읽기

고급 백엔드 개발자 (Python) 면접 질문: 완벽 가이드

interview
career-advice
job-search
고급 백엔드 개발자 (Python) 면접 질문: 완벽 가이드
MB

Milad Bonakdar

작성자

시스템 설계, 데이터베이스 최적화, 동시성 및 아키텍처를 다루는 필수 면접 질문으로 고급 Python 백엔드 개발을 마스터하세요. 고급 백엔드 개발자 면접을 위한 완벽한 준비입니다.


소개

이 종합 가이드에는 고급 Python 백엔드 개발에 대한 30가지 필수 면접 질문이 포함되어 있습니다. 이 질문들은 숙련된 백엔드 개발자가 고급 Python, 시스템 설계, 데이터베이스 최적화 및 보안의 핵심 개념을 다루어 면접을 준비하는 데 도움이 되도록 설계되었습니다. 각 질문에는 자세한 답변, 희귀도 평가 및 난이도 등급이 포함되어 있습니다.

숙련된 개발자는 "어떻게"뿐만 아니라 기술적 결정에 관련된 "이유"와 장단점도 알아야 합니다.


고급 Python 개념 (8가지 질문)

1. Python의 메모리 관리는 어떻게 작동하며, 가비지 컬렉터의 역할은 무엇입니까?

답변: Python은 모든 객체와 데이터 구조가 저장되는 개인 힙을 사용하여 메모리를 관리합니다. 프로그래머는 이 힙에 직접 접근할 수 없으며, Python 메모리 관리자에 의해 관리됩니다.

  • 참조 횟수 (Reference Counting): 주요 메커니즘입니다. 각 객체에는 참조 횟수가 있습니다. 0으로 떨어지면 메모리가 해제됩니다.
  • 가비지 컬렉터 (GC): 참조 횟수로 잡을 수 없는 순환 참조를 처리합니다. 주기적으로 실행되어 이러한 순환을 찾아 정리합니다.
  • 세대별 GC (Generational GC): Python의 GC는 객체를 세 개의 세대 (0, 1, 2)로 나눕니다. 새 객체는 0세대에서 시작합니다. 컬렉션에서 살아남으면 다음 세대로 이동합니다. 오래된 세대는 성능 향상을 위해 덜 자주 수집됩니다.

희귀도: 일반적 난이도: 어려움


2. GIL (Global Interpreter Lock)과 이것이 동시성에 미치는 영향을 설명하십시오. 어떻게 우회합니까?

답변: GIL은 Python 객체에 대한 액세스를 보호하는 뮤텍스로, 여러 네이티브 스레드가 동시에 Python 바이트 코드를 실행하는 것을 방지합니다. 이는 CPython을 스레드 안전하게 만들지만 CPU 바운드 프로그램은 단일 코어로 제한합니다.

  • 영향: 멀티 스레딩은 I/O 바운드 작업 (네트워크/디스크 대기)에는 효과적이지만 CPU 바운드 작업 (복잡한 계산)에는 효과적이지 않습니다.
  • GIL 우회:
    1. 멀티프로세싱: multiprocessing 모듈을 사용하여 별도의 프로세스를 생성합니다. 각 프로세스에는 자체 Python 인터프리터와 메모리 공간이 있습니다.
    2. C 확장: 성능이 중요한 코드를 C/C++로 작성하고 실행하는 동안 GIL을 해제합니다.
    3. 대체 인터프리터: Jython 또는 IronPython (GIL이 없음)을 사용합니다. CPython이 표준이긴 하지만요.

희귀도: 매우 일반적 난이도: 어려움


3. Python의 메타클래스란 무엇이며 언제 사용해야 합니까?

답변: 메타클래스는 "클래스의 클래스"입니다. 클래스가 인스턴스의 동작을 정의하는 것처럼 메타클래스는 클래스의 동작을 정의합니다. Python에서 클래스도 객체이며 type (기본 메타클래스)의 인스턴스입니다.

  • 사용법: 클래스 생성을 가로채서 클래스를 자동으로 수정할 수 있습니다.
  • 사용 사례:
    • 클래스 자동 등록 (예: 플러그인용).
    • 코딩 표준 적용 (예: 모든 클래스에 독스트링이 있는지 확인).
    • 싱글톤 패턴 구현.
    • ORM 프레임워크 (예: Django)는 클래스 속성을 데이터베이스 필드에 매핑하기 위해 이를 사용합니다.

예시:

class Meta(type):
    def __new__(cls, name, bases, dct):
        x = super().__new__(cls, name, bases, dct)
        x.attr = 100
        return x

class MyClass(metaclass=Meta):
    pass

print(MyClass.attr) # 100

희귀도: 드묾 난이도: 어려움


4. __new____init__의 차이점을 설명하십시오.

답변:

  • __new__: 클래스의 새 인스턴스를 생성하는 정적 메서드입니다. 인스턴스 생성의 첫 번째 단계입니다. 새 인스턴스를 반환합니다. str, int, tuple과 같은 불변 유형을 서브클래싱하거나 싱글톤을 구현하지 않는 한 거의 재정의하지 않습니다.
  • __init__: 생성된 인스턴스를 초기화하는 인스턴스 메서드입니다. __new__ 다음에 호출됩니다. 아무것도 반환하지 않습니다.

희귀도: 중간 난이도: 중간


5. Python에서 asyncio는 어떻게 작동합니까? 이벤트 루프를 설명하십시오.

답변: asyncioasync/await 구문을 사용하여 동시 코드를 작성하는 라이브러리입니다. 단일 스레드, 협력적 멀티태스킹 모델을 사용합니다.

  • 이벤트 루프: asyncio의 핵심입니다. 비동기 작업 및 콜백을 실행하고, 네트워크 IO 작업을 수행하고, 하위 프로세스를 실행합니다. I/O를 기다리는 동안 (await 사용) 작업 간에 전환하여 다른 작업을 실행할 수 있도록 합니다.
  • 코루틴: async def로 정의된 함수입니다. 일시 중지 및 다시 시작할 수 있습니다.

희귀도: 일반적 난이도: 어려움


6. Python 데코레이터란 무엇이며 인수를 허용하는 데코레이터를 어떻게 만듭니까?

답변: 데코레이터는 다른 함수 또는 클래스의 동작을 수정하는 함수입니다. 인수를 허용하려면 세 단계로 중첩된 함수 구조가 필요합니다.

예시:

def repeat(num_times):
    def decorator_repeat(func):
        def wrapper(*args, **kwargs):
            for _ in range(num_times):
                result = func(*args, **kwargs)
            return result
        return wrapper
    return decorator_repeat

@repeat(num_times=3)
def greet(name):
    print(f"Hello {name}")

greet("World")

희귀도: 중간 난이도: 중간


7. 컨텍스트 관리자와 with 문의 개념을 설명하십시오.

답변: 컨텍스트 관리자를 사용하면 원하는 시점에 정확하게 리소스를 할당하고 해제할 수 있습니다. 가장 일반적인 사용법은 with 문입니다.

  • 메커니즘: __enter____exit__ 메서드를 구현합니다.
    • __enter__: 컨텍스트를 설정하고 리소스를 반환합니다.
    • __exit__: 예외가 발생하더라도 리소스를 정리합니다 (파일 닫기, 잠금 해제).
  • contextlib: @contextmanager 데코레이터를 사용하면 생성기를 사용하여 컨텍스트 관리자를 만들 수 있습니다.

희귀도: 일반적 난이도: 쉬움


8. @staticmethod@classmethod의 차이점은 무엇입니까?

답변:

  • @staticmethod: 암시적 첫 번째 인수 (self 또는 cls)를 받지 않습니다. 일반 함수처럼 동작하지만 클래스의 네임스페이스에 속합니다. 클래스 또는 인스턴스 상태에 접근할 필요가 없는 유틸리티 함수에 사용됩니다.
  • @classmethod: 클래스 (cls)를 첫 번째 암시적 인수로 받습니다. 클래스 상태에 접근하고 수정할 수 있습니다. 클래스의 인스턴스를 다른 방식으로 만드는 팩토리 메서드에 일반적으로 사용됩니다.

희귀도: 일반적 난이도: 쉬움


시스템 설계 및 아키텍처 (8가지 질문)

9. URL 단축기 (bit.ly와 같은)를 어떻게 설계하시겠습니까?

답변: 이것은 고전적인 시스템 설계 질문입니다.

  • 요구 사항: 긴 URL 단축, 짧은 URL을 원래 URL로 리디렉션, 높은 가용성, 낮은 지연 시간.
  • 데이터베이스: 빠른 조회를 위해 DynamoDB 또는 Redis와 같은 키-값 저장소 (NoSQL)가 적합합니다. 관계형 DB도 괜찮지만 확장해야 할 수도 있습니다.
  • 알고리즘:
    • Base62 인코딩: 고유 ID (자동 증가 정수)를 Base62 (a-z, A-Z, 0-9)로 변환합니다.
    • 해싱: URL의 MD5/SHA256, 처음 7자 사용 (충돌 위험).
  • 확장:
    • 캐싱: 인기 있는 리디렉션을 캐시하기 위한 Redis/Memcached (80/20 규칙).
    • 로드 밸런싱: 여러 웹 서버에 트래픽을 분산합니다.
    • 데이터베이스 샤딩: 짧은 URL 접두사를 기반으로 데이터를 분할합니다.

희귀도: 매우 일반적 난이도: 어려움


10. CAP 정리를 설명하십시오.

답변: 분산 데이터 저장소에서는 다음 세 가지 일관성, 가용성 및 파티션 내성을 중 두 가지만 보장할 수 있습니다.

  • 일관성 (C): 모든 읽기는 가장 최근의 쓰기 또는 오류를 수신합니다.
  • 가용성 (A): 모든 요청은 가장 최근의 쓰기가 포함되어 있다는 보장 없이 (오류가 아닌) 응답을 수신합니다.
  • 파티션 내성 (P): 노드 간의 네트워크에서 임의의 메시지 수가 삭제 (또는 지연)되더라도 시스템은 계속 작동합니다.
  • 현실: 분산 시스템에서는 P가 필수입니다. CP (가용성보다 일관성)와 AP (일관성보다 가용성) 중에서 선택해야 합니다.

희귀도: 일반적 난이도: 중간


11. 마이크로서비스 vs. 모놀리식 아키텍처: 언제 무엇을 선택해야 합니까?

답변:

  • 모놀리스: 단일 코드베이스, 단일 배포 단위.
    • 장점: 초기 개발/테스트/배포가 간단하고, 디버깅이 더 쉽고, 구성 요소 간에 네트워크 지연 시간이 없습니다.
    • 단점: 특정 부분을 확장하기 어렵고, 긴밀한 결합, 기술 종속성, 빌드 시간이 깁니다.
    • 사용 사례: 초기 단계 스타트업, 간단한 애플리케이션, 소규모 팀.
  • 마이크로서비스: API를 통해 통신하는 작고 독립적인 서비스 모음입니다.
    • 장점: 독립적인 확장, 서비스별 기술 독립성, 오류 격리, 대규모 팀이 병렬로 작업하기 쉽습니다.
    • 단점: 복잡한 운영 (배포, 모니터링), 네트워크 지연 시간, 데이터 일관성 문제 (분산 트랜잭션).
    • 사용 사례: 크고 복잡한 시스템, 빠르게 확장되는 팀, 독립적인 확장이 필요합니다.

희귀도: 일반적 난이도: 중간


12. 로드 밸런싱이란 무엇이며 어떤 알고리즘이 있습니까?

답변: 로드 밸런싱은 들어오는 네트워크 트래픽을 여러 서버에 분산하여 단일 서버에 너무 많은 부하가 걸리지 않도록 합니다.

  • 알고리즘:
    • 라운드 로빈: 요청을 순차적으로 분산합니다.
    • 최소 연결: 활성 연결 수가 가장 적은 서버로 요청을 보냅니다.
    • IP 해시: 클라이언트의 IP를 사용하여 요청을 수신할 서버를 결정합니다 (세션 지속성에 유용).
  • 유형:
    • L4 (전송 계층): IP 및 포트 기반 (더 빠름).
    • L7 (애플리케이션 계층): 콘텐츠 (URL, 쿠키, 헤더) 기반 (더 스마트).

희귀도: 일반적 난이도: 중간


13. 백엔드 시스템에서 캐싱을 어떻게 처리합니까?

답변: 캐싱은 더 빠른 액세스를 위해 임시 저장 위치에 데이터 복사본을 저장합니다.

  • 계층:
    • 클라이언트 측: 브라우저 캐싱.
    • CDN: 사용자에 더 가까운 정적 자산을 캐시합니다.
    • 로드 밸런서/역방향 프록시: Varnish, Nginx.
    • 애플리케이션: 인메모리 (로컬) 또는 분산 (Redis/Memcached).
    • 데이터베이스: 쿼리 캐시.
  • 전략:
    • Cache-Aside (Lazy Loading): 앱은 캐시를 확인합니다. 누락된 경우 DB를 읽고 캐시를 업데이트합니다.
    • Write-Through: 앱은 캐시와 DB에 동기적으로 씁니다.
    • Write-Back: 앱은 캐시에 씁니다. 캐시는 DB에 비동기적으로 씁니다 (데이터 손실 위험).
  • 축출: LRU (Least Recently Used), LFU (Least Frequently Used), TTL (Time To Live).

희귀도: 일반적 난이도: 어려움


14. 데이터베이스 샤딩이란 무엇입니까?

답변: 샤딩은 단일 논리적 데이터 세트를 여러 데이터베이스로 분할하고 저장하는 방법입니다. 수평적 확장 형태입니다.

  • 수평 vs. 수직: 수직 = 더 큰 머신; 수평 = 더 많은 머신.
  • 샤딩 키: 데이터를 분산하는 데 사용되는 논리 (예: UserID % NumberOfShards).
  • 문제점:
    • 조인: 교차 샤드 조인은 비용이 많이 들거나 불가능합니다.
    • 트랜잭션: 분산 트랜잭션은 복잡합니다 (Two-Phase Commit).
    • 재조정: 새 샤드를 추가할 때 데이터를 이동하는 것은 어렵습니다.

희귀도: 중간 난이도: 어려움


15. REST API에서 멱등성의 개념을 설명하십시오.

답변: 멱등 연산은 초기 적용 후 결과를 변경하지 않고 여러 번 적용할 수 있는 연산입니다.

  • 안전한 메서드: GET, HEAD, OPTIONS (상태를 수정하지 않음).
  • 멱등 메서드: PUT, DELETE. 리소스에 DELETE를 10번 호출하는 것은 한 번 호출하는 것과 같은 효과가 있습니다 (리소스가 사라짐).
  • 비-멱등: POST. POST를 10번 호출하면 10개의 리소스가 생성될 수 있습니다.
  • 구현: 요청 헤더에 멱등성 키 (고유 ID)를 사용합니다. 서버는 이 ID를 이미 처리했는지 확인합니다.

희귀도: 중간 난이도: 중간


16. 역방향 프록시란 무엇이며 왜 사용합니까?

답변: 역방향 프록시는 하나 이상의 웹 서버 앞에 위치하여 클라이언트 요청을 해당 서버로 전달합니다.

  • 이점:
    • 로드 밸런싱: 트래픽 분산.
    • 보안: 백엔드 서버의 ID/IP를 숨깁니다. SSL 종료를 처리할 수 있습니다.
    • 캐싱: 정적 콘텐츠 캐싱.
    • 압축: 대역폭을 절약하기 위해 응답을 압축합니다 (gzip).
  • 예시: Nginx, HAProxy.

희귀도: 일반적 난이도: 쉬움


데이터베이스 및 최적화 (7가지 질문)

17. ACID vs. BASE 일관성 모델을 설명하십시오.

답변:

  • ACID (관계형): 원자성, 일관성, 격리성, 지속성. 강력한 일관성에 중점을 둡니다. 트랜잭션은 전부 아니면 전무입니다.
  • BASE (NoSQL):
    • 기본적으로 사용 가능: 시스템은 가용성을 보장합니다.
    • Soft state: 시스템 상태는 입력 없이도 시간이 지남에 따라 변경될 수 있습니다.
    • 결과적 일관성: 시스템은 입력 수신을 중단하면 결국 일관성이 있게 됩니다.
  • 절충: ACID는 안전과 일관성을 제공합니다. BASE는 가용성과 확장성을 제공합니다.

희귀도: 중간 난이도: 중간


18. 느린 SQL 쿼리를 어떻게 최적화합니까?

답변:

  1. 분석: EXPLAIN 또는 EXPLAIN ANALYZE를 사용하여 쿼리 실행 계획을 이해합니다.
  2. 인덱싱: WHERE, JOINORDER BY 절에 사용되는 열이 인덱싱되었는지 확인합니다. 과도한 인덱싱을 피하십시오 (쓰기 속도가 느려짐).
  3. 필요한 것만 선택: SELECT *를 피하십시오.
  4. N+1 문제 피하기: 루프에서 각 행에 대해 쿼리를 실행하는 대신 JOIN 또는 적극적 로딩 (ORM에서)을 사용하십시오.
  5. 비정규화: 조인이 너무 비싸면 데이터를 복제하는 것을 고려하십시오 (절충: 데이터 일관성).
  6. 파티셔닝: 큰 테이블을 더 작은 조각으로 분할합니다.

희귀도: 매우 일반적 난이도: 중간


19. 데이터베이스 인덱스의 유형은 무엇입니까?

답변:

  • B-트리: 기본적이고 가장 일반적입니다. 범위 쿼리 및 동일성 검사에 적합합니다.
  • 해시 인덱스: 동일성 검사에만 적합합니다 (키 = 값). 매우 빠르지만 범위 쿼리를 지원하지 않습니다.
  • GiST / GIN: 전체 텍스트 검색, 기하학적 데이터 또는 JSONB (PostgreSQL에서)와 같은 복잡한 데이터 유형에 사용됩니다.
  • 클러스터형 vs. 비클러스터형:
    • 클러스터형: 데이터 행이 인덱스 순서대로 물리적으로 저장됩니다. 테이블당 하나만 있습니다 (일반적으로 PK).
    • 비클러스터형: 데이터 행을 가리키는 별도의 구조입니다.

희귀도: 중간 난이도: 어려움


20. N+1 쿼리 문제를 설명하고 해결하는 방법을 설명하십시오.

답변: N+1 문제는 코드가 기본 쿼리를 실행할 때 검색할 수 있었던 것과 동일한 데이터를 가져오기 위해 N개의 추가 쿼리 문을 실행할 때 발생합니다.

  • 시나리오: 10명의 저자 목록을 가져옵니다 (1개의 쿼리). 그런 다음 각 저자에 대해 해당 저자의 책을 가져옵니다 (10개의 쿼리). 총 = 11개의 쿼리.
  • 해결 방법:
    • SQL: JOIN을 사용하여 저자와 책을 단일 쿼리로 가져옵니다.
    • ORM (Django): select_related (외래 키/일대일) 또는 prefetch_related (다대다/역방향 외래 키)를 사용하십시오.

희귀도: 매우 일반적 난이도: 중간


21. Redis vs. Memcached: 어느 것을 선택해야 합니까?

답변:

  • Memcached: 간단하고, 휘발성이고, 다중 스레드입니다. 간단한 키-값 캐싱 (HTML 조각, 세션 데이터)에 적합합니다.
  • Redis: 고급 키-값 저장소.
    • 데이터 구조: 목록, 집합, 정렬된 집합, 해시, 비트맵, 하이퍼로그로그를 지원합니다.
    • 영속성: 데이터를 디스크에 저장할 수 있습니다 (RDB, AOF).
    • 복제: 기본 제공 마스터-슬레이브 복제.
    • Pub/Sub: 메시지 브로커링을 지원합니다.
  • 선택: 복잡한 데이터 구조, 영속성 또는 정렬이 필요한 경우 Redis를 사용하십시오. 다중 스레드가 필요한 경우 간단하고 높은 처리량의 캐싱을 위해 Memcached를 사용하십시오.

희귀도: 중간 난이도: 중간


22. 데이터베이스 정규화란 무엇입니까?

답변: 정규화는 데이터베이스에서 중복성을 줄이고 데이터 무결성을 개선하기 위해 데이터를 구성하는 프로세스입니다.

  • 1NF: 원자적 값 (셀에 목록 없음), 고유한 행.
  • 2NF: 1NF + 부분 종속성 없음 (모든 비-키 속성은 전체 기본 키에 종속됨).
  • 3NF: 2NF + 전이 종속성 없음 (비-키 속성은 기본 키에만 종속됨).
  • 절충: 정규화 수준이 높을수록 더 많은 테이블과 더 많은 조인이 필요합니다 (읽기 속도가 느려짐). 비정규화는 읽기 중심 시스템에 자주 사용됩니다.

희귀도: 일반적 난이도: 쉬움


23. PostgreSQL은 동시성 (MVCC)을 어떻게 처리합니까?

답변: PostgreSQL은 다중 버전 동시성 제어 (MVCC)를 사용합니다.

  • 메커니즘: 행이 업데이트되면 Postgres는 이전 데이터를 덮어쓰지 않습니다. 대신 행의 새 버전을 만듭니다.
  • 읽기: 읽기 트랜잭션은 트랜잭션이 시작될 때의 데이터베이스의 일관된 스냅샷을 봅니다. 쓰기를 차단하지 않습니다.
  • 쓰기: 쓰기 트랜잭션은 새 버전을 만듭니다. 동일한 행에 대한 다른 쓰기를 차단하지만 읽기를 차단하지 않습니다.
  • Vacuuming: 더 이상 트랜잭션에 표시되지 않는 이전 버전 (dead tuples)은 공간을 회수하기 위해 VACUUM 프로세스에 의해 정리되어야 합니다.

희귀도: 드묾 난이도: 어려움


보안 및 DevOps (7가지 질문)

24. OAuth 2.0과 그 흐름을 설명하십시오.

답변: OAuth 2.0은 사용자의 비밀번호를 노출하지 않고 애플리케이션이 HTTP 서비스 (예: Google, Facebook)에서 사용자 계정에 대한 제한된 액세스를 얻을 수 있도록 하는 인증 프레임워크입니다.

  • 역할: 리소스 소유자 (사용자), 클라이언트 (앱), 인증 서버, 리소스 서버 (API).
  • 흐름 (Authorization Code Grant):
    1. 사용자가 "Google로 로그인"을 클릭합니다.
    2. 사용자는 Google의 인증 서버로 리디렉션됩니다.
    3. 사용자가 액세스를 승인합니다.
    4. Google은 "Authorization Code"와 함께 앱으로 다시 리디렉션합니다.
    5. 앱은 코드를 "Access Token"으로 교환합니다 (백 채널).
    6. 앱은 Access Token을 사용하여 API에 액세스합니다.

희귀도: 일반적 난이도: 어려움


25. JWT (JSON Web Token)란 무엇이며 세션 인증과 어떻게 다릅니까?

답변:

  • 세션 인증: 서버는 세션을 만들고 DB/캐시에 저장하고 세션 ID (쿠키)를 클라이언트에 보냅니다. 상태 저장.
  • JWT: 상태 비저장. 서버는 사용자의 ID를 포함하는 토큰을 생성하고 비밀 키로 서명합니다. 클라이언트는 토큰을 저장하고 모든 요청과 함께 보냅니다. 서버는 서명을 확인합니다. DB 조회가 필요하지 않습니다.
  • JWT의 장점: 확장 가능 (상태 비저장), 마이크로서비스에 적합, 모바일 친화적.
  • JWT의 단점: 해지하기 어려움 (블랙리스트/짧은 만료 필요), 토큰 크기가 더 큽니다.

희귀도: 매우 일반적 난이도: 중간


26. OWASP Top 10 보안 위험은 무엇입니까? 몇 가지 이름을 지정하십시오.

답변: 개발자 및 웹 애플리케이션 보안을 위한 표준 인식 문서입니다.

  1. 주입: SQL, NoSQL, OS 주입.
  2. 손상된 인증: 약한 비밀번호, 세션 하이재킹.
  3. 민감한 데이터 노출: 전송/보관 중인 데이터를 암호화하지 않음.
  4. XML 외부 엔티티 (XXE): XML 파서에 대한 공격.
  5. 손상된 액세스 제어: 사용자가 의도된 권한 범위를 벗어나서 행동함.
  6. 보안 구성 오류: 기본 계정, 자세한 오류 메시지.
  7. 교차 사이트 스크립팅 (XSS): 악성 스크립트 주입.

희귀도: 일반적 난이도: 중간


27. CI/CD란 무엇입니까?

답변:

  • Continuous Integration (CI): 개발자는 코드 변경 사항을 중앙 저장소에 자주 병합합니다. 자동화된 빌드 및 테스트가 실행되어 변경 사항을 확인합니다. 목표: 오류를 빠르게 감지합니다.
  • Continuous Deployment (CD): CI를 통과한 후 코드를 프로덕션에 자동으로 배포합니다.
  • Continuous Delivery: 릴리스를 위해 코드를 자동으로 준비하지만 최종 푸시에 대한 수동 승인이 필요할 수 있습니다.

희귀도: 일반적 난이도: 쉬움


28. Docker vs. Virtual Machines를 설명하십시오.

답변:

  • Virtual Machines (VM): 하드웨어를 가상화합니다. 각 VM에는 전체 OS (게스트 OS), 커널 및 앱이 있습니다. 무겁고 부팅 속도가 느립니다.
  • Docker (컨테이너): OS를 가상화합니다. 컨테이너는 호스트 OS 커널을 공유하지만 격리된 사용자 공간 (bins/libs)을 갖습니다. 가볍고 부팅 속도가 빠르며 휴대 가능합니다.

희귀도: 일반적 난이도: 쉬움


29. Kubernetes란 무엇입니까?

답변: Kubernetes (K8s)는 오픈 소스 컨테이너 오케스트레이션 플랫폼입니다. 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화합니다.

  • 기능:
    • 서비스 검색 및 로드 밸런싱: 컨테이너를 노출합니다.
    • 자체 복구: 실패한 컨테이너를 다시 시작합니다.
    • 자동화된 롤아웃/롤백: 가동 중지 시간 없이 앱을 업데이트합니다.
    • 비밀 및 구성 관리: 민감한 데이터를 관리합니다.

희귀도: 중간 난이도: 중간


30. Python 웹 애플리케이션을 어떻게 보호합니까?

답변:

  1. 입력 유효성 검사: 모든 입력 (양식, API 본문, 쿼리 매개변수)을 삭제합니다.
  2. SQL 주입: ORM 또는 매개변수화된 쿼리를 사용하십시오. 문자열 연결을 사용하지 마십시오.
  3. XSS: 템플릿에서 사용자 출력을 이스케이프하십시오 (Jinja2는 기본적으로 이 작업을 수행함).
  4. CSRF: 상태 변경 요청에 CSRF 토큰을 사용하십시오.
  5. 종속성: 라이브러리를 최신 상태로 유지하십시오 (pip-audit 또는 Snyk 사용).
  6. HTTPS: SSL/TLS를 적용하십시오.
  7. 헤더: 보안 헤더 (HSTS, X-Frame-Options, CSP)를 설정하십시오.
  8. 비밀: Git에 비밀을 커밋하지 마십시오. 환경 변수를 사용하십시오.

희귀도: 일반적 난이도: 중간

Newsletter subscription

실제로 효과가 있는 주간 커리어 팁

최신 인사이트를 받은 편지함으로 직접 받아보세요

Decorative doodle

지원을 멈추세요. 채용되기 시작하세요.

전 세계 구직자들이 신뢰하는 AI 기반 최적화로 이력서를 면접 자석으로 변환하세요.

무료로 시작하기

이 게시물 공유

이력서 작성 시간을 90% 단축하세요

평균적인 구직자는 이력서 서식을 작성하는 데 3시간 이상을 소비합니다. 우리 AI는 15분 이내에 완성하여 지원 단계에 12배 더 빠르게 도달할 수 있습니다.