목록Computer Science/예상면접 (9)
용's
DB에 대해 한번 정리한 적이 있으나(http://gomoveyongs.tistory.com/58) 트랜잭션(Transaction)에 대해 다시 한번 정리해본다. 최근 N사 면접에서 질문이 있었듯이... 이전 포스팅에 트랜잭션을 '데이터베이스의 상태를 변화시키는 논리적 연산의 집합' 이라 하였다. 이것이 필요한 이유를 예로 찾아보면 다음의 예를 쉽게 찾아 볼 수 있다. "은행 데이터베이스에서 A가 B에게 송금을 하고자 할 때, 송금 버튼은 눌렀지만 B에게 돈이 들어오기 전에 예상치 못한 장애가 발생하여 B가 돈을 받지 못하는 문제가 발생할 수 있다" 이러한 문제를 막기 위해 하나의 작업군(돈이 송금되기 위한 여러개의 작업들)이 하나로 묶어 전부 처리가 되든지, 전부 취소가 되는 작업이 필요하게 된다. 이..
데이터베이스가 나오기 전의 파일시스템은 중복된 정보들이 너무 많아서 이를 효율적으로 처리하기 힘들다는 단점이 존재. 따라서, 이러한 중복을 피해서 정보를 일원화하여 서로 관련성을 갖는 데이터의 집합을 모아놓은 것이 바로 데이터베이스(Database). 이러한 데이터베이스에는 일반적으로 데이터 항복의 각 값이 데이터베이스에 중복없이 한번만 기록될 때 데이터의 일관성이 유지된다고 한다(이러한 중복없이 데이터를 한번만 기록하기 위한 데이터베이스의 설계 이론을 정규화라 하고...) 하지만 항상 중복을 배제하기는 하지만 경우에 따라 불가피하게 중복을 허용하는 데이터가 있다. 이러한 것을 최소한의 중복 또는 통제된 중복이라고 한다. 즉, 정규화를 하면 데이터의 중복을 통제하여 중복이 최소화되도록 설계할 수 있다. ..
이번 N사 면접가서 굉장히 다양한 전공지식 질문을 받았는데... 대답 못한 질문이 대다수였지만 자꾸 생각나는 질문 하나를 이번 기회에 정리해보고자 한다. "프로세스간에 통신은 못하나요?" ※ 본 글은 한빛미디어의 "프로세스 간 통신 방법과 프로그램 작성" 문서 요약문이 되겠다. 운영체제 내에서 수행되는 프로세스들은 여러 가지 필요에 의해 서로 데이터를 주고 받을 필요가 있다. 데이터를 주고받는 프로세스들을 분류해보면 간단하고 짧은 메시지를 주고 받거나 복잡하고 긴 메시지를 주고받을 수 있고, 동일한 시스템의 프로세스끼리 통신을 하거나 서로 다른 시스템의 프로세스끼리 통신할 수 있다. 그리고 통신의 주체가 되는 양쪽 끝의 프로세스가 모두 사용자 프로세스일 수도 있고 한쪽이 시스템의 커널일 수도 있다. 간단..
BigDecimal 클래스- 오차가 존재하지 않는 실수의 표현을 위해 정의된 클래스 - 실제 double이나 float를 사칙연산 시, 근사치 계산으로 정확한 수치의 결과가 나오지 않음예) double a = 4.7double b = 0.4a+b = 5.1000000000000005와 같은 결과가 나옴 이때 a와 b를BigDecimal a = new BigDecimal("4.7")BigDecimal b = new BigDecimal("0.4")의 객체로 만들고 a.add(b)를 하면 결과가 5.1이라는 정확한 실수로 나오게 된다.
▶ 혼잡 회피 알고리즘(Congestion Avoidance Algorithm) → 혼잡(Congestion)이란, 대기(Waiting)/큐잉(Queuing)를 포함하는 어떠한 곳에서도 발생 가능한 것으로, 네트워크 내 대기하는 패킷 수가 네트워크 처리 용량을 초과하는 현상을 보통 말함. → 이를 회피하는 알고리즘으로는 RED, WRED, TCP Vagas, ECN 등이 있다. → RED- 버퍼(큐)가 오버플로우될 떄까지 기다리지 않고, 패킷들을 폐기(Drop)하는 방법- 즉, 패킷을 보낼 수 있지만 특정 Sender(랜덤한 Sender)의 패킷을 Drop시켜 버퍼의 오버플로우를 피함 → WRED- RED 알고리즘에서 Drop시키는 플로우(Flow)를 특정 기준/정책에 준하는 값에 따라 우선순위를 두고 ..
1. 트랜잭션(Transaction)에 대해 설명하라 ▶ 데이터베이스의 상태를 변화시키는 논리적 연산의 집합. 즉, 여러 개의 작업이 발생할 때 하나의 단위로 묶어 '일괄 실행(Commit)', '일괄 취소(Rollback)'를 할 수 있게 해주는 것. 2. 트랜잭션(Transaction)의 ACID에 대해 설명하라 ▶ ACID는 각각 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 지속성(Durability)을 의미한다.원자성: 모두 반영되거나 아니면 전혀 반영되지 않아야 함 (부분 실행 안됨)일관성: 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있게 DB상태로 변환. 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 수행 완료 후에 같아야 함.독립..
▶ 라우팅란 무엇인가 → Source에서 Destination으로 최적의 경로(즉, Shortest Path)를 찾는 것을 목적으로 Routing/Forwarding Table 만드는 것을 목적으로 함. → Shortest Path를 구하기 위해서는, Router들 사이에 정보(Routing Info)를 교환해야 함. → 교환하는 방식에 따라, 대표적으로 Link-State와 Distance-Vector의 두가지 방식이 존재 → Link-State(다익스트라 알고리즘): 모든 라우터들의 정보를 토대로 Shortest Path를 구하게 되며, 결과적으로 네트워크의 topology를 얻을 수 있다. → Distance-Vector(Distributed Bellman-Ford 알고리즘): 인접한 라우터들끼리 ..
(1) Blocking - 조건 만족이 되지 않는다면 함수는 리턴하지 않고 해당스레드는 Wait State를 만족하게 되면서, 애플리케이션은 더이상 진행되지 않는다. - 예를 들어, 블로킹 소켓을 사용한 서버라고 가정하는 경우, 서버의 역할상 동시다발적으로 복수의 클라이언트가 접속하여 서비스를 이용하는데, 블록킹 소켓을 사용하면 순차적으로 클라이언트의 접속을 받아들여 작업하고 해당 작업이 완료돼야 다음 접속에 대한 작업을 할 수 있다. - 이를 해결하기 위해 멀티쓰레드 방식을 이용한다. 각 클라이언트마다 각 쓰레드를 하나씩 생성하는 것이다. - 하지만, 운영체제마다 스레드의 갯수가 제한되어 있으며, 제한된 스레드보다 많은 클라이언트가 접속할시 문제가 발생(가용성 부재). 또한, 스레드가 작동되기 위해서는..
간단하게 컴퓨터 네트워크 수업을 되새기며 정리를 해보자. TCP와 UDP의 차이를 구분할 줄 알고 내가 원하는 상황에 맞추어 선택할 수 있는게 중요하다. 전송계층(4계층) 프로토콜이란, 컴퓨터 네트워킹을 하는데 있어서 서로 약속하는 부분, 즉 통신 규약이라 할 수 있겠다. 특히, TCP와 UDP는 전송 계층(Transport Layer)의 프로토콜로 IP계층에서 알려준 경로정보를 바탕으로 데이터의 실제 송수신을 담당한다.(실제로, 전송계층에서는 Host와 Host 사이에 라우터와 같은 것들이 없다. 이를 Logical한 End-to-End Protocol 이라고 하기도 한다.) 전송계층에서 제공해야할 기본적인(common) 서비스들은 다음과 같다.-Multiplexing / Demultiplexing-C..