JavaRush /בלוג Java /Random-HE /15 שאלות לראיון טכני למתכנת Java עם 5-6 שנות ניסיון
dio
רָמָה
Москва

15 שאלות לראיון טכני למתכנת Java עם 5-6 שנות ניסיון

פורסם בקבוצה
ככל שהניסיון של המתכנת עולה מרמה של מפתח מתחיל (מ-2 ל-4 שנות ניסיון) לרמה של מפתח בכיר (מ-5 ל-7 שנים), גם שאלות הראיונות ב-Core Java משתנות. 15 שאלות לראיון טכני למתכנת Java עם 5-6 שנות ניסיון - 1כמובן, היסודות כמו מבני נתונים, אלגוריתמים ותכנות מונחה עצמים נשארים, אבל השאלות והתשובות הופכות למפורטות יותר. לעתים קרובות אני מקבל שאלות לגבי אילו שאלות Core Java נשאלות ממפתחים בכירים, או לאילו שאלות לצפות בראיון לתפקיד מפתח בכיר ב-Java. זה מבלבל אותי לזמן מה כי ברגע שאתה הופך למפתח בכיר, אתה אוטומטית מתחיל לקחת חלק בראיונות וצריך שיהיה לך מושג למה לצפות מהראיון, אבל יחד עם זאת, אני מבין שלדעת הראיון שאלות, יהיה לך קל יותר להתכונן לזה. כמובן שלא תקבלו שאלות שישאלו למתכנתים עם ניסיון של 2-3 שנים עם Java, אם כי זה לא נשלל בתחילת הראיון. אני לא רואה הבדלים בין ראיונות טלפוניים לראיונות פנים אל פנים. חלק מהשאלות נשארות זהות, חלק מהשאלות דורשות תשובות מפורטות יותר. במאמר זה אשתף 15 שאלות טכניות Core Java שנשאלו בראיונות מפתחים בכירים במהלך ראיונות טלפוניים. אני לא מפרסם את כל התשובות, אבל אתה יכול למצוא אותן בבלוג הנוכחי או בבלוג Javarevisited .

15 שאלות על Core Java למתכנתים עם 5-6 ניסיון בפיתוח

כל השאלות התקבלו ממפתחים בכירים עובדים עם יותר מ-5 שנות ניסיון. מפתחים נתקלו בשאלות הללו בשלבים שונים של העסקה, כולל ראיונות טלפוניים וראיונות פנים אל פנים.
  1. כיצד פועלת שיטת getמחלקה HashMapב-Java?

    כן, זו עדיין אחת השאלות הפופולריות ביותר עבור מפתח בכיר, כדאי לצפות לה בראיון טלפוני, כנראה שיהיו הרבה שאלות קשורות לאחר מכן, בדוק את התשובות להן כאן .

  2. אילו 2 שיטות צריך ליישם את אובייקט המפתח HashMap?

    equalsוhashcode

  3. מדוע אובייקטים המשמשים כמפתח צריכים להיות בלתי ניתנים לשינוי?

    כך שקוד ה-hash תמיד מחזיר את אותו הערך.

  4. כיצד ConcurrentHashMapמושגת מדרגיות?

    לפעמים השאלה הזו נשמעת כך בראיון: ההבדל בין ConcurrentHashMapוב- HashtableJava, חפש תשובות כאן .

  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, אובייקטים שנוצרו באמצעות האופרטור החדש נוצרים על ידי התייחסות חזקה. אספן האשפה משמיד חפצים כאלה רק כשאין עוד התייחסויות חזקות אליהם. לחבילת java.lang.ref יש 3 מחלקות המתארות 3 סוגי קישורים, בהתאמה SoftReference, WeakReference, PhantomReference. אובייקטים שנוצרו באמצעות SoftReference ייאספו במקרה שה-JVM דורש זיכרון. כלומר, ישנה הבטחה שכל אובייקטי SoftReference ייאספו לפני שה-JVM זורק חריג OutOfMemoryError. SoftReference משמש לעתים קרובות עבור מטמונים עתירי זיכרון. WeakReference לא שומר אובייקט מביצוע סופי, גם אם יש מספיק זיכרון פנוי. ברגע שלא נותרו התייחסויות חזקות ורכות לאובייקט, ניתן לסיים אותו. משמש למטמונים וליצירת שרשראות של אובייקטים מחוברים. אובייקטים שנוצרו באמצעות PhantomReference מושמדים כאשר ה-GC קובע שניתן לבטל את הקצאת האובייקטים המוזכרים. סוג זה של הפניה משמש כחלופה לסיום (לשחרור משאבים גמישים יותר).

    זוהי הרשימה המלאה של שאלות ראיונות בכירים למפתחי Java. לא כללתי הרבה שאלות חשובות על טיפול בחריגים, אספן אשפה, כוונון JVM, שהם מאוד פופולריים בקרב מפתחים בכירים, אולי אכלול אותם בחלק הבא. אבל אם לא תמצא תשובות לאף אחת מהשאלות, הודע לי ואני אעדכן את הפוסט הזה עבור הקוראים הקבועים שלי.

מאמר מקורי: 15 שאלות לראיון Java Core Technical Answers למפתחים מנוסים
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION