본문 바로가기
CS지식

[신입 개발자 면접 질문] 신입 개발자 면접 cs 준비 및 기본 용어 지식

by Alkaloid 2022. 1. 18.
반응형

 

개발자로 일하기 위해 필요한 용어 정리 및 간단한 CS지식입니다.

CS지식 및 면접 질문입니다.

예를 들어서

-클러스트와 넌클러스트가 무엇인가요?

-SQL이 무엇인가요? 

 

라고 했을때 대답을 할수 있어야 합니다.

SQL이 무엇이냐는 질문에

1. DB를 할때 쓰는 문법입니다. 

2. DB를 사용할때 데이터베이스에 접근할수 있도록 하는 데이터베이스 하부언어로 DDL,DML,DCL이 있습니다. DDL은 어쩌구~~~

 

1번 대답보단 2번 대답이 더 좋겠죠?

반응형

내용은 점차 추가하겠습니다.

데이터베이스
   
  [SQL]
  //---------------------------------------------------------------//.
  데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)을 포함한 데이터베이스용 질의 언어의 일종으로
  데이터베이스를 사용할때 데이터베이스에 접근할 수 있도록 하는 데이터베이스 하부언어 이다.
  //---------------------------------------------------------------//.
   
  [테이블]
  //---------------------------------------------------------------//.
  테이블 : 행과 열로 이루어진 데이터의 집합이다.
  RDB에서는 테이블을 릴레이션이라고도 한다.
  모든 릴레이션은 테이블이지만, 모든 테이블은 릴레이션이 아니다.
  -> 조건이 충족 되어야 한다.
  1. 모든 값을 유일한 값을 가진다.
  2. 하나의 릴레이션에는 중복되는 행이 존재해서는 안된다.
  //---------------------------------------------------------------//.
   
  [ROW]
  //---------------------------------------------------------------//.
  행 : 테이블을 구성하는 데이터의 가로로 묶은 데이터셋을 의미한다.
  행은 한 객체에 대한 정보를 가지고 있다.
  튜플 또는 레코드 라고한다.
  //---------------------------------------------------------------//.
   
  [Colum]
  //---------------------------------------------------------------//.
  열 : 테이블을 구성하는 데이터의 세로를 묶은 데이터셋을 의미한다.
  열을 구성하는 값은 같은 도메인으로 되어 있다.
  속성이라고도 한다.
  //---------------------------------------------------------------//.
   
  [인덱스]
  //---------------------------------------------------------------//.
  인덱스 : 데이터베이스 테이블의 검색속도를 향상시키기 위한 자료구조이다.
   
  인덱스의 단점 : 인덱스를 구축하는 비용 발생.
  추가,삭세,수정 연산시 인덱스를 형성하기 위한 추가 연산이 필요하다.
  //---------------------------------------------------------------//.
   
   
  [클러스터 인덱스와 넌클러스트 인덱스].
  //----------------------------------------------------------------//.
  클러스터 : 디스크로부터 데이터를 읽어오는 시간을 줄이기 위해 조인이 자주 사용되는 테이블의 데이터를 디스크의 같은 위치에 저장 시키느 방법.
   
  -클러스터 인덱스.
   
  하나의 테이블에 한개만 생성이 가능하다.
  조회는 빠르지만, 수정 삽입 삭제는 느리다.
  물리적으로 행을 재배열한다.
  인덱스 페이지 용량이 넌클러스터 보다 작다.
   
   
  -넌클러스터 인덱스.
   
  하나의 테이블의 여러개 생성이 가능하다.
  조회는 느리지만, 수정 삽입 삭제가 빠르다.
  물리적으로 재배열을 하지 않는다.
  인덱스 페이지 용량이 클러스터 인덱스 보다 크다.
  //----------------------------------------------------------------//.
   
  [View]
  //---------------------------------------------------------------//.
  View : 물리적인 테이블을 근거한 논리적인 가성 테이블
   
  특징: 보안에 유리하고 , 복잡하고 긴 쿼리문을 뷰로 정의하면 단순화 할수 있다.
  //---------------------------------------------------------------//.
   
  [rollback 과 commit]
  //---------------------------------------------------------------//.
  rollback과 commit은 insert,update,delete문을 사용했을때 사용하는 쿼리문이다.
  rollback은 데이터를 수행전으로 되돌리고 싶을때 사용을 한다.
  commit은 쿼리문을 수행후 해당 결과에 대해 확정 하는 것이다.
  //---------------------------------------------------------------//.
   
  [트랜잭션]
  //---------------------------------------------------------------//.
  트랜잭션이란 : 데이터베이스의 상태를 변화시키는 하나의 논리적인 작업단위
  트랜잭션은 성공하려면 성공해야하고, 실패하려면 전부 실패 해야한다.
  //---------------------------------------------------------------//.
   
  [정규화]
  //---------------------------------------------------------------//.
  정규화 : 데이터의 중복을 방지하고, 무결성을 충족하기 위해 DB를 설계하는 것을 의미한다.
  정규화를 하지 않으면 이상현상이 발생하는데 이를 없애고자 한다.
  이상현상에는 삽입이상, 삭제이상, 삽입이상이 있다.
  //---------------------------------------------------------------//.
   
  [스키마]
  //---------------------------------------------------------------//.
  스키마 : 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다.
  (자료의 구조, 자료의 표현 방법, 자료 간의 관계)
   
  외부 스키마 : 사용자 입장에서 정의한 논리적 구조
  개념 스키마 : 조직체 전체입장에서 DB를 정의한 스키마
  내부 스키마 : 어떻게 저장될지에 대한 명세
  //---------------------------------------------------------------//.
   
  [RDBMS 와 NoSQL]
  //---------------------------------------------------------------//.
  RDBMS : 정형데이터를 저장한다.
  연산이 가능하다.
  각각의 속성과 값을 가진 테이블들은 서로 관계를 맺으며 존재한다.
  데이터의 분류, 탐색, 정렬의 속도가 비교적 빠르다.
   
  NoSQL : 비정형데이터를 저장한다.
  연산이 불가능하다.
  데이터와 테이블간의 관계를 정의하지 않는다.
  스키마가 정해져 있지 않아, 데이터에 대한 규격화가 되어 있지 않다.
  //---------------------------------------------------------------//.
   
   
  [키]
  //---------------------------------------------------------------//.
  기본키 : 유일하게 식별가능한 키로, null이 될수 없고 최대한 적은 속성을 가져야한다.
  외래키 : 다른 릴레이션을 참조하는 속성을 말한다. 참조되고 참조하는 릴레이션의 도메인이 같아야한다.
  //---------------------------------------------------------------//.
   
  [ACID]
  //---------------------------------------------------------------//.
  원자성 : 트랜잭션의 모든 연산은 완벽하게 실행되어야 하며, 실패하면 트랜잭션은 실패해야 한다.
  일관성 : 트랜잭션은 유효한 상태로만 변경할 수 있다.
  고립성 : 하나 이상의 트랜잭션이 동시에 실행될 경우 다른 트랜잭션에 영향을 받지 않고 독립적으로 실행해야 한다.
  내구성 : 트랜잭션이 커밋이 되었을때, 시스템 오류가 생겨도 커밋된 상태를 유지해야 한다.
  //---------------------------------------------------------------//.
   
  [트리거]
  //---------------------------------------------------------------//.
  트리거 : 자동으로 실행도록 정의된 프로시저이다. INSERT DELETE UPDATE에 대한 응답으로 자동 호출한다.
   
  업무 자동화를 하고 무결성을 강화하기 위해 사용한다.
  //---------------------------------------------------------------//.
   
  [Dead Lock]
  //---------------------------------------------------------------//.
  데드락 : 두 개이상의 트랜잭션이 특정 자원의 잠금을 획득한 채 다른 트랜잭션이 소유하고 있는 잠금을 요구하면 아무리 기다려도
  상황이 바뀌지 않는 상태
   
  빈도 낮추는 방법
  1. 트랜잭션을 자주 커밋
  2. 정해진 순서로 테이블 접근
  //---------------------------------------------------------------//.
   
  [참조 무결성]
  //---------------------------------------------------------------//.
  기본키와 참조키간의 관계가 항상 유지됨을 보장한다.
  참조되는 테이블의 행을 이를 참조하는 참조키가 존재하는 한 삭제 할수 없고, 기본키도 변경할 수 없다.
  //---------------------------------------------------------------//.
   
  [JOIN]
  //---------------------------------------------------------------//.
  JOIN은 서로 다른 테이블에서 하나의 결과를 도출 할때 사용하는 방법이다.
   
  INNER JOIN : 키값이 있는 테이블의 컬럼 값을 비교후 조건에 맞는 값을 가져온다.
  OUTER JOIN : 조인하는 여러 테이블에서 한쪽에 데이터가 있고, 한쪽에 없는 경우 데이터가 있는 쪽 테이블의 내용을 전부 출력하는 방법이다.
  CROSS JOIN : 조인되는 두 테이블을 곱집합을 반환한다.
  //---------------------------------------------------------------//.
반응형