1. 파이썬의 self 키워드란?
파이썬 클래스에서 인스턴스 매서드를 정의 할 때에 self를 사용하여 자신의 인스턴스의 접근을 할 수 있도록 하여 같은 클래스안에 있는 매서드의 객체의 속성이나 접근을 할 수 있도록 합니다.
이를 이용하여 각각 다른 값을 가지는 인스턴스를 생성 할 수 있습니다.
2. 파이썬의 메모리 할당하는 방식은?
파이썬에서는 각 객체를 메모리에 저장을 하고 변수는 이러한 객체를 참조하여 저장이 됩니다. 또한 참조 카운팅이라는 메모리 관리 기법을 이용하여 각 객체를 참조하는 카운트를 각 객체가 가지고 있으며 카운트가 0이 되면 더 이상 사용되는 않는 객체로 판단되어 메모리에서 해제 됩니다.
3. GC란?
GC는 가비지컬렉터의 약자로 파이썬에서 사용되지 않는 메모리를 찾아 자동으로 해제하여 메모리의 누수를 방지하고 메모리 관리를 쉽게 해주는 매커니즘을 말합니다. 가비지 컬렉터를 이용하여 프로그래머가 직접 메모리를 해제 할 필요를 줄여줍니다.
4. Opencv란?
Opencv는 실시간으로 컴퓨터의 이미지를 처리하는 오픈 소스 라이브러리이며 이를 통해 이미지를 처리 및 얼굴인식, 이미지 분석, 웹캠등을 동작하게 하는 기능을 할 수 있게 합니다.
5. STT란? 어떤 라이브러리를 사용해서 기능을 완성 시켰는가?
STT는 "Speech-to-Text"의 약자로 음성데이터를 텍스트로 변환하는 기술입니다. 저희 프로젝트에서 처음에는 구글에서 지원하는 gstt를 이용하다가 프론트엔드에서 음성인식기능을 이용하기 위해서 브라우저에서 기본적으로 지원하는 기능을 이용한 stt를 사용했습니다.
6. Redis란?
레디스는 오픈소스의 인메모리 데이터 저장소로 데이터베이스, 캐시, 큐 등의 용도로 사용이 되며 높은 속도와 낮은 지연 시간을 가지고 있어 잠시동안 보관을 해야하는 데이터를 저장해 두기 용의 하며 웹 어플리케이션의 캐시이용에 많이 사용이 됩니다.
7. ORM이란?
ORM은 객체-관계 매핑을 의미하며, 객체 관계 프로그래밍 언어와 관계형 데이터 베이스 간의 데이터 변환을 자동으로 처리하는 기술을 의미하며 이를 통해 SQL 쿼리를 작성하지 않아도 데이터베이스와 상호작용을 할 수 있습니다. Django는 ORM를 기본 적으로 지원을 하고 있어 간단한 설정으로 데이터베이스를 작업할 수 있습니다.
8. RDB와 NoSQL의 정의와 비교
RDB는 테이블 형식의 정형화된 데이터 모델을 사용하며 데이터 간의 관계와 규칙이 정해저 있어 무결성을 유지하기 좋습니다.
NoSQL은 RDB와 다른 관계형 데이터 베이스가 아닌 다양한 데이터 모델을 지원하는 데이터 베이스이며, 정해진 스키마가 없어 데이터의 구조를 유연하게 변경이 가능하여 다양한 데이터를 저장할 수 있습니다.
9. list와 Tuple의 정의와 차이점
리스트와 튜플을 데이터를 저장하고 다루는 시퀸스 타입이며, 리스트의 경우 순서와 크기를 변경할 수 있는 데이터 타입을 가지고 있으나 튜플의 경우에는 한 번 선언된 데이터를 변경 및 추가가 불가능하여 고정된 데이터 사용에 이용이 됩니다.
10. 깊은 복사와 얕은 복사
데이터가 들어있는 변수를 다른 변수의 선언을 할 때에 얕은 복사의 경우 같은 메모리 주소를 참조하게 되어 복사된 변수의 값이 변경이 되었을 때에 기존의 변수의 데이터도 같이 변경이 됩니다. 반대로 깊은 복사의 경우 다른 메모리 주소에 같은 값을 넣어 별개의 메모리 주소를 가지고 있기 때문 한쪽의 변수가 수정이 되더라고 다른 변수가 수정이 되지 않습니다.
11. 파이썬의 데코레이터
데코레이터는 함수나 매서드의 기능을 추가하거나 수정하는 데 사용이 되는 패턴이며, 특정함수가 실행 전후에 작업을 수행하거나 결과를 조작하기에 유용합니다. 함수위에 @을 붙여 사용을 할 수 있습니다.
12. N+1 문제의 원인과 해결 방법
객체-관계 매핑(ORM) 라이브러리에서 일어나는 상황이며, 데이터베이스에 불필요한 많은 수의 쿼리가 실행되면서 성능이 저하되는 현상으로 이러한 문제를 해결 하기위해서 불필요한 쿼리의 접속을 줄이고 처음 쿼리 실행에 최대한 많은 데이터를 가져와 해당 데이터로 코드를 실행시키는 방향으로 최적화 하여 사용할 수 있습니다.
13. 트랜잭션이란?
트랜잭션은 데이터베이스 시스템에서 데이터의 일관성과 무결성을 보장하기 위해 사용되는 개념이며, 원자성, 일관성, 격리성, 지속성으로 총 4가지의 속성을 만족하도록 해야합니다.
14. 트랜잭션의 ACID 특징
트랜젝션이 완료되면 그 결과가 영구적으로 저장이 되어야 하며, 시스템의 장애가 발생하더라도 결과가 보존되어 있어야 합니다.
15. FBV와 CBV는 각각 무엇이며, 어떤 차이가 있는가
FBV(Functional-Based Views)와 CBV(Class-Based Views)는 Django에서 웹 애플리케이션의 요청을 처리하는 두 가지 주요 방식입니다. FBV의 경우는 단일 함수로 정의 되며 함수는 요청을 처리 받고 응답은 반환합니다. 구조가 간단하고 직관적이므로 간단한 작업시에 용의 하며, CBV의 경우 클래스를 사용하여 정의 합니다. 이 방식은 각 메서드(GET, POST, DELETE, PUT)에 대하여 각각 처리를 할 수 있도록 할 수 있습니다.
16. Django ORM에서 queryset과 object의 차이점
QuerySet은 데이터베이스에서 특정 조건에 맞는 객체의 집합을 나타냅니다. 지연 평가를 통해 메모리와 성능 효율성을 높이고 여러가지의 객체를 한 번에 처리하기에 용의하며 필터링 및 조작에 유용합니다.
또한 Model의 경우는 개별의 데이터 레코드를 나타내며 직접 속성을 수정하고 저장할 수 있습니다. 데이터베이스의 특정 행을 다룰 때 사용 됩니다.
17. Django ORM에서 정참조와 역참조
정참조는 한 모델이 다른 모델을 참조하는 것을 의미합니다. 이는 일반적으로 외래 키(ForeignKey)를 사용하여 구현됩니다.
역참조는 외래 키를 통해 관계를 설정한 모델에서, 정참조가 설정된 모델을 통해 원래 모델의 관련 객체를 조회하는 것입니다. Django는 자동으로 역참조 매니저를 생성하며, related_name 속성을 통해 사용자 정의 이름을 지정할 수 있습니다.
18. 장고가 요청을 받아서 처리되는 과정 설명
클라이언트의 HTTP 요청이 WSGI 서버를 통해 Django에 전달되어 요청 URL에 맞는 View 함수로 실행하여 처리한 다음 데이터가 템플릿을 통해 HTML로 변환 및 반환하여 클라이언트를 통해 화면에 표시됩니다.
19. 웹 서버란?
웹 서버는 클라이언트의 HTTP 요청을 수신하고 처리하여 적절한 응답을 반환하는 소프트웨어 또는 하드웨어 시스템입니다. 웹 서버는 정적 콘텐츠를 제공하고, 동적 요청을 처리하는 데 중요한 역할을 합니다.
20. 다대다 관계란?
두 테이 간에 서로 다수의 관련 항목이 존재하는 관계입니다. 다대다 관계를 구현하기 위해 중간 테이블(조인 테이블)을 사용하여 두 엔티티 간의 관계를 표현합니다. 예를 들어, 학생과 수업 간의 관계에서 학생 한 명이 여러 수업을 수강할 수 있고, 하나의 수업에 여러 명의 학생이 참여할 수 있습니다. 웹페이지에서는 좋아 기능에 해당합니다.
'코딩 정리함' 카테고리의 다른 글
CS 면접 예상 질문 답변 (0) | 2024.08.23 |
---|---|
CS 기술 면접 준비 (0) | 2024.08.21 |
⭐AI 코딩 교육 내일배움캠프를 경험한 나의 실제 후기⭐ (0) | 2024.06.24 |
모의 면접 준비 (0) | 2024.04.16 |
정렬은 어떻게 하는 것 일까? (1) | 2024.03.06 |