목록전체 글 (73)
delpho
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/tyt6s/btrICZ5e6cg/2OrtaN71CM7hVXp77z17h0/img.png)
_1. 가상 메모리에 대해 설명해보세요. 가상 메모리는 물리적 공간의 제한을 극복하기 위해 실제 메모리 크기와 상관없이 메모리를 이용할 수 있도록 가상의 메모리 주소를 사용하는 방법입니다. 프로세스 실행할때 필요한 부분만 메모리에 적재하면서 메모리 관리가 가능합니다. [ 가상 메모리 등장 배경 ] 초창기 컴퓨터에서는 사용 가능한 RAM의 용량이, 가장 큰 실행 애플리케이션의 주소 공간보다 커야 했음. 이후 컴퓨터에서는 프로그래머가 애플리케이션의 일부분만 기억장치에 올려 실행하도록 지정할 수 있게 하는 오버레이 기법을 사용하여 메모리 부족 문제를 해결하고자 했음. 하지만 이 역시 전반적인 메모리 부족 문제를 해결할 수 없었음. 오버레이를 사용하는 프로그램은 그렇지 않은 프로그램보다는 메모리를 덜 사용했지만..
_1. Thread-safe 하다는 의미와 설계하는 법을 설명해보세요. thread-safe는 어떤떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없다는 의미입니다. 공유 자원에 불변객체를 사용하거나 뮤텍스, 세마포어를 사용하여 통제할 수 있도록 설계하면 좀 더 thread-safe해집니다. [ Thread-safe 하다 ] 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음 엄밀하게는, 하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 올바로 나오는 것으로 정의 교..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lIFw2/btrInIJk5G5/m0qxlKkkjwmu6i7Cc72GjK/img.png)
_1. 교착상태가 무엇인지 설명해주세요 교착상태란 두 개 이상의 프로세스나 스레드가 필요한 자원을 얻지 못해서 무한히 다음 자원을 기다리게 되는 상태입니다. 예를들어, 프로세스1, 2가 자원1,2를 얻어야하는 상황에서 프로세스1이 자원1을, 프로세스2가 자원2를 동시에 얻게 된다면 각각 자원 1,2를 얻기위해 무한정 기다리는 상태가 되버립니다. [ 교착 상태란 (DeadLock) ] 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태 무한히 다음 자원을 기다리게 되는 상태 [ 교착상태가 일어나는 경우] 프로세스1, 2가 자원1, 2를 모두 얻어야 한다고 가정! t1 : 프로세스1이 자원1을 얻음 / 프로세스2가 자원2를 얻음 t2 : 프로세스1은 자원2를 기다림 / ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RPjKc/btrH1b7vUJu/NbE8ZcC3xYC8vUBHi65uT0/img.png)
_1. 동기와 비동기의 차이(블로킹, 넌블로킹) / 장단점에 대해 설명해보세요. 동기는 요청과 결과가 한 자리에서 동시에 일어나는 것이며, 비동기는 요청한 그 자리에서 결과가 주어지지 않는 것 입니다. 그렇기에 동기 방식은 설계가 간단하지만 결과가 주어질 때 까지 대기해야하는 단점이 있습니다. 비동기 방식은 동기 방식보다 설계가 복잡할 수 있지만, 그 시간동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있습니다. _2. 멀티스레드 프로그래밍에 대해 설명해보세요. 멀티스레드란 하나의 어플리케이션을 여러개의 스레드로 구성하여 하나의 스레드가 하나의 작업을 처리하도록 하는 방식입니다. db 작업과 같은 긴 작업을 수행하는 경우, 사용자와 애플리케이션이 상호작용이 불능이 될 수 있기에 사용하며, ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/MLpAN/btrH1bsRP3w/R5GzdeCXUSPVpBFiYkCscK/img.png)
_1. 프로세스와 스레드의 차이를 설명해보세요. 프로세스는 프로그램 실행에 필요한 내용이 메모리에 적재되어 운영체제로부터 자원을 할당 받은 작업에 단위이며, 스레드는 프로세스 내에서 실행되는 흐름의 단위입니다. 프로세스 사이에서는 자원을 공유하지않지만, 스레드는 서로 Heap 영역의 자원을 공유합니다. [ 프로그램, 프로세스] 프로그램 어떤 작업을 하기 위해 처리방법과 순서를 기술한 명령문 집합체 프로세스 프로그램 실행에 필요한 내용이 메모리에 적재되어 운영체제로부터 자원을 할당 받은 작업의 단위 프로그램을 실행하면 프로세스 인스턴스가 생성! [ 스레드 ] 어떠한 프로세스 내에서 실행되는 흐름의 단위 일반적으로 하나의 프로그램 👉 하나 이상의 프로세스 👉 하나 이상의스레드를 갖음!! 스레드는 프로세스 내..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bGDwA8/btrGJ8PJi3E/MNb79WELLb0n1a4V5z2drK/img.png)
_1. BST의 최악의 경우의 예와 시간복잡도에 대해서 설명해주세요. [ 시간 복잡도 ] 표를 보면 탐색, 삽입, 삭제의 평균 시간복잡도 👉 O(logN) 최악 시간복잡도 👉 O(N) _2. 피보나치 수열을 코드로 구현하는 방법에 대해서 설명해주세요. [ 변수 2개 ] public static void main(String[] args) { int prevPrevNum = 1; // 전 전 항 (n-2) int prevNum = 1; // 이전 항 (n-1) for (int i = 3; i < 100; i++) { int curNum = prevPrevNum + prevNum; // 현재 항 (n) System.out.print(curNum + " "); prevPrevNum = prevNum; prev..