Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

9주차 모의 면접 질문 정리 (OS 3.4, DB 4.1~4.3) #35

Open
kyeong-hyeok opened this issue Mar 14, 2024 · 0 comments
Open

9주차 모의 면접 질문 정리 (OS 3.4, DB 4.1~4.3) #35

kyeong-hyeok opened this issue Mar 14, 2024 · 0 comments
Assignees
Labels
DB This issue or pull request already exists done OS OS

Comments

@kyeong-hyeok
Copy link
Contributor

CPU 선점 스케줄링과 비선점 스케줄링에 대해 설명해 주세요.

  • CPU 선점 스케줄링: 한 프로세스가 cpu를 할당받아서 실행하고 있을 때 다른 프로세스가 cpu를 사용하고 있는 프로세스를 중지시키고 cpu를 차지할 수 있는 스케줄링 기법
  • 비선점 스케줄링: 이미 사용되는 cpu를 빼앗지는 못하고 사용이 끝날 때 까지 기다리는 스케줄링 기법

CPU 스케줄링이란 무엇인가?

  • 현재 실행 중인 프로세스에서 다른 프로세스로 CPU를 넘겨야할 때 준비 큐에 있는 프로세스 중에서 어떤 프로세스를 선택할 지에 대한 정책
  • CPU를 사용하려고 하는 프로세스 사이의 우선순위를 관리하는 작업

트랜잭션의 성질을 말씀해보세요.

  • Atomicity는 트랜잭션의 연산이 DB에 모두 반영되던지 전혀 반영이되지 않던지 둘중에 하나만 수행해야한다.(원자성)
  • Consistency는 트랜잭션이 성공적으로 완료된 후에는 언제나 일관성 있는 DB상태로 변환되어야한다.(일관성)
  • Isolation은 수행중인 트랜잭션이 완전히 완료되기 전에는 다른 트랙잭션에서 수행 결과를 참조할 수 없다.(독립성)
  • Durablility는 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.(영속성)

테이블에 대해서 설명해 주세요.

  • 데이터베이스에서 정보를 구분하여 저장하는 기본 단위
  • 구성 요소
    • 레코드(튜플): 테이블에 쌓이는 행 단위의 데이터
    • 속성: 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보

트랜잭션의 격리 수준을 설명해주세요.

  • READ UNCOMMITTED: 다른 트랜잭션에서 커밋되지 않은 내용도 참조할 수 있다.
  • READ COMMITTED: 다른 트랜잭션에서 커밋된 내용만 참조할 수 있다.
  • REPEATABLE READ: 트랜잭션에 진입하기 이전에 커밋된 내용만 참조할 수 있다.
  • SERIALIZABLE: 트랜잭션에 진입하면 락을 걸어 다른 트랜잭션이 접근하지 못하게 한다. (성능 매우 떨어짐)

데이터베이스 무결성 중에서 하나를 설명해주세요.

  • 참조 무결성 : 서로 참조관계에 있는 두 테이블의 데이터는 항상 일관된 값을 유지해야합니다.

제2정규화

  • 릴레이션이 제1정규형이며 부분 함수의 종속성을 제거한 형태를 말함
  • 부분 함수의 종속성 제거란 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인 것을 말함

제3정규화

  • 제2정규화이고 기본키가 아닌 모든 속성이 이행적 함수 종속을 만족하지 않는 상태
  • 이행적 함수 종속: A→B, B→C가 존재하면 논리적으로 A→C 성립. C가 A에 이행적으로 함수 종속

기본키와 슈퍼키의 차이는?

  • 기본키는 유일성과 최소성을 만족하지만 슈퍼키는 유일성만 만족한다.
  • 슈퍼키 중에서 후보키가 선택되고 후보키 중에서 기본키가 선택된다.

반정규화

  • 반정규화 de-normalization: 정규화된 엔티티, 속성, 관계에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법
  • 즉, 성능 향상을 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정을 의미한다. 반정규화를 적용하면 데이터 무결성이 깨질 수 있는 위험이 있다.

트랜잭션을 병행할 때 발생할 수 있는 문제점을 설명해 주세요.

  • 팬텀 리드: 한 트랜잭션 내에서 동일한 쿼리를 보냈을 때 해당 조회 결과가 다른 경우 (행 값이 달라지거나 다른 행이 선택될 수 있음)
  • 반복 가능하지 않은 조회: 한 트랜잭션 내의 같은 행에 두 번 이상 조회가 발생했는데 그 값이 다른 경우 (행 값이 달라질 수 있음)
  • 더티 리드: 한 트랜잭션이 실행 중일 때 다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 행의 데이터를 읽을 수 있을 때 발생

트랜잭션에 대해서 설명해 주세요.

  • 트랜잭션이란 데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위라고 할 수 있으며, 트랜잭션에는 여러 개의 연산이 수행될 수 있습니다.
  • 트랜잭션은 수행 중에 한 작업이라도 실패하면 전부 실패하고, 모두 성공해야 성공이라고 할 수 있습니다.
  • commit: 여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어로 트랜잭션 단위로 수행되며 변경된 내용이 모두 영구적으로 저장됨
  • rollback: 트랜잭션으로 처리한 하나의 묶음 과정을 일어나기 전으로 돌리는 일

트랜잭션 전파

  • 여러 트랜잭션 관련 메서드의 호출을 하나의 트랜잭션에 묶이도록 하는 것
  • Spring Framework에서 @transactional 애노테이션을 통해 여러 관련 코드들을 하나의 트랜잭션으로 처리
@kyeong-hyeok kyeong-hyeok added DB This issue or pull request already exists OS OS labels Mar 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
DB This issue or pull request already exists done OS OS
Projects
None yet
Development

No branches or pull requests

3 participants