본문 바로가기
취업_TIL

취업_TIL | 2022-09-01 (4) _ 기술 면접 대비 질문 7~16

by Hee94 2022. 9. 1.

기술 면접 준비

7. ORM에 대해서 설명하시오.

  • Object Relational Mapping은 객체와 관계형 데이터베이스를 자동으로 매핑해줍니다.
  • 프로그래밍 언어에서 데이터베이스의 레코드에 접근할 때, 흔히 말하는 쿼리를 사용하지 않고, 프레임워크의 자체적인 메서드를 사용해서 데이터를 조회 및 수정할 수 있도록 하는 코드
    데이터베이스의 레코드를 하나의 객체(Object)로 가져와서 그 자체를 활용 및 재사용하게됩니다.

8. Django ORM의 장단점은 무엇인가요?

  • 장점 : 쿼리문을 사용하지 않기 때문에 SQL관련 지식이 적더라도 데이터베이스에 접근하여 개발할 수 있다. 객체 자체를 가지고 활용 재사용이 가능하기 때문에 개발에 용이하다.
  • 단점 : ORM은 메서드를 사용하여 쿼리문으로 변환하는 작업이기 때문에 복잡할 경우 속도가 느려질 것이다!
    쿼리문에서 쉽게 해결할 수 있는 문제를 더 복잡하게 해결해야 할 수도 있다. 적절한 SQL 쿼리 작성도 요구한다.

9. Django Admin은 무엇이고 어떤 기능을 제공하나요?

  • 사이트 관리자를 위한 기능으로 Django에서는 기본적인 인터페이스를 자동으로 생성해주는 장점이 있고, 이를 통해 기본적인 CRUD 기능을 제공합니다.

10. Django Template Engine은 무엇이고 어떤 기능을 제공하나요?

  • Django에서 제공하는 서버 사이드 렌더링(SSR)으로 Django와 Template 엔진을 통해서 Return된 데이터를 HTML상에서 코드를 작성하여 웹을 구현할 수 있게 하는 도구를 의미합니다.
  • Django Template Engine으로 분리되지 않은 백엔드에서 웹을 전부 구현할 수 있습니다.

11. Django를 통해 CRUD를 구현하는 방법에 대해서 HTTP Method와 함께 설명하시오

  • Django는 사용자의 request요청에 따라 url을 조회하여, 해당하는 View로 이동합니다
    FBV, CBV에 따라 작성된 HTTP Method를 확인하고, GET Method를 통해 조회를 하며, POST를 통해 게시글 작성등을 진행, PUT을 활용하여 전체적인 데이터를 업데이트하고, DELETE를 통해 삭제합니다. 그리고, PATCH를 활용하여 부분적인 업데이트를 진행하기도하나, PUT의 partial=True를 통해 부분적으로 업데이트를 함으로써 하나로 진행할 수도 있습니다.

12. Django에서 테이블을 설계하고 데이터베이스에 반영하는 방법에 대해서 설명하시오

  • models.py에서 생성할 데이터테이블을 클래스로 정의하고, 필드를 생성합니다.
  • 모델에 변경사항이 생긴 것 혹은 변경된 것을 인식하게 하는 makemigrations 를 입력하는 것으로 마이그레이션 파일을 생성합니다.
    변경사항을 적용하는 migrate 를 입력하는 것으로 데이터베이스에 반영합니다.

13. 회원가입을 할 때 비밀번호를 암호화하여 저장하는 이유는 무엇인가요?

  • 보안성으로 외부 공격자(해커)는 물론, 신뢰성으로 관리자조차 사용자의 암호를 알지 못하게 함으로 보안을 위함입니다.
    • 사용자는 웹을 신뢰하기 때문에 비밀번호를 포함한 개인정보를 회원가입을 위하여 웹에 등록하게 됩니다. 평문으로 작성된 비밀번호를 암호화 하지 않는다면, 외부 공격에 의해 쉽게 노출될 가능성이 있으며, 또한 개발자가 암호를 포함한 개인정보를 모두 알게된다는 사실은 공격자로 인식될 가능성이 충분히 있습니다. 그런 가능성을 배제 함으로써 사용자가 웹을 신뢰하게 되는 장점이 있습니다.

14. JWT에 대해서 설명하시오

  • JSON Web Token의 줄임말로, 유저를 인증하고 식별하기 위한 Token기반 인증을 말합니다.
  • JSON데이터를 Base64를 통해 인코딩하여 직렬화 한 것이 포함되고, 토큰 내부에는 위변조 방지를 위해 개인 키를 통한 전자 서명도 있습니다.
    사용자는 로그인을 통해 JWT를 발급받아 브라우저에 저장(인증)하고, 로그인된 사용자라는 조건으로 웹의 기능에 접근할 때 JWT를 제시하여 인가된 사용자는 기능을 접근할 수 있게됩니다.

15. JWT의 Access Token과 Refresh Token은 왜 필요한가요?

  • Access Token을 통해 유효한 토큰인지 확인할 수 있으며, Refresh Token을 통해 새로운 Access Token을 발급해주기 위함입니다.
  • JWT를 발급하여 Access Token으로 사용자는 인가받을 수 있지만, 브라우저에 저장하기 때문에 만료 시간을 두지 않으면 보안상 위험할 수 있음. 하지만 만료 시간이 지나치게 짧다면 반복적인 로그인을 위해 사용자의 서비스에 대한 유저 경험이 나빠지게 되므로, Refresh Token을 가지고 사용자가 다시 서비스에 접근했을 때, 다시 Access Token을 발급 받을 수 있게함으로 유저경험을 높이는 것에 목적이 있습니다.

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

  • Django 기본 제공되어지는 기능을 통해서 로그인을 구현한다면, 사용자의 인가 정보와 관련된 기능은 모두 서버가 데이터를 부담하게 됩니다. 이는 데이터를 서버에서 처리하게 되므로 양이 많아질 수록 서버에 부담을 주게 되는 반면, JWT를 통해 사용자가 각자 클라이언트에서 인가 정보를 부담하게 된다면, 서버는 느려지지 않을 것이고, 또한 토큰 재발급 형식으로 편리하게 관리가 가능합니다.