운영체제

  1. 프로세스의 정의를 설명하세요

    프로세스는 실행 중인 프로그램을 의미하는 운영체제의 실행 단위로 보조기억장치에 저장된 프로그램이 실행되면 생성됩니다. 프로세스는 PCB(프로세스 제어 블록) 를 부여받고, 프로세스 마다 상태를 가지며, 메모리 상에 코드, 데이터, 스택, 힙 영역을 포함하는 독립적인 메모리 공간을 할당받습니다.

  2. 스레드는 무엇인가요?

    스레드는 프로세스 내의 작업 단위이다. 일반적으로 한 프로세스는 여러 개의 스레드를 가질 수 있으며, 스레드는 프로세스 내의 자원과 데이터를 공유한다.

  • 스레드와 프로세스의 차이는 자원 공유의 가능 여부다 (스레드는 가능 )
  1. 커널은 무엇인가요?

    운영체제의 핵심 서비스를 담당하는 한 부분으로써, 하드웨어를 비롯한 자원을 보호하고 프로세스에 할당하며, 여러 프로세스의 실행 순서를 제어하고 통신을 돕는 (IPC 통해서 )등 프로세스의 실행을 관리합니다. 또한 페이징 등의 가상 메모리 기법 을 통해 물리 메모리를 논리적인 단위로 관리하고, 파일 시스템을 통해 파일과 디렉토리를 관리하는 등의 역할을 수행합니다.

  • 운영체제의 핵심 서비스를 담당하는 한 부분?? 커널에 속해있지 않은 운영체도 있나요?
    • UI는 커널에 속해 있는 기능이 아니다.
  1. 프로세스가 CPU를 활용하다가 입출력 작업을 만나면 어떻게 되나요?

    1. 시스템 콜을 통한 입출력 요청
    2. 프로세스 상태가 대기 상태로 변경( 다른 프로세스가 실행될 기회르 얻게 된다.)
    3. 입출력 작업 수행
    4. 완료 및 준비 상태로 전환
    5. CPU 획득 및 실행 재개
  2. CPU 스케줄링이란 무엇인가요?

    운영체제가 여러 프로레스 사이에서 CPU 자원을 효율적으로 할당하고 관리하는 작업을 의미합니다. CPU 스케줄링 알고리즘을 통해 다중 프로세스 환경에서 CPU 사용을 조절하고 다양한 프로세스 가 공정하게 실행되도록 하는 역할을 합니다.

  • 꼬리질문 : CPU 스케줄링 알고리즘 중 아는 것이 있나요?
    • 답변으로는 리눅스와 구분지어서 하면 좋다.(찾아서 공부해보기)
  1. 부팅이 무엇인가요? 부팅의 과정을 서술하세요

    컴퓨터 부팅은 컴퓨터를 시작하고 운영체제를 로드하는 과정을 의미합니다. -> 운영체제도 결국은 프로그램이기 때문에 메모리에 적재가 되어야 햔다. 그 과정을 부팅과정이라고 한다.

    1. 전원 인가 (전원 버튼을 누르면 전원이 전달된다.)
    2. BIOS 시작
    3. 부트로더 시작
    4. 운영체제 적재
    5. 운영체제 초기화 및 사용자 로그인
  • 최근에는 BIOS대신 UEFI를 사용한다.
  1. 페이징은 무엇이며, 존재 이유는 무엇인가요?

    페이징은 가상 메모리 관리 기술 중 하나로

  • 물리주소의 크기보다 더 큰 논리주소를 관리할 수 있게끔 하는 것.

    물리 주소를 프레임, 논리 주소를 페이지 단위로 분리하여 메모리를 관리하는 방법이다.

  • 그럼 왜 페이징을 왜 하는지?

    • 페이징을 통해 외부 단편화를 제거할 수 있고 프로세스 간 메모리 공간을 격리할 수 있게 됩니다.

Copy-On-Wirte 여러개의 독립적인 프로세스의 메모리 낭비를 방지할 수 있다.

프로세스를 fork하면 동일한 프로세스 두 개가 메모리에 복제된다. 그 이유는 프로세스끼리는 기본적으로 자원을 공유하지 않기 때문이다.

프로세스끼리 자원을 공유하지 않으면서 별도의 메모리 공간에 자원을 중복적재 하지 않을수 있는 방법이 있다.

쓰기식 복사 (Copy-On-Write)

읽기 작업은 메모리를 복제할 필요가 없기 때문에 쓰기 작업을 할때만 복제하겠다는 방식,

  1. 메모리가 크면 무엇이 좋은가요?

    동시 실행 가능한 프로세스 수가 많아지기 때문에 프로그램 실행 속도, 멀티 태스킹 능력히 향상됩니다.

  2. 시스템 콜은 무엇이며, 존재 이유는 무엇인가요?

    운영 체제의 커널이 제공하는 서비스를 응용 프로그램이 사용할 수 있도록 하는 인터페이스입니다. 시스템 콜이 존재하는 이유는 사용자 프로그램은 자원에 직접 접근할 수 없기 때문입니다. 하드웨어를 비롯한 자원에 접근하기 위해 사용하고 프로세스 간의 통신을 비롯한 프로세스 관리를 위해 시스템 콜을 호출합니다.

  3. 스래싱은 무엇이며, 어떻게 해결할 수 있을까요?

    스래싱은 컴퓨터 시스템에서 발생하는 문제 상황으로, 지나치게 많은 페이지 폴트로 인해 대부분의 시간을 페이지 교체 작업으로 소비하게 되는 현상을 나타냅니다. 스래싱이 발생하면 시스템 성능이 급격히 저하됩니다. 이를 근본적으로 해결하기 위해서는 물리 메모리 크기를 확장할수 있습니다. 혹은 더좋은 페이지 교체 알고리즘을 변경하거나, 동시 실행 중인 프로세스의 수 (물리 메모리에 적재된 프로세스의 수)를 줄이거나 프로세스 우선순위를 조정하는 방식을 선택할 수 있습니다.

  4. 파일 시스템의 정의와 종류를 아는 대로 설명하세요

    파일 및 디렉토리를 관리하는 커널의 한 부분입니다. 데이터를 파일과 디렉톹리로 저장하고 조직화하는 역할을 담당하여 어플리케이션이 해당 데이터에 접근할 수 있도록 합니다. 대표적으로 USB 메모리 등에서 사용되는 FAT 파일 시스템, 윈도우에서 사용되는 NTFS, 리눅스에서 주로 사용되는 ext 파일 시스템(ext2, ext3, ext4), macOS에서 주로 사용되는 APFS 등이 있습니다.

  5. 커널이 입출력 인터럽트를 처리하는 과정을 설명하세요.

    1. 인터럽트 발생
    2. 현재 상태 저장
    3. 인터럽트 서비스 루틴 호출
    4. 인터럽트 서비스 루틴 수행
    5. 현재 상태 복원
    6. 프로세스 스케줄링
  6. 명령어 병렬 처리 기법은 무엇이며 대표적인 종류에는 어떤 것이 있나요?

    프로세스의 성능을 향상시키기 위해 여러 명령어가 병렬로 처리되는 기술입니다. 즉 하나의 명령어가 실행 중에 다른 명령어와 함께 독립적으로 실행될 수 있습니다. 대표적으로 파이프라이닝, 슈퍼스칼라 등이 있습니다.

  7. RAID란 무엇인가요? 종류를 아는 대로 설명하세요

    보조기억장치를 관리하는 방법중에 하나, RAID는 여러 개의 디스크를 하나의 논리적 디스크처럼 구성하여 성능, 용량, 안정성을 향상시키는 기술입니다. RAID 0은 데이터를 여러 디스크에 분산하여 저장하여 성능을 향상시키는 방식입니다. 단, 디스크가 하나라도 고장나면 전체 데이터가 손실됩니다. RAID 1은 데이터를 두개의 디스크에 완전히 복제하여 안정성을 향상시키는 방식입니다. 단, _디스크 용량이 절반으로 줄어듭니다. _

  8. 운영체제 관점에서 레이스 컨디션과 동기화의 관계를 설명해보세요

    운영체제 고나점에서 레이스 컨디션과 동기화는 서로 밀접한 관계에 있습니다. 레이스 컨디션은 여러 프로세스 또는 스레드가 공유 자원에 동시에 접근할 때 발생할 수 있는 문제입니다.

동기화는 프로세스 또는 스레드가 공유 자원에 접근할 때 충돌을 방지하기 위한 방법으로, 뮤텍스, 세마포어 등의 동기화를 통해 레이스 컨디션을 방지할 수 있습니다.

  1. 파일 디스크립터란 무엇인가요?

    파일 디스크립터는 운영체제에서 파일을 식별하는 데 사용하는 정수 값입니다. 파일을 열면 운영체제는 프로세스에 파일 디스크립터를 할당합니다. 프로세스는 파일 디스크립터를 사용하여 파일 입출력에 대한 작업을 수행할 수 있습니다.

  2. 소켓이란 무엇인가요?

    소켓은 컴퓨터 네트워크에서 프로세스 간에 데이터를 주고받기 위한 인터페이스입니다. 소켓은 프로세스가 네트워크를 통해 다른 프로세스에 연결하고, 데이터를 전송하고, 데이터를 수신할 수 있도록 합니다. 유닉스 체계 운영체제에서 이는 파일과 같이 간주되며, UDP를 사용하는 비연결형 소켓과 TCP를 사용하는 연결형 소켓이 있습니다.

  3. 하드 링크와 소프트 링크의 차이를 설명하세요.

    하드 링크는 동일한 inode를 공유하는 파일입니다.

소프트 링크는 다른 inode를 가진 파일입니다.

  1. 메모리 매핑이란 무엇이며, 왜 사용하나요?

    메모리 매핑은 메모리와 보조 저장장치(하드 디스크, SSD 등) 간의 데이터 전송 및 공유를 위한 기술입니다. 그리고 파일 메모리 매핑은 메모리 매핑을 사용하여 특정 메모리 영역에 파일을 대응시키는 과정을 의미합니다. 이는 프로세스 간의 통신을 위해 주로 사용됩니다. 한 프로세스는 메모리 매핑 된 파일에 씀으로써 데이터를 공유하고, 다른 프로세스가 해당 데이터에 읽음으로써 통신이 가능합니다.

  2. 시그널이란 무엇이며, 시그널의 예시를 설명하세요.

    시그널은 소프트웨어 인터럽트의 일종으로, 프로세스에게 특정 이벤트가 발생했음을 알리는 수단입니다. 시그널은 프로세스 간 통신, 예외 처리, 비동기 이벤트 처리, 프로세스 종료 및 다른 상황에서 사용됩니다. 시그널의 예시로 SIGINT가 있습니다. 흔히 Ctrl + C 키를 누를 때 발생하며, 프로세스를 종료하도록 요청합니다. SIGKILL또한 시그널의 예시입니다. 프로세스를 강제 종료하기 위해 사용됩니다. 프로세스는 이 시그널을 무시할 수 없으며, 바로 종료됩니다.

네트워크

  1. OSI 7 계층에 대해 설명하세요

    네트워크의 통신을 7개의 계층으로 나누어, 각 계층이 수행하는 역할과 기능을 정의한 ISO의 모델입니다. 물리 계층은 전기적, 광학적 신호를 사용하여 데이터를 전송하는 계층입니다. 데이터를 0과 1로 이루어진 비트 로 변환하고, 이를 물리적인 매체를 통해 전송합니다.

데이터 링크 계층은 데이터의 오류를 검출하고 수정하는 계층입니다. 프레임이라는 단위로 데이터를 묶어서 전송하고, 수신 측에서는 프레임을 분해하여 데이터를 추출합니다.

네트워크 계층은 데이터를 목적지에 전달하는 계층입니다. IP 주소를 사용하여 데이터를 목적지까지 전달하는 경로(라우팅)를 결정합니다. (IP 프로토콜로 주소지를 정해야 한다.)

전송 계층은 데이터를 신뢰성 있게 전달하는 계층입니다. (TCP vs UDP)

세션 계층은 데이터 전송의 시작과 종료에 관여하는 세션을 관리하는 계층입니다.

표현 계층은 데이터의 형식을 변환하는 계층입니다. 서로 다른 컴퓨터 시스템 간의 데이터 형식 차이를 해결합니다.

응용 계층은 사용자의 요구를 처리하는 계층입니다. 웹 브라우저, 이메일, 파일 전송 등 다양한 네트워크 응용 프로그램을 지원합니다.

  1. TCP 와 UDP의 차이를 설명하세요

    TCP는 신뢰할 수 있는 연결 프로토콜입니다. 데이터가 올바르게 전송되었는지 확인하기 위해 연결을 설정하고 유지합니다. TCP는 데이터의 순서를 보장하고, 손상된 데이터를 감지하고 수정하며, 패킷이 손실되지 않도록 보장합니다. 이러한 기능으로 TCP는 대용량 데이터 전송이나 신뢰성이 중요한 응용 프로그램에 적합합니다.

UDP는 비연결 프로토콜입니다. 데이터를 전송하기 위해 연결을 설정하지 않습니다. UDP는 TCP보다 효율적이지만 신뢰성은 떨어집니다. UDP는 데이터의 순서를 보장하지 않으며, 손상된 데이터를 감지하거나 수정하지 않습니다. 또한 패킷이 손실될 수 있습니다. 이러한 특성으로 인해 UDP는 대용량 데이터 전송이나 신뢰성이 중요하지 않은 응용 프로그램에 적합합니다.

  1. ARP는 무엇이며, 왜 사용되나요??

    IP주소가 무엇인지 MAC주소가 무엇인지

ARP는 네트워크 계층의 논리 주소인 IP주소와 데이터 링크 계층의 물리 주소인 간의 대응을 위해 사용하는 프로토콜입니다. 상대 호스트의 IP주소를 알지만 MAC 주소를 모르는 경우 ARP를 통해 알아낼 수 있습니다.

  1. TCP 연결 수립 과정을 설명해보세요

    3-way handshake가 무엇인지, 알고 있는지, 과정을 설명해보자

쓰리 웨이 핸드세이크를 통해 연결이 수립된다.

  1. 클라이언트가 서버에 연결을 요청합니다. : SYN 플래그가 활성화된 세그먼트를 전송합니다.
  2. 서버가 이에 응답합니다. SYN + ACK 플래그가 활성화된 세그먼트를 전송합니다.
  3. 클라이언트가 이에 응답합니다. ACK 플래그가 활성화된 세그먼트를 전송합니다.
  1. 서브넷 마스크란 무엇인가요? 예를 들어 192.168.1.100의 서브넷 마스크가 255.255.255.0라는 말의 의미는 무엇인가요?

서브넷 마스크는 IP 주소의 네트워크 부분과 호스트 부분을 구분하는 데 사용되는 32비트의 숫자입니다. 서브넷 마스크는 2진수로 표시되며, 1은 네트워크 부분을 나타내고 0은 호스트 부분을 나타냅니다.

예시의 경우 IP 주소의 네트워크 부분이 192.168.1이고 호스트 부분이 100임을 나타냅니다.

  1. 쿠키는 무엇이고 어디에 (왜) 사용되나요??

    쿠키는 클라이언트의 상태를 짐작하기 위해 서버가 생성하고 클라이언트가 저장하는 정보입니다. HTTP는 기본적으로 상태를 유지하지 않는 프로토콜이기 때문에 서버는 클라이언트의 상태를 알 수 없지만, 쿠키를 이용하면 클라이언트의 상태를 알 수 있게 됩니다. 서버는 Set-Cookie헤더로 클라이언트에 쿠키를 전달하고 클라이언트는 Cookie헤더로 서버에 쿠키를 전달할 수 있습니다. (쿠키에는 도메인과 path를 설정할 수 있다.)

  2. www.example.com이라는 (opens in a new tab) 도메인이 리졸빙되는 과정을 설명하세요 (도메인 이름을 보고 IP 주소를 알아내는 과정에 대해)

    웹 브라우저에 google.com을 쳤을 때 발생하는 일에 대해 설명하라는 문제임.

  1. DNS 캐시에 있는지 먼저 확인 (있다면 캐시된 데이터 확인)
  2. 로컬 DNS 서버 --> 루트 DNS 서버
  3. 루트 DNS 서버 --> TLD 서버
  4. TLD 서버 --> authoritative 서버
  5. authoritative 서버를 통해 www.example.com의 (opens in a new tab) IP 주소를 알았다면 로컬 DNS 서버에 전달
  1. 리다이렉션은 무엇이며, 왜 사용하나요?

    리다이렉션은 클라이언트가 요청한 자원이 다른 곳에 있음을 알리는 응답으로, 웹 사이트가 재구성되거나 URL이 변경되었을 때 URL을 간소화해야 할 때, 클라이언트의 페이지를 임시 URL로 이동해야 할 때 사용됩니다. 또 캐시된 데이터를 사용 가능한지 여부를 알려주기도 합니다.

  2. HTTP 400대 오류와 500대 오류의 차이를 설명해보세요

    HTTP 400대 오류는 클라이언트 오류로, 문제의 원인이 클라이언트에 있음을 나타냅니다. 같은 요청을 여러 번 보내도 성공하지 않을 가능성이 높습니다.

HTTP 500대 오류는 서버 오류로, 문제의 원인이 서버에 있음을 나타냅니다. _같은 요청을 여러 번 보내면 다른 결과가 나올 수 있습니다. _

  1. 포트란 무엇인가요? 그 중에서 웰 노운 포트는 무엇인가요?

    포트는 특정 호스트의 애플리케이션을 식별하기 위한 정보입니다. 포트 번호의 유형에는 일반적인 프로토콜(FTP, HTTP) 이 주로 사용하는 포트 번호를 나타내는 웰 노운 포트가 있으며, 이는 0~1023번 포트입니다.

  2. ICMP는 어디에 사용되는 프로토콜인가요?

    굉장히 멀고도 가까운 프로토콜이다 ㅋㅋ

ICMP는 네트워크를 진단한 정보를 확보하거나 오류를 보고하기 위해 사용됩니다. ICMP를 사용하는 대표적인 명령어로 ping이 있습니다. ping은 네트워크 도달 가능성을 알 수 있는 대표적인 ICMP기반의 명령어입니다.

  1. TCP의 혼잡 제어에 대해 설명해보세요.

    네트워크 내 처리할 패킷이 많아 패킷이 유실될 확률이 높은 상황을 혼잡하다고 한다. TCP는 이러한 네트워크 혼잡 상황을 제어할 수 있는 혼잡 제어 알고리즘을 제공합니다. 대표적으로 느린 시작, 혼잡 회피 등이 있습니다. 이러한 알고리즘은 혼잡 윈도우라고 불리는 변수를 사용하는데, 혼잡 윈도우는 송신자가 네트워크로 데이터를 보낼 수 있는 최대 양을 나타냅니다.

  2. 잘 되던 인터넷이 갑자기 안될 경우 대처 방법을 차근차근 설명해보세요.

    1. 물리적 연결확인
    2. 방화벽 및 보안 프로그램 검토
    3. 외부 연결 확인 : ping을 구글 public dns (8.8.8.8)에 보내본다.
    4. 내부 연결 확인 : ping을 라우터(공유기)에 전송해본다.
  3. 트래픽이 과도하게 몰릴 경우 웹 서버를 어떻게 구성하면 좋을까요?

    로드 밸런서를 도입하여 트래픽을 여러 웹 서버로 분산합니다. 오토 스케일링을 통해서도 부하를 분산할 수 있으므로, 가능하다면 오토 스케일링을 통해 자동으로 스케일 아웃 되도록 구성합니다. 정적 콘텐츠(이미지, CSS, JS)에 대한 캐싱을 활성화하여 동일한 콘텐츠를 반복적으로 생성하는 대신 클라이언트에게 캐시된 버전을 제공합니다. DB를 사용할 경우 이 또한 이중화합니다.

  1. 부하를 줄인다. -> 로드밸린서와 같은 명시적인 장치
  2. 서버를 증설 -> 오토 스케일링
  3. 서버가 할 일을 줄임 -> 캐싱, DB를 이중화 하거나, CDN을 이용하거나
  1. HTTP의 캐시를 검증하기 위한 방법을 설명하세요

    신선한지 검토를 해야하는데 어떻게 할 수 있을까?

If-None-Match 헤더를 통해 Etag를 검사하는 방법 If-Modified-Since 헤더를 통해 List-Modifed를 검사하는 방법이 있습니다. 304 Not Modifed를 응답받을 경우 캐시된 데이터를 활용해도 무방합니다. (캐시된 데이터가 변화가 없다면 서버는 304를 응답한다.)

  1. Connection : Keep-Alive 헤더가 의미하는 것은 무엇인가요?

    HTTP의 지속 연결을 나타냅니다. 지속연결이란 하나의 TCP 연결을 통해 여러 요청-응답 메세지를 주고받을 수 있는 기능을 의미합니다.

  2. IPv4가 있는데 IPv6가 생긴 이유는 무엇인가요?

  • 쉽게 이야기하면 더 많은 ip를 할당하기 위해서 생긴것

IPv4는 32비트 크기의 주소를 활용하며 약 43억개의 주솔ㄹ 제공할 수 있습니다. 이는 전세계 호스트에 할당 가능할 만큼 넉넉한 개수가 아니기 때문에 128비트 주소 공간을 가진 IPv6가 등장한 것이다.

  • 꼬리질문 : 왜 아직까지 IPv4가 많이 사용되는지 ?

    하나의 공인 IP주소를 여러개의 사설 IP주소로 관리할 수 있는 방법이 있는데 IP주소의 고갈을 막을 수 있다고 들었습니다.

  1. UDP가 TCP보다 빠른 이유는 무엇인가요?

    TCP와는 달리 연결을 수립하는 과정이 없고, 데이터의 순서를 보장할 필요가 없으며, 흐름제어 및 혼잡 제어의 알고리즘을 적용할 필요도 없습니다. (연결성도 신뢰성도 보장 할 필요가 없습니다.)

  2. 쿠키는 보안에 민감한가요? 만일 그렇다면, 쿠키의 보안성을 향상할 수 있는 방법에는 어떤 것들이 있나요??

    쿠키는 보안에 민감하다. (예민한 데이터, 비밀번호 이런거 전송하면 안됨!! )

이를 보완하기 위해 Secure 플래그를 사용하여 HTTPS에서만 쿠키를 사용하도록 하거나 HttpOnly 플래그를 통해 Javascript를 통한 쿠키 접근을 막을 수 있습니다.

애초에 쿠키에 민감한 정보를 포함시키면 안된다.

  1. HTTP 메서드 중 PUT과 PATCH의 차이를 설명해보세요
  • PUT은 자원을 대체하기 위한 요청 메서드입니다. 메세지 본문으로 덮어쓰기하는 것과 같습니다.
  • PATCH는 자원에 대한 부분 수정을 위한 요청 메서드입니다.

데이터 베이스

  1. 관계형 데이터 베이스 RDBMS와 NoSQL의 차이를 설명해보세요

    관계형 데이터베이스는 데이터를 테이블 형태로 저장하는 데이터베이스입니다. 테이블은 행과 열로 구성되어 있으며 행은 각 데이터 레코드를 나타냅니다. 관계형 데이터베이스를 다루기 위해 흔히 SQL이 사용됩니다. 반면 NoSQL은 RDB와 달리 데이터의 구조를 자유롭게 설정할 수 있는 데이터베이스입니다. 대용량의 비정형 데이터에 적합합니다.

  2. 트랜잭션의 원자성이란 무엇이며, 그를 왜 보장해야 하나요??

    트랜잭션의 원자성은 트랜잭션이 성공적으로 완료되거나 완전히 실패해야 한다는 것을 의미합니다. 즉, 트랜잭션의 모든 작업이 성공적으로 완료되거나, 모든 작업이 실패해야 합니다. 트랜잭션의 원자성을 보장하는 이유는 데이터베이스의 데이터를 일관되게 유지하기 위함입니다.

  3. 데이터베이스에서 인덱스를 사용하는 이유는 무엇인가요??

있어도 되고 없어도 되지만 핵심은 검색 성능을 향상시키기 위한 자료구조!

데이터베이스에서 인덱스란 데이터베이스 테이블에 대한 검색 성능을 향상시키기 위한 자료구조입니다.

  • 꼬리질문 : 그럼 인덱스를 사용하면 무조건 좋은 건가요?

    그건 아니다. 인덱스를 생성하고 저장하는데에 비용, 용량이 소요됩니다. 또한 조회가 적은 데이터에 대해서는 성능이 저하될 수 있습니다.

  1. Stored Procedure란 무엇인가요? (스토어드 프로시져)

    모듈화된 SQL 쿼리 블록입니다. 사전에 정의되고 저장되며, 필요할 때 호출하여 실행할 수 있습니다.

  2. Inner Join과 Outer Join을 설명하세요

    Inner Join은 마치 교집합과 유사하다.

Inner Join과 Outer join은 데이터베이스에서 테이블의 데이터를 결합하는데 사용되는 SQL 연산자입니다. Inner Join은 두 개 이상의 테이블에서 공통 열을 기반으로 합치는 방식으로, 교집합과 유사합니다. Outer Join은 두 테이블 간의 데이터를 결합하되, 일치하지 않는 행도 결과에 포함시키는 방식입니다. Outer join에는 Left Outer Join, Right Outer Join, Full Outer Join이 있습니다.

  1. SQL 문 중 HAVING절은 무엇인가요?

    GROUP BY절에 의해 그룹화된 데이터를 검색하기 위한 조건을 지정하는 절입니다. HAVING절은 WHERE절과 유사하지만, WHERE절은 테이블의 개별 행을 검색하기 위한 조건을 지정하는 반면, HAVING 절은 그룹화된 데이터를 검색하기 위한 조건을 지정한다는 점에서 차이가 있습니다.

  2. 회원 테이블에서 회원을 삭제하면 회원이 작성한 글도 함께 글 테이블에서 삭제하고 싶습니다. 테이블을 어떻게 설계하면 좋을까요??

    외래키 추가하도록 설계

글 테이블의 열이 회원 테이블의 행을 참조하도록 외래키를 설계합니다. 또한 on delete cascade로 회원 테이블의 행이 삭제되면 연쇄적으로 삭제되도록 제약조건을 추가합니다.

  1. 뷰(View)는 무엇인가요? 사용하는 이유는 무엇인가요?

    데이터베이스의 뷰는 SELECT 문의 결과로 만든 가상의 테이블입니다. 이는 실제 테이블은 아니지만 사용자에게 편리하고 직관적인 인터페이스를 제공하기 위해 사용됩니다.

  2. ACID가 무엇인지 설명해보세요

    ACID란 데이터베이스의 트랜잭션이 지켜야 할 성질입니다. 각각 원자성, 일관성, 격리성, 지속성을 의미합니다.
    >원자성 은 트랜잭션이 하나의 단위로 처리되어야 함을 의미합니다. 즉, 트랜잭션의 일부가 실패하면 전체 트랜잭션이 실패해야합니다
    >일관성 은 트랜잭션이 실행되면 데이터베이스는 일관된 상태를 유지해야 함을 의미합니다.
    >격리성 은 트랜잭션이 서로 독립적으로 실행되어야 함을 의미합니다. 한 트랜잭션이 다른 트랜잭션의 데이터를 변경해서는 안됩니다.
    >지속성 은 트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 유지되어야 함을 의미합니다.

  3. DDL, DCL, DML에 대해 설명해보세요

    관계형 데이터 베이스를 다루기 위한 언어인 DDL, DCL, DML로 나눌 수 있습니다.

  • DDL은 구조를 정의하는 언어입니다.
  • DCL은 데이터베이스 자체를 조작하거나 권한을 관리하는 언어입니다.
  • DML은 데이터베이스의 데이터를 조작하는 언어입니다.