면접 - 자바 54

개발자 면접 질문 - Blocking(블로킹) / Non-Blocking (논 블로킹)

1. 블로킹 (Blocking) - 호출된 함수가 자신의 작업을 모두 끝낼때까지 제어권을 가지고 있어 호출한 함수가 대기하도록 만든다. - 클라이언트가 I/O 작업을 진행하면 해당 프로세스가 진행하는 작업이 중지된다. - 다른 클라이언트에 영향을 미치지 않게 하기 위해 클라이언트 별로 쓰레드를 만들어야 한다. - 쓰레드가 많이질수록 CPU의 컨텍스트 스위칭 횟수가 증가한다. - 쓰레드가 요청한 동작이 수행 가능해질 때 까지 대기한다. 2. 논블로킹 (Non-Blocking) - 호출된 함수가 바로 return 해서 호출한 함수에게 제어권을 주어 다른 일을 할 수 있게 한다. - Blocking 방식의 비효율성을 극복하고자 만든 것이다. - 클라이언트가 I/O 작업을 진행해도 유저 프로세스의 작업을 중단시..

면접 - 자바 2020.12.03

개발자 면접 질문 - 동적 프로그래밍(Dynimic Programming)

1. 다이나믹 프로그래밍 (Dynamic Programming) - 분할정복법처럼 작은 문제들로 나누어 각각 해답을 찾고 원래 문제의 해답을 계산하는 방식 1) 메모이제이션 (Memoization) 을 이용한 DP - Top Down 방식이다. - 반복되는 결과를 메모리에 저장해서 중복 호출 되었을 때 한번 더 계산하지 않고, 메모리에 저장된 값을 가져와서 사용 - 가장 큰 문제를 방문 후 작은 문제를 호출하여 답을 찾는 방식 2) 반복문을 이용한 DP - Bottom Up 방식이다. - 재귀가 필요없다. (시간과 메모리 사용량을 줄일 수 있다.) - for 문을 이용해서 수행한다. - 가장 작은 문제들부터 답을 구해가며 전체 문제의 답을 찾는 방식

면접 - 자바 2020.12.03

개발자 면접 질문 - IO와 NIO

1. IO - 입출력 방식 : 스트림 - 버퍼 방식 : None Buffer (보조 스트림 BufferdInputStream, BufferdOutputStream 사용) - 비동기 방식 : 지원 안함 - 블로킹 / Non블로킹 방식 : 블로킹 방식만 지원 - 대용량 처리에 효율적 2. NIO - 입출력 방식 : 채널 방식 - 버퍼 방식 : Buffer - 비동기 방식 : 지원 - 블로킹 / Non블로킹 방식 : 블로킹 / Non블로킹 방식 모두 지원 - 대용량 처리에 비효율적 - 연결 클라이언트가 많고 입출력 처리 작업이 오래 걸리지 않는 작업에 적절하다.

면접 - 자바 2020.12.03