-
1. STT란 무엇인가?
-
2. 게이미피케이션이란 무엇인가?
-
3. AI 추천 기능은 어떻게 구현하는가?
-
4. 프로젝트를 진행하면서 다양한 트러블 슈팅을 한 것으로 보여지는데, 문제 접근을 어떻게 했고, 어떻게 풀어갔는가?
-
5. 배포를 직접 수동으로 진행한 것 같은데, Github Actions나 Jenkins를 사용해볼 생각은 없었는지?
-
6. 프롬프트 엔지니어링에 대해서 아는가? 안다면 아는대로 설명해주세요.
-
7. 파이썬의 리스트와 튜플의 차이점을 비교 설멍해주세요.
-
8. Lambda와 Def의 주된 차이점을 설명해주세요.
-
9. Call by value와 Call by reference의 차이
-
10. ORM이란?
-
11. N+1 문제란? 해결방법은?
-
12. 장고의 쿼리셋(지연로딩과 즉시로딩)
-
13. 의존성이란?
-
14. Decorator는 무엇이고 언제 사용해야 하는가?
-
15. append와 extend의 차이점
-
16. Django 요청 처리 프로세스에 대한 설명
-
17. 장고의 wsgi는 어떤 방식(비동기 또는 동기)으로 통신하는가? 만약, 대용량 데이터가 유입되면 어떻게 동작하는가?
-
18. 스레드와 프로세스의 차이점
-
19. 스택과 큐 자료구조에 대한 설명
-
20. TCP와 UDP 통신 방식의 차이점
1. STT란 무엇인가?
STT는 "Speech-to-Text"의 약자로, 음성을 텍스트로 변환하는 기술을 말합니다. 음성 인식 시스템이 소리로 입력된 데이터를 분석하여 해당하는 텍스트를 생성합니다. 이를 통해 음성 명령이나 음성 기반 서비스 등을 구현할 수 있습니다.
2. 게이미피케이션이란 무엇인가?
게이미피케이션은 게임의 요소와 기법을 게임이 아닌 다른 분야에 적용하여 사용자 참여를 유도하고 동기부여를 강화하는 방법입니다. 예를 들어, 포인트, 배지, 리더보드 등을 활용해 학습, 업무, 마케팅 등의 분야에서 흥미와 몰입도를 높이는 것이 목표입니다.
3. AI 추천 기능은 어떻게 구현하는가?
AI 추천 기능은 매장의 정보를 담은 데이터베이스와 사용자의 입력을 받아 선호할 만한 항목을 DB의 메뉴목록에서 예측하여 추천하고 거기에 어울리는 추천 맨트를 정하여 추천하는 방식으로 구현이 되어 있습니다.
4. 프로젝트를 진행하면서 다양한 트러블 슈팅을 한 것으로 보여지는데, 문제 접근을 어떻게 했고, 어떻게 풀어갔는가?
오류가 발생을 하였을 때에 우선적으로 진행했던 부분으로는 문제의 원인을 찾기위해 오류코드를 보고 문제가 발생한 코드의 위치를 찾고 오류가 발생한 원인에 대해서 코드가 실제로 출력하는 결과 값고 내가 원하는 결과 값이 맞게 나오는지 실제로 코드를 실행해 보고, 장고의 test.py를 이용해서 각 상황에 맞게 결과를 내보낼수 있는지 테스트를 해보았었고 문제요인이 외부의 요인으로 인해 생긴 문제의 경우는 라이브러리의 교체 또는 기기를 변경하는 식으로 테스트를 하여 문제를 해결하였습니다.
5. 배포를 직접 수동으로 진행한 것 같은데, Github Actions나 Jenkins를 사용해볼 생각은 없었는지?
다른 클라우드 서비스를 많이 알아보지는 못했지만 aws의 다양한 클라우드 서비스와 도구로 인하여 보안 및 인증까지 한 곳에서 해결 할 수 있다는 장점을 가지고 있어 배포에서는 aws를 적극적으로 사용하여 서버를 구성하게 되었습니다.
6. 프롬프트 엔지니어링에 대해서 아는가? 안다면 아는대로 설명해주세요.
프롬프트 엔지니어링은 인공지능(AI) 모델과 상호작용할 때 입력 문장이나 질문을 설계하는 과정입니다. AI 모델이 원하는 답변을 정확하고 효율적으로 생성하도록 유도하는 데 중점을 둡니다. 여기서 AI 모델이 효율적으로 응답하도록 유도하는 기술로, 프롬프트의 설계와 최적화를 통해 모델의 성능과 사용자 경험을 향상시킬 수 있습니다.
7. 파이썬의 리스트와 튜플의 차이점을 비교 설멍해주세요.
파이썬에서 리스트와 튜플의 주요 차이점은 변경 가능성입니다. 튜플이 리스트보다 메모리를 덜 사용하고, 더 빠르게 동작할 수 있습니다. 변경이 필요하지 않은 데이터에는 튜플을 사용하는 것이 효율적입니다. 다만 데이터의 수정이 필요할 시에는 리스트를 사용하여 요소를 추가, 삭제, 수정할 수 있습니다.
8. Lambda와 Def의 주된 차이점을 설명해주세요.
lambda와 def는 모두 파이썬에서 함수를 정의하는 방법이지만, lambda는 단일 표현식으로 간결하게 작성됩니다. 간단한 기능을 빠르게 구현할 때 주로 사용합니다. def의 경우 정식으로 함수를 정의할 때 사용합니다. 여러 줄의 코드와 복잡한 로직을 포함할 수 있습니다. 또한 코드의 재사용성에서도 유리합니다.
9. Call by value와 Call by reference의 차이
함수 호출 시 인자를 전달하는 방식의 차이를 설명하는 개념입니다.
Call by Value의 경우 값에 의한 호출로 함수에 인자를 전달할 때, 인자의 값을 복사하여 함수에 전달하는 방식입니다. 이로 인해 함수 내부에서 인자의 값을 변경해도 원래 변수에는 영향을 미치지 않습니다.
(Python에서는 숫자, 문자열, 튜플 등 불변(immutable) 객체가 이에 해당)
반대로 Call by Reference는 참조에 의한 호출로 함수에 인자를 전달할 때, 인자의 참조 (메모리 주소)를 전달하는 방식입니다. 함수 내부에서 인자를 변경하면, 원래 변수에도 영향을 미칩니다.
(Python에서는 리스트, 딕셔너리 등 가변(mutable) 객체가 이에 해당)
10. ORM이란?
ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어를 사용하는 개발자가 데이터베이스를 쉽게 다룰 수 있도록 해주는 기술입니다. Django의 경우에도 ORM을 이용하여 데이터베이스의 쿼리를 직접 작성하지 않고 데이터베이스를 조작할 수 있습니다.
11. N+1 문제란? 해결방법은?
N+1 문제는 데이터베이스 쿼리 최적화와 관련된 성능 문제로, ORM을 사용할 때 종종 발생합니다.
데이터 베이스를 조회하는 방법로 인하여 불필요한 조회 횟수가 일어나는 경우인데, 이를 해결하기 위해서는 필요한 모든 데이터를 한 번의 쿼리로 미리 로드 하거나 한 번의 쿼리로 여러 개의 연관된 객체를 조회, 쿼리를 최적화하여 데이터베이스 접근을 최소화, ORM의 자동 로딩 기능 대신 직접 SQL JOIN 쿼리를 작성하여 성능을 개선하는 방법이 있습니다.
12. 장고의 쿼리셋(지연로딩과 즉시로딩)
지연 로딩은 쿼리셋(QuerySet)이 실제로 필요할 때까지 데이터베이스 쿼리를 실행하지 않는 방식입니다.
즉시 로딩은 연관된 객체를 함께 가져오는 방식으로, 연관된 객체를 별도의 쿼리 없이 한번에 로드하여 N+1 문제를 방지합니다.
- 지연 로딩 (Lazy Loading): 쿼리셋이 필요할 때까지 쿼리를 지연시키며, 필요 시점에 쿼리가 실행됩니다. 불필요한 쿼리 실행을 방지하지만, N+1 문제를 초래할 수 있습니다.
- 즉시 로딩 (Eager Loading): 연관된 객체를 함께 로드하여 성능을 최적화합니다. select_related와 prefetch_related를 사용하여 쿼리 수를 줄이고 성능을 개선할 수 있습니다.
13. 의존성이란?
의존성(Dependency)은 한 소프트웨어 모듈이나 컴포넌트가 다른 모듈이나 컴포넌트에 의존하여 기능을 수행하는 상태를 의미합니다. 즉, 특정 소프트웨어가 정상적으로 작동하기 위해 필요한 외부 자원이나 다른 소프트웨어 모듈을 가리킵니다.
하나의 소프트웨어가 다른 라이브러리, 프레임워크, 패키지 또는 모듈에 의존할 때, 이를 의존성이라고 합니다.
14. Decorator는 무엇이고 언제 사용해야 하는가?
데코레이터는 코드 재사용, 기능 확장, 관심사의 분리의 용도로 주로 사용이 되며,
데코레이터를 사용하면 기존 코드에 영향을 주지 않고도 함수나 메서드의 기능을 추가하거나 변경할 수 있습니다.
15. append와 extend의 차이점
append와 extend는 파이썬 리스트에서 요소를 추가하는 메서드이지만, 그 사용 방식과 결과가 다릅니다.
append의 경우 리스트의 끝에 단일 요소를 추가합니다. extend 경우에는 리스트에 다른 iterable(반복 가능한 객체)의 모든 요소를 추가합니다.
16. Django 요청 처리 프로세스에 대한 설명
Django의 요청 처리 프로세스는 클라이언트의 요청을 받아서 적절한 응답을 생성하고 반환하는 과정을 포함합니다.
1. 클라이언트로 부터 요청 수신 → 2. 미들웨어 처리 (요청 전) → 3. URL 매핑 → 4. 뷰 처리 → 5. 템플릿 렌더링 → 6. 미들웨어 처리 (응답 전) → 7. 응답 반환
17. 장고의 wsgi는 어떤 방식(비동기 또는 동기)으로 통신하는가? 만약, 대용량 데이터가 유입되면 어떻게 동작하는가?
Django의 WSGI(Web Server Gateway Interface)는 주로 동기 방식으로 통신합니다. 이로 인해 요청 처리는 한 번에 하나의 요청만 처리하며, 각 요청은 순차적으로 처리됩니다.
만약 대용량의 데이터를 처리해야 하는 상황에서는 ASGI를 이용하여 비동기처리를 할 수 있습니다.
18. 스레드와 프로세스의 차이점
스레드(Thread)와 프로세스(Process)는 컴퓨터 프로그램에서 병렬 처리를 구현하기 위한 두 가지 주요 단위입니다.
프로세스는 실행 중인 프로그램의 인스턴스입니다. 운영체제에서 독립적으로 실행되는 단위로, 메모리와 시스템 자원을 독립적으로 할당받습니다.
스레드는 프로세스 내에서 실행되는 가벼운 실행 단위입니다. 같은 프로세스 내에서 여러 스레드가 동시에 실행될 수 있습니다.
19. 스택과 큐 자료구조에 대한 설명
스택은 LIFO(Last In, First Out) 원칙을 따릅니다. 즉, 가장 마지막에 추가된 데이터가 가장 먼저 제거됩니다.
큐는 FIFO(First In, First Out) 원칙을 따릅니다. 즉, 가장 먼저 추가된 데이터가 가장 먼저 제거됩니다.
20. TCP와 UDP 통신 방식의 차이점
TCP의 경우 연결지향성 인터넷 연결 프로토콜이며 연결의 신뢰성을 위해 3 Way hand shake를 사용하여 안정적인 데이터 전송을 보장합니다. 또한 UDP의 경우는 비연결 지향적 프로토콜로 송신자는 수신자가 준비가 되어 있는지 여부를 확인하지 않고 데이터를 그냥 보내어 빠른 전송을 유지할 수 있습니다.
'코딩 정리함' 카테고리의 다른 글
Oauth 2.0란? & JWT 토큰의 사용? (1) | 2024.09.27 |
---|---|
객체지향 프로그래밍(OOP)이란? (0) | 2024.09.23 |
면접 질문 대비 + CS 공부 (0) | 2024.08.27 |
면접 대비 질문 (0) | 2024.08.26 |
Docker를 사용하는 이유 (0) | 2024.08.26 |
1. STT란 무엇인가?
STT는 "Speech-to-Text"의 약자로, 음성을 텍스트로 변환하는 기술을 말합니다. 음성 인식 시스템이 소리로 입력된 데이터를 분석하여 해당하는 텍스트를 생성합니다. 이를 통해 음성 명령이나 음성 기반 서비스 등을 구현할 수 있습니다.
2. 게이미피케이션이란 무엇인가?
게이미피케이션은 게임의 요소와 기법을 게임이 아닌 다른 분야에 적용하여 사용자 참여를 유도하고 동기부여를 강화하는 방법입니다. 예를 들어, 포인트, 배지, 리더보드 등을 활용해 학습, 업무, 마케팅 등의 분야에서 흥미와 몰입도를 높이는 것이 목표입니다.
3. AI 추천 기능은 어떻게 구현하는가?
AI 추천 기능은 매장의 정보를 담은 데이터베이스와 사용자의 입력을 받아 선호할 만한 항목을 DB의 메뉴목록에서 예측하여 추천하고 거기에 어울리는 추천 맨트를 정하여 추천하는 방식으로 구현이 되어 있습니다.
4. 프로젝트를 진행하면서 다양한 트러블 슈팅을 한 것으로 보여지는데, 문제 접근을 어떻게 했고, 어떻게 풀어갔는가?
오류가 발생을 하였을 때에 우선적으로 진행했던 부분으로는 문제의 원인을 찾기위해 오류코드를 보고 문제가 발생한 코드의 위치를 찾고 오류가 발생한 원인에 대해서 코드가 실제로 출력하는 결과 값고 내가 원하는 결과 값이 맞게 나오는지 실제로 코드를 실행해 보고, 장고의 test.py를 이용해서 각 상황에 맞게 결과를 내보낼수 있는지 테스트를 해보았었고 문제요인이 외부의 요인으로 인해 생긴 문제의 경우는 라이브러리의 교체 또는 기기를 변경하는 식으로 테스트를 하여 문제를 해결하였습니다.
5. 배포를 직접 수동으로 진행한 것 같은데, Github Actions나 Jenkins를 사용해볼 생각은 없었는지?
다른 클라우드 서비스를 많이 알아보지는 못했지만 aws의 다양한 클라우드 서비스와 도구로 인하여 보안 및 인증까지 한 곳에서 해결 할 수 있다는 장점을 가지고 있어 배포에서는 aws를 적극적으로 사용하여 서버를 구성하게 되었습니다.
6. 프롬프트 엔지니어링에 대해서 아는가? 안다면 아는대로 설명해주세요.
프롬프트 엔지니어링은 인공지능(AI) 모델과 상호작용할 때 입력 문장이나 질문을 설계하는 과정입니다. AI 모델이 원하는 답변을 정확하고 효율적으로 생성하도록 유도하는 데 중점을 둡니다. 여기서 AI 모델이 효율적으로 응답하도록 유도하는 기술로, 프롬프트의 설계와 최적화를 통해 모델의 성능과 사용자 경험을 향상시킬 수 있습니다.
7. 파이썬의 리스트와 튜플의 차이점을 비교 설멍해주세요.
파이썬에서 리스트와 튜플의 주요 차이점은 변경 가능성입니다. 튜플이 리스트보다 메모리를 덜 사용하고, 더 빠르게 동작할 수 있습니다. 변경이 필요하지 않은 데이터에는 튜플을 사용하는 것이 효율적입니다. 다만 데이터의 수정이 필요할 시에는 리스트를 사용하여 요소를 추가, 삭제, 수정할 수 있습니다.
8. Lambda와 Def의 주된 차이점을 설명해주세요.
lambda와 def는 모두 파이썬에서 함수를 정의하는 방법이지만, lambda는 단일 표현식으로 간결하게 작성됩니다. 간단한 기능을 빠르게 구현할 때 주로 사용합니다. def의 경우 정식으로 함수를 정의할 때 사용합니다. 여러 줄의 코드와 복잡한 로직을 포함할 수 있습니다. 또한 코드의 재사용성에서도 유리합니다.
9. Call by value와 Call by reference의 차이
함수 호출 시 인자를 전달하는 방식의 차이를 설명하는 개념입니다.
Call by Value의 경우 값에 의한 호출로 함수에 인자를 전달할 때, 인자의 값을 복사하여 함수에 전달하는 방식입니다. 이로 인해 함수 내부에서 인자의 값을 변경해도 원래 변수에는 영향을 미치지 않습니다.
(Python에서는 숫자, 문자열, 튜플 등 불변(immutable) 객체가 이에 해당)
반대로 Call by Reference는 참조에 의한 호출로 함수에 인자를 전달할 때, 인자의 참조 (메모리 주소)를 전달하는 방식입니다. 함수 내부에서 인자를 변경하면, 원래 변수에도 영향을 미칩니다.
(Python에서는 리스트, 딕셔너리 등 가변(mutable) 객체가 이에 해당)
10. ORM이란?
ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어를 사용하는 개발자가 데이터베이스를 쉽게 다룰 수 있도록 해주는 기술입니다. Django의 경우에도 ORM을 이용하여 데이터베이스의 쿼리를 직접 작성하지 않고 데이터베이스를 조작할 수 있습니다.
11. N+1 문제란? 해결방법은?
N+1 문제는 데이터베이스 쿼리 최적화와 관련된 성능 문제로, ORM을 사용할 때 종종 발생합니다.
데이터 베이스를 조회하는 방법로 인하여 불필요한 조회 횟수가 일어나는 경우인데, 이를 해결하기 위해서는 필요한 모든 데이터를 한 번의 쿼리로 미리 로드 하거나 한 번의 쿼리로 여러 개의 연관된 객체를 조회, 쿼리를 최적화하여 데이터베이스 접근을 최소화, ORM의 자동 로딩 기능 대신 직접 SQL JOIN 쿼리를 작성하여 성능을 개선하는 방법이 있습니다.
12. 장고의 쿼리셋(지연로딩과 즉시로딩)
지연 로딩은 쿼리셋(QuerySet)이 실제로 필요할 때까지 데이터베이스 쿼리를 실행하지 않는 방식입니다.
즉시 로딩은 연관된 객체를 함께 가져오는 방식으로, 연관된 객체를 별도의 쿼리 없이 한번에 로드하여 N+1 문제를 방지합니다.
- 지연 로딩 (Lazy Loading): 쿼리셋이 필요할 때까지 쿼리를 지연시키며, 필요 시점에 쿼리가 실행됩니다. 불필요한 쿼리 실행을 방지하지만, N+1 문제를 초래할 수 있습니다.
- 즉시 로딩 (Eager Loading): 연관된 객체를 함께 로드하여 성능을 최적화합니다. select_related와 prefetch_related를 사용하여 쿼리 수를 줄이고 성능을 개선할 수 있습니다.
13. 의존성이란?
의존성(Dependency)은 한 소프트웨어 모듈이나 컴포넌트가 다른 모듈이나 컴포넌트에 의존하여 기능을 수행하는 상태를 의미합니다. 즉, 특정 소프트웨어가 정상적으로 작동하기 위해 필요한 외부 자원이나 다른 소프트웨어 모듈을 가리킵니다.
하나의 소프트웨어가 다른 라이브러리, 프레임워크, 패키지 또는 모듈에 의존할 때, 이를 의존성이라고 합니다.
14. Decorator는 무엇이고 언제 사용해야 하는가?
데코레이터는 코드 재사용, 기능 확장, 관심사의 분리의 용도로 주로 사용이 되며,
데코레이터를 사용하면 기존 코드에 영향을 주지 않고도 함수나 메서드의 기능을 추가하거나 변경할 수 있습니다.
15. append와 extend의 차이점
append와 extend는 파이썬 리스트에서 요소를 추가하는 메서드이지만, 그 사용 방식과 결과가 다릅니다.
append의 경우 리스트의 끝에 단일 요소를 추가합니다. extend 경우에는 리스트에 다른 iterable(반복 가능한 객체)의 모든 요소를 추가합니다.
16. Django 요청 처리 프로세스에 대한 설명
Django의 요청 처리 프로세스는 클라이언트의 요청을 받아서 적절한 응답을 생성하고 반환하는 과정을 포함합니다.
1. 클라이언트로 부터 요청 수신 → 2. 미들웨어 처리 (요청 전) → 3. URL 매핑 → 4. 뷰 처리 → 5. 템플릿 렌더링 → 6. 미들웨어 처리 (응답 전) → 7. 응답 반환
17. 장고의 wsgi는 어떤 방식(비동기 또는 동기)으로 통신하는가? 만약, 대용량 데이터가 유입되면 어떻게 동작하는가?
Django의 WSGI(Web Server Gateway Interface)는 주로 동기 방식으로 통신합니다. 이로 인해 요청 처리는 한 번에 하나의 요청만 처리하며, 각 요청은 순차적으로 처리됩니다.
만약 대용량의 데이터를 처리해야 하는 상황에서는 ASGI를 이용하여 비동기처리를 할 수 있습니다.
18. 스레드와 프로세스의 차이점
스레드(Thread)와 프로세스(Process)는 컴퓨터 프로그램에서 병렬 처리를 구현하기 위한 두 가지 주요 단위입니다.
프로세스는 실행 중인 프로그램의 인스턴스입니다. 운영체제에서 독립적으로 실행되는 단위로, 메모리와 시스템 자원을 독립적으로 할당받습니다.
스레드는 프로세스 내에서 실행되는 가벼운 실행 단위입니다. 같은 프로세스 내에서 여러 스레드가 동시에 실행될 수 있습니다.
19. 스택과 큐 자료구조에 대한 설명
스택은 LIFO(Last In, First Out) 원칙을 따릅니다. 즉, 가장 마지막에 추가된 데이터가 가장 먼저 제거됩니다.
큐는 FIFO(First In, First Out) 원칙을 따릅니다. 즉, 가장 먼저 추가된 데이터가 가장 먼저 제거됩니다.
20. TCP와 UDP 통신 방식의 차이점
TCP의 경우 연결지향성 인터넷 연결 프로토콜이며 연결의 신뢰성을 위해 3 Way hand shake를 사용하여 안정적인 데이터 전송을 보장합니다. 또한 UDP의 경우는 비연결 지향적 프로토콜로 송신자는 수신자가 준비가 되어 있는지 여부를 확인하지 않고 데이터를 그냥 보내어 빠른 전송을 유지할 수 있습니다.
'코딩 정리함' 카테고리의 다른 글
Oauth 2.0란? & JWT 토큰의 사용? (1) | 2024.09.27 |
---|---|
객체지향 프로그래밍(OOP)이란? (0) | 2024.09.23 |
면접 질문 대비 + CS 공부 (0) | 2024.08.27 |
면접 대비 질문 (0) | 2024.08.26 |
Docker를 사용하는 이유 (0) | 2024.08.26 |