\(@^0^@)/

[BOOK] 모든 용어 모아보기 본문

BOOKS/면접을 위한 CS 전공지식 노트

[BOOK] 모든 용어 모아보기

minjuuu 2023. 6. 7. 21:49
728x90

1 회독을 마무리하면서 책에 설명된 용어들을 리마인드도 할 겸 정리하는 시간을 가져보려 한다.
끝부분에 찾아보기 목차에 있는 용어들도 시간이 된다면 ChatGPT를 활용해서 정리해 볼 수 있도록 하자!


[ 1장 디자인 패턴과 프로그래밍 패러다임 ]

  • 라이브러리
    • 공통으로 사용될 수 있는 특정한 기능들을 모듈화 한 것을 의미한다.
    • 폴더명, 파일명 등에 대한 규칙이 없고 프레임워크에 비해 자유롭다.
    • ex) 무언가를 자를 때 '도구'인 '가위'를 사용해서 '내가' 직접 컨트롤하여 자르는데, 라이브러리는 이와 비슷하다.
  • 프레임워크
    • 공통으로 사용될 수 있는 특정한 기능들을 모듈화 한 것을 의미한다.
    • 폴더명, 파일명 등에 대한 규칙이 있으며 라이브러리에 비해 좀 더 엄격하다.
    • ex) 다른 곳으로 이동할 때 '도구'인 비행기를 타고 이동하지만 '비행기'가 컨트롤하고 나는 가만히 앉아 있어야 한다.
  • Enum
    • 상수의 집합을 정의할 때 사용되는 타입이다.
    • 상수나 메서드 등을 집어넣어서 관리하며 코드를 리팩터링할 때, 해당 집합에 관한 로직 수정 시
      이 부분만 수정하면 되므로 코드 리팩터링 시 강점이 생긴다.
  • 컨텍스트
    • 프로그래밍에서의 콘텍스트는 상황, 맥락, 문맥을 의미하며
      개발자가 어떠한 작업을 완료하는 데 필요한 모든 관련 정보를 말한다.
  • DOM(Document Object Model)
    • 문서 객체 모델을 말하며, 웹 브라우저상의 화면을 이루고 있는 요소들을 지칭한다.
  • 프록시 서버에서의 캐싱
    • 캐시 안에 정보를 담아두고, 캐시 안에 있는 정보를 요구하는 요청에 대해
      다시 저 멀리 있는 원격 서버에 요청하지 않고 캐시 안에 있는 데이터를 활용하는 것을 말한다.
    • 이를 통해 불필요하게 외부와 연결하지 않기 때문에 트래픽을 줄일 수 있다는 장점이 있다.
  • 버퍼 오버플로우
    • 버퍼는 보통 데이터가 저장되는 메모리 공간으로, 메모리 공간을 벗어나는 경우를 말한다.
      이때 사용되지 않아야 할 영역에 데이터가 덮어씌워져 주소, 값을 바꾸는 공격이 발생하기도 한다.
  • gzip 압축
    • LZ77과 Huffman 코딩의 조합인 DEFLATE 알고리즘을 기반으로 한 압축 기술이다.
      gzip 압축을 하면 데이터 전송량을 줄일 수 있지만, 압축을 해제했을 때 서버에서의 CPU 오버헤드도 생각해서 gzip 압축 사용 유무를 결정해야 한다.
  • CDN(Content Delivery Network)
    • 각 사용자가 인터넷에 접속하는 곳과 가까운 곳에서 콘텐츠를 캐싱 또는 배포하는 서버 네트워크를 말한다.
      이를 통해 사용자가 웹 서버로부터 콘텐츠를 다운로드하는 시간을 줄일 수 있다.
  • 오리진
    • 프로토콜과 호스트 이름, 포트의 조합을 말한다.
    • ex) https://test, com:123/test라는 주소에서 오리진은 https://test.com:123을 뜻한다.
  • 이터러블한 객체
    • 반복 가능한 객체로 배열을 일반화한 객체
  • 이터레이터 프로토콜
    • 이터러블한 객체들을 순회할 때 쓰이는 규칙
  • public
    • 클래스에 정의된 함수에서 접근 가능하며 자식 클래스와 외부 클래스에서 접근 가능한 범위
  • protected
    • 클래스에 정의된 함수에서 접근 가능, 자식 클래스에서 접근 가능하지만 외부 클래스에서 접근 불가능한 범위
  • private
    • 클래스에서 정의된 함수에서 접근 가능하지만 자식 클래스와 외부 클래스에서 접근 불가능한 범위
  • 즉시 실행 함수
    • 함수를 정의하자마자 바로 호출하는 함수.
    • 초기화 코드, 라이브러리 내 전역 변수의 충돌 방지 등에 사용한다.
  • 커맨드
    • 여러 가지 요소에 대한 처리를 하나의 액션으로 처리할 수 있게 하는 기법이다.
  • 데이터 바인딩
    • 화면에 보이는 데이터와 웹 브라우저의 메모리 데이터를 일치시키는 기법으로,
      뷰모델을 변경하면 뷰가 변경된다.

[ 2장 네트워크 ]

  • 대역폭
    • 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수
  • 병목(bottleneck) 현상
    • 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상
    • ex) 병의 몸통보다 병의 목 부분 내부 지름이 좁아서 물이 상대적으로 천천히 쏟아지는 것에 비유할 수 있다.
    • 서비스에서 이벤트를 열었을 때 트래픽이 많이 생기고 그 트래픽을 잘 관리하지 못하면
      병목 현상이 생겨 사용자는 웹 사이트로 들어가지 못한다.
  • FTP
    • 장치와 장치 간의 파일을 전송하는 데 사용되는 표준 통신 프로토콜
  • SSH
    • 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
  • HTTP
    • World Wide Web을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는 데 쓰는 프로토콜
  • SMTP
    • 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜
  • DNS
    • 도메인 이름과 IP 주소를 매핑해 주는 서버
    • ex) www.naver.com에 DNS 쿼리가 오면 [Root DNS] -> [.com DNS] -> [.naver DNS] -> [.www DNS] 과정을 거쳐 완벽한 주소를 찾아 IP주소를 매핑한다.
      이를 통해 IP주소가 바뀌어도 사용자들에게 똑같은 도메인 주소로 서비스할 수 있다.
    • ex) www.naver.com의 IP 주소가 222.111.222.111에서 222.111.222.122로 바뀌었음에도 똑같은 www.naver.com이라는 주소로 서비스가 가능하다.
  •  SYN
    • SYNchronization의 약자, 연결 요청 플래그
  • ACK
    • ACKnowledgement의 약자, 응답 플래그
  • ISN
    • Initial Sequence Numbers의 약어, 초기 네트워크 연결을 할 때 할당된 32비트 고유 시퀀스 번호이다.
  • TIME_WAIT
    • 소켓이 바로 소멸되지 않고 일정 시간 유지되는 상태를 말하며 지연 패킷 등의 문제점을 해결하는 데 쓰인다.
    • CentOS6, 우분투에는 60초로 설정되어 있으며 윈도는 4분으로 설정되어 있다.
      즉, OS마다 조금씩 다를 수 있다.
  • 데이터 무결성(data integrity)
    • 데이터의 정확성과 일관성을 유지하고 보증하는 것
  • MAC 주소
    • 컴퓨터나 노트북 등 각 장치에는 네트워크에 연결하기 위한 장치(LAN 카드)가 있는데,
      이를 구별하기 위한 식별번호를 말한다. 6바이트(48비트)로 구성된다.
  • 라우팅
    • IP 주소를 찾아가는 과정
  • RTT
    • 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간, 패킷 왕복 시간
  • 인코딩
    • 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해 다른 형태나 형식으로 변환하는 처리 방식
  • 스트림(stream)
    • 시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터 요소를 가리키는 데이터 흐름
  • 세션
    • 운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간을 뜻한다.
    • 즉, 사용자는 일정 시간 동안 응용 프로그램, 자원 등을 사용할 수 있다.
  • 개인키
    • 비밀키라고도 하며, 개인이 소유하고 있는 키이자 반드시 자신만이 소유해야 하는 키
  • 공개키
    • 공개되어 있는 키
  • 해시
    • 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑(mapping)한 값
  • 해싱
    • 임의의 데이터를 해시로 바꿔주는 일이며 해시 함수가 이를 담당
  • 해시 함수
    • 임의의 데이터를 입력으로 받아 일정한 길이의 데이터로 바꿔주는 함수

[ 3장 운영체제 ]

  • GUI
    • 사용자가 전자장치와 상호 작용할 수 있도록 하는 사용자 인터페이스의 한 형태
    • 단순 명령어 창이 아닌 아이콘을 마우스로 클릭하는 단순한 동작으로 컴퓨터와 상호 작용할 수 있도록 해준다.
  • 드라이버
    • 하드웨어를 제어하기 위한 소프트웨어
  • CUI
    • 그래픽이 아닌 명령어로 처리하는 인터페이스
  • I/O 요청
    • 입출력 함수, 데이터베이스, 네트워크, 파일 접근 등에 관한 일
  • 유저 모드
    • 유저가 접근할 수 있는 영역을 제한적으로 두며 컴퓨터 자원에 함부로 침범하지 못하는 모드
  • 커널 모드
    • 모든 컴퓨터 자원에 접근할 수 있는 모드
  • 커널
    • 운영체체의 핵심 부분이자 시스템콜 인터페이스를 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등 운영체제의 중추적인 역할을 한다.
  • 인터럽트 핸들러 함수
    • 인터럽트가 발생했을 때 이를 핸들링하기 위한 함수
    • 커널 내부의 IRQ를 통해 호출되며 request_irq()를 통해 인터럽트 핸들러 함수를 등록할 수 있다.
  • TLB
    • 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시이다.
    • 페이지 테이블에 있는 리스트를 보관하여 CPU가 페이지 테이블까지 가지 않도록 해 속도를 향상시킬 수 있는 캐시 계층이다.
  • 페이지(page)
    • 가상 메모리를 사용하는 최소 크기 단위
  • 프레임(frame)
    • 실제 메모리를 사용하는 최소 크기 단위
  • 내부 단편화(internal fragmentation)
    • 메모리를 나눈 크기보다 프로그램이 작아서 들어가지 못하는 공간이 많이 발생하는 현상
  • 외부 단편화(external fragmentation)
    • 메모리를 나눈 크기보다 프로그램이 커서 들어가지 못하는 공간이 많이 발생하는 현상
    • ex) 100MB를 55MB, 45MB로 나눴지만 프로그램의 크기는 70MB일 때 들어가지 못하는 것을 말한다.
  • 홀(hole)
    • 할당할 수 있는 비어 있는 메모리 공간.
  • 메타데이터
    • 데이터에 관한 구조화된 데이터이자 데이터를 설명하는 작은 데이터
    • 대량의 정보 가운데에서 찾고 있는 정보를 효율적으로 찾아내서 이용하기 위해 일정한 규칙에 따라 콘텐츠에 대해 부여되는 데이터
  • 동시성
    • 서로 독립적인 작업들을 작은 단위로 나누고 동시에 실행되는 것처럼 보여주는 것
  • 상호 배제
    • 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 들어갈 수 없다.
  • 한정 대기
    • 특정 프로세스가 영원히 임계 영역에 들어가지 못하면 안 된다.
  • 융통성
    • 한 프로세스가 다른 프로세스의 일을 방해해서는 안 된다.
  • 은행원 알고리즘
    • 총자원의 양과 현재 할당한 자원의 양을 기준으로 안정 또는 불안정 상태로 나누고 안정 상태로 가도록 자원을 할당하는 알고리즘

[ 4장 데이터베이스 ]

  • 비정형 데이터
    • 비구조화 데이터
    • 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보를 말한다.
  • 결정자
    • 함수 종속 관계에서 특정 종속자(dependent)를 결정짓는 요소
    • 'X' -> 'Y'일 때 X는 결정자, Y는 종속자이다.
  • 체크섬
    • 중복 검사의 한 형태
    • 오류 정정을 통해 송신된 자료의 무결성을 보호하는 단순한 방법
  • 저널링
    • 파일 시스템 또는 데이터베이스 시스템에 변경 사항을 반영(commit) 하기 전에 로깅하는 것
    • 트랜잭션 등 변경 사항에 대한 로그를 남기는 것
  • STL
    • C++의 표준 템플릿 라이브러리이자 스택, 배열 등 데이터 구조의 함수 등을 제공하는 라이브러리의 묶음

 


출처 : 면접을 위한 CS 전공지식 노트

728x90