🔥 🚀 Важно для всех, кто работает с Java! 🔥
На JavaRocks ты найдешь уникальные туториалы, практические задачи и редкие книги, которых не найти в свободном доступе. Присоединяйся к нашему Telegram-каналу JavaRocks — стань частью профессионального сообщества!
Мир Java-разработки полон нюансов — вне зависимости от того, новичок вы или профессионал. Особенно сложно бывает подготовиться к собеседованию. Эта статья представляет собой обширный справочник, охватывающий ключевые темы, важные как для начинающих, так и для опытных разработчиков. Вы найдете подборку из 80 важных вопросов по Java, охватывающих основы Core Java, ООП и продвинутые темы, затрагивающие функционал Java 8.
Вопросы в статье сгруппированы по пяти основным темам: основы и синтаксис, объектно-ориентированное программирование (ООП), обработка исключений и утверждения, основные API, а также параллелизм и многопоточность. Такой подход поможет системно подготовиться к собеседованиям по Java — от базовых вопросов до тем, связанных с Java 8.
1. Основы и синтаксис
Вопрос 1: Что такое Java?
Ответ: Java — это высокоуровневый, объектно-ориентированный язык программирования, основанный на классовой модели. Он разработан с целью минимизировать зависимость от конкретной реализации. Java — язык общего назначения, поддерживающий принцип Write Once, Run Anywhere (WORA), что означает: один раз скомпилированный Java-код способен выполняться на любых системах, где установлена Java, без необходимости повторной компиляции.
Вопрос 2: Объясните, что такое JDK, JRE и JVM.
Ответ:
- JVM (Java Virtual Machine): JVM — это движок, который запускает Java-программы. Он берёт байткод (то, что получается после компиляции) и превращает его в машинный код, понятный железу.
- JRE (Java Runtime Environment): JRE — это окружение, необходимое для запуска Java-программ. Оно включает библиотеки и другие файлы, которые используются JVM во время выполнения.
- JDK (Java Development Kit): JDK — программная среда, включающая в себя JRE и набор инструментов для разработки (компилятор, отладчик и др.). JDK используется при создании Java-приложений.
Вопрос 3: Что такое переменные в Java?
Ответ: Переменные — это именованные контейнеры для хранения данных. В Java каждая переменная должна быть объявлена с указанием типа данных, который определяет, какие значения и в каком объёме она может хранить. Java — строго типизированный язык, то есть все переменные должны быть объявлены до их использования.
Вопрос 4: Что такое приведение типов в Java?
Ответ: Приведение типов (typecasting) — это процесс преобразования значения переменной из одного типа данных в другой. В Java существует два основных подхода:
- Неявное (расширяющее) приведение (Widening casting) — выполняется автоматически при переходе от типа с меньшим объёмом к типу с большим.
- Явное (сужающее) приведение (Narrowing casting) — требует указания преобразования вручную, когда нужно привести значение от большего типа к меньшему.
Вопрос 5: Как объявить массив в Java?
Ответ: Массив представляет собой объект, предназначенный для хранения заданного количества элементов одного и того же типа. В Java массив объявляется так:
int[] myIntArray = new int[10]; // declares an array of integers
String[] myStringArray = new String[50]; // declares an array of strings
Run CodeВопрос 6: Объясните, что такое метод main в Java.
Ответ: Метод main
— это точка входа в любую Java-программу. Он должен быть public
, static
, не возвращать значения (void
) и принимать в качестве аргумента массив строк (String[]
). Сигнатура метода выглядит так:
public static void main(String[] args) {
// code to be executed
}
Run CodeВопрос 7: Что такое литералы в Java?
Ответ: Литералы — это фиксированные значения, которые присваиваются переменным в Java. Например, 100
, -90
, 3.14F
, 'A'
и "Hello"
— все это литералы.
Вопрос 8: Что такое конструктор в Java?
Ответ: Конструктор в Java — это блок кода, похожий на метод, который вызывается при создании экземпляра объекта. В отличие от методов, у конструктора нет возвращаемого типа, и его имя совпадает с именем класса.
Вопрос 9: Что такое перегрузка методов в Java?
Ответ: Перегрузка методов — это возможность иметь несколько методов с одинаковым именем в одном классе, если их списки параметров различаются. Это связано с полиморфизмом времени компиляции (или статическим полиморфизмом).
Вопрос 10: Что такое пакет в Java?
Ответ: Пакет в Java представляет собой пространство имён, которое группирует связанные классы и интерфейсы. Пакеты можно сравнить с папками на компьютере, которые упорядочивают файлы по категориям для удобства использования и управления.
2. Объектно-ориентированное программирование (ООП)
Вопрос 11: Что такое объектно-ориентированное программирование?
Ответ: Объектно-ориентированное программирование (ООП) — это парадигма программирования, основанная на концепции “объектов”, которые могут содержать данные в виде полей (часто называемых атрибутами или свойствами) и код в виде процедур (которые обычно называются методами).
Вопрос 12: Каковы основные принципы ООП?
Ответ:
- Инкапсуляция: Принцип, согласно которому данные и методы, работающие с этими данными, объединяются в единый элемент — класс. Это также включает в себя механизм скрытия данных (например, приватных переменных) от внешнего доступа.
- Абстракция: Процесс сокрытия сложных деталей реализации с предоставлением простого и понятного интерфейса для взаимодействия.
- Наследование: Механизм, позволяющий новому классу наследовать атрибуты и методы уже существующего класса, расширяя его функциональность.
- Полиморфизм: Способность различных классов реализовывать один и тот же метод, но с разным поведением в зависимости от типа объекта, который его вызывает.
Вопрос 13: Что такое наследование?
Ответ: Наследование в Java — это механизм, позволяющий одному объекту наследовать все свойства и методы родительского объекта. Этот принцип является неотъемлемой частью объектно-ориентированных систем.
Вопрос 14: Что такое интерфейс в Java?
Ответ: Интерфейс в Java является ссылочным типом, аналогичным классу, но он может содержать только константы, сигнатуры методов, методы по умолчанию, статические методы и вложенные типы. Интерфейсы не могут содержать поля экземпляра. Все методы в интерфейсах являются абстрактными по умолчанию.
Вопрос 15: Объясните разницу между абстрактными классами и интерфейсами.
Ответ:
- Абстрактный класс: Может включать как абстрактные, так и конкретные (неабстрактные) методы. Абстрактные классы служат основой для наследования, где подклассы обязаны расширить их и реализовать абстрактные методы.
- Интерфейс: Обычно состоит исключительно из абстрактных методов. Однако начиная с Java 8, он может содержать методы по умолчанию и статические методы. Интерфейсы предназначены для реализации концепции абстракции.
Вопрос 16: Что такое полиморфизм?
Ответ: Полиморфизм в Java — это способность объекта принимать различные формы. Наиболее часто это реализуется путем использования ссылки на родительский класс для обращения к объекту дочернего класса.
Вопрос 17: Объясните переопределение метода.
Ответ: Переопределение метода в объектно-ориентированном программировании — это возможность дочернего класса предоставить свою собственную реализацию метода, который уже реализован в одном из его родительских классов. Метод, который переопределяется, называется переопределённым методом.
Вопрос 18: Что такое ключевое слово «super»?
Ответ: Ключевое слово super
в Java — это переменная-ссылка, которая используется для обращения к объектам родительского класса. Оно может быть использовано для вызова методов родительского класса, а также для доступа к конструктору родительского класса.
Вопрос 19: Что такое геттеры и сеттеры в Java?
Ответ: Геттеры и сеттеры — это методы, которые обеспечивают доступ к значению приватной переменной и позволяют изменять её. Например:
public class Data {
private int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
Run CodeВопрос 20: Что означает ключевое слово static в Java?
Ответ: Ключевое слово static
означает, что конкретный элемент принадлежит не экземпляру типа, а самому типу. Это означает, что создаётся только один экземпляр этого статического элемента, который разделяется всеми экземплярами класса.
3. Обработка исключений и assert-выражения
Вопрос 21: Что такое обработка исключений?
Ответ: Обработка исключений — это механизм, предназначенный для обработки ошибок времени выполнения, таких как ClassNotFoundException
, IOException
, SQLException
, RemoteException
и другие. Основное преимущество использования обработки исключений — сохранение нормального потока выполнения программы.
Вопрос 22: Что такое блок try-catch?
Ответ: Ключевое слово try
используется для обозначения участка кода, где потенциально может возникнуть исключение. Блок catch
перехватывает и обрабатывает это исключение. После try
обязательно должен идти либо catch
, либо finally
, либо и то и другое.
Вопрос 23: Что такое блок finally?
Ответ: Блок finally
в Java используется для размещения кода, который должен быть выполнен в любом случае — например, код очистки: закрытие файлов, соединений с базой данных и т.п. Блок finally
выполняется независимо от того, возникло исключение или нет.
Вопрос 24: Что такое исключение?
Ответ: Исключение — это проблема, которая возникает во время выполнения программы. Java предоставляет механизм обработки таких ситуаций с помощью конструкции try-catch
, чтобы избежать аварийного завершения работы приложения.
Вопрос 25: Что такое проверяемые (checked) исключения?
Ответ: Проверяемые исключения проверяются на этапе компиляции. Это означает, что если метод может выбросить такое исключение, то он должен либо обработать его с помощью блока try-catch
, либо объявить его через ключевое слово throws
. Примеры: IOException
, SQLException
и др.
Вопрос 26: Что такое непроверяемые (unchecked) исключения?
Ответ: Непроверяемые исключения не проверяются на этапе компиляции. Это означает, что если программа выбрасывает такое исключение, и вы его не обработали и не объявили, ошибка компиляции не возникнет. Как правило, это ошибки в логике программы или неправильное использование API. Примеры: ArithmeticException
, NullPointerException
, ArrayIndexOutOfBoundsException
и др.
Вопрос 27: Что такое ключевое слово throws?
Ответ: Ключевое слово throws
используется для объявления исключения. Оно информирует программиста о том, что метод может выбросить исключение, поэтому желательно предусмотреть обработку этого исключения, чтобы сохранить нормальное выполнение программы.
Вопрос 28: В чём разница между throw
и throws
?
Ответ: throw
— это сам запуск исключения (вызывается в теле метода),
а throws
— это предупреждение в сигнатуре метода, что он может выбросить исключение. Важно: проверяемые (checked) исключения нельзя выбросить через throw
без объявления throws
.
Вопрос 29: Для чего используется ключевое слово throw
?
Ответ: Ключевое слово throw
применяется в теле метода, чтобы вручную выбросить исключение — например, когда программа сталкивается с ошибочной ситуацией.
Вопрос 30: Объясните, что такое пользовательские исключения.
Ответ: Пользовательские исключения — это исключения, которые программист создаёт сам, когда стандартных недостаточно. Это реализуется путём расширения (наследования) класса Exception
.
4. Основные API
Вопрос 31: Что такое String API?
Ответ: String API — это набор классов и методов, предназначенных для работы со строками. Он включает в себя операции над символами, сравнение строк, поиск подстрок, извлечение подстрок и создание изменённых копий строк.
Вопрос 32: Объясните разницу между “String”, “StringBuilder” и “StringBuffer”.
Ответ:
String
: это обычная строка, которую нельзя изменить после создания.StringBuilder
: строка, которую можно менять, но она не защищена от одновременного доступа из нескольких потоков.StringBuffer
: тоже изменяемая строка, но с защитой для многопоточности.
Вопрос 33: Что такое неизменяемый объект?
Ответ: Это объект, который нельзя изменить после создания. Например, строки в Java — они неизменяемы: любые изменения создают новую строку.
Вопрос 34: Что такое классы-обёртки (wrapper classes)?
Ответ: Классы-обёртки преобразуют примитивные типы данных Java в ссылочные типы (объекты). У каждого примитивного типа есть соответствующий класс-обёртка, который «оборачивает» значение примитива в объект. Примеры: Integer
, Character
, Double
и др.
Вопрос 35: Что такое autoboxing (автоупаковка) и unboxing (распаковка) в Java?
Ответ: Автупаковка — это автоматическое преобразование примитивного типа в соответствующий класс-обёртку, которое выполняется компилятором Java. Например, преобразование int
в Integer
, double
в Double
и т. д.
Распаковка — это обратный процесс, при котором объект-обёртка преобразуется обратно в примитивный тип.
Вопрос 36: Что такое API коллекций (Collections API)?
Ответ: API коллекций — это набор классов и интерфейсов, предназначенных для работы с коллекциями объектов. Эти классы и интерфейсы находятся в пакете java.util
. Фреймворк коллекций предоставляет интерфейсы, описывающие различные типы коллекций, и классы, которые реализуют эти интерфейсы.
Вопрос 37: Что такое дженерики?
Ответ: Дженерики позволяют использовать типы (классы и интерфейсы) в качестве параметров при определении классов, интерфейсов и методов. Подобно формальным параметрам в методах, параметры типа позволяют повторно использовать один и тот же код с разными типами данных. Если обычные параметры принимают значения, то параметры типа принимают типы.
Вопрос 38: Зачем нужен Iterator в Java?
Ответ: Интерфейс Iterator
предоставляет методы для перебора элементов любой коллекции. Он работает как механизм итерации (или “цикла”) и позволяет проходить по коллекции, а также, при необходимости, удалять элементы во время обхода.
Вопрос 39: В чем разница между Iterator и ListIterator?
Ответ:
Iterator
: позволяет проходить по коллекции только в прямом направлении. С его помощью можно получать элементы и удалять их.ListIterator
: расширяет возможности Iterator — он позволяет перемещаться в обоих направлениях (вперед и назад), а также изменять элементы списка.
Вопрос 40: Что такое Map?
Ответ: Map — это объект, сопоставляющий ключи со значениями. Он не может содержать повторяющиеся ключи; каждый ключ может быть связан только с одним значением. Примеры: HashMap
, TreeMap
, LinkedHashMap
.
5. Параллелизм
Вопрос 41: Что такое параллелизм (concurrency)?
Ответ: Параллелизм — это способность выполнять несколько программ или несколько частей одной программы одновременно. Это позволяет выполнять множество задач за меньшее время.
Вопрос 42: Что такое поток (thread)?
Ответ: Поток — это единица выполнения в программе. Виртуальная машина Java позволяет приложению запускать несколько потоков одновременно.
Вопрос 43: В чем разница между процессом и потоком?
Ответ:
- Процесс — это программа в состоянии выполнения. Имеет собственный набор переменных и стек исполнения.
- Поток — часть процесса. Потоки внутри одного процесса разделяют общие переменные и стек.
Вопрос 44: Что такое многопоточность?
Ответ: Многопоточность — это возможность Java выполнять одновременно две или более части программы для максимально эффективного использования процессора.
Вопрос 45: Что означает ключевое слово “synchronized”?
Ответ: Ключевое слово synchronized используется для управления доступом нескольких потоков к общим ресурсам. Оно позволяет определить метод или блок кода, к которому может быть доступ только у одного потока за раз.
Вопрос 46: Что такое “deadlock” (взаимная блокировка)?
Ответ: Deadlock происходит, когда два или более потока оказываются заблокированы навсегда, каждый ожидает завершения другого. Это обычно происходит из-за ошибок в синхронизации потоков.
Вопрос 47: Какие существуют состояния потока?
Ответ: Поток может находиться в одном из следующих состояний:
- New (Новый): Поток находится в новом состоянии, если вы создали экземпляр класса Thread, но не вызвали метод
start()
. - Runnable (Готов к выполнению): Поток готов к запуску, но в данный момент не выполняется.
- Blocked (Заблокирован): Поток ожидает получения блокировки монитора.
- Waiting (Ожидание): Поток ожидает выполнения действия от другого потока, но делает это бесконечно долго.
- Timed Waiting (Ожидание с тайм-аутом): Поток ожидает выполнения действия от другого потока в пределах определенного времени.
- Terminated (Завершен): Поток завершил выполнение и находится в этом состоянии.
Вопрос 48: Что такое ключевое слово «volatile»?
Ответ: Ключевое слово volatile
используется для указания, что значение переменной будет изменяться разными потоками. Объявление переменной как volatile
в Java означает:
- Значение этой переменной никогда не будет кэшироваться локально в потоке: все чтения и записи будут происходить непосредственно в “основную память”;
- При доступе к переменной будет выполняться синхронизация, как если бы она была заключена в блок
synchronized
, синхронизированный на самой переменной.
Вопрос 49: Что такое безопасность потоков?
Ответ: Безопасность потоков (или “потокобезопасность”) означает, что метод или экземпляр класса могут использоваться несколькими потоками одновременно без возникновения проблем. Примером безопасности потоков является синхронизированный метод.
Вопрос 50: Как создать поток в Java?
Ответ: В Java существует два способа создания потока:
- путем расширения класса Thread:
public class MyThread extends Thread {
public void run() {
System.out.println("Thread running");
}
}
Run Code- реализуя интерфейс Runnable:
public class MyRunnable implements Runnable {
public void run() {
System.out.println("Runnable running");
}
}
Run Code6. Stream API
Вопрос 51: Что такое Stream API в Java?
Ответ: Stream API в Java представляет собой новый механизм для работы с данными, который позволяет обрабатывать данные декларативным способом. Она поддерживает такие операции, как map, filter, limit, reduce, find, match и sort для коллекций объектов.
Вопрос 52: Преимущества использования Streams в Java
Ответ: Использование Streams помогает сделать код более лаконичным и удобным для чтения. Они упрощают выполнение массовых операций как последовательно, так и параллельно. Streams не хранят данные, а работают непосредственно с исходными структурами данных (например, коллекциями).
Вопрос 53: Как извлечь Stream из List?
Ответ:
List<String> myList = Arrays.asList("a1", "a2", "b1", "c2", "c1");
Stream<String> myStream = myList.stream();
Run CodeВопрос 54: Чем отличаются “map” и “flatMap” в Stream?
Ответ:
map
: Преобразует каждый элемент в потоке с помощью заданной функции. Это преобразование один к одному.flatMap
: Преобразует элементы Stream в другой тип и объединяет все потоки в один Stream.
Вопрос 55: Что такое метод “filter” в Stream?
Ответ: Метод filter
используется для оценки каждого элемента в потоке с использованием предиката. Если предикат возвращает true
, элемент включается в результирующий поток.
Вопрос 56: Как сортировать Stream?
Ответ:
List<String> myList = Arrays.asList("a1", "a2", "b1", "c2", "c1");
List<String> sortedList = myList.stream()
.sorted()
.collect(Collectors.toList());
Run CodeВопрос 57: Что такое терминальные операции в Stream?
Ответ: Терминальные операции завершают обработку потока и возвращают результат. Примеры терминальных операций: forEach
, reduce
, collect
, sum
.
Вопрос 58: Что такое метод collect в Stream?
Ответ: Метод collect
является терминальной операцией, которая преобразует элементы потока в различные типы данных, такие как List
, Map
или Integer
.
Вопрос 59: Что такое операция forEach в Stream?
Ответ: Операция forEach
позволяет пройтись по каждому элементу потока. Это терминальная операция, которая потребляет поток и делает его недоступным для дальнейшего использования.терминальной операцией, что означает, что она потребляет поток и не может быть использована впоследствии.
Вопрос 60: Объясните операцию reduce в Stream.
Ответ: Операция reduce
объединяет все элементы потока в один результат, применяя бинарный оператор. Эта операция принимает два параметра: начальное значение и функцию бинарного оператора.
7. JDBC
Вопрос 61: Что такое JDBC?
Ответ: JDBC (Java Database Connectivity) — это набор инструментов для подключения Java-программ к базам данных через SQL-запросы. С его помощью Java-приложения могут взаимодействовать с базами данных, поддерживающими SQL.
Вопрос 62: Какие основные компоненты JDBC?
Ответ: Основные компоненты JDBC включают DriverManager, Driver, Connection, Statement, ResultSet и SQLException.
Вопрос 63: Как подключиться к базе данных в Java?
Ответ:
Connection conn = DriverManager.getConnection("jdbc:subprotocol:subname", "user", "password");
Вопрос 64: Что такое «Statement» и «PreparedStatement»?
Ответ:
- Statement: Используется для выполнения простых SQL-запросов без параметров.
- PreparedStatement: Применяется, когда нужно многократно выполнить один и тот же запрос с разными параметрами или выполнить запрос с параметрами, которые привязываются динамически.
Вопрос 65: Как выполнить запрос в JDBC?
Ответ:
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM myTable");
Run CodeВопрос 66: Что такое ResultSet в JDBC?
Ответ: ResultSet
— это таблица данных, представляющая собой набор результатов запроса к базе данных, который генерируется после выполнения SQL-запроса.
Вопрос 67: Что подразумевается под пакетной обработкой в JDBC?
Ответ: Пакетная обработка в JDBC позволяет выполнять несколько SQL-запросов за один раз, что помогает снизить нагрузку на сеть и ускорить выполнение операций с базой данных.
Вопрос 68: Какие существуют типы JDBC-драйверов?
Ответ: Существует четыре типа драйверов JDBC:
- Тип 1: мост JDBC-ODBC
- Тип 2: драйвер Native-API/частично на Java
- Тип 3: драйвер Net-protocol/полностью на Java
- Тип 4: драйвер Native-protocol/полностью на Java
Вопрос 69: Как обрабатывать исключения SQL?
Ответ:
try {
// code that may throw SQLException
} catch (SQLException ex) {
// handle exception
}
Run CodeВопрос 70: Что такое пул соединений?
Ответ: Пул соединений — это техника, используемая для повышения производительности приложений, которые часто обращаются к базе данных. Она заключается в повторном использовании уже существующих соединений, а не в создании нового соединения каждый раз.
8. Интерфейс List
Вопрос 71: Что такое интерфейс List в Java?
Ответ: Интерфейс List входит в структуру коллекций Java и представляет собой упорядоченную коллекцию, то есть последовательность элементов. Элементы могут быть получены по их индексу, который является целым числом (позиция элемента в списке), и можно искать элементы в этом списке.
Вопрос 72: Как выполнить итерацию по List?
Ответ:
List<String> list = Arrays.asList("apple", "banana", "cherry");
for(String fruit : list) {
System.out.println(fruit);
}
Run CodeВопрос 73: В чем разница между ArrayList и LinkedList?
Ответ:
- ArrayList: Реализация интерфейса List с использованием массива, который можно изменять по размеру. Лучше всего подходит для хранения и доступа к данным.
- LinkedList: Реализация интерфейса List с использованием двусвязного списка. Лучше подходит для операций, которые требуют частого добавления и удаления элементов в любой части списка.
Вопрос 74: Как удалить элементы из списка?
Ответ: Элементы можно удалить из списка с помощью метода remove()
. Этот метод можно вызвать как с использованием элемента, так и с использованием индекса:
list.remove("apple"); // removes "apple" from list
list.remove(0); // removes the first element
Run CodeВопрос 75: то такое классы Vector и Stack?
Ответ:
- Vector: Похож на ArrayList, но является синхронизированным.
- Stack: Класс, который наследуется от Vector и предоставляет пять дополнительных операций для работы с коллекцией как с обычным стеком.
Вопрос 76: Как преобразовать List в массив?
Ответ:
String[] array = list.toArray(new String[list.size()]);
Вопрос 77: Сравните Iterator и ListIterator.
Ответ:
- Iterator: Может проходить по списку только в одном направлении (вперед).
- ListIterator: Может проходить по списку в обоих направлениях, изменять список во время итерации и получать текущую позицию итератора в списке.
Вопрос 78: Что такое метод subList в List?
Ответ: Метод subList
создает представление части этого списка между указанными индексами fromIndex
(включительно) и toIndex
(не включая).
Вопрос 79: Как синхронизировать список (List)?
Ответ:
List<String> syncList = Collections.synchronizedList(new ArrayList<String>());
Вопрос 80: Каковы преимущества использования Generics с List?
Ответ: Использование Generics позволяет гарантировать типовую безопасность. Это означает, что в список можно добавить только объекты нужного типа, что уменьшает количество ошибок и избавляет от необходимости выполнять приведение типов.
Часто задаваемые вопросы
В : Требуется ли опыт программирования для изучения Java?
О : Хотя опыт программирования будет полезен, он не обязателен. Начинающие могут изучать Java с помощью различных ресурсов, таких как книги, онлайн-курсы и практика.
В : Насколько важно понимать объектно-ориентированное программирование для изучения Java?
О : Это очень важно. Java основана на объектно-ориентированном подходе. Знание таких концепций ООП, как классы, объекты, наследование, полиморфизм и прочее, является основой успешного освоения языка.ие.
В : Какой лучший способ практиковаться в программировании на Java?
О : Эффективная практика заключается в регулярном написании кода и решении задач на таких платформах, как LeetCode, HackerRank и Codecademy. Также важно работать над проектами, чтобы научиться применять теоретические знания в реальных задачах.
В : Можно ли изучать Java без установки программного обеспечения?
О : Да, есть несколько онлайн-IDE, например, Repl.it и JDoodle, которые позволяют писать и выполнять код на Java без установки дополнительных программ.
В : Какие типичные ошибки допускают новички при изучении Java?
О : К типичным ошибкам относятся поверхностное изучение основ, недостаточная практика и непонимание процесса отладки кода. Лучше сразу обращать на это внимание — так обучение пойдёт быстрее и легче.
Перевод статьи «The 80 Top Java Interview Questions and Answers».