역할별 질문: 웹 개발, 데이터 과학, DevOps
웹 개발: 웹 애플리케이션에서 서버 측 렌더링 (SSR) 과 클라이언트 측 렌더링 (CSR) 의 차이점을 설명하세요.
답변:
SSR 은 HTML 을 서버에서 렌더링한 후 브라우저로 전송하여 초기 페이지 로딩 속도를 높이고 SEO 를 개선합니다. CSR 은 JavaScript 를 사용하여 브라우저에서 직접 HTML 을 렌더링하여 초기 로딩 후 더 동적인 사용자 경험을 제공하지만, 첫 번째 콘텐츠가 표시되는 시간 (first contentful paint) 이 느릴 수 있습니다.
웹 개발: Flask 또는 Django 와 같은 Python 웹 프레임워크에서 비동기 작업을 어떻게 처리하나요?
답변:
Flask/Django에서는 일반적으로 Celery 와 같은 백그라운드 작업 큐와 메시지 브로커 (예: Redis, RabbitMQ) 를 사용하여 비동기 작업을 처리합니다. 애플리케이션 내의 I/O 바운드 작업의 경우 asyncio를 사용할 수 있으며, 이는 종종 FastAPI 또는 Django 3.0+ 와 같은 프레임워크를 위한 Uvicorn 과 같은 ASGI 서버와 통합됩니다.
데이터 과학: 머신러닝에서 교차 검증 (cross-validation) 의 목적은 무엇이며, 일반적인 기법 한 가지를 언급하세요.
답변:
교차 검증은 데이터를 여러 개의 학습/테스트 세트로 분할하여 모델의 일반화 능력을 평가합니다. 이는 과적합 (overfitting) 을 방지하고 모델 성능에 대한 더 신뢰할 수 있는 추정치를 제공하는 데 도움이 됩니다. K-Fold 교차 검증은 데이터를 K 개의 폴드 (fold) 로 분할하고, 각 폴드를 테스트 세트로 사용하여 모델을 K 번 학습시키는 일반적인 기법입니다.
데이터 과학: pandas.DataFrame을 NumPy 배열보다 사용하거나 그 반대의 경우는 언제인가요?
답변:
이종 (heterogeneous) 타입, 레이블이 지정된 축 (행 및 열) 및 내장 데이터 조작 기능을 갖춘 표 형식 데이터에는 pandas.DataFrame을 사용합니다. 동종 (homogeneous) 숫자 데이터, 고성능 수학 연산 및 대규모 숫자 데이터셋에 대한 메모리 효율성이 중요한 경우에는 NumPy 배열을 사용합니다.
DevOps: 코드로서의 인프라 (Infrastructure as Code, IaC) 개념을 설명하고, 이를 위해 사용되는 도구의 예를 들어보세요.
답변:
코드로서의 인프라 (IaC) 는 수동 프로세스 대신 코드를 통해 인프라를 관리하고 프로비저닝합니다. 이는 인프라의 일관성, 반복성 및 버전 관리를 보장합니다. Terraform 은 다양한 클라우드 제공업체에 걸쳐 인프라를 정의하고 프로비저닝하는 데 사용되는 인기 있는 IaC 도구입니다.
DevOps: CI/CD 파이프라인에서 Docker 컨테이너를 사용하는 이점은 무엇인가요?
답변:
Docker 컨테이너는 개발, 테스트 및 프로덕션 전반에 걸쳐 일관된 환경을 제공하여 '내 컴퓨터에서는 작동하는데'와 같은 문제를 제거합니다. CI/CD 파이프라인 내에서 빌드 및 배포 시간을 단축하고, 리소스 격리를 개선하며, 종속성 관리를 단순화합니다.
DevOps: CI/CD 파이프라인의 목적을 설명하세요.
답변:
CI/CD 파이프라인은 코드 커밋부터 배포까지 소프트웨어 전달 프로세스를 자동화합니다. CI(Continuous Integration, 지속적 통합) 는 코드 변경 사항을 자주 병합하고 자동화된 테스트를 실행하는 데 중점을 둡니다. CD(Continuous Delivery/Deployment, 지속적 전달/배포) 는 검증된 코드를 다양한 환경에 릴리스하고 배포하는 것을 자동화하여 더 빠르고 안정적인 소프트웨어 릴리스를 보장합니다.
웹 개발: Python 으로 구축된 REST API 를 어떻게 보호하나요?
답변:
인증 (예: JWT, OAuth2), 권한 부여 (역할 기반 접근 제어), 주입 공격을 방지하기 위한 입력 유효성 검사를 구현하고 암호화된 통신을 위해 HTTPS 를 사용하여 REST API 를 보호합니다. 속도 제한, 적절한 오류 처리 및 URL 에 민감한 데이터를 포함하지 않는 것도 중요합니다.
데이터 과학: 머신러닝에서 '편향 - 분산 트레이드오프 (bias-variance tradeoff)'란 무엇인가요?
답변:
편향 - 분산 트레이드오프는 모델이 잘 일반화되지 못하게 하는 두 가지 오류 소스를 동시에 최소화하는 데 따르는 상충 관계를 설명합니다. 높은 편향 (과소적합, underfitting) 은 모델이 너무 단순할 때 발생하며, 높은 분산 (과적합, overfitting) 은 모델이 너무 복잡하여 학습 데이터의 노이즈를 포착할 때 발생합니다.
DevOps: 프로덕션 환경에서 애플리케이션의 상태 및 성능을 어떻게 모니터링하나요?
답변:
모니터링에는 메트릭 (CPU, 메모리, 네트워크, 애플리케이션별), 로그 및 추적 (trace) 수집이 포함됩니다. 메트릭을 위한 Prometheus, 로그를 위한 ELK Stack(Elasticsearch, Logstash, Kibana), 분산 추적을 위한 Jaeger/Zipkin과 같은 도구가 일반적으로 사용됩니다. 미리 정의된 임계값을 기반으로 알림이 구성됩니다.