CS
네트워크 TCP/IP 모델 이해하기
네트워크 아키텍처 네트워크에서 컴퓨터와 네트워크 장비들이 데이터를 주고받기 위한 규칙이 필요합니다. 이런 규칙은 `프로토콜(Protocol)`이라 불리며, 데이터 전송 상대방, 형식, 전송 순서와 절차, 방법 등을 규정합니다. 즉 네트워크를 구성하는 컴퓨터와 다양한 네트워크 장비들은, 프로토콜에 따라 데이터를 주고 받습니다. 네트워크는 복잡한 시스템이기 때문에 이를 단순화하고 이해하기 쉽게 만들기 위해 네트워크 아키텍처(Network Architecture)를 사용합니다. 이 아키텍처는 모듈화(Modularity) 와 계층화(Layering) 를 통해 네트워크를 추상화(Abstraction) 시키는 방법입니다. 추상화: 복잡한 것을 간단하게 만드는 원리로, 네트워크를 논리적인 단계로 분할하여 각 단계마다..
네트워크 컴퓨터 네트워크의 구성 요소와 네트워크의 종류
컴퓨터 네트워크 컴퓨터 네트워크는 컴퓨터와 다른 기기들이 서로 연결되어 데이터를 주고 받을 수 있도록 만들어진 시스템입니다. 이를 통해 우리는 웹 서칭, 이메일, 파일 공유, 온라인 게임, 소셜 미디어 등 다양한 온라인 활동을 할 수 있습니다. 네트워크 구성 요소 컴퓨터 네트워크에서는 중요한 세 가지 구성요소가 있는데, 하나는 `컴퓨터`이고, 다른 하나는 `전송(연결) 매체`, 마지막으로 `네트워크 장비`입니다. 1. 컴퓨터: 컴퓨터는 데이터를 생성하여 보내거나, 받는 도구입니다. 정확히 말하면 컴퓨터의 설치된 애플리케이션(Application)이 데이터를 생성하고 받는 역할을 합니다. 2. 전송 매체: 데이터를 한 컴퓨터에서 다른 컴퓨터, 컴퓨터와 네트워크 장비로 이동시키는데 사용되는 물리적인 통로입니..
알고리즘 면접 준비
정렬 차이 https://yeo-computerclass.tistory.com/422 정렬 정리(선택, 버블, 삽입, 합병, 퀵, 힙 정렬) 비효율 : 선택 정렬, 버블 정렬, 삽입 정렬 효율 : 합병 정렬, 퀵 정렬, 힙 정렬, 기수 정렬 선택 정렬 넣을 위치는 정해져있고 어떤 원소를 넣은지 선택하는 알고리즘 시간 복잡도: O(N^2) public static yeo-computerclass.tistory.com 이분 탐색 정렬된 배열을 이분 분할하여 탐색하는 알고리즘 시간 복잡도: O(logN) public static int binarySearch(int target, int[] arr) { Arrays.sort(arr); int start = 0; int end = arr.length-1; whi..
정렬 정리(선택 정렬, 버블 정렬, 삽입 정렬, 합병 정렬, 퀵 정렬, 힙 정렬)
비효율 : 선택 정렬, 버블 정렬, 삽입 정렬 효율 : 합병 정렬, 퀵 정렬, 힙 정렬 선택 정렬 넣을 위치는 정해져있고 어떤 원소를 넣은지 선택하는 알고리즘 시간 복잡도: O(N^2) public static void selectionSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { int minIndex = i; for (int j = i + 1; j < arr.length; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } int tmp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = tmp; } } 버블 정렬 인접한 두 원소를 검사하여 정렬하는 알고리..
백엔드 면접 질문
싱글톤 패턴 하나의 인스턴스만 생성되며 전역에서 그 인스턴에 접근이 가능하도록 만든 패턴입니다. 생성자는 private로 선언하여 외부 클래스로부터 인스턴스 생성을 차단하며, static 메서드로 전역에서 싱글톤 인스턴스에 접근이 가능합니다. 단점 및 주의 private 생성자이기 때문에 테스트가 어렵습니다. 의존 관계상 클라이언트가 구체 클래스 의존합니다. 같은 인스턴스를 공유하기 때문에 상태를 유지하게 설계하면 안되고, 가급적 읽기만 가능하게 해야합니다. 빌더 패턴 builder의 인스턴스를 만들고 빌더에서 객체를 대신 만들도록 하는 방식입니다. 이때 단계별로 객체를 생성합니다. 장점 필요한 데이터만 설정할 수 있습니다. (빌더 패턴이 아닌 경우, 파라미터에 따라 dummy값을 넣어주거나 생성자를 따..
웹과 네트워크 면접 질문
HTTP 프로토콜 HyperText Transfer Protocol: 텍스트 기반의 통신 규약 인터넷에서 데이터를 주고받을 수 있는 프로토콜을 의미한다. 클라이언트 요청에 응답을 한 후 연결을 끊는 Connectionless 특징을 갖고 있습니다. 또한 연결이 끊기면 상태 정보를 유지하지 않는 Stateless한 특성이 있습니다. → HTTP 프로토콜이 상태를 유지하는 방법으로 쿠키와 세션이 있습니다. HTTP 메서드 GET 요청은 서버에 데이터를 요 - CRUD로 따지면 R(읽기) POST 요청은 서버에 데이터를 생성하는 것을 요청 - CRUD로 따지면 C(생성) PUT 요청은 서버에 존재하는 데이터를 수정하거나 존재하지 않으면 생성, 주로 전체 자원을 업데이트 하는데 쓰입니다. - CRUD로 따지면 ..
운영체제 면접 질문
프로세스 프로세스는 실행 중인 프로그램이다. 디스크에서 메모리로 적재되어, CPU 자원의 할당을 받을 수 있는 것을 말한다. 메모리 영역(스택, 힙, 데이터, 코드 영역)을 다른 프로세스와 공유하지 않는다. 최소 1개의 스레드를 갖고 있다. 스레드 프로세스의 작업 실행 단위이다. 프로세스 내에서 스택만 따로 할당 받고 그 외 메모리 영역(힙, 데이터, 코드)을 공유하기 때문에 다른 스레드의 실행 결과를 즉시 확인할 수 있다. 스레드 구성: 스레드 ID / PC / 레지스터 집합 / 스택 멀티 스레드 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 멀티 스레드라고 합니다. 하나의 프로세스 내에서 메모리 공간을 공유하기 때문에 메모리 공간과 시스템 자원 소모가 줄어들게 됩니다. 스레드..
Database 면접 질문
데이터베이스란? 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합 RDBMS와 NoSQL RDBMS (관계형) 관계형 데이터 모델을 기초로 두고, 데이터는 스키마로 정의된 2차원 테이블에 저장됩니다. 장점 스키마에 맞춰 데이터를 관리하기 때문에 명확한 데이터 구조 보장한다. 데이터 중복을 피하기 때문에 공간이 절약 된다. 단점 시스템이 커질 수록 쿼리가 복잡해지고 성능이 저하되며 Scale-Out이 어렵습니다. NoSQL (비 관계형) 비 관계형 데이터베이스로, 데이터간의 관계를 정의하지 않고, 스키마가 없어 좀 더 자유롭게 데이터를 관리할 수 있습니다. 장점 데이터 분산이 용이하고 Scale-Out이 가능합니다. 단점 데이터 중복이 발생할 수 있고, 데이터가 변경 시 연산이 ..