본문 바로가기

Til

Til 24.03.29 모의 면접준비

  1. 지수 백오프 알고리즘을 설명하시오
    • 네트워트 통신에서 재전송을 제어하는데 사용되는 알고리즘
    • 예 ) 데이터를 전송하고 응답을 받지 못했을때 일정시간을 기다렸다가 재전송시도
    • 만약 실패하면 기다리는 시간을 지수적으로 증가시키면서 재전송을 시도함
    • -> 이 과정은 전송충돌을 방질하고 네트워크 혼잡을 줄임
  2. 이진 트리와 이진 탐색 트리(BST)의 차이점은 무엇인가요?
    1. 이진트리 : 각 노드가 최대 두개의 자식노드를 가지는 트리 
    2. 이진탐색트리 : 
      1. 모든 왼쪽 서브트리의 값은 현재 노드의 값보다 작다
      2. 모든 오른쪽 서브 트리의 값은 현재 노드의 값보다 큼
      3. 각 서브트리도 이진 탐색트리여야함
  3. 데이터베이스에서 Index는 무엇이며 왜 사용하나요?
    1. 언제 사용하며 어떻게 구현할 수 있나요?
      • Index는 데이터베이스에서 검색 속도를 향상시키기 위해 사용
      • Index는 특정컬럼에 대한 정렬된 데이터 구조로 검색 및 정렬작업을 빠르게 함
      • Index는 자주 검색되는 데이터를 빠르게 찾을수 있도록 해주며, 퀴리의 성능을 향상시킴
      • 일반적으로 Select 쿼리에서 where절에 사용되는 칼럼에  Index를 생성
      • Index는 일반적으로 B-tree 나 Hash table 과 같은 자료구조로 구현
    2. 그럼 모든 컬럼에 대해 Index를 설정할 수 있을까요?
      • 모든 칼럼에 인덱스를 설정할수 있지만 이는 권장되지 않음
        • 인덱스를 설정하면 데이터베이스의 크기가 증가하고 Insert , Update , Delete작업의 성능이 저하될수 있음
          • 따라서 , 자주 검색되는 컬럼에 대해서만 인덱스를 설장하는것이 일반적
  4. SQL 과 NoSQL 데이터베이스는 어떤 차이가 있나요? 그러한 차이를 고려했을 때 어떤 경우에 SQL 과 NoSQL 데이터베이스를 사용해야 하는지 설명해주세요.
    • SQL 데이터베이스는 관계형 데이터베이스 시스템을 의미하며 테이블간의 관계를 갖고있음 - 데이터 스키마듣 사전에 정의 되어야함
    • NoSQL 데이터베이스는 비관계현 데이터베이스 시스템으로 , 유연한 스키마를 가지고 있거나 스키마가 필요하지 않을수 있음( 스키마(Schema)는 데이터베이스에서 데이터 구조, 데이터베이스 객체(테이블, 인덱스 등), 제약 조건 등을 정의하는 것 )
    • SQL 데이터 베이스는 원자성 일관성 격리성 지속성 ->일명 ACID로 알려진 트랜잭션을 지원하는 반면 , No SQL데이터 베이스는 대부분은 기본가용성 , 손실 가능성 , 무결성 유연성을 따른다
    • SQL데이터 베이스는 복잡한 쿼리와 트랜잭션을 지원하며 No SQL 데이터 베이스는 대규모 데이터 분산환경에서의 확장성과 유연성을 강조한다.
  5. 가장 좋아하는 정렬 알고리즘이 있나요? 왜 그 알고리즘을 좋아하나요? 해당 알고리즘의 동작 방식에 대해서 설명해주실 수 있나요?
    • 안정적이고 대부분의 경우에 좋은 성능을 제공하는 병렬정렬을 선호함
      • 병렬정렬은 분할정복 알고리즘의 한 예로, 리스트를 반으로 나누고 각각을 정렬한 다음 합병하여 정렬된 리스트를 생성함 
        • 이 알고리즘은 재귀적으로 동작하며 시간복잡도는 O(n log n)이다
  6. 도서관에서 도서에 대한 정보를 저장하는 웹사이트를 개발한다고 하고 각 도서에 대한 정보를 담는 자료구조를 만들어야할 때, 어떤 자료구조를 왜 사용할 것인가요?
    • 해시맵(Hash map ) 이나 이진 탐색 트리 (Binary Search Tree)를 사용해 도서정보를 저장할것같음
      • 해시맵은 도서의 고유한 식별자를 키로 사용하여 효율적으로 도서 정보를 저장하고 검색할수 있음
      • 이진 탐색트리는 도서를 정렬된 순서로 저장하여 범위기반 검색을 지원함
  7. 정렬 알고리즘에서 일반적으로 가장 빠른 정렬 알고리즘을 설명해주세요.
    • 일반적으로 가장빠른 알고리즘은 퀵정렬(Quick sort)
      • 리스트를 분할 하고 각 부분을 독립적으로 정렬한 다음 결과를 합병함
      • 시간복잡도 O(n log n )
      • 분할정복 알고리즘중 하나임
  8. 논리적 설계와 물리적 설계에 대해서 상세히 설명해주세요.
    1. 논리적 설계 :
      1. 데이터 베이스의 논리적 구조를 정의 하는 단계로, 엔티티 속성및 관계를 설계
      2. 개념적 모델을 묘사 하고 데이터 베이스가 어떻게 사용될지에 대한 개념을 제공
    2.  물리적 설계:
      1. 논리적 설계를 실제 데이터 베이스 관리 시스템(DBMS)에 구현하는 단계
      2. 이 단계에서는 테이블, 인덱스 , 뷰 및 기타객체를 생성하고 저장공간 할당및 접근 경로 등과 같은 물리적 구현 세부사항을 결정
  9. SQL에서 JOIN에 대해서 상세히 설명해주세요.
    • JOIN은 두개 이상의 테이블에서 데이터를 결합하는데 사용된다.
    • 일반적으로 관련된 열 사이의 관계를 사용하여 행을 결합한다.
    • 종류 : INNER JOIN , LEFT JOIN, RIGHT JOIN , FULL OUTER JOIN등이 있음
    • 데이터 베이스에서 관계형데이터를 쉽게 검색하고 조작할수 있게함 
  10. 퀵 소트 알고리즘에서 최악의 시간복잡도를 방지하기 위한 방법에 대해서 설명해주세요.
    • 퀵 소트는 최악의 경우에도 O(n^2)의 시간복잡도를 가짐
    • 최악을 방지하기 위해서는 pivot 을 선택하는 방법을 최적화 해야함
    • 일반적으로 중간값 을 pivot 으로 선택하거나  pivot을 무작위로 선택하는 방법을 사용해 최악의 시나리오발생확률을 줄임
    • 또한 작은 배열에서는 다른 정렬 알고리즘(삽입정렬 등 ) 을 사용하는방법도 있음 

 

 

----헷갈리는 말 ----

재귀적(Recursive)이란 함수나 알고리즘이 자기 자신을 호출하는 것을 의미합니다. 이는 주어진 문제를 작은 문제로 분할하고, 작은 문제의 해결 방법을 이용하여 전체 문제의 해결 방법을 구하는 기법입니다.

재귀적으로 정의된 함수는 일반적으로 두 가지 부분으로 나뉩니다:

  1. 베이스 케이스(Base Case): 재귀 함수가 자기 자신을 호출하지 않고 즉시 결과를 반환하는 종료 조건입니다. 이는 함수 호출의 종료 조건을 정의하고 무한 반복을 방지합니다.
  2. 재귀 케이스(Recursive Case): 함수가 자기 자신을 호출하여 더 작은 입력값에 대한 결과를 계산하는 부분입니다. 이는 주어진 문제를 더 작은 하위 문제로 분할하고, 작은 하위 문제에 대한 결과를 이용하여 전체 문제의 해결 방법을 구하는 과정을 나타냅니다.

 

스키마(Schema)는 데이터베이스에서 데이터 구조, 데이터베이스 객체(테이블, 인덱스 등), 제약 조건 등을 정의하는 것을 말합니다. 스키마는 데이터베이스에 저장될 데이터의 구조와 형식을 정의하며, 데이터베이스 시스템이 데이터를 저장, 검색 및 조작하는 데 필요한 규칙과 구조를 제공합니다.

스키마는 데이터베이스의 "계획서"나 "도면"으로 생각할 수 있습니다. 데이터베이스에서는 스키마를 사용하여 테이블, 열, 데이터 유형, 관계, 제약 조건 등을 정의합니다. 이러한 정의는 데이터베이스 시스템이 데이터를 효과적으로 저장, 검색 및 관리할 수 있도록 합니다.

스키마는 크게 두 가지 유형으로 나뉩니다:

  1. 물리적 스키마(Physical Schema): 실제로 데이터가 저장되는 방식을 정의합니다. 이는 데이터베이스 시스템의 내부 구조를 나타내며, 데이터의 저장소 및 접근 방법 등을 포함합니다.
  2. 논리적 스키마(Logical Schema): 데이터의 논리적 구조를 정의합니다. 이는 데이터베이스의 사용자가 데이터를 이해하고 조작하는 방법을 나타냅니다. 테이블, 열, 관계 등이 논리적 스키마에 속합니다.

스키마는 데이터의 일관성과 무결성을 유지하는 데 중요한 역할을 합니다. 또한 여러 사용자 및 응용 프로그램 간의 데이터 공유와 상호 운용성을 보장합니다.