1. django가 무엇인지 설명하시오
파이썬을 기반으로 웹을 개발하기 위해 만들어진 웹 프레임워크 입니다. (프레임워크는 프로그램을 개발하기 위해 사용되는 틀을 제공하는 프로그램) (라이브러리는 개발자가 개발하는데 필요한 것들을 모아둔 도구들의 나열로 필요할 때 사용하는 방식)
웹 프레임워크는 웹 프로그램을 만들기 위한 스타터 키트
2. Django를 백엔드 스택으로 선정한 이유는 무엇입니까?
다른 언어들보다 직관적인 인터프리터 방식인 파이썬을 기반으로 하는 프레임워크중에서 가장 대표적으로 쓰이며, DB와 Admin페이지, ORM등 기본적으로 많은 기능들을 제공하고 기능들이 편리하여 개발에 유용하기 때문입니다.
3. Django에는 어떤 장점이 있습니까?
ORM, Admin, permission등 내부 기능이 많아서 숙지하면 빠른개발이 가능하고,
반복적으로 구현해야 하는 로그인,회원가입,인증,CORS,data parsing 등 많은 라이브러리가 이미 만들어져 있으며 이를 이용해 간단하게 사용이 가능하다!
따로 DB를 연결해 줄 필요가 없이 SQLite 가 자동 연동된다. Django 템플릿을 활용하여 프론트엔드 개발도 다른 기술없이 개발이 가능합니다.
4. Django가 다른 Python 프레임워크와 비교되는 특징이 있다면?
종류 3가지 : Django, Flask, FastAPI 등이 있다. django는 풀스택 프레임워크 Flask, FastAPI는 마이크로 프레임워크 이다.
Django의 특징은 기본적으로 제공되는 기능이 많다는 점이고, 파이썬에서 가장 많이 쓰이는 오픈 소스 프레임워크 이기 때문에 관련 자료가 많은 것 이 장점입니다. 하지만 기능이 많은 만큼 무겁고 복잡하며, Flask는 django보다 가볍고 쉽게 이해하며 쉽게 개발 할 수 있습니다. 하지만 가벼운 만큼 한번에 많은 트래픽을 처리하기엔 느리다는 단점이 있습니다. FastAPI는 사용자가 많지 않아 라이브러리를 사용하기 쉽지 않습니다.
5. Django 프로세스는 어떤 순서로 동작합니까?
Request -> URL -> View -> Model -> DB -> Template -> Response Client에서 요청을 보내면 urls.py 에서 요청이 온 url을 보고 지정된 view를 호출합니다. Model과 DB 관계를 보고 데이터를 받아온 후 이것을 Template으로 넘겨주고 Response를 보내는 방식 입니다.
6. Django의 MTV패턴 시스템은 무엇입니까?
장고는 mvc(model-view-controller)를 기반으로 한 프레임워크. 다만 장고에서는 MTV(Model-Template-View)라고 부른다. MTV로 이루어진 패턴으로 Model은 데이터베이스에 저장되는 데이터를 의미하고, template은 사용자가 시각 적으로 확인할 수 있는 화면 즉, UI를 담당하는 부분이고, View는 URL에서 들어온 요청을 처리하고, 요청에 따라 모델을 호출하거나 Template을 호출하고 최종적으로 User에게 HTML파일을 보내주는 역할 입니다.
7. ORM에 대해서 설명하시오
Object Relation Mapping의 약자로 Object:오브젝트와 Relation :관계형 데이터베이스를 Mapping:1대1로 연결 시켜주는 것 입니다.
SQL의 쿼리문을 사용하지 않고 프레임워크 자체적인 메서드를 사용하여 데이터를 조회,수정 등을 할 수 있습니다. 데이터베이스의 레코드를 하나의 객체(Object)로 가져와서 그 자체를 활용 및 재사용 합니다.
[관계형 데이터베이스(RDBMS = Relational DataBase Management System)]
행과 열로 이루어진 각각의 테이블을 고유값(Primary Key)을 참조하여 서로 종속되는(연결되는) 관계(=연결하는것)를 표현하는 데이터 베이스 구조를 관계형 데이터베이스라고 합니다.
8. Django ORM의 장단점은 무엇입니까?
장점:python형식으로 되어 있는 코드로 가독성도 좋고, 코드 길이도 짧다. 무엇보다 파이썬 에게 익숙한 프로그래머가 굳이 sql문을 따로 배우지 않아도 쓸 수 있다는 게 좋다. 단점:프로젝트가 커지면서 일부 자주 사용되는 대형 SQL문은 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL문을 써야하는데 장고 orm은 대응 능력이 떨어진다.
9. Django Admin은 무엇이고 어떤 기능을 제공합니까?
Django admin은 django에서 기본으로 제공하는 관리자 기능을 의미합니다. 미리 초반에 DB의 데이터를 조회하거나 추가,수정,삭제를 할 수 있고 커스터마이징을 통해 페이지를 사용성 있게 꾸밀 수 있습니다.
10. Django Template Engine은 무엇이고 어떤 기능을 제공합니까?
Django Template Engine은 Django에서 기본으로 지원하는 Template 엔진입니다. 이를 통해 Django Template 언어를 사용해서 간편하게 사용자에게 데이터를 보여주고 HTML을 동적으로 생성할 수 있게 됩니다. Django Template Engine으로 프론트와 백엔드를 분리하지 않고 웹을 전부 구현할 수 있음
11. Django를 통해 CRUD를 구현하는 방법에 대해서 HTTP Method와 함께 설명하시오
GET: 정보 조회 (read) POST: 정보 업로드(create) PUT: 정보 수정(전체)(update) DELETE: 정보 삭제(delete) (PATCH를 통해 부분적인 업데이트를 진행하기도 하나, PUT의 partial=True를 통해 부분적으로 업데이트를 함으로써 PUT하나 만으로도 업데이트 관련 Method를 진행할 수 있습니다.)
HTTP Method는 FBV, CBV에 활용되어 사용됩니다.
FBV : (Function-Base Views) 함수 기반 뷰를 뜻 한다. 코드를 확장하거나 재사용이 어렵다. 조건문으로 Method 구분해야 한다.
CBV : (Class-Based Views) 클래스 기반 뷰를 뜻 한다. 클래스 뷰는 상속을 통해 코드 재사용이 가능하고 뷰를 체계적으로 구성 할 수 있다. if 처럼 조건문 대신 메소드 명으로 코드를 작성 할 수 있다.
12. Django에서 테이블을 설계하고 데이터베이스에 반영하는 방법에 대해서 설명하시오
models.py에 models.Model을 상속해 클래스를 생성하고 CharField, TextField 등등 필드를 사용해 테이블을 설계합니다. Model에 변경사항이 생긴 것 혹은 변경된 것을 인식하게 하는 ”python manage.py makemigrations” 명령어로 migration 파일을 생성한 뒤 “python manage.py migrate로 반영합니다.
13. 회원가입을 할 때 비밀번호를 암호화하여 저장하는 이유는 무엇입니까?
취약점에 의해서 정보가 탈취 되었더라도 그 데이터의 정확한 정보를 확인하기 힘들게 하기 위해 입니다. 보안성을 위해 외부 공격자(해커)를 방어하기 위함이며, 관리자조차 사용자의 암호를 알지 못하게 함으로 신뢰성과 함께 보안을 유지하기 위함입니다.
해킹에 취약해지기 때문에 유저정보를 다룰 수 있는 비밀번호는 해싱, 암호화해서 저장합니다. SHA-256표준 해시 알고리즘을 사용
14. JWT에 대해서 설명하시오
JWT (JSON Web Token) 토큰 기반의 유저 식별 인증 방법으로, 사용자 인증에 필요한 정보를 토큰에 포함합니다. JSON데이터를 Base64를 통해 인코딩하여 직렬화 한 것이 포함되고(Payload), 토큰 내부에는 위변조 방지를 위해 개인키를 통한 전자 서명도 있습니다 따라서 별도의 인증 저장소가 필요하지 않고, JWT를 발급받아 브라우저에 저장(인증)하고, 로그인된 사용자라는 조건으로 웹의 기능에 접근할 때 JWT를 제시하여 인가된 사용자는 기능을 접근할 수 있게 됩니다.
15. JWT의 Access Token과 Refresh Token은 왜 필요한가요?
Access Token을 통해 유효한 토큰인지 확인할 수 있음
Refresh Token을 통해 아직 유효한 기간이 남아있다면 새로운 Access Token을 발급
JWT를 발급하여 Access Token으로 사용자는 인가를 받을 수 있지만, 해당 토큰을 브라우저에 저장하기때문에 만료시간을 두지 않으면 보안상 위험할 수 있음
하지만 만료시간이 지나치게 짧다면 반복적인 로그인을 해야하는 단점으로 사용자의 유저 경험이 나빠지게 됨으로 Refresh Token을 활용하여 유저 경험은 살리되 최소한의 보안 장치를 해둘 수 있음
'개발일지 > 기술 면접 대비' 카테고리의 다른 글
2023.01.07 TIL(자료구조 CS Q&A 정리) (2) | 2023.01.09 |
---|---|
2023.01.06 TIL(네트워크 CS Q&A 정리) (0) | 2023.01.06 |
2023.01.05 TIL(Django Q&A 정리) (0) | 2023.01.06 |
2023.01.03 TIL(알고리즘 CS Q&A 정리) (0) | 2023.01.04 |
2023.01.02 TIL(데이터베이스 CS Q&A 정리) (0) | 2023.01.03 |