15 핵심 기술 Java 면접 질문에 대한 답변 경험이 풍부한 개발자
때의 경험이 있는 Java 프로그래머에서 성장년 예를 들어 갈 때는 초보자에서 년(2~4)더 많은 경험이나 종류의 고위급(5~7 년),핵심 자바 면접 질문한다. 물론,기초과 같은 데이터 구조,알고리즘,그리고 객체-지향 프로그래밍 동일하게 유지,하지만 질문의 유형이 더 진보하고 그들의 답변은 확실히 필요한 보다 상세하고 정확합니다. 분에 대한 쿼리 핵심 Java 을 묻는 질문 수석 개발자의 5~6 년의 경험,또는,때로는 내가 인터뷰를 수석 Java developer,어떤 종류의 질문을 기대해도 좋. 이것은 때때로 내게 있는가 되면 수석에,당신은 자동으로 시작 부분의 인터뷰에서,당신의 아이디어 있어야에서 무엇을 기대해야하는지 인터뷰,그러나 같은 시간에,내가 이해할 수 있는 아이디어의 질문에 가기 전에 인터뷰,는 데 도움이 준비합니다. 물론 당신의 질문을 하나 당신에 직면 2~3 년 동안 수준 Java 인터뷰,그러나 그것은 또한에 따라 달라집 다른 라운드의 인터뷰.
나는 거의 동일하게 유지 전화 라운드에서 묻는 질문에 많은 변화를 보지 못했다. 사실 기반,코딩 질문 및 몇 가지 까다로운 질문을 찾을 수 있습니다. 반면에 얼굴을 마주 보며 인터뷰는 특히 불쾌한 후속 조치로 더욱 상세하고 까다로워졌습니다.
이 문서에서 나는 일부를 공유하 15 핵심 기술 Java 면접 질문을 보았을 묻 수석하고 경험이 풍부한 개발자의 4 에서 6 년 동안의 경험에서 서로 다른 인터뷰,대부분에서 전화 라운드 있습니다. 현재로서는 답변을 게시하지 않지만 여기 또는 Javarevisited 블로그에서 대부분의 질문에 대한 답변을 찾을 수 있습니다.
경우에 당신이 서두에 적극적으로 자바 개발자 작업을 수 있습니다 또한 도움을 받아에서 일부 좋은 책을 썼을 준비하기 위해 Java J2EE 인터뷰. 책처럼,자바 프로그래밍 인터뷰에 노출되는 모든 중요한 주제 모두에 대한 핵심 Java Java EE 인터뷰,을 포함하는 기본 Java 질문에 데이터 구조와 알고리즘,JVM 내부 GC 튜닝,최대 절전 모드 및 봄 면접 질문을 JUnit ant 단위 테스트 질문,그리고 일부 자바 8 물건입니다.
Scala,Groovy 및 Android 와 같은 다른 플랫폼과 같은 다른 JVM 언어에 대한 지식도 다룹니다. 자바 인터뷰에서 잘 할 수있는 완벽한 동반자입니다.
을 준비하려는 경우에 더 코딩 측면 다음 확인할 수 있습니다 또한 균열은 코딩 인터뷰를 포함하는 거의 150 프로그램에서 질문과 솔루션 기술의 인터뷰 빅데이테크 기업이 아마존,Facebook,Google,Twitter,Microsoft.
5~6 년 동안 15 가지 핵심 Java 질문 경험
이 모든 질문은 적어도 5 년의 경험을 가진 상당히 선임 개발자로부터 수집되었습니다. 그들은 이러한 질문에 다른 라운드의 자신의 핵심 Java 인터뷰를 포함하여,전화 및 얼굴을 맞 라운드에서 다른 기업,대부분에서의 투자 은행과 같은 바클레이,Morgan,RBS,및 다른 사람입니다.
바쁜 회전이란 무엇입니까? 왜 자바에서 사용해야합니까?
중 하나 흥미로운 멀티 스레딩 질문 수석 Java 프로그래머,바쁜 회전이 기다리고 전략에는 스레드 그냥 기다려,루프에서 손을 떼지 않고 프로그램입니다. 이것은 아주 고급 전문 기다리는 전략을 사용되는 고주파에서 거래할 때 응용 프로그램 대기 시간을 사이에 두 개의 메시지는 것은 매우 최소화합니다.
여를 해제하지 않는 CPU 일시 중단하거나,스레드 스레드 유지하는 모든 데이터 캐시고 명령할 수 있는 손실되는 경우에 스레드를 중단하고 재개에 다시 다른 중핵 CPU.
이 질문은 매우 인기가 높은 주파수는 낮은 대기 시간을 프로그래밍 도메인 프로그래머를 위해 노력하는 것은 매우 낮은 대기 시간의 범위에서 마이크로 밀리초 단위입니다. 숙련 된 프로그래머를위한 더 많은 50+고급 스레드 인터뷰 질문은 여기를 참조하십시오.
무엇을 읽기-쓰기 Lock? Java 의 ConcurrentHashMap 은 ReadWrite 잠금을 사용합니까?
ReadWrite Lock 은 읽기 및 쓰기 작업에 두 개의 개별 잠금이 사용되는 잠금 스트리핑 기술의 구현입니다. 때문에 읽기 동작을 수정하지 않는 객체의 상태,그것은 안전을 허용하는 다중 스레드에 액세스하는 공유객체를 읽지 않고 잠금,그리고 분할하여 자물쇠로 읽고 쓰기 잠금,당신은 쉽게 작업을 수행 할 수 있습니다.
Java 는 java 에서 ReentrantReadWritLock 클래스의 형태로 읽기-쓰기 잠금의 구현을 제공합니다.우틸.동시.잠금 패키지. 이것은 가치를 결정하기 전에 자신의 읽기-쓰기 잠금 구현합니다.
또한 java 의 현재 구현입니다.우틸.ConcurrentHashMap 은 ReadWriteLock 을 사용하지 않고 대신 맵을 여러 세그먼트로 나누고 다른 잠금을 사용하여 별도로 잠급니다. 즉,주어진 시간에 전체 맵 대신 ConcurrentHashMap 의 일부만 잠겨 있습니다. 자세한 내용은 concurrenthashmap 내부적으로 Java 에서 작동하는 방법을 참조하십시오.
이 핵심 Java 질문은 또한 매우 인기있는에서 선임하고 더 많은 경험 수준 Java 인터뷰 예:4 6 년 동안,당신은 면접관을 자세히 소개하고 이 같은 요청에 의해 당신의 구현을 제공 읽기-쓰기 잠금과 다른 정책이 있습니다. 숙련 된 Java 프로그래머 인 경우 Java 의 멀티 스레딩 및 동시성에 대한 더 많은 신뢰를 얻기 위해 실제로 Java 동시성을 읽는 것을 고려하십시오.
Java 에서 객체를 불변으로 만드는 방법은 무엇입니까? 왜 객체를 불변으로 만들어야합니까?
라,불변을 제공하는 여러 가지 이점을 포함하는 스레드에 안전을 캐시고 그 결과에 더 읽기 쉬운 멀티 스레드 코드입니다. 객체를 불변으로 만드는 방법을 배우려면 여기를 참조하십시오. 다시 한번,이 질문을 할 수 있도해 자세히 소개하고 이에 따라,대답을 가져올 수 있는 여러 가지 다른 질문은 예: Spring 이 불변이라고 언급 할 때 Java 에서 String 이 불변하는 이유에 대한 몇 가지 이유와 함께 준비하십시오.
Java 프로젝트에서 어떤 디자인 패턴을 사용 했습니까?
항상 수석 개발자 위치의 핵심 자바 인터뷰에 대한 몇 가지 디자인 패턴 관련 질문을 기대합니다. 거의 모든 다른 Java 개발자가 사용하는 Singleton 또는 MVC 가 아닌 GOF 디자인 패턴을 언급하는 것이 더 나은 전략입니다.
가장 좋은 방법은 스프링 프레임 워크에서 꽤 인기있는 데코레이터 패턴 또는 종속성 주입 패턴 일 수 있습니다. 프로젝트에서 실제로 사용했던 디자인 패턴만을 언급하고 그것이 절충점이라는 것을 아는 것도 좋습니다.
그것의 일반적인 일단 당신이 언급하는 특정 디자인 패턴을 말한 공장 또는 추상적 공장,면접관의 다음 질문이 될 것이다,당신은 이것을 사용 패턴 프로젝트에서? 따라서 적절한 예제와 특정 패턴을 선택하는 이유를 준비하십시오. Java 인터뷰에서보다 고급 디자인 패턴 질문에 대한이 기사를 볼 수도 있습니다.
개방형 폐쇄 형 설계 원리 또는 Liskov 대체 원리에 대해 알고 있습니까?
디자인 패턴에 기반한 객체 지향적 디자인 원칙,내가 강하게 느껴지는 모든 객체지향 개발 및 프로그래머 알고 있어야,또는 적어도 기본적인 아이디어의 것은 이러한 원칙과 그들은 어떻게 도움 당신은에게 더 나은 객체지향적 코드입니다. I
f 몰 이 질문에 대답할 수 있는 정중하게 말하지 않으로,그것은 당신이 예상하는 알고 대답하는 모든 질문,하지만 질문에 대답하여,당신은 당신의 주장으로 강한 많은 경험이 풍부한 개발자가 대답하지 않는 기본적인 질문은 이렇습니다. 클린 코드 참조 객체 지향적이고 견고한 디자인 원칙에 대해 자세히 알아보십시오.
는 디자인 패턴을 사용할 것호하기 위해 코드에서는 타사 라이브러리는 것입 될 가능성이 다른 대체에서의 몇 개월?
이것은 시나리오 기반 디자인 패턴 인터뷰 질문의 한 예일뿐입니다. 5 년 이상의 경험을 가진 자바 개발자의 실제 경험을 테스트하기 위해 회사는 이런 종류의 질문을합니다. 기대할 수 있습니다 더욱이 실제 설계 문제에서 서로 다른 포맷으로 더욱 상세한 설명이스,또는 일부만으로 의도니다.
방법 중 하나호하기 위해 코드에서는 타사 라이브러리 코드에 대한 인터페이스 보다는 오히려 구현 및 다음 사용 종속 사출을 제공하는 특정의 구현입니다. 이런 종류의 질문은 5 년에서 7 년의 경험을 가진 숙련 된 수석 자바 개발자들에게도 꽤 자주 요구됩니다.
질문 7)Java 코드에서 SQL 주입을 어떻게 방지합니까?
이 질문은 더 많은 물 J2EE 및 Java EE developers 보다 핵심 개발자는 Java,그러나,그것은 여전히 좋은 질문을 확인하 JDBC 및 보안 기술의 경험있는 Java 프로그래머를 위한 것입니다.
Preparedstatement 를 사용하여 Java 코드에서 SQL 주입을 피할 수 있습니다. 의 사용이터베이스에 대한 SQL 쿼리 실행하지만 더 나은 성능을 제공합한 보호는 Java 및 J2EE 응용 프로그램에서 SQL Injection 공격합니다.
비슷한 메모에서 작업하는 경우에 더 Java EE 또는 J2EE 쪽에,당신은 잘 알고 있어야합니다 다른 보안 문제를 포함하여 세션 수정을 공격하거나 교차 사이트 스크립팅을 공격하는 방법과 해결합니다. 이것들은 좋은 대답이 당신의 선택에 많은 차이를 만들 수있는 몇 가지 분야와 질문입니다.
질문 8)Java 에서 사용할 수있는 다른 참조 유형(예:WeakReference,SoftReference 또는 PhantomReference)에 대해 말해 주시겠습니까? 그리고 왜 그들을 사용해야합니까?
글쎄,그들은 java 에서 오는 다른 참조 유형입니다.랭.참조 패키지 및 메모리 부족 문제가있는 경우 Java 가비지 수집기를 지원하기 위해 제공됩니다. 객체를 WeakReference 로 래핑하는 경우 o 강력한 참조가있는 경우 가비지 수집을받을 수 있습니다. JVM 이 메모리가 부족한 경우 나중에 가비지 수집기에 의해 회수 될 수 있습니다.
자바.우틸.WeakHashMap 특별한 지도 구현,그 키는 개체의 잘못된 경우도 포함합의체 및 다른 사람들 개체가 가비지 수집될 수 있는 경우 GC 메모리를 필요로한다. Java Performance The Definitive Guide 참조 Java 에서 성능 문제를 처리하는 방법에 대해 자세히 알아보십시오.
질문 9)는 어떻게 얻는 방법 HashMap 자바에서 작동?
예,이것은 여전히 수석 개발자 인터뷰에서 가장 인기있는 핵심 Java 질문 중 하나입니다. 또한 기대할 수 있는 이 질문에는 전화 라운드,그 뒤로 많은 후속 질문에서 설명했듯이 내 게시물을 어떻게 HashMap 작업에서 Java.
짧은 이 질문에 대한 대답은 HashMap 을 기반으로 해시 테이블 데이터 구조와 사용하는 차()메소드를 계산하는 해시 코드 찾을 양동이에 위치의 근본적인 배열 및 equals()메소드를 검색체에서 같은 양동이에 충돌이 발생합니다. Hashmap 의 get()메소드가 Java 에서 어떻게 작동하는지에 대한 자세한 내용은 여기를 참조하십시오.
질문 10)HashMap 키 객체를 구현해야하는 두 가지 방법은 무엇입니까?
이것은 이전 질문에서 내가 말한 후속 질문 중 하나입니다. 때문에 작업의 HashMap 을 기반으로 해시 테이블 데이터 구조,객체는 원하는 사용으로 키 HashMap 또는 다른 해쉬 기반의 컬렉션을 예 Hashtable,또는 concurrenthashmap 의를 구현해야 합니다 equals()과의 차이()메소드가 있습니다.
차()를 사용한을 찾기 위해 양동이 위치 즉,인덱스의 근본적인 배열 및 equals()메서드를 사용하여 올바른 객체를 찾을 수 있에 연결 목록에 저장된 양동이에 충돌이 발생합니다. 는 방법에 의해서 Java8,HashMap 도를 사용하기 시작 나무 데이터 구조를 저장하는 개체의 경우에는 충돌을 줄이는 최악의 경우 성능의 HashMap 에서 O(n)O(logN). Java 에서 HashMap handless 충돌을 수행하는 방법에 대한 자세한 내용은 기사를 참조하십시오.
질문 11)키로 사용되는 객체가 불변이어야하는 이유는 무엇입니까?
이것은 이전의 핵심 Java 인터뷰 질문의 또 다른 후속 조치입니다. 같은 주제에 대해 점점 더 많은 질문을함으로써 후보자의 기술 지식의 깊이를 테스트하는 것이 좋습니다. 불변성에 대해 알고 있다면이 질문에 스스로 대답 할 수 있습니다. 짧은 이 질문에 대답은 키를 변경할 수 없도록 차()메소드는 항상 같은 값을 반환합니다.
이후 해시 코드를 반환에 의해 차()메서드에 따라 개체의 콘텐츠,즉 값의 구성원 변수입니다. 객체가 해당 값보다 변경 가능한 경우 변경 될 수 있으며 해시 코드도 마찬가지입니다. 동일한 경우 객체를 반환하는 다른 해시 한 번 코드를 삽입한 값 HashMap,당신은 끝날 것 중에 서로 다른 버킷 위치하지 않을 검색할 수 있다. 이것이 핵심 객체가 불변이어야하는 이유입니다. 컴파일러에 의해 시행되는 규칙은 아니지만 숙련 된 프로그래머로서 돌봐야합니다. 더 고급 자바 컬렉션 인터뷰 질문에 대한 문서를 참조하십시오.
질문 12)ConcurrentHashMap 은 확장 성을 어떻게 달성합니까?
때때로이 멀티 스레딩+콜렉션 인터뷰 질문은 Java 의 ConcurrentHashMap 과 Hashtable 의 차이점이기도합니다. 동기화 된 HashMap 또는 Hashtable 의 문제는 스레드가 Map 을 사용하여 모든 작업을 수행 할 때 전체 맵이 잠겨 있다는 것입니다.
자바.우틸.Concurrenthashmap 의 클래스 이 문제를 해결을 사용하여 잠금 스트립 기술,전체지도에서 잠겨 있는 다른 세그먼트 그리고 특정 세그먼트는 잠겨있는 동안 작성 작업이 아닌 전체 맵입니다. ConcurrentHashMap 은 또한 read 가 스레드로부터 안전한 작업이기 때문에 잠금없는 읽기를 허용함으로써 확장 성을 달성합니다. Java 의 고급 멀티 스레딩 및 동시성 질문은 여기를 참조하십시오.
질문 13)스레드간에 객체를 어떻게 공유합니까? 또는 한 스레드에서 다른 스레드로 객체를 전달하는 방법은 무엇입니까?
여러 가지 방법이 있습니다. 큐교환기,등,하지만 BlockingQueue 를 사용하여 프로듀서-소비자의 패턴은 가장 쉬운 방법을에서 다른 스레드.
질문 14)프로그램에 교착 상태가 있으면 어떻게 찾습니까?
여 실 덤프를 사용하여 죽 -3 를 사용하여,JConsole 또는 VisualVM),나는 이것을 준비하는 핵심 자바의 인터뷰에서 질문을 좀 더 자세히 탐방기자로 확실히 좋아하는 이동과 자세히 예를 들어 그들이 보고 같은 질문,당신은 정말 수행하는 프로젝트에서 또는지?
질문 15)코딩하는 동안 교착 상태를 어떻게 피합니까?
잠금 장치가 정렬 된 방식으로 획득되고 해제되도록하여이 질문에 대한 자세한 대답은 여기를 참조하십시오.
그것은 수석 개발자와 숙련 된 프로그래머를위한 핵심 Java 인터뷰 질문 목록에있는 모든 것입니다. 나는 포함되지 않은 많은 질문이에서 다른과 같은 중요한 주제의 예외 처리,가비지 컬렉션 튜닝 및 JVM 내부는 또한 매우 인기있는 중 Java 프로그래머 5 6 년 동안의 경험,어쩌면 내가 그들을 포함에 다음 부분입니다.
그런데 이러한 핵심 Java 질문 중 하나에 대한 답을 찾지 못하면 알려주십시오. 내 독자의 요청에 따라 더 자세한 옵션으로 게시물을 업데이트 할 수 있습니다.
추가 학습
완전한 자바 마스터 클래스
자바 기초: Java 언어
관련 Java 인터뷰에 대한 질문에 다른 항목
- Java 질문에 대한 전화 인터뷰 화면(목록)
- 스레드 동시성 질문에 자바의 인터뷰(목록)
- Java Enum 면접 질문과 답변(목록)
- Java OOP 면접 질문과 답변(목록)
- Spring MVC 면접 질문과 답변(목록)
- Hibernate 면접 질문과 답변(목록)
- JDBC 면접 질문과 답변(목록)
- 배열 개념의 면접 질문에 자바(목록)
- 편안한 웹 서비스에 면접 질문(목록)
- 플랫폼에 이식 가능하고 최적 JSP 면접 질문과 답변(목록)
- Java 웹 서비스에 면접 질문과 답변(목록)
Leave a Reply