컴공 기초

후후니·2021년 10월 25일
0

1. 프로그램과 프로세스, 스레드에 대한 설명

  • 하나의 프로그램이 여러 프로세스를 가질 수 있다.
  • 프로세스는 싱글 스레드 또는 멀티 스레드로 작동할 수 있다.
  • 프로레스는 프로그램이 메모리에 적재되어 운영체제로부터 필요한 공간, 파일, 메모리를 할당받는다.
  • node.js의 Event Loop는 싱글 스레드로 작동되지만, Worker pool은 멀티 스레드로 작동된다. 즉, node.js의 초기화와 callback은 Event loop라는 하나의 프로세스, 하나의 스레드에서 작동되지만, I/O Intensive, CPU intensive한 모듈은 Worker pool에서 작동한다.

2. 스레드에 대한 설명

  • 프로세스 내에서 실행되는 흐름의 단위를 의미한다.
  • 프로세스 내 스레드는 call stack을 공유한다.
  • 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받습니다. 스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유한다.
  • 싱글 코어에서 동시에 돌릴 수 있는 스레드 수는 한개 뿐이다.

3. 메모리에 대한 설명

  • 메모리 주소는 16진법으로 표현한다.
  • 32비트 운영체제에서는 최대 4GB만을 사용할 수 있다.
  • 메모리는 하드디스크보다 읽기/쓰기 속도가 빠르다.
  • 32bit 운영체제와 64bit 운영체제는 처리할 수 있는 데이터의 단위가 32bit, 64bit로 차이가 나기 때문에 사용할 수 있는 최대 메모리의 용량도 다르고, 메모리 주소의 값의 크기도 다릅니다.

4. 가비지 컬렉션에 대한 내용

  • 가비지 컬렉션은 프로그램에서 더 이상 쓰지 않는 메모리를 찾아서 회수하는 기능이다.
  • 가비지 컬렉터가 내장되어 있는 프로그래밍 언어로는 C#, 자바, 자바스크립트 등이 있다. (c++, c에는 x)
  • 가비지 컬렉션의 방법으로는 트레이싱, 레퍼런스 카운팅 등의 방법이 있다.
  • 가비지 컬렉션은 개발자가 직접 메모리를 다룰 때에 생길 수 있는 메모리 누수를 방지할 수 있다.

5. 이진 파일과 텍스트 파일의 차이점

  • 텍스트 파일이 아닌 파일은 전부 이진 파일로 취급된다.
  • 대표적인 이진 파일로는 비트맵 이미지 파일이나 사운드 파일, 또는 실행 가능한 파일 등이 있다.
  • 메모장으로 파일을 열었을 때 깨져 보이는 경우, 인코딩의 문제이거나 혹은 해당 파일이 이진 파일이기 때문이다.
  • 텍스트 파일은 운영체제별로 개행 문자 처리가 다르다.

6. "컴"이라는 문자열을 UTF-8로 인코딩한 경우 몇바이트를 사용하는가?

  • 3바이트

7. ASCII에 대한 설명

  • & 문자를 포함한다.
  • ASCII 문자열 셋 중 출력 가능한 문자들은 52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수 문자, 그리고 하나의 공백 문자로 이루어져 있다.
  • ASCII에 포함된 문자열 셋은 7비트로 표햔할 수 있다.
  • 유니코드에는 ASCII가 포함되어 있다.

8. UTF-8과 UTF-16에 대한 설명

  • 둘 다 유니코드의 인코딩 형식이다.
  • UTF-8은 UTF-16에 비해 바이트 순서(엔디언)를 따지지 않고, 순서가 정해져 있다
  • 네트워크를 통해 전송되는 텍스트는 주로 UTF-8을 이용한다.
  • BMP(다국어 기본 평면)에 속하는 문자열은 UTF-16을 이용할 때에 16비트로 표현이 가능하다.

9. 비트맵과 벡터 이미지에 대한 설명

  • 벡터 이미지는 크기에 상관없이 작은 파일 사이즈를 유지할 수 있다.
  • 웹 브라우저는 svg 포맷을 표현할 수 있으며, 사진은 보통 비트맵 이미지로 다뤄진다.
  • 벡터를 비트맵으로 변환하는 것은, 그 반대에 비해서 컴퓨터 자원을 덜 사용한다.
  • 사진과 같은 이미지는 비트맵으로 표현하는 것이 유리하다.
  • 해상도에 의존적인 비트맵 이미지는 태그를 이용해 표현
    한다.

10. 캐시의 장점?

  • 데이터베이스의 부하를 줄일 수 있다.
  • 인 메모리 캐시를 사용하면 데이터를 읽는 속도를 높일 수 있다.
  • 디스크를 사용하는 데이터베이스에 비해, 주로 인메모리를 사용하는 캐시 때문에 더 빠른 읽기 작업을 할 수 있다.

11. 티어 별 캐시 적용 예제로 잘못 연결

  • 클라이언트 - CDN
  • 네트워크 - DNS 서버
  • 클라이언트 - LocalStorage
  • 서버 - Redis

    CDN(Content Delivery Network)은 네트워크 단계에서 콘텐츠를 보다 빠르게 제공하기 위한 서비스입니다.
    전 세계 곳곳에 분산되어 있는 데이터센터에 콘텐츠가 저장(캐싱)되어 있으며, 지리적으로 가까운 데이터센터로 접근할 수 있도록 만들어줍니다.

profile
주니어 프론트엔드

0개의 댓글