JavaRush /Java блог /Random /Кофе-брейк #58. 20 важных вопросов на собеседовании, о ко...

Кофе-брейк #58. 20 важных вопросов на собеседовании, о которых должен знать Java-разработчик. Преимущества знания нескольких языков программирования

Статья из группы Random

20 важных вопросов на собеседовании, о которых должен знать Java-разработчик

Источник: Dev.toКофе-брейк #58. 20 важных вопросов на собеседовании, о которых должен знать Java-разработчик. Преимущества знания нескольких языков программирования - 1

1. Какие два типа исключений существуют в Java? В чем между ними разница?

Ответ: В Java есть два типа исключений: проверенные и непроверенные исключения.
  1. Непроверенные исключения не нужно объявлять в методе или операторе ключевых слов конструктора, если они могут быть отброшены при выполнении метода или конструктора и распространяться за пределы метода или границы конструктора.
  2. С другой стороны, проверенные исключения должны быть объявлены в методе или операторе ключевых слов конструктора.

2. Что такое JVM? Почему Java называют «платформенно-независимым языком программирования»?

Ответ: Виртуальная машина Java (JVM) — это виртуальная машина процесса, которая может выполнять байт-код Java. Каждый исходный файл Java компилируется в файл байт-кода, который выполняется JVM. Язык Java разработан для создания прикладных программ, которые можно запускать на любой платформе, без необходимости перезаписи или перекомпилирования для каждой отдельной платформы. Виртуальная машина Java делает это возможным, потому что она осведомлена о конкретной длине инструкций и других особенностях базовой аппаратной платформы.

3. В чем разница между апплетом и Java-приложением?

Ответ:
  • Апплеты выполняются в окне браузера с поддержкой Java.
  • Приложение Java — это отдельная программа Java, которая может выполняться вне браузера.
Оба они требуют наличия виртуальной машины Java (JVM). Однако, приложение Java требует основного (main) метода с определенной сигнатурой, чтобы начать его выполнение. Апплетам Java не нужен такой метод для начала выполнения. Также апплеты Java обычно используют ограничительную (restrictive) политику безопасности, тогда как приложения Java обычно используют более мягкую (relaxed) политику безопасности.

4. В чем разница между JDK и JRE?

Ответ:
  • Среда выполнения Java (JRE) — в основном это виртуальная машина Java ( JVM ), на которой выполняются ваши программы Java. Она также включает плагины браузера для выполнения апплета.
  • Java Development Kit (JDK) — это полнофункциональный комплект для разработки программного обеспечения на языке Java, включая JRE, компиляторы и инструменты (такие как JavaDoc и Java Debugger), чтобы пользователь мог разрабатывать, компилировать и выполнять приложения Java.

5. Что такое сервлет?

Ответ: Сервлет — это класс языка программирования Java, используемый для обработки клиентских запросов и создания динамического веб-контента. Сервлеты в основном используются для обработки или хранения данных, отправленных HTML-формой, предоставления динамического содержимого и управления информацией о состоянии, которой нет в протоколе HTTP без сохранения состояния.

6. Что такое страница JSP?

Ответ: Java Server Page (JSP) представляет собой текстовый документ, который содержит два типа текста:
  • статические данные,
  • элементы JSP.
Статические данные могут выражаться в любом текстовом формате, например HTML или XML. JSP — это технология, которая смешивает статический контент с динамически генерируемым контентом.

7. Что такое директивы? Какие типы директив доступны в JSP?

Ответ: Директивы — это инструкции, которые обрабатываются механизмом JSP, когда страница компилируется в сервлет. Директивы используются для установки инструкций на уровне страницы, вставки данных из внешних файлов и указания пользовательских библиотек тегов. Директивы определяются между <% @ и%>. Различные типы директив показаны ниже:
  • Директива Include: используется для включения файла и объединения содержимого файла с текущей страницей.
  • Директива страницы (Page): она используется для определения определенных атрибутов на странице JSP, таких как страница ошибки и буфер.
  • Taglib: используется для объявления пользовательской библиотеки тегов, которая используется на странице.

8. Что делают методы System.gc () и Runtime.gc ()?

Ответ: Эти методы можно использовать в качестве подсказки для JVM, чтобы запустить сборку мусора. Как правило, виртуальная машина Java (JVM) запускает сборку мусора периодически или при достижении низкого уровня свободной памяти.

9. Какие различия существуют между HashMap и Hashtable?

Ответ: Между HashMap и Hashtable в Java есть несколько различий:
  1. Hashtable синхронизируется, тогда как HashMap нет. Это делает HashMap лучше для непоточных приложений, поскольку несинхронизированные объекты обычно работают лучше, чем синхронизированные.
  2. Hashtable не допускает null ключей или значений. HashMap позволяет использовать один null ключ и любое количество null значений.
  3. Один из подклассов HashMap является LinkedHashMap, таким образом, если вы хотите предсказуемый порядок итерации (порядок вставки по умолчанию), вы можете легко поменять HashMap для LinkedHashMap. Это было бы не так просто, если бы вы использовали Hashtable.

10. Что такое JDBC?

Ответ: JDBC — это уровень абстракции, который позволяет пользователям выбирать между базами данных. С помощью JDBC разработчики могут писать приложения для баз данных на Java, не заботясь о деталях, лежащих в основе конкретной базы данных.

11. Что означает ключевое слово «static»? Можете ли вы переопределить частный или статический метод в Java?

Ответ: Ключевое слово static означает, что переменный член или метод может быть доступен, не требуя экземпляр класса, к которому он принадлежит. Пользователь не может переопределить статические методы в Java, потому что переопределение метода основано на динамической привязке во время выполнения, а статические методы постоянно привязаны во время компиляции. Статический метод не связан ни с одним экземпляром класса, поэтому эта концепция неприменима.

12. Какое значение имеет блок finally при обработке исключений?

Ответ: Блок finally всегда будет выполняться, независимо от создания исключение. Даже в случае отсутствия оператора catch и возникновения исключения. И последнее, что следует упомянуть, это то, что блок finally используется для высвобождения ресурсов, таких как буферы ввода-вывода, подключения к базе данных и т. д.

13. В чем разница между Exception и Error в Java?

Ответ: Error является критическим условием, которое не может быть обработано кодом программы. Exception (Исключение) — это исключительная ситуация, которая может быть обработана кодом программы.

14. Когда объект становится пригодным для сборки мусора в Java?

Ответ: Объект Java подлежит сборке мусора, когда он становится недоступным для программы, в которой он используется в настоящее время.

15. Что такое итератор?

Ответ: Интерфейс Iterator предоставляет ряд методов, которые могут выполнять итерацию любой коллекции. Каждая коллекция Java содержит метод Iterator, который возвращает экземпляр Iterator. Итераторы могут удалять элементы из базовой коллекции во время итерации.

16. Что такое передача по ссылке (by reference) и передача по значению (by value)?

Ответ:
  • Когда объект передается по значению, это означает, что передается копия объекта. Таким образом, даже если в этот объект внесены изменения, это не повлияет на исходное значение.
  • Когда объект передается по ссылке, это означает, что фактически объект не передается, а скорее передается ссылка на объект. Таким образом, любые изменения, внесенные внешним методом, также отражаются во всех местах.

17. Что такое Java-апплет?

Ответ: Java-апплет — это программа, которую можно включить в HTML-страницу и выполнить в клиентском браузере с поддержкой Java. Апплеты используются для создания динамических и интерактивных веб-приложений.

18. Как HashMap работает в Java?

Ответ: HashMap в Java хранит пары ключ-значение (key-value). HashMap требует хэш-функции, использует hashCode и методы equals, чтобы устанавливать и извлекать элементы и из коллекции. Когда вызывается метод put, HashMap вычисляет хеш-значение ключа и сохраняет пару в соответствующем индексе внутри коллекции. Если ключ существует, его значение обновляется новым значением. Некоторые важные характеристики HashMap — это его емкость, коэффициент загрузки и изменение порогового размера.

19. Каковы основные интерфейсы Java Collections Framework?

Ответ: Java Collections Framework представляет собой разработанный набор интерфейсов и классов, которые поддерживают операции с коллекциями объектов. Основные интерфейсы, которые находятся в Java Collections Framework:
  • Collection (коллекция) представляет группу объектов, известных как ее элементы.
  • Set — это коллекция, которая не может содержать повторяющиеся элементы.
  • List — это упорядоченная коллекция, которая может содержать повторяющиеся элементы.
  • Map — это объект, который сопоставляет ключи значениям и не может содержать повторяющиеся ключи.

20. Какие типы данных поддерживает Java? Что такое Autoboxing и Unboxing?

Ответ: Язык программирования Java поддерживает следующие восемь примитивных типов данных:
  • byte
  • short
  • int
  • long
  • float
  • double
  • boolean
  • char
Autoboxing — это автоматическое преобразование, выполняемое компилятором Java между примитивными типами и соответствующими им классами-оболочками объектов. Если преобразование идет в обратном направлении, эта операция называется Unboxing. Спасибо за чтение и удачи на техническом собеседовании!

Преимущества знания нескольких языков программирования

Источник: Dev.to Лично я убежден, что каждый разработчик должен знать больше одного языка программирования. Иными словами, если мы говорим о языках программирования, разработчик должен быть полиглотом.Кофе-брейк #58. 20 важных вопросов на собеседовании, о которых должен знать Java-разработчик. Преимущества знания нескольких языков программирования - 2

Основной и вспомогательный языки

Чтобы упростить задачу, позвольте мне пояснить некоторые термины, используемые в этой статье. Я считаю, что у каждого разработчика должен быть какой-то один язык, которому он отдает предпочтение. Этот язык я называю основным. Любые языки помимо основного я буду называть вспомогательными. Конечно, на протяжении своей карьеры разработчик может менять свой основной язык (и не раз). Это нормально. Существует множество причин, по которые это объясняют.

Эксперт

В дискуссиях о разработчиках-полиглотах часто приводят довод, что за знание второго языка разработчику приходится «расплачиваться» тем, что он хуже владеет своим основным языком. Сторонники этой идеи исходят из того, что на изучение каждого нового языка тратится время, и это время вы уже не сможете потратить на приобретение знаний о своем основном языке. Этот ход мыслей мне кажется ошибочным. Я вижу другую аналогию: спорт. Известно, что занятие одним видом спорта улучшает ваши достижения в другом. Конечно, вы сможете выиграть золотые медали в обоих видах, да и дартс вряд ли сделает вас лучшим пловцом. С другой стороны, если вы скалолаз, то йога поможет вам развить гибкость и умение удерживать равновесие. Таким образом, занятия йогой сделают вас лучшим скалолазом, чем вы были бы без них. Я думаю, что изучение каждого дополнительного языка также часто улучшает ваши навыки в других известных вам языках.

Более широкий набор инструментов

Кроме того, знание нескольких языков программирования существенно улучшает ваш арсенал разработчика. Оно расширяет ваши горизонты и позволяет смотреть на определенные вещи с разных точек зрения. Возьмем пример из повседневности. Если вы когда-либо пользовались отверткой, вы знакомы с крестообразными головками винтов. На первый взгляд все винты с крестообразными головками одинаковы и кажется, что их все можно закручивать одной отверткой. Да, бывает, что вам сложно затянуть или открутить какой-то винт, но в целом одной отвертки вам хватает.Кофе-брейк #58. 20 важных вопросов на собеседовании, о которых должен знать Java-разработчик. Преимущества знания нескольких языков программирования - 3Но однажды вы заходите в магазин с инструментами, разглядываете все эти прекрасные отверточки и обнаруживаете, что крестообразные отвертки бывают разные. Вы видите, что та отвертка, которая у вас уже есть, это Phillips (PH), и решаете купить ее сестру-двойняшку Pozidriv (PZ). И тут внезапно оказывается, что для каких-то винтов лучше подходит одна, а для каких-то — другая. Они выглядят одинаково, но они не взаимозаменяемы. (Если вам было любопытно, что означают буквы PH и PZ на ваших отвертках — теперь вы это знаете). Дополнительные знания и дополнительный инструмент позволят вам лучше справиться с задачей в следующий раз, когда вам понадобится закрутить винт с крестообразной головкой. То же самое касается и языков программирования.

Вам не нужно платить за дополнительные знания

Итак, лично я не вижу цены за изучении дополнительного языка программирования. Будете ли вы одинаково превосходно знать оба языка? Вероятно, нет, но вряд ли вы ставите перед собой такую цель. Узнаете ли вы что-то новое о своем основном языке? Я абсолютно уверен в этом. Знание нового языка выявит различия между ними. А это, в свою очередь, пробудит ваше любопытство. Вам станет интересно, почему что-то в новом языке делается по-другому и что это дает. В заключение приведу пример из жизни. Я пользовался одним инструментом командной строки, написанным на Python. Каждый раз при установке этого инструмента на новой машине возникали проблемы, и с каждым обновлением количество проблем возрастало. Если в вашем наборе инструментов есть язык Go, вы сразу заметите его преимущество в описанном сценарии. Go позволяет компилировать его артефакты в автономный двоичный файл. Вы можете быть уверены, что после компиляции двоичный файл будет работать на каждой машине, для которой вы его скомпилировали. Поэтому я портировал Python CLI на Go. С этой новой версией мне больше не нужно было беспокоиться об изменении среды выполнения или о сторонних зависимостях. Это прекрасный пример выбора наиболее подходящего инструмента для выполнения задачи. А чтобы иметь возможность выбирать, нужно стать разработчиком-полиглотом.
Комментарии (7)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Aleksandr Meretskiy Уровень 17
4 февраля 2021
Вот что получится, если перевести отличную статью тупо закинув в Гугл переводчик... Стыдно, Элеонора, стыдно!
Дмитрий Токарь Уровень 18
22 января 2021
А может проверяемые и непроверяемые исключения?
Artur Уровень 40 Expert
21 января 2021
Anonymous #2250292 Уровень 41
21 января 2021
Начал учить второй язык, позволяет отвлечся и абстрогироватся, взлянуть по новому на первый основной, но чуство что я теряю время которое мог бы потратить на более лучшее изучение первого меня не покидают. Возможно это временно.
Олег Уровень 16
21 января 2021
От души благодарность за труд!