JavaRush /Blog Java /Random-VI /15 câu hỏi phỏng vấn kỹ thuật dành cho lập trình viên Jav...
dio
Mức độ
Москва

15 câu hỏi phỏng vấn kỹ thuật dành cho lập trình viên Java 5-6 năm kinh nghiệm

Xuất bản trong nhóm
Khi kinh nghiệm của lập trình viên tăng dần từ cấp độ nhà phát triển mới bắt đầu (từ 2 đến 4 năm kinh nghiệm) lên cấp độ nhà phát triển cấp cao (từ 5 đến 7 năm), các câu hỏi phỏng vấn về Core Java cũng thay đổi. 15 câu hỏi phỏng vấn kỹ thuật dành cho lập trình viên Java 5-6 năm kinh nghiệm - 1Tất nhiên, những kiến ​​thức cơ bản như cấu trúc dữ liệu, thuật toán và lập trình hướng đối tượng vẫn được giữ nguyên, nhưng các câu hỏi và câu trả lời sẽ trở nên chi tiết hơn. Tôi thường nhận được câu hỏi về những câu hỏi Core Java nào được đặt ra cho các nhà phát triển cấp cao hoặc những câu hỏi nào sẽ xảy ra trong cuộc phỏng vấn cho vị trí nhà phát triển Java cấp cao. Điều này khiến tôi bối rối một thời gian vì khi bạn trở thành nhà phát triển cấp cao, bạn sẽ tự động bắt đầu tham gia các cuộc phỏng vấn và bạn cần có ý tưởng về những gì mong đợi từ cuộc phỏng vấn, nhưng đồng thời, tôi hiểu rằng việc biết về cuộc phỏng vấn câu hỏi, bạn sẽ dễ dàng chuẩn bị hơn. Tất nhiên, bạn sẽ không nhận được những câu hỏi dành cho các lập trình viên có 2-3 năm kinh nghiệm với Java, mặc dù điều này không bị loại trừ khi bắt đầu cuộc phỏng vấn. Tôi không thấy có sự khác biệt nào giữa phỏng vấn qua điện thoại và phỏng vấn trực tiếp. Một số câu hỏi vẫn giữ nguyên, một số câu hỏi yêu cầu câu trả lời chi tiết hơn. Trong bài viết này, tôi sẽ chia sẻ 15 câu hỏi kỹ thuật Core Java đã được hỏi trong các cuộc phỏng vấn nhà phát triển cấp cao trong các cuộc phỏng vấn qua điện thoại. Tôi không đăng tất cả các câu trả lời nhưng bạn có thể tìm thấy chúng trên blog hiện tại hoặc trên blog Javarevisited .

15 câu hỏi về Core Java dành cho lập trình viên có 5-6 kinh nghiệm phát triển

Tất cả các câu hỏi đều được nhận từ các nhà phát triển cấp cao đang làm việc với hơn 5 năm kinh nghiệm. Các nhà phát triển gặp phải những câu hỏi này ở nhiều giai đoạn làm việc khác nhau, bao gồm cả phỏng vấn qua điện thoại và gặp mặt trực tiếp.
  1. getPhương thức lớp hoạt động như thế nào HashMaptrong Java?

    Vâng, đây vẫn là một trong những câu hỏi phổ biến nhất đối với một nhà phát triển cấp cao, bạn nên mong đợi điều đó trong một cuộc phỏng vấn qua điện thoại, sau đó có thể sẽ có nhiều câu hỏi liên quan, hãy xem câu trả lời cho chúng tại đây .

  2. Đối tượng chính nên triển khai 2 phương pháp nào HashMap?

    equalshashcode

  3. Tại sao các đối tượng được sử dụng làm khóa lại không thể thay đổi?

    Để mã băm luôn trả về cùng một giá trị.

  4. Khả năng mở rộng đạt được như thế nào ConcurrentHashMap?

    Đôi khi câu hỏi này nghe giống như thế này trong một cuộc phỏng vấn: sự khác biệt giữa ConcurrentHashMapHashtabletrong Java, hãy tìm câu trả lời tại đây .

  5. Làm cách nào để tạo một đối tượng được chia sẻ giữa các luồng khác nhau? Hoặc làm thế nào để truyền một đối tượng từ luồng này sang luồng khác?

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

    Trên thực tế, chỉ có một điểm khác biệt giữa tất cả các loại tham chiếu - hành vi của Java Garbage Collector với các đối tượng mà chúng tham chiếu tới. Trong Java, các đối tượng được tạo bằng toán tử mới được tạo bằng tham chiếu mạnh. Trình thu gom rác chỉ phá hủy các đối tượng đó khi không còn tham chiếu mạnh đến chúng nữa. Gói java.lang.ref có 3 lớp mô tả 3 loại liên kết lần lượt là SoftReference, WeakReference, PhantomReference. Các đối tượng được tạo thông qua SoftReference sẽ được thu thập trong trường hợp JVM yêu cầu bộ nhớ. Nghĩa là, có sự đảm bảo rằng tất cả các đối tượng SoftReference sẽ được thu thập trước khi JVM đưa ra ngoại lệ OutOfMemoryError. SoftReference thường được sử dụng cho các bộ đệm sử dụng nhiều bộ nhớ. WeakReference không lưu một đối tượng khỏi bị hoàn thiện, ngay cả khi có đủ bộ nhớ trống. Ngay khi không còn tham chiếu mạnh và mềm nào cho đối tượng, nó có thể được hoàn thiện. Được sử dụng để lưu trữ và tạo chuỗi các đối tượng được kết nối với nhau. Các đối tượng được tạo thông qua PhantomReference sẽ bị hủy khi GC xác định rằng các đối tượng được tham chiếu có thể bị hủy phân bổ. Loại tham chiếu này được sử dụng thay thế cho việc quyết toán (để phát hành tài nguyên linh hoạt hơn).

    Đây là toàn bộ danh sách các câu hỏi phỏng vấn nhà phát triển Java cấp cao. Tôi chưa đưa vào nhiều câu hỏi quan trọng về xử lý ngoại lệ, thu gom rác, điều chỉnh JVM, những câu hỏi rất phổ biến đối với các nhà phát triển cấp cao, có thể tôi sẽ đưa chúng vào phần tiếp theo. Nhưng nếu bạn không tìm thấy câu trả lời cho bất kỳ câu hỏi nào, hãy cho tôi biết và tôi sẽ cập nhật bài đăng này cho những độc giả thường xuyên của tôi.

Bài viết gốc: 15 câu trả lời phỏng vấn Java cốt lõi về kỹ thuật dành cho nhà phát triển có kinh nghiệm
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION