JavaRush /Blog Java /Random-PL /15 pytań do rozmowy technicznej dla programisty Java z 5-...
dio
Poziom 16
Москва

15 pytań do rozmowy technicznej dla programisty Java z 5-6 letnim doświadczeniem

Opublikowano w grupie Random-PL
W miarę wzrostu doświadczenia programisty z poziomu początkującego programisty (od 2 do 4 lat doświadczenia) do poziomu starszego programisty (od 5 do 7 lat) zmieniają się także pytania na rozmowie kwalifikacyjnej dotyczące Core Java. 15 pytań do rozmowy technicznej dla programisty Java z 5-6 letnim doświadczeniem - 1Oczywiście podstawy, takie jak struktury danych, algorytmy i programowanie obiektowe, pozostają, ale pytania i odpowiedzi stają się bardziej szczegółowe. Często otrzymuję pytania dotyczące tego, jakie pytania dotyczące Core Java są zadawane starszym programistom lub jakich pytań można się spodziewać podczas rozmowy kwalifikacyjnej na stanowisko starszego programisty Java. Zastanawia mnie to przez chwilę, bo kiedy już zostaniesz starszym programistą, automatycznie zaczynasz brać udział w rozmowach kwalifikacyjnych i musisz mieć pojęcie, czego się spodziewać po rozmowie kwalifikacyjnej, ale jednocześnie rozumiem, że znajomość rozmowy kwalifikacyjnej pytania, łatwiej będzie Ci się do tego przygotować. Oczywiście nie usłyszycie pytań, jakie zadaje się programistom z 2-3 letnim doświadczeniem w Javie, choć nie jest to wykluczone na początku rozmowy. Nie widzę żadnej różnicy pomiędzy wywiadem telefonicznym a wywiadem twarzą w twarz. Niektóre pytania pozostają takie same, niektóre wymagają bardziej szczegółowych odpowiedzi. W tym artykule podzielę się 15 pytaniami technicznymi dotyczącymi Core Java , które zostały zadane podczas rozmów telefonicznych ze starszymi programistami. Nie publikuję wszystkich odpowiedzi, ale można je znaleźć na bieżącym blogu lub na blogu Javarevisited .

15 pytań na temat Core Java dla programistów z 5-6 doświadczeniem programistycznym

Wszystkie pytania otrzymano od pracujących starszych programistów z ponad 5-letnim doświadczeniem. Programiści spotykali się z tymi pytaniami na różnych etapach zatrudnienia, zarówno podczas rozmów telefonicznych, jak i bezpośrednich.
  1. Jak działa metoda getklasowa HashMapw Javie?

    Tak, to wciąż jedno z najpopularniejszych pytań zadawanych starszemu programiście, powinieneś spodziewać się go podczas rozmowy telefonicznej, po niej prawdopodobnie pojawi się wiele powiązanych pytań, sprawdź odpowiedzi na nie tutaj .

  2. Które 2 metody powinien wdrożyć obiekt kluczowy HashMap?

    equalsIhashcode

  3. Dlaczego obiekty używane jako klucz powinny być niezmienne?

    Aby kod skrótu zawsze zwracał tę samą wartość.

  4. Jak ConcurrentHashMaposiąga się skalowalność?

    Czasami to pytanie podczas wywiadu brzmi tak: różnica między ConcurrentHashMapi Hashtablew Javie, poszukaj odpowiedzi tutaj .

  5. Jak udostępnić obiekt między różnymi wątkami? Albo jak przekazać obiekt z jednego wątku do drugiego?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Tak naprawdę istnieje tylko jedna różnica pomiędzy wszystkimi typami referencji – zachowanie Java Garbage Collector w stosunku do obiektów, do których się odnoszą. W Javie obiekty utworzone za pomocą operatora new są tworzone na podstawie silnego odniesienia. Moduł zbierający elementy bezużyteczne niszczy takie obiekty tylko wtedy, gdy nie ma już do nich silnych odniesień. Pakiet java.lang.ref posiada 3 klasy opisujące 3 typy łączy, odpowiednio SoftReference, WeakReference, PhantomReference. Obiekty utworzone za pomocą SoftReference zostaną zebrane na wypadek, gdyby JVM wymagała pamięci. Oznacza to, że istnieje gwarancja, że ​​wszystkie obiekty SoftReference zostaną zebrane, zanim maszyna JVM zgłosi wyjątek OutOfMemoryError. SoftReference jest często używany w przypadku pamięci podręcznych intensywnie korzystających z pamięci. WeakReference nie chroni obiektu przed sfinalizowaniem, nawet jeśli jest wystarczająca ilość wolnej pamięci. Gdy nie ma już mocnych i miękkich odniesień do obiektu, można go sfinalizować. Używany do skrzynek i do tworzenia łańcuchów połączonych ze sobą obiektów. Obiekty utworzone za pomocą PhantomReference są niszczone, gdy GC ustali, że obiekty, do których istnieją odniesienia, mogą zostać zwolnione. Ten typ odniesienia jest używany jako alternatywa dla finalizacji (dla bardziej elastycznego uwalniania zasobów).

    To jest cała lista pytań do rozmowy kwalifikacyjnej ze starszym programistą Java. Nie uwzględniłem wielu ważnych pytań dotyczących obsługi wyjątków, zbieracza śmieci, strojenia JVM, które są bardzo popularne wśród starszych programistów, może uwzględnię je w następnej części. Jeśli jednak nie znajdziesz odpowiedzi na którekolwiek z pytań, daj mi znać, a zaktualizuję ten wpis dla moich stałych czytelników.

Artykuł oryginalny: 15 pytań do wywiadu technicznego na temat języka Java Odpowiedzi dla doświadczonych programistów
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION