슈코딩

[기술면접] Django 50문 50답 16~30 본문

코딩공부/기술면접

[기술면접] Django 50문 50답 16~30

Roshu 2022. 10. 25. 13:58

 

⭐16. Django의 기본 기능을 사용하는 것과 JWT를 사용하여 로그인 기능을 구현하는 것에는 어떤 차이점이 있습니까?

  • JWT를 사용하면 유저 관련 정보를 모두 base64 인코딩을 하고 유지 시간도 짧아 보안에 유리하며,
    다른 프레임워크에 호환성도 높습니다.
    Django 기본 인증은 Django 내장인 만큼 훨씬더 간편하게 사용할 수 있는 이점이 있습니다.

⭐17. 데이터 테이블 간의 관계를 나타내는 FK, OneToOne, ManyToMany 필드에 대해서 설명하시오

  • FK: 다른 테이블과 관계가 있을 때 다른 테이블의 내용을 불러오고 이용할 수 있습니다.
  • OnetoOne: 1:1의 대응 관계 테이블입니다. 예를들어 유저와 유저프로필 모델
  • ManytoMany: A 모델에 연관된 B 모델 필드가 여러개 일 수 있고, 
    B모델에 연관된 A 모델 필드가 여러개일 수 있는 관계가 MtoM 입니다.

⭐18. Django에서 ManyToMany필드를 만드는 방법에 대해서 설명하시오

  • 모델과 다대다 관계에 두고 싶은 모델을 manytomany 필드로 연결하면 
    자동적으로 두 모델을 연결해주는 새로운 모델이 생성됩니다.
class Company(models.Model):
    company_name = models.CharField(max_length=128)
    business_area = models.ManyToManyField('BusinessArea', through='CompanyBusinessArea')

    class Meta:
        db_table = 'companies'

⭐19. FBV와 CBV는 각각 무엇이며, 어떤 차이가 있습니까?

  • views.py를 함수중심으로 구성하는 것과 클래스 중심으로 구성하는 것의 차이가 있습니다.
    클래스는 객체지향적으로 구성이 가능하고,
    상속할 수 있어서 코드 수를 줄이고 재사용성을 높일 수 있습니다.

⭐20. 테스트코드를 작성하는 이유는 무엇이며 어떤 장점이 있습니까?

  • 코드가 제대로 작동하는지 여부를 자동적으로 알 수 있습니다. 
    더 꼼꼼하고 정확한 코드를 작성할 수 있으며 처음엔 시간을 더 쓰는것 같아도 
    결국에는 에러를 줄여 시간을 절약하는 길이 됩니다.

⭐21. 테스트코드에서 setup 함수와 setupclass의 차이는 무엇입니까?

  • setup()⇒ 각 테스트 메소드를 호출하기 이전에 호출되는 메소드입니다. 테스트 케이스가 실행될 때 마다 사용됩니다.
    setUpClass() ⇒ 해당 테스트 클래스가 시작되기 이전 단 한번 호출되는 메소드입니다. 
    setup 메소드는 각 테스트 메소드 이전에 항상 호출 됩니다. 
    메소드에 @classmethod라는 데코레이터를 달아줘야하고 메소드 인자로 cls를 넘겨줘야합니다.

⭐22. Template Engine을 사용할 때, 발생하는 CSRF Error가 무엇이고 어떻게 해결합니까?

  • csrf 사이트간 요청 위조이며, 사이트간 요청 위조는 웹사이트 취약점 공격의 하나입니다. 
    사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격을 말합니다. 
    Template Engine 을 사용할때는 {% csrf_token %} 을 붙여줘서 해결 할 수 있습니다.

⭐23. Django ORM에서 queryset과 object의 차이점에 대해서 설명하시오

  • queryset은 데이터베이스에서 전달받은 객체들의 list입니다.
  • object는 데이터베이스 에서 전달받은 객체입니다.

⭐24. Django ORM에서 정참조와 역참조에 대해서 설명하시오

  • 정참조: 해당 객체가 다른 객체의 ForeignKey를 가지고 있거나 1:1 관계인 상황에서 참조 하는 경우입니다.
    (내가 참조하는 table접근)
  • 역참조: 다른 객체가 ForeignKey를 가지고 있거나 N:N 관계인 상황, 
    해당 객체를 참조하고 있는 다른 객체를 참조하려는 경우입니다.
    (나를 참조하는 table접근)

⭐25. Response 결과와 함께 status code를 반환하는 이유는 무엇입니까?

  • 상태코드는 서버가 요구 메시지를 수신하여 처리한 결과를 알려주는 세자리의 정수로 된 처리 결과 번호입니다.
  • 해당 코드 번호는 API 가이드 라인을 따릅니다. 클라이언트의 요청에 대한 올바른 응답은 서버를 해줘야 합니다. 
    그렇지 않으면 서버에서 무슨 에러가 났는지, 클라이언트에서 어떠한 에러가 났는지, 
    파악 할 수 없고 무조건적인 200 ok 는 서비스에 큰 타격을 입힐 수 있습니다.

⭐26. 회원탈퇴, 게시글 삭제와 같은 기능을 구현할 때 실제 레코드를 삭제합니까? 그렇지 않다면 그 이유는 무엇입니까?

  • 실제 데이터를 삭제 할 수 는 있지만 삭제시키기 보다는 유저의 권한을 정지 시키는게 좋습니다. 
    특히 RDBMS에서는 테이블 간의 데이터가 연결되어 있는 경우가 많아 오류를 유발 할 수도 있습니다. 
    또한 데이터를 삭제 하는 것 보다는 유지하는 것 이 마케팅 등에 활용 할 수 있어 좋습니다.

⭐27. RESTful API는 무엇을 의미합니까?

  • HTTP URI 를 통해 자원을 명시하고, HTTP method (GET,POST,PUT,DELETE)를 통해 
    해당 자원에 대한 CRUD OPERATION을 적용하는 것을 의미합니다.
  • RESTful 이라는 말은 REST 라는 아키텍처 개념을 그대로적용해서 웹서버 구성하고 웹서빙을 하는 것을 말합니다.

⭐28. DRF를 사용해 API를 개발할 경우 어떤 장점이 있습니까?

  • Serailizer를 통해 복잡한 데이터를 JSOn,XML등의 컨텐트 타입으로 쉽게 
    변환 가능한 python 데이터 타입으로 변환시켜줍니다.
  • ORM 과 non-ORM을 모두 지원합니다.
  • 많은 기업에서 사용해서 정보를 얻기 쉽습니다.
  • 인증 관리를 위해 OAuth1와 OAuth2가 내장되어 있습니다.

⭐29. Django 와 DRF를 통한 개발의 차이점은 어떤 것이 있습니까?

  • Django 만 사용하는 경우 Queryset을 템플릿 언어로 렌더링합니다.
  • DRF를 사용하면 json을 템플릿 언어로 렌더링합니다.
  • DRF를 사용하면 python으로 만든 백엔드를 다른 프론트엔드에서도 사용이 가능합니다.

⭐30. Django User 모델과 DRF Custom User 모델의 차이는 무엇입니까?

  • Django User모델에는 유저네임,이름,이메일,패스워드 의 기본적인 필드가 존재합니다.
    하지만 실제 서비스에서는 더 많은 User의 정보를 필요로 합니다. 
    생일이라던지, 여러가지 질문을 포함할 수 도있습니다. 
    그렇기 위해 Custom User을 통해 커스텀 합니다. 
    또한 Django User모델은 username으로 로그인을 해야 합니다.

 

 

Comments