JavaRush /Java Blog /Random-IT /15 domande per un colloquio tecnico per un programmatore ...
dio
Livello 16
Москва

15 domande per un colloquio tecnico per un programmatore Java con 5-6 anni di esperienza

Pubblicato nel gruppo Random-IT
Man mano che l'esperienza del programmatore aumenta dal livello di sviluppatore principiante (da 2 a 4 anni di esperienza) al livello di sviluppatore senior (da 5 a 7 anni), cambiano anche le domande del colloquio su Core Java. 15 domande per un colloquio tecnico per un programmatore Java con 5-6 anni di esperienza - 1Naturalmente rimangono le nozioni di base come strutture dati, algoritmi e programmazione orientata agli oggetti , ma le domande e le risposte diventano più dettagliate. Ricevo spesso domande su quali domande Core Java vengono poste agli sviluppatori senior o quali domande aspettarsi in un colloquio per una posizione di sviluppatore Java senior. Questo per un po' mi lascia perplesso perché una volta che diventi sviluppatore senior, inizi automaticamente a partecipare ai colloqui e devi avere un'idea di cosa aspettarti dal colloquio, ma allo stesso tempo capisco che conoscendo il colloquio domande, sarà più facile per te prepararti. Naturalmente non riceverai domande che vengono poste a programmatori con 2-3 anni di esperienza con Java, anche se questo non è escluso all'inizio dell'intervista. Non vedo alcuna differenza tra interviste telefoniche e interviste faccia a faccia. Alcune domande rimangono le stesse, altre richiedono risposte più dettagliate. In questo articolo condividerò 15 domande tecniche Core Java che sono state poste durante le interviste agli sviluppatori senior durante le interviste telefoniche. Non pubblicherò tutte le risposte, ma puoi trovarle sul blog corrente o sul blog Javarevisited .

15 domande su Core Java per programmatori con 5-6 esperienze di sviluppo

Tutte le domande sono state ricevute da sviluppatori senior con più di 5 anni di esperienza. Gli sviluppatori hanno affrontato queste domande in varie fasi del lavoro, comprese le interviste telefoniche e faccia a faccia.
  1. Come funziona un metodo getdi classe HashMapin Java?

    Sì, questa è ancora una delle domande più popolari per uno sviluppatore senior, dovresti aspettartelo in un colloquio telefonico, probabilmente ci saranno molte domande correlate dopo, controlla le risposte qui .

  2. Quali 2 metodi dovrebbe implementare l'oggetto chiave HashMap?

    equalsEhashcode

  3. Perché gli oggetti usati come chiave dovrebbero essere immutabili?

    In modo che il codice hash restituisca sempre lo stesso valore.

  4. Come si ConcurrentHashMapottiene la scalabilità?

    A volte questa domanda suona così in un'intervista: la differenza tra ConcurrentHashMape Hashtablein Java, cerca le risposte qui .

  5. Come rendere un oggetto condiviso tra diversi thread? O come passare un oggetto da un thread all'altro?

    Esistono molti modi per implementarlo, come code, scambiatori, ma il blocco delle code con il modello di progettazione Producer/Consumer è il modo più semplice per passare un oggetto da un thread a un altro.

  6. Come fai a sapere se il tuo programma ha una situazione di stallo?

    (Получив дамп потока, используя 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? И почему вы должны их использовать?

    In effetti, esiste solo una differenza tra tutti i tipi di riferimenti: il comportamento di Java Garbage Collector con gli oggetti a cui si riferiscono. In Java, gli oggetti creati utilizzando l'operatore new vengono creati tramite riferimento forte. Il Garbage Collector distrugge tali oggetti solo quando non esistono più riferimenti forti ad essi. Il pacchetto java.lang.ref ha 3 classi che descrivono 3 tipologie di link, rispettivamente SoftReference, WeakReference, PhantomReference. Gli oggetti creati tramite SoftReference verranno raccolti nel caso in cui la JVM richieda memoria. Cioè, esiste la garanzia che tutti gli oggetti SoftReference verranno raccolti prima che la JVM lanci un'eccezione OutOfMemoryError. SoftReference viene spesso utilizzato per cache ad uso intensivo di memoria. WeakReference non salva un oggetto dalla finalizzazione, anche se è disponibile memoria libera sufficiente. Non appena non rimangono più riferimenti forti e morbidi all'oggetto, è possibile finalizzarlo. Utilizzato per le cache e per creare catene di oggetti interconnessi. Gli oggetti creati tramite PhantomReference vengono distrutti quando il GC determina che gli oggetti a cui si fa riferimento possono essere deallocati. Questo tipo di riferimento viene utilizzato come alternativa alla finalizzazione (per un rilascio delle risorse più flessibile).

    Questo è l'elenco completo delle domande del colloquio per sviluppatori Java senior. Non ho incluso molte domande importanti sulla gestione delle eccezioni, sul garbage collector e sulla configurazione della JVM che sono molto popolari tra gli sviluppatori senior, forse le includerò nella parte successiva. Ma se non trovi le risposte a nessuna delle domande, faccelo sapere e aggiornerò questo post per i miei lettori abituali.

Articolo originale: 15 domande di intervista su Java di base tecnica, risposte per sviluppatori esperti
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION