본문 바로가기
개발/개발자 취업준비

[개발자 기술면접] 프로세스와 쓰레드, 멀티프로세스와 멀티 쓰레드, 쿼리 최적화, DB로직 최소화 Q.8-11

by 코딩하는짱구 2023. 9. 22.
반응형

주니어 개발자에게 기대되는 것은 실력보다도 CS지식, 그리고 본인이 쓰는 언어에 대한 이해라고 한다. 취업을 준비하며 매일 매일 5개 이상의 기술면접 관련 질문을 정리하기로 했다.

[개발자 기술면접] TDD에 대해서 설명해주세요. 

1. 프로세스와 쓰레드에 대해서 설명하고 그 차이에 대해서 설명해주세요.

2. 멀티프로세스와 멀티쓰레드의 특징에 대해 설명해주세요.

3. 쿼리 최적화에 대해 설명해주시고 방법에 대해 설명해주세요.

4. DB 로직 최소화를 하려면 어떻게 해야 할까요?

추천글

위의 목차를 클릭하면 해당 글로 자동 이동 합니다.

 

1. 프로세스와 쓰레드에 대해서 설명하고 그 차이에 대해서 설명해주세요

나의답변: 프로세스와 쓰레드란 프로그램의 실행 단위입니다. 프로세스는 CPU당 하나가 존재하며 독립적으로 운영되고, 쓰레드는 프로세스 안에 포함되며 프로세스 안에서 여러개의 쓰레드가 운영되므로 자원을 공유합니다. 

모범답안: 프로세스와 쓰레드 모두 컴퓨터 프로그램 실행단위 입니다. 프로세스는 독립적인 실행단위로, 운영체제에서 실행되며 독립적입니다. 쓰레드는 프로세스 내에서 실행되는 실행 단위로, 프로세스 내부에서 자원을 공유하며 같은 프로세스 내에서 여러개의 쓰레드가 병행하여 실행될 수 있습니다. 

추가로 알아둬야할 내용: 프로세스 간 전환 비용보다 쓰레드 간 전환 비용이 낮으며, 각 프로세스는 완전히 독립적이므로 하나의 프로세스가 실패하더라도 다른 프로세스는 영향을 받지 않으나 쓰레드는 같은 프로세스 내에서 실행되기 때문에 하나의 쓰레드에서 발생한 오류가 전체 프로세스에 영향을 줄 수 있다. 

 

2. 멀티프로세스와 멀티쓰레드의 특징에 대해 설명해주세요.

나의답변: 멀티프로세스란 다중코어 시스템에서 여러개의 프로세스가 전환되며 실행하는 것을 말하고, 멀티 쓰레드란 하나의 프로세스 안에서 다수의 쓰레드를 실행하는 것을 말합니다. 멀티프로세스는 멀티쓰레딩에 비해 전환 비용이 높으나 독립적으로 운영되기 때문에 하나의 프로세스가 실패하더라도 다른 프로세스에 영향을 주지 않지만 멀티쓰레딩은 하나의 프로세스 안에서 자원을 공유하므로 하나의 쓰레드가 실패할 시 전체 프로세스에 영향을 줄 수 있다는 특징이 있습니다. 

모범답안: 멀티프로세스와 멀티쓰레드는 다중 작업을 처리하는 방식입니다. 멀티프로세스에서 각 프로세스는 독립적이며 하나의 프로세스 오류가 다른 프로세스에 영향을 미치지 않습니다. 다중 프로세스는 병렬로 실행 됩니다. 멀티쓰레드는 같은 프로세스 내에서 관리되며 쓰레드간 전환 비용이 낮습니다. 같은 프로세스 내에서 실행되기 때문에 하나의 쓰레드에서 발생한 오류가 전체 프로세스에 영향을 줄 수 있습니다. 멀티쓰레드는 동시에 실행될 수 있습니다.

 

3. 쿼리 최적화에 대해 설명해주시고 방법에 대해 설명해주세요.

나의답변: 데이터를 빠르게 불러오기 위해 쿼리를 최적화하는 것을 말합니다.

모범답안: 쿼리 최적화를 하는 이유는 데이터를 빠르게 가져오기 위함 입니다. 쿼리 최적화의 방법에는 쿼리를 효율적으로 작성하는법, 인덱싱 사용, 데이터 베이스 시스템의 실행계획 분석, 캐싱 사용 등이 있습니다. 

쿼리 옵티마이저란? 
쿼리 옵티마이저는 대부분의 주요 데이터베이스 관리 시스템에 내장되어 있다. (MySQL, PostgreSQL, MongoDB등 모두 자체적인 쿼리 옵티마이저를 갖고있다) -> 이러한 옵티마이저는 해당 DBMS의 특정 기능과 튜닝 방법을 고려하여 최적의 실행 계획을 선택하도록 설계되어있다. -> 해당 시스템의 데이터 모델, 인덱싱 방식, 조인 전략 등을 고려하여 최적화를 수행한다. -> 사용자가 쿼리 실행 계획을 직접 제어해서 옵티마이저의 동작을 조정할 수 있다. 

조인 최적화란?
조인: 두 개 이상의 테이블에서 데이터를 결합하여 원하는 결과를 얻는 데 사용된다. 
조인 최적화: 효율적인 조인의 순서와 알고리즘, 유형을 선택하여 최적화 시키는 것.

 

4. DB 로직 최소화를 하려면 어떻게 해야 할까요?

DB로직최소화 : 데이터 베이스와 관련된 작업을 최소화 하고 효율적으로 처리하게 하는 것

나의답변: 3계층 구조를 통해 repository 코드를 작성하여 로직을 최소화 합니다. 데이터 베이스와 상호 작용하는 계층에서 연결, 쿼리를 담당합니다..? 모르겠다

모범답안: 일관적인 데이터모델링을 계획하고 비즈니스로직을 분리하거나 자주 사용되는 데이터를 캐싱처리해서 DB 트랜잭션을 최소화 시켜야 합니다.  

**Redis 에서 데이터를 빠르게 가져올 수 있는 이유
1. 메모리 기반 데이터 저장: Redis 는 메모리 기반 데이터 베이스로 데이터에 접근하는 속도가 매우 빠르다.
2. Key-value 저장 방식: 간단한 저장 방식을 사용하여 액세스가 빠르다.
3. 캐싱 및 세션 관리: 주로 캐싱 관리 용도로 사용되는 경향, PostgreSQL과 같은 관계형 데이터 베이스는 복잡한 데이터 조작을 처리하기 위해 사용

 

 

추천글

https://velog.io/@wkdtmddus/DB-%EB%A1%9C%EC%A7%81-%EC%B5%9C%EC%86%8C%ED%99%94

 

DB 로직 최소화

DB 로직 최소화를 위해서는 데이터베이스와 관련된 작업을 최적화하고 효율적으로 처리하는 방법을 적용해야 합니다. 일관된 데이터 모델링 : -- 데이터베이스 테이블과 엔티티를 일관성 있게

velog.io

 

반응형