면접 - 자바 54

개발자 면접 질문 - jvm 튜닝

1. 튜닝 필요성 - Xms 옵션과 Xmx 옵션 메모리 설정 없이 사용중일때 - JVM 옵션에 -Server 옵션이 설정되어 있지 않을 때 - 시스템에 Timeout 같은 로그가 발생하면서 정상적인 트랜잭션 처리가 이루어지지 않을 때 2. 튜닝 목적 - 첫번째로 Old Area로 넘어가는 Object의 수를 최소화 한다. - Full GC의 실행 시간을 줄인다. 3. Object 수 최소화 방법 - String 대신 StringBuilder나 StringBuffer 사용 - 로그를 최대한 적게 쌓도록 한다. - 대용량 XML 파일을 사용 않는다. (현실적으로 이렇게 하기에는 어려움) - Object의 수를 줄이면 Old Area로 이동하는 Object의 수가 줄어들면서 Full GC 발생하는 빈도가 줄어..

면접 - 자바 2020.12.03

개발자 면접 질문 - 객체 지향 프로그래밍 5대 원칙

1. 단일 책임 원칙 - 객체는 단 하나의 책임만 가져야 한다. 2. 개방-폐쇄 원칙 - 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다. 3. 리스코프 치환 원칙 - 자식 클래스는 최소환 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다. 4. 의존 역전 원칙 - 의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운것, 거의 변화가 없는 것에 의존한다. 5. 인터페이스 분리 원칙 - 인터페이스를 클라이언트에 특화되도록 분리시키라는 설계 원칙

면접 - 자바 2020.12.03

개발자 면접 질문 - 동기(Synchronous)와 비동기(Asynchronous)

1. 동기(Synchronous) - 요청과 결과가 동시에 일어난다 - 함수의 결과를 호출한 쪽에서 처리한다. - 결과가 나올 때까지 대기해야 한다. - 설계가 매우 간단하다. 2. 비동기(Asynchronous) - 요청과 그 결과가 동시에 일어나지 않는다. - 함수의 결과를 호출한 쪽에서 처리하지 않는다. - 결과가 나올 때까지 다른 작업을 수행할 수 있어 자원을 효율적으로 사용할 수 있다. - 설계가 동기보다 복잡하다.

면접 - 자바 2020.12.03

개발자 면접 질문 - Atomic, Volatile, Synchronized 차이

1. Atomic - compare and swap 기반으로 되어 있다. - 비교하는 과정에서 실패하면 다시 읽고 비교하고 반복하는 과정을 가진다. - Integer, boolean 등 변수를 사용할 수 있다. 2. Volatile - 메인 메모리에서 항상 최신 데이터를 가져온다. - 동시에 변수를 읽어 들이는 상황은 계속 발생한다. 3. synchronized - 한 객체에 여러 쓰레드가 동시에 사용하지 못하도록 한다.

면접 - 자바 2020.12.03

개발자 면접 질문 - 동기화된 컬렉션(Thread-Safe Collection)

1. 동기화된 컬렉션(Thread-Safe Collection) - 자바에서 Collections의 synchronizedXXX() 메서드를 제공하여 멀티 쓰레드에 안전한 컬렉션을 쓸 수 있게 한다. 리턴 타입 메소드(매개변수) 설명 List synchronizedList(List list) List를 동기화된 List로 리턴 Map synchronizedMap(Map m) Map을 동기화된 Map으로 리턴 Set synchronizedSet(Set s) Set을 동기화된 Set으로 리턴 2. 단점 - 하나의 쓰레드가 요소를 안전하게 처리하도록 도와주지만 전체 요소를 빠르게 처리하지 못한다. (작업시 락 발생) 3. 대안 - 자바에서 멀티쓰레드환경에서 안전하면서도, 쓰레드가 병렬적으로 작업을 처리할 수 ..

면접 - 자바 2020.12.03

개발자 면접 질문 - 블로킹과 논블로킹 큐(Blocking Queue / Non Blocking Queue) 종류

1. BlockingQueue - Queue가 꽉 찼을 때의 삽입 시도/ 비어 있을 때의 추출시도를 막는다. - 구현체 모두 Thread-safe 하다 1) ArrayBlockingQueue - 고정 배열에 일반적인 Queue를 구현한 클래스 - 생성 후 크기 변경 불가 2) LinkedBlockingQueue - 선택적으로 Bound가 가능한 LinkedList 로 구현한 Queue 3) PriorityBlockingQueue - PriorityQueue와 같은 정렬 방식을 지니는 용량 제한이 없는 Queue 4) SynchorousQueue - Queue 내부로의 insert 작업이 다른 쓰레드의 remove 작업과 반드시 동시에 일어나야 한다. 2. Non Blocking Queue 1) Concu..

면접 - 자바 2020.12.03