JavaRush /Blogue Java /Random-PT /15 perguntas para uma entrevista técnica para um programa...
dio
Nível 16
Москва

15 perguntas para uma entrevista técnica para um programador Java com 5 a 6 anos de experiência

Publicado no grupo Random-PT
À medida que a experiência do programador aumenta do nível de desenvolvedor iniciante (de 2 a 4 anos de experiência) para o nível de desenvolvedor sênior (de 5 a 7 anos), as perguntas da entrevista sobre Core Java também mudam. 15 perguntas para uma entrevista técnica para um programador Java com 5 a 6 anos de experiência - 1É claro que o básico, como estruturas de dados, algoritmos e programação orientada a objetos, permanece, mas as perguntas e respostas tornam-se mais detalhadas. Freqüentemente recebo perguntas sobre quais perguntas do Core Java são feitas aos desenvolvedores seniores ou quais perguntas esperar em uma entrevista para um cargo de desenvolvedor Java sênior. Isso me intriga por um tempo porque quando você se torna um desenvolvedor sênior você automaticamente começa a participar de entrevistas e precisa ter uma ideia do que esperar da entrevista, mas ao mesmo tempo, entendo que conhecer as perguntas da entrevista , Será mais fácil para você se preparar para isso. Claro, você não receberá perguntas feitas a programadores com 2 a 3 anos de experiência com Java, embora isso não seja excluído no início da entrevista. Não vejo nenhuma diferença entre entrevistas por telefone e entrevistas presenciais. Algumas perguntas permanecem as mesmas, algumas perguntas exigem respostas mais detalhadas. Neste artigo, compartilharei 15 perguntas técnicas básicas do Java que foram feitas em entrevistas com desenvolvedores seniores durante entrevistas por telefone. Não estou postando todas as respostas, mas você pode encontrá-las no blog atual ou no blog Javarevisited .

15 perguntas sobre Core Java para programadores com 5 a 6 experiência em desenvolvimento

Todas as perguntas foram recebidas de desenvolvedores seniores com mais de 5 anos de experiência. Os desenvolvedores encontraram essas questões em vários estágios do emprego, incluindo entrevistas por telefone e presenciais.
  1. Como funciona um método getde classe HashMapem Java?

    Sim, essa ainda é uma das perguntas mais populares para um desenvolvedor sênior, você deve esperar isso em uma entrevista por telefone, provavelmente haverá muitas perguntas relacionadas depois disso, confira as respostas para elas aqui .

  2. Quais são os dois métodos que o objeto-chave deve implementar HashMap?

    equalsEhashcode

  3. Por que os objetos usados ​​como chave deveriam ser imutáveis?

    Para que o código hash retorne sempre o mesmo valor.

  4. Como ConcurrentHashMapa escalabilidade é alcançada?

    Às vezes essa pergunta soa assim em uma entrevista: a diferença entre ConcurrentHashMape Hashtableem Java, procure respostas aqui .

  5. Como fazer um objeto ser compartilhado entre diferentes threads? Ou como passar um objeto de um thread para outro?

    Есть много путей реализации этого, такие 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? И почему вы должны их использовать?

    Na verdade, há apenas uma diferença entre todos os tipos de referências - o comportamento do Java Garbage Collector com os objetos aos quais se referem. Em Java, os objetos criados usando o operador new são criados por referência forte. O coletor de lixo destrói esses objetos somente quando não há mais referências fortes a eles. O pacote java.lang.ref possui 3 classes que descrevem 3 tipos de links, respectivamente SoftReference, WeakReference, PhantomReference. Objetos criados via SoftReference serão coletados caso a JVM necessite de memória. Ou seja, há uma garantia de que todos os objetos SoftReference serão coletados antes que a JVM lance uma exceção OutOfMemoryError. SoftReference é frequentemente usado para caches com uso intensivo de memória. WeakReference não evita que um objeto seja finalizado, mesmo que haja memória livre suficiente. Assim que não houver mais referências fortes e suaves para o objeto, ele poderá ser finalizado. Usado para caches e para criar cadeias de objetos interconectados. Os objetos criados através do PhantomReference são destruídos quando o GC determina que os objetos referenciados podem ser desalocados. Este tipo de referência é utilizado como alternativa à finalização (para liberação mais flexível de recursos).

    Esta é a lista completa de perguntas da entrevista para desenvolvedores Java seniores. Não incluí muitas questões importantes sobre tratamento de exceções, coletor de lixo, ajuste de JVM, que são muito populares entre desenvolvedores seniores, talvez eu as inclua na próxima parte. Mas se você não encontrar respostas para nenhuma das perguntas, me avise e atualizarei este post para meus leitores regulares.

Artigo original: 15 perguntas básicas da entrevista sobre Java, respostas para desenvolvedores experientes
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION