TIL 240423

hyeo71·2024년 4월 23일
0

2024 내배캠 AI 트랙

목록 보기
80/108

Django

  1. FBV, CBV에 대해 각각 장단점 위주로 설명해주세요.

    • FBV
      함수에 기반을 둔 방법
      장점: 편하게 구현이 가능, 가독성이 좋음, 데코레이터 사용이 명료함
      단점: 확장, 재사용이 힘듬

    • CBV
      클래스에 기반을 둔 방법
      장점: 확장, 재사용이 용이, 다중 상속, Mixins 등 사용이 가능, http Method를 클래스 안에서 나누어 처리, 강력한 Generic Class View가 있음
      단점: 가독성이 떨어짐(코드 흐름이 암시적), 상속, 믹스되면서 코드를 이해하려면 상속 코드를 찾아다녀야 함, 데코레이터를 사용하려면 별도로 import or method 생성


  1. 장고로 어떤 프로젝트를 하셨고 어떤 에로사항이 었었는지 그리고 어떻게 해결 하셨나요?

  1. AWS 서비스를 어떻게 사용하셨나요? (예: S3, EC2)

  1. docker 이미지와 도커 컨테이너의 차이는 무엇인가요?

    • docker 이미지
      컨테이너를 만드는 데 사용되는 읽기 전용 템플릿
      컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 도커파일을 만든 후 dockerfile을 빌드하여 이미지를 생성

    • docker 컨테이너
      도커 이미지를 실행한 상태
      이미지의 목적에 맞는 파일이 들어있는 파일 시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성 -> 컨테이너


  1. 웹어플리케이션서버와 웹서버의 차이에 대해서 설명해주세요

    • 웹 서버
      웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html .jpeg .css 등)를 제공하는 컴퓨터 프로그램
      WAS를 거치지 않고 바로 정적인 컨텐츠 자원을 제공
      동적인 컨텐츠 제공을 위해 요청을 WAS에 보내고 그에 대한 응답을 전달

    • WAS
      DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server
      HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)이다.
      “웹 컨테이너(Web Container)” 혹은 “서블릿 컨테이너(Servlet Container)”라고도 불린다.


  1. django rest framework를 사용하는 이유가 뭔가요?

    • 빠른 API 개발: API 개발을 위한 기능과 유팉리티 제공, 반복적 작업의 최소화

    • 유연한 시리얼라이저: 직렬화, 역직렬화를 지원, 데이터 모델과 JSON 등 다른 형식의 데이터 간 변환 작업을 간편하게 처리

    • 인증, 권한 관리: 사용자 인증, 토큰 기반, OAuth, JWT 등 다양한 인증 방식 지원

    • API 문서화: API의 엔드포인트, 요청 및 응답 형식, 인증 방법 등에 대한 자동화된 문서를 생성

    • 재사용 가능한 컴포넌트: 코드의 재사용성을 높임, 뷰, 시리얼라이저, 믹스인 등 컴포넌트를 사용하여 쉽게 구현하고 코드의 일관성을 유지

    • 테스트 지원: API 테스르를 자동화하고 유닛 테스트 및 통합 테스트를 쉽게 작성하여 app의 품질과 안정성을 향상


  1. DRF의 시리얼라이저의 역할에 대해서 설명해주세요
    • 데이터의 복잡한 유형을 Python의 데이터 유형으로 변환하거나(직렬화, 클라이언트에게 전달할 때), Python 데이터 유형을 다시 복잡한 유형으로 변환하는 역할(역직렬화, 클라이언트에게 받을 때)

  1. wsgi가 뭔지 설명해주세요
    • Web Server Gateway Interface
    • 파이썬 애플리케이션이 웹 서버와 통신하기 위한 표준 인터페이스
    • 프로토콜과 비슷하게 웹 서버와 파이썬 애플리케이션이 통신하기 위한 규약

  1. ForeignKey, OneToOneField, ManyToManyField의 차이점을 설명해주세요.

    • ForeignKey: 1:N

    • OneToOne: 1:1

    • ManyToMany: M:N


  1. Django에서 쿼리셋(QuerySet)의 eager loading, lazy loading에 대해 설명해주세요.

    • lazy loading(지연 로딩) - orm의 단점 중 하나
      필요한 시점에서 쿼리를 날린다.
      해당 데이터가 필요하지 않으면 가져오지 않는 것
      - 비효율성: 불필요한 쿼리가 여러번 수행될 수 있다.
      - N+1 problem: 외래키 관계에 있는 데이터를 호출할때 발생, 일단 참조 모델 데이터를 가져오는 것이 아닌 필드만 가져온다.

    • eager loading(즉시 로딩)
      필요할 때 하나씩 가져오는게 아닌 로딩시 필요한 걸 다 가져오는 것
      django에서는 이를 select_related, prepatch_related로 구현되어 있다.

    • select_related: JOIN을 통해 데이터를 즉시 로딩, 역참조 불가

    • prepatch_related: 추가 쿼리 셋을 이용해 데이터를 가져오고 애플리케이션 단에서 합쳐서 데이터를 반환, 역참조 가능

0개의 댓글