슈코딩
[기술면접] Django 50문 50답 16~30 본문
⭐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으로 로그인을 해야 합니다.
'코딩공부 > 기술면접' 카테고리의 다른 글
[기술면접] Django 50문 50답 46~52 (0) | 2022.10.27 |
---|---|
[기술면접] Django 50문 50답 31~45 (0) | 2022.10.26 |
[기술면접] Django 50문 50답 1~15 (0) | 2022.10.24 |
[신입 기술면접] 기술면접 스터디 정리 3 (0) | 2022.10.22 |
[신입 기술면접] 기술면접 스터디 정리 2 (0) | 2022.10.21 |
Comments