![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/KfgF1/btqDH1mqe3Z/pzB8FtpCaIpfC4KnoKk0C0/img.jpg)
1. 교착상태 발생조건에 대해 설명하시오. 👉🏻 교착상태 발생 조건으로는 4가지가 있습니다. 1. 상호배제(Mutual exclusion) : 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구한다. ----> 공유하지 않고 오로지 나만 쓰는 상황이라고 할 수 있습니다. 2. 점유대기(Hold and wait) : 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다. ----> 내가 어떤 공유된 자원을 가진 상태에서 또 다른 것을 요구할 때 발생합니다. 3. 비선점(No preemption) : 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 빼앗을 수 없다. ----> 내가 가진 공유 자원을 양보하지 않아서 더이상 진행되지 않을 때 발생합니다. 4. 순환대기(Circular wa..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b0C5Uy/btqDxJmk97Q/CIOUevmrxJYJpyPTaxkhe0/img.png)
1. Thred란 무엇인지 설명하시오. 👉🏻 스레드(Thread)란 프로세스(Process) 내에서 실제로 작업을 수행하는 주체를 의미합니다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다. 또한 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(Multi-threaded process)라고 합니다. (+) 멀티 스레드란 👉🏻 하나의 응용프로그램을 여러 개의 스레드로 구성하고, 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것입니다. 웹 서버는 대표적인 멀티 스레드 응용 프로그램입니다. 장점 1. 시스템 자원 소모 감소(자원의 효율성 증대) 2. 시스템 처리량 증가(처리 비용 감소) - 스레드 사이의 작업량이 작아 Context Switching**이 빠름 3. 간단한..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dvdvCK/btqDqipOCIV/OWTGFhtsXXDQe4w2RhFqDk/img.png)
💡 나의 풀이 Hash를 사용하지 않았을 때 나의 풀이 (Hash를 사용한 코드보다 시간복잡도 큼) 처음에 HashMap을 썼다가 사용이 미숙하여 패스..List 썼다가 이중 for문 썼다가 난리ㅠ 저번 스터디 때 친구가 Arrays.sort로 정렬한 뒤 완주한 선수 지워나가는 것에서 힌트를 얻어서 풀었다. participant와 completion이 정렬되어 있기 때문에 계속 비교해서 값이 같지 않은 것이 나왔을 때 participant[i]를 return하면 완주하지 못한 선수가 나온다. import java.util.*; class Solution { public String solution(String[] participant, String[] completion) { String answer =..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/UjsfE/btqDpf1rScq/Sj95YrEq8xhCUkghXI6wRk/img.png)
💡 나의 풀이 10진수를 2진수로 변환하는 함수인 Integer.toBinaryString(num)과 replace 함수를 사용하여 풀이 비트연산자 "|"를 사용하여 먼저 수행 후 "#" 또는 " "으로 대체하여 출력 | -> 둘 중 하나라도 1이면 1, 아니면 0 (OR) & -> 둘 중 모두 1이면 1, 아니면 0 (AND) ^ -> 두 비트가 다를 때 1 출력 (XOR) ~ -> 비트 전환 연산자 / 1이면 0, 0이면 1로 전환 import java.util.*; class Solution { public String[] solution(int n, int[] arr1, int[] arr2) { String[] answer = new String[n]; for(int i = 0; i < n; i+..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cCZnbr/btqDvgqqJ3H/4R4OzaMy4dDBhAMy73mfOK/img.jpg)
💡 나의 풀이 class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer = new int[arr1.length][arr1[0].length]; for(int i = 0; i < arr1.length; i++){ for(int j = 0; j < arr1[i].length; j++){ answer[i][j] = arr1[i][j]+arr2[i][j]; } } return answer; } }
1. REST란 무엇이고, RESTful하게 API를 디자인한다는 것은 무엇인지 설명하시오. 👉🏻 REST는 Representational State Transfer의 약자입니다. 간단히 말해서 URI와 HTTP 메소드를 이용해 객체화된 서비스에 접근하는 것입니다. REST의 요소로는 크게 리소스, 메소드, 메세지 3가지 요소로 구성됩니다. 예를 들어 "이름이 Tom인 사용자를 생성한다." 라는 호출이 있을 때 "사용자"는 생성되는 리소스, "생성한다."라는 행위는 메소드, 그리고 "이름이 Tom인 사용자"는 메세지가 됩니다. 즉 리소는 http://myweb/users라는 형태의 URI로 표현되며, 메소드는 HTTP Post, 메세지는 JSON 문서를 이용해서 표현됩니다. HTTP에는 여러가지 메소드가..