JavaRush /Java Blog /Random-KO /5~6년 경력의 Java 프로그래머를 위한 기술 인터뷰를 위한 15가지 질문
dio
레벨 16
Москва

5~6년 경력의 Java 프로그래머를 위한 기술 인터뷰를 위한 15가지 질문

Random-KO 그룹에 게시되었습니다
프로그래머의 경력이 초보 개발자 수준(경력 2~4년)에서 시니어 개발자 수준(5~7년)으로 늘어나면서 Core Java에 대한 면접 질문도 달라집니다. 5~6년 경력의 Java 프로그래머를 위한 기술 인터뷰를 위한 15가지 질문 - 1물론 자료구조, 알고리즘, 객체지향 프로그래밍 같은 기본은 그대로지만 질문과 답변은 좀 더 자세해졌습니다. 나는 선임 개발자에게 Core Java 질문이 무엇인지, 또는 선임 Java 개발자 직책에 대한 인터뷰에서 어떤 질문을 기대하는지에 대한 질문을 자주 받습니다. 선임 개발자가 되면 자동으로 인터뷰에 참여하기 시작하고 인터뷰에서 무엇을 기대할 수 있는지에 대한 아이디어가 필요하기 때문에 잠시 혼란스럽습니다. 그러나 동시에 인터뷰 질문을 아는 것은 이해합니다. , 준비하는 것이 더 쉬울 것입니다. 물론, 인터뷰 시작 시에는 제외되지 않지만 Java에 대한 2~3년의 경험을 가진 프로그래머에게 묻는 질문은 받지 않습니다. 전화면접과 대면면접의 차이를 모르겠습니다. 일부 질문은 동일하게 유지되고 일부 질문에는 더 자세한 답변이 필요합니다. 이번 글에서는 전화 인터뷰 중 수석 개발자 인터뷰에서 받은 핵심 Java 기술 질문 15가지를 공유하겠습니다 . 모든 답변을 게시하지는 않지만 현재 블로그나 Javarevisited 블로그에서 찾을 수 있습니다 .

5~6개의 개발 경험이 있는 프로그래머를 위한 Core Java에 관한 15가지 질문

모든 질문은 5년 이상의 경험을 가진 현직 선임 개발자로부터 받았습니다. 개발자들은 전화 인터뷰와 대면 인터뷰를 포함한 다양한 고용 단계에서 이러한 질문에 직면했습니다.
  1. Java에서 get클래스 메소드는 어떻게 작동합니까 ?HashMap

    예, 이것은 여전히 ​​고위 개발자에게 가장 인기 있는 질문 중 하나입니다. 전화 인터뷰에서 예상할 수 있습니다. 그 후에도 많은 관련 질문이 있을 것입니다. 여기에서 답변을 확인하세요 .

  2. 키 객체는 어떤 2가지 메소드를 구현해야 합니까 HashMap?

    equals그리고hashcode

  3. 키로 사용되는 객체는 왜 불변이어야 합니까?

    따라서 해시 코드는 항상 동일한 값을 반환합니다.

  4. 확장성은 어떻게 ConcurrentHashMap달성됩니까?

    때때로 이 질문은 인터뷰에서 다음과 같이 들립니다. Java에서의 ConcurrentHashMap와 Java의 차이점은 여기에서Hashtable 답변을 찾아보세요 .

  5. 서로 다른 스레드 간에 객체를 공유하는 방법은 무엇입니까? 아니면 한 스레드에서 다른 스레드로 객체를 전달하는 방법은 무엇입니까?

    Есть много путей реализации этого, такие How очереди, обменники, но блокируемые очереди с шаблоном проектирования Producer/Consumer это самый простой способ, чтобы передать an object из одного потока в другой.

  6. Как узнать что в вашей программе есть взаимная блокировка?

    (Получив дамп потока, используя kill -3, применяя JConsole or VisualVM). Я предлагаю подготовиться к этому вопросу на интервью очень тщательно, так How интервьюеры любят детали, они спрашивают бывали ли в вашем проекте подобные проблемы и How вам удалось их решить.

  7. Как избежать взаимных блокировок при codeировании?

    What бы разобраться с блокировками и получить полную информацию о теме, прочтите это.

  8. What такое ожидание занятости ("Busy spinning")? Почему вы должны использовать его?

    Один из интереснейших вопросов многопоточности для старшего разработчика Java, Busy spinning это стратегия ожидания, когда поток выполняет ожидание в цикле, при этом не используя ресурсы процессора и How бы засыпая. Эту стратегию используют когда время ожидания очень мало, при этом не нагружается процессор и не останавливается поток, сохраняются все данные, которые могут быть потеряны при запуске потока на другом ядре процессора. Этот вопрос популярен у программистов создающих высоко нагруженные проекты, где программисты добиваются чрезвычайно низких задержек в работе, в диапазоне микро- и мor- секунд.

  9. What такое блокировка Чтения и Записи (ReadWriteLock)? Использует ли ConcurrentHashMap ReadWrite блокировки?

    Блокировка Чтения и Записи это такая реализация блокировки, когда несколько разных потоков пытаются произвести операцию чтения и записи с одним an objectом. сама по себе операция чтения не изменяет an object, что допускает многопоточные операции чтения без блокировок. Java предоставляет реализацию ReadWriteLock с которой стоит ознакомиться. Например ConcurrentHashMap не применяет ReadWriteLock, instead of этого он делит Hash на отдельные части и блокирует их отдельно, таким образом в любой момент времени заблокирована только часть хеша, а не он весь. Этот вопрос популярен у опытных разработчиков, обычно просят ответить подробнее, спрашивают разные реализации ReadWriteLock для разных случаев.

  10. Как сделать an object иммутабельным (не изменяемым) в Java? Зачем делать an object иммутабельным?

    Иммутабельность предполагает несколько преимуществ включая потокобезопасность, возможность кеширования, а так же делает многопоточный code более читаемым.

    Посмотрите это и научитесь делать an objectы иммутабельными. На собеседовании по этому вопросу возможны дополнительные уточнения, в зависимости от полноты вашего ответа. Например когда вы говорите, что Spring иммутабельный, будьте готовы ответить почему строки так же иммутабельны в Java.

  11. Какие шаблоны проектирования в используете?

    Всегда ожидайте вопрос о шаблонах проектирования на собеседовании к вакансии старшего разработчика. Лучше отметить любой GOF шаблон, а не Singleton or MVC который использует каждый второй Java программист. Лучший ответ может быть шаблон Декоратор or шаблон Внедрение зависимости, которые довольно популярны в Spring Framework. Так же хорошо если называемые вами шаблоны проектирования вы действительно использовали и знаете к Howому компромиссу ведет их применение. Как только вы произнесете название шаблона проектирования, например: "Фабрика", интервьюер тут же спросит: "Вы использовали это в своих проектах ?" Поэтому будьте готовы привести примеры и рассказать почему вы выбрали в своем проекте именно этот шаблон.

  12. Знаете ли вы о принципе Открытости/Закрытости or Принцип подстановки Барбары Лисков?

    Шаблоны проектирования основаны на принципах an objectно-ориентированного проектирования.

    Настоятельно рекомендую посмотреть мою статью 10 принципов an objectно ориентированного дизайна, которые должен знать программист Java, по крайней мере иметь представление о том How эти принципы помогут вам писать an objectно ориентированный code. Если у вас нет ответа на этот вопрос, вы можете вежливо ответить "нет" , никто не ожидает от вас знания ответов на все вопросы. Однако зная ответ на вопрос, который вызывает затруднения у большинства разработчиков, вы делаете свою кандиdateру на собеседовании очень сильной.

  13. Какой шаблон проектирования будете использовать, что бы защитить ваш code от сторонней библиотеки, которая будет заменена через пару лет ?

    Это всего лишь один из возможных вариаций вопроса о шаблонах проектирования, которые могут быть заданы вам в зависимости от того о чем вы говорите сейчас на собеседовании. Один из способов How оградить свой code от сторонней библиотеки, это зависимость от интерфейса, а не от реализации и использование зависимостей что бы обеспечить конкретную реализацию. Подобные вопросы часто задают старшим разработчикам с 5-7 годами опыта работы.

  14. Как предотвратить SQL инъекцию в codeе на Java?

    Этот вопрос чаще задают Java EE разработчикам, чем обычным Java программистам, тем не менее это отличный повод узнать о PreparedStatement. PreparedStatement — это an object, который представляет предварительно скомпorрованный SQL-оператор. PreparedStatement не только обеспечивает более высокую производительность, но и защищает от SQL инъекций. Если вы работаете по большей части с Java EE or J2EE, вы должны быть знакомы с некоторыми вопросами безопасности, в том числе "атака Фиксации Сессии" or "межсайтовый скриптинг", так же вам нужно уметь избегать этих атак.

  15. Расскажите об отличиях типов ссылок в Java, таких How WeakReference, SoftReference и PhantomReference? И почему вы должны их использовать?

    실제로 모든 유형의 참조 사이에는 단 하나의 차이점, 즉 참조하는 객체에 대한 Java Garbage Collector의 동작이 있습니다. Java에서는 new 연산자를 사용하여 생성된 개체가 강력한 참조에 의해 생성됩니다. 가비지 수집기는 해당 개체에 대한 강력한 참조가 더 이상 없는 경우에만 해당 개체를 삭제합니다. java.lang.ref 패키지에는 각각 SoftReference, WeakReference, PhantomReference의 3가지 유형의 링크를 설명하는 3개의 클래스가 있습니다. JVM에 메모리가 필요한 경우 SoftReference를 통해 생성된 개체가 수집됩니다. 즉, JVM이 OutOfMemoryError 예외를 발생시키기 전에 모든 SoftReference 객체가 수집된다는 보장이 있습니다. SoftReference는 메모리 집약적인 캐시에 자주 사용됩니다. WeakReference는 사용 가능한 메모리가 충분하더라도 객체가 마무리되는 것을 저장하지 않습니다. 개체에 대한 강한 참조와 부드러운 참조가 더 이상 남아 있지 않으면 개체를 마무리할 수 있습니다. 캐시 및 상호 연결된 개체 체인을 만드는 데 사용됩니다. PhantomReference를 통해 생성된 개체는 GC가 참조된 개체의 할당을 취소할 수 있다고 판단하면 삭제됩니다. 이 유형의 참조는 마무리의 대안으로 사용됩니다(더 유연한 리소스 릴리스를 위해).

    수석 Java 개발자 인터뷰 질문의 전체 목록입니다. 고위 개발자들 사이에서 매우 인기 있는 예외 처리, 가비지 수집기, JVM 구성에 대한 중요한 질문을 많이 포함하지 않았지만 아마도 다음 부분에 포함시킬 것입니다. 하지만 질문에 대한 답변을 찾지 못한 경우 알려주시면 일반 독자를 위해 이 게시물을 업데이트하겠습니다.

원본 기사: 숙련된 개발자를 위한 15가지 기술 핵심 Java 인터뷰 질문 답변
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION