JavaRush /Blog Java /Random-MS /15 soalan untuk temu bual teknikal untuk pengaturcara Jav...
dio
Tahap
Москва

15 soalan untuk temu bual teknikal untuk pengaturcara Java dengan pengalaman 5-6 tahun

Diterbitkan dalam kumpulan
Apabila pengalaman pengaturcara meningkat daripada tahap pembangun pemula (dari 2 hingga 4 tahun pengalaman) kepada tahap pembangun kanan (dari 5 hingga 7 tahun), soalan temu bual mengenai Core Java juga berubah. 15 soalan untuk temu duga teknikal untuk pengaturcara Java dengan pengalaman 5-6 tahun - 1Sudah tentu, asas seperti struktur data, algoritma dan pengaturcaraan berorientasikan objek kekal, tetapi soalan dan jawapan menjadi lebih terperinci. Saya sering menerima soalan tentang soalan Java Teras yang ditanya kepada pembangun kanan, atau soalan yang diharapkan dalam temu bual untuk jawatan pembangun kanan Java. Ini membingungkan saya seketika kerana sebaik sahaja anda menjadi pemaju kanan anda secara automatik mula mengambil bahagian dalam temu duga dan anda perlu mempunyai idea tentang apa yang diharapkan daripada temu duga, tetapi pada masa yang sama, saya faham bahawa mengetahui soalan temu duga , Anda akan lebih mudah untuk mempersiapkannya. Sudah tentu, anda tidak akan mendapat soalan yang ditanya kepada pengaturcara dengan pengalaman 2-3 tahun dengan Java, walaupun ini tidak dikecualikan pada permulaan temu duga. Saya tidak nampak apa-apa perbezaan antara temu bual telefon dan temu duga bersemuka. Sesetengah soalan tetap sama, sesetengah soalan memerlukan jawapan yang lebih terperinci. Dalam artikel ini, saya akan berkongsi 15 soalan teknikal Java Teras yang ditanya dalam temu bual pembangun kanan semasa temu duga telefon. Saya tidak menyiarkan semua jawapan, tetapi anda boleh menemuinya di blog semasa atau di blog Javarevisited .

15 soalan mengenai Java Teras untuk pengaturcara dengan 5-6 pengalaman pembangunan

Semua soalan diterima daripada pembangun kanan bekerja dengan lebih daripada 5 tahun pengalaman. Pemaju menghadapi soalan ini pada pelbagai peringkat pekerjaan, termasuk telefon dan temu duga bersemuka.
  1. Bagaimanakah kaedah getkelas berfungsi HashMapdi Jawa?

    Ya, ini masih antara soalan paling popular untuk pembangun kanan, anda harus mengharapkannya dalam temu bual telefon, mungkin akan ada banyak soalan berkaitan selepas itu, lihat jawapannya di sini .

  2. 2 kaedah yang manakah harus dilaksanakan oleh objek utama HashMap?

    equalsDanhashcode

  3. Mengapakah objek yang digunakan sebagai kunci tidak boleh diubah?

    Supaya kod hash sentiasa mengembalikan nilai yang sama.

  4. Bagaimanakah ConcurrentHashMapkebolehskalaan dicapai?

    Kadangkala soalan ini berbunyi seperti ini dalam temu bual: perbezaan antara ConcurrentHashMapdan Hashtabledalam Jawa, cari jawapan di sini .

  5. Bagaimana untuk membuat objek dikongsi antara benang yang berbeza? Atau bagaimana untuk menghantar objek dari satu benang ke yang lain?

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

    Sebenarnya, hanya terdapat satu perbezaan antara semua jenis rujukan - tingkah laku Java Garbage Collector dengan objek yang mereka rujuk. Di Java, objek yang dibuat menggunakan operator baharu dicipta dengan rujukan yang kukuh. Pengumpul sampah memusnahkan objek tersebut hanya apabila tiada lagi rujukan yang kukuh mengenainya. Pakej java.lang.ref mempunyai 3 kelas yang menerangkan 3 jenis pautan, masing-masing SoftReference, WeakReference, PhantomReference. Objek yang dibuat melalui SoftReference akan dikumpul sekiranya JVM memerlukan memori. Iaitu, terdapat jaminan bahawa semua objek SoftReference akan dikumpulkan sebelum JVM membuang pengecualian OutOfMemoryError. SoftReference sering digunakan untuk cache intensif memori. WeakReference tidak menyimpan objek daripada dimuktamadkan, walaupun terdapat memori kosong yang mencukupi. Sebaik sahaja tiada rujukan yang kuat dan lembut yang tinggal pada objek, ia boleh dimuktamadkan. Digunakan untuk cache dan untuk mencipta rantaian objek yang saling berkaitan. Objek yang dicipta melalui PhantomReference dimusnahkan apabila GC menentukan bahawa objek yang dirujuk boleh diagihkan. Rujukan jenis ini digunakan sebagai alternatif kepada pemuktamadan (untuk keluaran sumber yang lebih fleksibel).

    Ini ialah senarai keseluruhan soalan temuduga pembangun senior Java. Saya tidak memasukkan banyak soalan penting tentang pengendalian pengecualian, pengumpul sampah, penalaan JVM, yang sangat popular di kalangan pemaju kanan, mungkin saya akan memasukkannya dalam bahagian seterusnya. Tetapi jika anda tidak menemui jawapan kepada mana-mana soalan, beritahu saya dan saya akan mengemas kini siaran ini untuk pembaca tetap saya.

Artikel asal: 15 Jawapan Soalan Temuduga Java Teras Teknikal untuk Pembangun Berpengalaman
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION