멀티 스레딩 및 동시성 문제는 모든 Java 인터뷰에서 필수적인 부분입니다. 주식 투자 은행에서 프론트 엔드 정보 위치를 얻으려면 멀티 스레딩에 대해 많은 질문을 준비해야합니다. 멀티 스레딩 및 동시성은 특히 전자 거래 개발과 관련하여 투자 은행에서 매우 인기있는 주제입니다. 그들은 면접관들에게 많은 혼란스러운 자바 스레딩 질문을 요청할 것입니다. 면접관은 많은 후보자가 피상적이기 때문에 면접관이 Java 스레딩과 동시성에 대한 충분한 지식을 가지고 있는지 확인하고 싶어합니다. 직접 시장 중심의 거래를위한 대기 시간과 낮은 대기 시간 전자 거래 시스템은 본질적으로 동시에 있습니다. 다음은 다른 시간과 장소에서 묻고 싶은 Java 스레딩 질문입니다. 나는 대답을 제공하지 않았지만 가능할 때마다 단서를 줄 것입니다. 때로는 이러한 단서가 질문에 대답하기에 충분합니다. 이제 동시 도구 및 동시 컬렉션과 관련하여 JAVA5 동시 패키지를 언급하는 데 점점 더 많은 문제가 있습니다. Threadlocal, 차단 대기열, 세마포어 및 동의어 계산은 이러한 질문들 중에서 더 인기가 있습니다.
15 Java 다중 스레드 인터뷰 질문 및 답변
1) 이제 3 개의 스레드 T1, T2 및 T3이 있습니다.
이 스레드 질문은 일반적으로 "Join"방법에 익숙한 지 확인하기 위해 첫 번째 라운드 또는 전화 인터뷰 단계에서 묻습니다. 이 멀티 스레딩 문제는 비교적 간단하며 결합 방법을 사용하여 구현할 수 있습니다.
2) Java의 동기화 된 블록에 대한 잠금 인터페이스의 장점은 무엇입니까? 여러 사용자가 읽을 수있는 효율적인 캐시를 구현해야하지만 한 명의 사용자만이 무결성을 유지하기 위해 작성해야합니다.
멀티 스레드 및 동시 프로그래밍에서 잠금 인터페이스의 가장 큰 장점은 별도로 읽기 및 쓰기를위한 잠금 장치를 제공하므로 ConsurenthashMap 및 조건부 차단과 같은 고성능 데이터 구조를 작성할 수 있다는 것입니다. Java 스레드 인터뷰 질문은 면접관의 답변에 따라 점점 더 묻습니다. 다중 스레드 인터뷰를하기 전에 자물쇠를주의 깊게 읽는 것이 좋습니다. 현재 전자 트랜잭션 시스템 클라이언트 캐시 및 트랜잭션 연결 공간을 구축하는 데 사용되기 때문입니다.
3) Java의 대기 방법과 수면 방법의 차이점은 무엇입니까?
Java Thread 인터뷰 인터뷰 전화 인터뷰 중에 자주 묻는 질문. 가장 큰 차이점은 대기 중 대기가 대기 중 잠금을 방출하는 동안 수면이 계속 잠금을 유지한다는 것입니다. 대기는 일반적으로 스레드 간 상호 작용에 사용되며 수면은 일반적으로 실행을 일시 중지하는 데 사용됩니다.
4) Java를 사용하여 차단 대기열을 구현하십시오.
이것은 비교적 어려운 멀티 스레드 인터뷰 질문으로 많은 목표를 달성 할 수 있습니다. 먼저 후보자가 실제로 Java 스레드로 프로그램을 작성할 수 있는지 여부를 감지 할 수 있으며, 후보자의 동시 시나리오에 대한 이해를 감지 할 수 있으며,이를 기반으로 많은 질문을 할 수 있습니다. 그가 대기 () 및 notify () 메소드를 사용하여 차단 대기열을 구현하는 경우 Java 5의 최신 동시 클래스로 다시 작성하도록 요청할 수 있습니다.
5) Java를 사용하여 프로듀서 소비자 문제를 해결하기 위해 코드를 작성하십시오.
위의 질문과 매우 유사하지만이 질문은 때때로 인터뷰에서 다음과 같은 질문이 있습니다. Java에서 생산자 소비자 문제를 해결하는 방법은 무엇입니까? 때때로 그들은 심지어 철학자들이 먹는 문제를 깨닫는 방법을 묻습니다.
6) Java에서 교착 상태를 유발할 프로그램을 프로그래밍하는 문제를 어떻게 해결할 것입니까?
다중 스레드 동시 프로그램을 작성할 때 교착 상태 문제가 매우 일반적이지만 많은 후보자가 교착 상태 무료 코드 (교착 상태 없음)를 작성할 수없고 어려움을 겪기 때문에 이것은 제가 가장 좋아하는 Java 스레드 인터뷰 질문입니다. 자원과 N 스레드가 있다고 말하면 작업을 완료하려면 모든 리소스가 필요합니다. 단순화를 위해 N을 2로 대체 할 수 있으므로 데이터가 클수록 문제가 더 복잡해 보입니다. Java의 교착 상태를 피함으로써 교착 상태에 대한 자세한 정보를 얻으십시오.
7) 원자 작용이란 무엇이며 Java의 원자 작동은 무엇입니까?
매우 간단한 Java 스레드 인터뷰 질문, 다음 질문은 원자 연산을 동기화해야한다는 것입니다.
8) Java에서 휘발성의 주요 역할은 무엇입니까? 그것을 사용하는 방법? Java의 동기화 된 방법과 어떻게 다른가요?
Java 5 및 Java 메모리 모델이 변경되었으므로 휘발성 키워드를 기반으로 스레딩 문제가 점점 인기를 얻고 있습니다. 휘발성 변수가 동시 환경에서의 가시성을 보장하는 방법에 대해 대답 할 준비가되어 있어야합니다.
9) 경쟁 조건이란 무엇입니까? 경쟁을 어떻게 발견하고 해결합니까?
이것은 멀티 스레드 인터뷰의 고급 단계에서 나타나는 질문입니다. 대부분의 면접관은 최근에 만난 경쟁 조건과 해결 방법에 대해 묻습니다. 그들이 간단한 코드를 작성한 다음 코드의 레이스 조건을 감지 할 수있는 경우가 있습니다. Java 경주 조건에 대한 이전 기사를 참조 할 수 있습니다. 제 생각에는 이것은 최고의 Java 스레드 인터뷰 질문 중 하나이며,이 질문은 레이스 조건을 해결하는 후보자의 경험을 정확하게 감지하거나 데이터 레이스 또는 기타 인종 조건이없는 코드를 작성할 수 있습니다. 이것에 대한 가장 좋은 책은 "자바의 동시성 관행"입니다.
10) 스레드 덤프를 어떻게 사용 하시겠습니까? 스레드 덤프를 어떻게 분석합니까?
UNIX에서는 kill -3을 사용할 수 있으며 스레드 덤프는 "ctrl+break"를 사용할 수 있습니다. 매우 간단하고 전문적인 스레드 인터뷰 질문이지만 분석 방법을 묻는다면 까다로울 것입니다.
11) start () 메소드를 호출 할 때 run () 메소드를 실행하는 이유는 무엇입니까?
이것은 또 다른 매우 고전적인 Java 멀티 스레드 인터뷰 질문입니다. 이것은 처음 스레딩 프로그램을 작성하기 시작했을 때의 혼란입니다. 이제이 질문은 일반적으로 전화 인터뷰 또는 첫 번째 주니어 및 미들 Java 인터뷰에서 묻습니다. 이 질문에 대한 답은 다음과 같아야합니다. start () 메소드를 호출 할 때 새 스레드를 만들고 run () 메소드에서 코드를 실행하게됩니다. 그러나 run () 메소드를 직접 호출하면 새 스레드를 생성하거나 스레드를 호출하는 코드를 실행하지 않습니다. 더 많은 정보를 얻기 위해 전에 쓴 "시작과 실행 방법의 차이"기사를 읽으십시오.
12) Java에서 블로킹 스레드를 어떻게 깨우나요?
이것은 스레딩 및 차단에 대한 까다로운 질문이며 많은 솔루션이 있습니다. 스레드가 IO 막힘에 직면하면 스레드를 중단하는 방법이 없다고 생각합니다. wait (), sleep () 또는 join () 메소드를 호출하여 스레드가 차단되면 스레드를 방해하고 인터럽트 한 외환을 던져서 깨어날 수 있습니다. 이전에 쓴 "Java의 차단 방법을 다루는 방법"은 스레드 차단을 다루는 것에 대한 많은 정보를 가지고 있습니다.
13) Java의 Cyclibarriar와 Countdownlatch의 차이점은 무엇입니까?
이 스레딩 문제는 주로 JDK5의 동시 패키지에 익숙한 지 여부를 감지하는 데 사용됩니다. 이 두 가지의 차이점은 Cyclicbarrier가 통과 된 장벽을 재사용 할 수 있지만 CountdownLatch는 재사용 할 수 없다는 것입니다.
14) 불변의 대상은 무엇이며 동시 응용 프로그램 작성에 어떻게 도움이됩니까?
멀티 스레딩에 대한 또 다른 고전적인 인터뷰 질문은 스레드와 직접 관련이 없지만 간접적으로 도움이됩니다. 이 Java 인터뷰 질문은 그가 불변의 물건을 쓰라고 요청하거나 String이 왜 불변이되는지 묻는다면 매우 까다로워 질 수 있습니다.
15) 다중 스레드 환경에서 발생하는 일반적인 문제는 무엇입니까? 어떻게 해결 했습니까?
멀티 스레드 및 동시 프로그램에서 일반적으로 발생하는 것은 메모리 인터페이스, 레이스 조건, 교착 상태, 라이브 자물쇠 및 굶주림입니다. 문제는 끝이 없으며 잘못되면 발견하고 디버그하기가 어려울 것입니다. 이것은 대부분의 인터뷰 기반의 실용적인 응용 프로그램 기반 Java 스레딩 질문입니다.
추가 된 몇 가지 질문이 추가되었습니다.
1) Java의 녹색 스레드와 로컬 스레드의 차이점은 무엇입니까?
2) 스레드와 프로세스의 차이?
3) 멀티 스레딩에서 컨텍스트 전환이란 무엇입니까?
4) 교착 상태와 라이브 잠금 장치의 차이, 교착 상태와 굶주림의 차이?
5) Java에서 사용되는 스레드 스케줄링 알고리즘은 무엇입니까?
6) Java의 스레드 스케줄링은 무엇입니까?
7) 스레드에서 어울리는 예외를 어떻게 처리합니까?
8) 스레드 그룹은 무엇이며 Java에서 권장되지 않는 이유는 무엇입니까?
9) 응용 프로그램으로 스레드를 작성하고 관리하는 것보다 유언체 프레임 워크를 사용하는 것이 더 나은 이유는 무엇입니까?
10) Java의 집행자와 집행자의 차이점은 무엇입니까?
11) Windows 및 Linux에서 가장 긴 CPU 시간을 사용하는 스레드를 찾는 방법은 무엇입니까?
위의 내용은이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다.