CS 기본 지식

xogjs·2023년 4월 23일

공부

목록 보기
1/10
post-thumbnail

CS 기본 지식

1. 프로세스와 스레드 차이(운영체제)
  • 프로세스 : 운영체제로부터 자원을 할당받아 실행
  • 스레드 : 프로세스로부터 자원을 할당받아 실행
  • 하나의 프로세스 안에 여러 스레드 생성 가능
  • 각 스레드는 개별 스택을 가지고, 프로세스의 전역 메모리 공간을 공유하며 프로그램을 실행
  • 보통 프로세스는 코드 / 데이터 / 스택 / 힙 / 메모리 영역을 기반으로 실행
  • 스레드는 프로세스 안에서 개별적인 스택을 가지고 코드 / 데이터 / 힙영역을 공유하며 실행
2. 스크립트 언어와 컴파일러 언어의 차이
  • 인터프리터 언어 : 코드가 실행되는 단계인 런타임에 문 단위 한 줄씩 중간 코드 바이트코드로 변환 후 실행

    -인터프리트 과정이 반복 수행

    • 인터프리트 단계와 실행 단계가 분리 되어있지 않다.
    • 한줄 씩 바이트코드로 변환하고 즉시 실행
    • 실행파일을 생성 하지않는다.
  • 컴파일러 언어 : 코드가 실행되기 전 단계인 컴파일 타임에 소스코드 전체를 한번에 머신코드로 변환후 실행

    -실행 파일을 생성한다

    • 최적화 작업을 진행하고 실행파일을 생성하기때문에 코드 실행 속도가 인터프리터 보다 빠르다.
    • 실행에 아펏 컴파일은 단 한번만 수행된다.
  • 자바스크립트는 일반적으로 인터프리터 언어로 구분하지만, 인터프리터와 컴파일러의 장점을 결합해 비교적 처리 속도가 느린 인터프리터의 단점을 해결

  • 파이썬 > 인터프리터 언어

3. 동기와 비동기의 장단점
  • 동기 : 구성이 단순하고 순서대로 실행 가능해서 예측이 가능하다.
  • 비동기 : 동시에 여러일을 수행할 수 있음.
4. 데이터베이스에서 인덱스를 사용하는 이유와 장단점
  • 인덱스는 데이터를 논리적으로 정렬해서 검색과 정렬 속도를 높이기 위해 사용
  • 데이터 삽입, 변경이 수시로 일어나면 매번 인덱스를 변경해야하므로 성능 저하를 막기 위한 고려가 필요하다.
  • 그래서 리액트에서 Key는 인덱스로 지정하면 안되는 경우가 더 많다(주로 유일한 값을 Key에 지정) -> 인덱스는 변화가 발생할 경우가 많기에
5, Redis와 MongoDB 차이
  • 둘다 No SQL 방식 사용
  • 몽고 DB가 Document 형식으로 데이터를 저장하는데, 반해 Redis는 Key:value 형식으로 데이터를 저장함.
  • Redis는 인메모리 DB로 데이터를 메모리에 저장하고 관리하기 때문에 성능이 좋지만, 데이터를 유한하게 저장하기 때문에 키쉬등과 같이 데이터의 저장기한이 있고, 빠른성능이 필요한 기능에 사용됨.
  • 몽고 DB는 MySQL처럼 서버 - 클라이언트 방식으로 설치해서 사용.
  • MySQL과 같은 SQL방식이 아니므로 가변적 데이터 구조를 다루는데 유용
TCP, UDP 차이와 장단점
  • UDP : 비연결형 프로토콜로 흐름제어, 오류제어를 하지 않음
  • TCP : 연결형 프로토콜로 흐름제어, 오류제어를 함
  • UDP는 TCP처럼 종단간 연결 설정 및 오류제어를 하지 않아 송수신에 적은 데이터를 필요
  • TCP는 UDP보다 데이터 송수신에 신뢰성을 가짐
오버라이딩 VS 오버로딩
  • 오버라이딩 : 상위클래스에 존재하는 매서드를 하위 클래스에 맞게 재정의 하는 것 매서드 이름 및 파라미터 수가 동일
  • 오버 로딩 : 두 매서드가 같은 이름을 가지고 있으나 파라미터 수나 자료형이 다른 경우

자료 구조 & 알고리즘

해쉬 테이블
  • Key : Value로 저장하는 데이터구조

  • 키를 통해 바로 데이터를 받아올 수 있어 속도가 획기적으로 빨라짐

  • 해쉬 : 임의 값을 고정길이로 변환하는 것

  • 해쉬 테이블 : 키 값의 연산에 의해 직접 접근이 가능한 데이터 구조

  • 해쉬 값 / 해쉬 주소 : 키를 해싱 함수로 연산해서 해쉬 값을 알아내고 이를 기반으로 해쉬 테이블에서 해당 키에 대한 데이터 위치를 일관섬있게 찾을 수 있음

  • 슬롯 : 한 개의 데이터를 저장할 수 있는 공간

  • 저장할 데이터에 대해 키를 추출할 수 있는 별도 함수도 존재할 수 있음

  • 출처 https://velog.io/@joy37/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-CS-%EC%A7%80%EC%8B%9D-%EC%A0%95%EB%A6%AC

0개의 댓글