아래의 내용은 이 글의 내용을 번역, 의역 및 정리한 것입니다. 1. 세마포어(Semaphore)와 뮤텍스(Mutex) 세마포어와 뮤텍스는 모두 동기화를 이용되는 도구이지만 차이가 있다. 자세한 내용은 아래와 같다. [ Mutex(뮤텍스) ] 뮤텍스는 자원에 대한 접근을 동기화하기 위해 사용되는 상호배제 기술이다. 이것은 프로그램이 시작될 때 고유한 이름으로 생성된다. 뮤텍스는 Locking 메커니즘으로 오직 하나의 쓰레드만이 동일한 시점에 뮤텍스를 얻어 임계 영역(Critical Section)에 들어올 수 있다. 그리고 오직 이 쓰레드만이 임계 영역에서 나갈 때 뮤텍스를 해제할 수 있다. wait (mutex); ….. Critical Section ….. signal (mutex); 위의 수도코드는..
1. 해시테이블(HashTable)이란? [ HashTable(해시테이블)이란? ] 해시 테이블은 (Key, Value)로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있는 자료구조이다. 해시 테이블이 빠른 검색속도를 제공하는 이유는 내부적으로 배열(버킷)을 사용하여 데이터를 저장하기 때문이다. 해시 테이블은 각각의 Key값에 해시함수를 적용해 배열의 고유한 index를 생성하고, 이 index를 활용해 값을 저장하거나 검색하게 된다. 여기서 실제 값이 저장되는 장소를 버킷 또는 슬롯이라고 한다. 예를 들어 우리가 (Key, Value)가 ("John Smith", "521-1234")인 데이터를 크기가 16인 해시 테이블에 저장한다고 하자. 그러면 먼저 index = hash_fun..
1. 기술 외 공통 면접 질문 [ 자기소개 및 지원동기 ] [ 주요 기술스택 및 역할 ] [ 자기소개서 기반의 프로젝트 질문 ] 어떤 역할을 담당하였는가? 서버는 어떻게 구성하였는가? 어떤 언어와 프레임워크, 라이브러리? 몇명의 사용자, 어느 정도의 트래픽 해당 기술 스택을 사용한 이유 구조에 대한 설명 및 설계 관련 내용 어떠한 알고리즘, 자료구조 혹은 디자인패턴을 사용하였는가? 개선점은 무엇이였나? 어떻게 프로젝트를 관리했고(스케줄, 소통 등) 어떻게 기여했는가?(문서화, 구조 설계, 개발 등) 자신의 프로젝트에서 다양한 상황을 가정해보자. (이런 경우 혹은 저런 경우엔 어떻게 하실 건가요? 같은 질문을 자주 함) [ 프로젝트에 있어서 가장 중요한 것은 무엇이라 생각하나요? ] [ 테스트 코드의 장점..
8. 백엔드(Spring 위주) [ WAS와 WS의 차이 ] WAS(Web Application Server) 비지니스 로직을 넣을 수 있음 Tomcat, PHP, ASP, .Net 등 WS(Web Server) 비지니스 로직을 넣을 수 없음 Nginx, Apache 등 [ 많은 트래픽이 발생한 경우 대처하는 방법 ] 스케일 업(Scale Up): 서버에 CPU나 RAM 등을 추가하여 서버의 하드웨어 스펙을 향상시키는 방법이다. 스케일 아웃(Scale Out): 서버를 여러 대 추가하여 시스템을 증가시키는 방법이다. [ CORS 란? ] CORS(Cross-Origin-Resource-Sharing)란 도메인이 다른 2개의 사이트가 데이터를 주고 받을 때 발생하는 문제입니다. 예를 들어 mangkyu.c..
7. 개발 언어(Java 위주) [ Java의 장점과 단점 ] 장점 JVM 위에서 동작하기 때문에 운영체제에 독립적이다. 가비지컬렉터가 메모리를 관리해주기 때문에 편리하다. 단점 JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느리다. 다중 상속이나 타입에 업격하는 등 제약이 있는 것이 많다. [ 원시 타입과 참조 타입의 차이 ] 원시 타입은 실제 값을 저장하기 위한 타입입니다. 예를 들어 int a = 1과 같이 코드를 작성했다면, JVM의 스택 영역에 a라는 변수의 값이 할당됩니다. 참조 타입은 기본 타입을 제외한 타입으로, 객체의 주소를 저장하는 타입입니다. 예를 들어 Integer b = 1과 같이 코드를 작성했다면, JVM의 힙 영역에는 실제 객체가 저장되고, 스택에는 해당 객체의 주소를 ..