Практические задачи по программированию Java для начинающих
-
Создание и запуск первого Java-приложения
Задания по теме «Создание первого приложения на Java», компиляция и запуск программы из командной строки. Создание jar файла. Аргументы командной строки.
-
Лексика языка
Задания по теме Лексика языка Java — литералы, приведение типов, практика класса Scanner, практика написания методов.
-
Операции Java
Задания по теме операции в языке Java — арифметические, побитовые, логические операции, тернарный оператор, среднее значение чисел, меньшее по модулю число.
-
Операторы
Задачи на циклы while, do-while, if else, for и операторы перехода языка Java. Для успешного написания задач рекомендуется изучить урок «Операторы языка Java».
Массивы
Массивы — задачи для реализации на языке Java. Для успешного написания задач рекомендуется изучить урок «Массивы».
-
Алгоритмы
Задачи по теме Алгоритмы Java. Работа с алгоритмом сортировки пузырьком и выбором. Для успешного написания задач рекомендуется изучить урок.
-
ООП
Задачи по теме Объектно-Ориентированное программирование (ООП) по курсу Java Программирование. Перед выполнением задач желательно просмотреть лекции темы.
-
Ключевое слово static
Задания по теме ключевое слово static в языке Java. Как посчитать количество объектов класса. Перед выполнением заданий желательно просмотреть лекции по теме.
-
Интерфейсы и перечисления
Задачи по темам интерфейсы, преобразование ссылочных типов, перечисления в языке Java.
-
Классы обертки
Задания по теме использование классов оболочек в языке Java. Перед выполнением заданий рекомендуется просмотреть урок.
-
Строки
Задачи на тему строки, классы String, StringBuilder, StringBuffer, форматирование строк, регулярные выражения в языке программирования Java.
-
Локализация и интернационализация
Задания по теме Локализация и интернационализация, классы ResourceBundle и NumberFormat в языке Java. Для успешного написания задач рекомендуется изучить урок.
Дата и время в Java 8
Задания по теме «Дата и время в языке Java 8. Форматирование даты». Для успешного написания задач рекомендуется изучить урок.
-
Внутренние классы и дженерики
Задания по теме вложенные классы, дженерики в языке Java. Для успешного написания задач рекомендуется изучить урок.
-
Коллекции в Java
Задания по теме «Коллекции в языке программирования Java». Перед выполнением заданий желательно просмотреть урок.
-
Исключения
Задания по теме создание, перехват и обработка исключений в языке программирования Java.
-
Потоки ввода — вывода
В этом разделе рассмотрим задания по теме потоки ввода вывода, а также конструкция try-with-resources в языке программирования Java.
Сериализация, клонирование
Рассмотрим практические задания по темам сериализация и клонирование в языке программирования Java.
-
Maven
Мавен широко используется в современных системах для сборки приложений. Наши задания помогут разобраться в том как работать с Мавеном.
-
Базы данных, SQL
Для работы с базами данных необходимо знание SQL. Задания этой части помогут попрактиковаться в составлении SQL запросов.
-
JDBC (Java DataBase Connectivity)
Умение работать с базами данных необходима при разработке современных приложений. Задания по теме JDBC прокачают ваши навыки.
-
Многопоточность
Задания по многопоточности всегда одни из наиболее сложных в Java программировании. Поэтому практика здесь просто необходима. Начнем с простейших заданий.
Тесты и практические задачи по программированию на itProger
Linux
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиDart & Flutter
Начальный уровень
Средний уровень
Сложный уровень
Практические задачиGodot
Начальный уровень
Средний уровень
Сложный уровень
Golang
Начальный уровень
Средний уровень
Сложный уровень
Практические задачиСи
Начальный уровень
Средний уровень
Сложный уровень
Практические задачиKotlin
Начальный уровень
Средний уровень
Сложный уровень
Практические задачиGit
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
SQL
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиMongoDB
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиRuby
Начальный уровень
Средний уровень
Сложный уровень
Практические задачиCorona SDK
Начальный уровень
Средний уровень
Сложный уровень
Swift
Начальный уровень
Средний уровень
Сложный уровень
Практические задачиQt Creator
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиNode JS
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиDjango
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиVue JS
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиАндроид
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиReact JS
Начальный уровень
Средний уровень
Сложный уровень
Практические задачиBootstrap
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиUnity
Начальный уровень
Средний уровень
Сложный уровень
Практические задачиUnity C#
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиPython
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиJava
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиC++
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиC#
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиPHP&MySQL
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиjQuery
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиJavaScript
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиCSS3
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиHTML5
Начальный уровень
Средний уровень
Сложный уровень
Интерактивные тесты
Практические задачиЗдесь представлены практические и тестовые задания по программированию. Вы найдете как легкие, так и сложные задания по различным темам программирования
упражнений по программированию на Java с решениями
Упражнения по программированию на Java с решениями — практика онлайнЛегко Сумма двух чисел Сумма кратных трех и пяти Факториал Линейный поиск Обратная строка Найти максимум Среднее значение (лямбда-выражения Java 8 и потоки) Преобразование в верхний регистр (Java 8 Lambdas и потоки) N-й нечетный элемент Количество узлов дерева Количество узлов в списке Подсчитать количество листовых узлов Глубина бинарного дерева Найдите второе по величине число в массиве
Умеренный Физз Базз Простое число Число Фибоначчи Палиндром Чек Четная сумма Фибоначчи Наибольший общий делитель Пакеты для риса Строки фильтров (лямбда-выражения и потоки Java 8) Разделенные запятыми (Java 8 Lambdas и потоки) Цезарь Шифр Строгая проверка двоичного дерева Две суммы (пара с заданной суммой)
вызов Самый длинный палиндром в Word Самая длинная общая последовательность Самый большой главный фактор Пакеты для риса (часть 2) Идеальная проверка двоичного дерева Полная проверка двоичного дерева
О
- Я создал этот веб-сайт, чтобы помочь разработчикам улучшить свои навыки программирования, выполняя простые упражнения по программированию. Целевая аудитория — инженеры-программисты, инженеры по автоматизации тестирования или все, кто интересуется компьютерным программированием. Основным языком программирования является Java, так как он зрелый и простой в освоении, но вы можете решать те же задачи на любом другом языке (Kotlin, Python, Javascript и т. д.).
Особенности
- Проблемы с двоичным деревом часто встречаются на собеседованиях по программированию в Google, Amazon и Facebook.
- Оттачивайте свои навыки работы с лямбда-выражениями и потоковой передачей, решая практические задачи по программированию на Java 8.
- Проверьте наше решение «Берлинские часы» — часто используемое упражнение с кодом.
- У нас тоже есть видео! Ознакомьтесь с решением FizzBuzz, задачей, широко используемой при просмотре телефонов.
Твиты пользователя code_exercises
1.
Выберите уровень сложностиЛегкий, средний или сложный.
2. Выберите упражнение
из списка упражнений по кодированию, обычно встречающихся на собеседованиях.
3. Введите свой код
Нет IDE, нет автокоррекции… точно так же, как вопрос на собеседовании на доске.
4. Результаты проверки
Обычно 3-5 модульных тестов проверяют ваш код.
Посетите наш блог
Интервью по кодированию Учебное пособие | 50+ вопросов по программированию
При подготовке к собеседованию по кодированию риск номер один заключается в том, чтобы потеряться в огромном количестве информации, доступной в Интернете. Мы слишком хорошо знакомы с тем, что тратим часы на то, чтобы перескакивать с видео на YouTube на пост в блоге «х лучших советов, как пройти собеседование по программированию» и обратно к другому видео. Важно выбрать план и придерживаться его. В этом посте я использую свой 5-летний опыт работы с этим веб-сайтом, чтобы составить руководство, как преуспеть на вашем следующем собеседовании по программированию.
Это руководство предназначено для интервью с крупными технологическими компаниями, такими как FAANG (аббревиатура от Facebook, Apple, Amazon, Netflix и Google). Влияние этих компаний настолько велико, что другие компании, такие как стартапы и интернет-магазины, приняли аналогичные процессы собеседования. Эти компании считают, что глубокое понимание основ компьютерных наук (алгоритмов и структур данных) является важным показателем того, насколько хорошо вы работаете в качестве инженера-программиста. Они также считают, что упражнения по кодированию могут эффективно проверить вашу готовность решать сложные проблемы и быть любознательным. Это контрастирует с процессом собеседования, распространенным в 90-х и 2000-х годов, в которых больше внимания уделялось конкретным технологиям.
Этот план включает следующие разделы:
- Массив, строки и временная сложность
- Списки, очереди, стеки
- Бинарные деревья
- Хеширование и хеш-карты
- Графики
- Поиск и сортировка
- Динамическое программирование
- Практика! Упражняться! Упражняться!
Массивы, строки и временная сложность
Я рекомендую начать с массивов и упражнений со строками. Почему? Во-первых, упражнения по кодированию с использованием массивов и строк по-прежнему наиболее распространены. Во-вторых, важно начинать медленно, чтобы не перегружаться новыми концепциями и идеями. Имея это в виду, я бы не стал начинать с теории графов или динамического программирования.
Также рекомендуется смешивать упражнения по программированию, которые должны занимать 70% вашего времени на подготовку, с некоторыми материалами о временной сложности и нотации Big O.
Тип | Деятельность | Уровень | Комментарии |
---|
Списки, стеки и очереди
Линейные структуры данных, такие как списки, стеки и очереди, довольно часто появляются на собеседованиях по программированию. В некоторых упражнениях в постановке задачи явно упоминаются эти структуры данных. Для других упражнений проблема поначалу кажется не связанной; предполагается использовать эти структуры для решения или оптимизации решения.
Тип | Деятельность | Уровень | Комментарии |
---|
Хеширование
Когда его спросили о трех самых важных алгоритмах в Google, ведущий поисковик Google ответил: «хеширование, хеширование и еще раз хеширование». В частности, в интервью хеш-карты обычно используются для оптимизации решения. Задачи с решениями грубой силы O(N2) или O(N log N) могут быть оптимизированы до линейной сложности благодаря линейному поиску по хеш-карте. Классический пример — упражнение «Сумма двух», которое вы решили в разделе с массивами.
Тип | Деятельность | Уровень | Комментарии |
---|
Бинарные деревья
Вопросы о бинарном дереве часто встречаются на собеседованиях в сфере высоких технологий. Не верите мне? Спросите Макса Хауэлла, создателя Homebrew, популярного менеджера пакетов macOS, используемого большинством инженеров Google.
Google: 90% наших инженеров используют программное обеспечение, которое вы написали (Homebrew), но вы не можете инвертировать двоичное дерево на доске, так что отвали.
— Макс Хауэлл (@mxcl) 10 июня 2015 г.
Есть и вторая причина обратить особое внимание на этот раздел. Двоичные деревья — это более простая версия других более сложных структур данных, таких как недвоичные деревья, графы, попытки или кучи. Например, поиск в ширину (BFS) на бинарных деревьях является упрощенной версией графов BFS. Помните, начните с простого, наращивайте.
Прежде чем изучать стандартные алгоритмы двоичного дерева, я рекомендую вам начать с простых упражнений по программированию, чтобы вы могли работать с рекурсией. Конечно, вы можете полностью их пропустить, если вы уже знакомы с бинарными деревьями и рекурсией.
- Подсчет количества узлов
- Подсчет числа листовых узлов
- Поиск глубины бинарного дерева
Эти упражнения более просты, чем обычные упражнения, которые вы, вероятно, найдете на собеседовании на месте. Тем не менее, вы можете найти их на ранних этапах процесса собеседования в таких компаниях или если вы планируете подать заявку в более мелкие компании.
Затем погрузитесь в Обход дерева в глубину. Не позволяйте жаргону обескуражить вас; эти понятия просты. Вот определение из Википедии: «Алгоритм начинается с корневого узла (выбирая какой-либо произвольный узел в качестве корневого узла в случае графа) и исследует как можно дальше каждую ветвь, прежде чем вернуться».
DFS отличается от поиска в ширину (BFS), где вы сначала посещаете корень, затем его дочерние элементы, затем все внуки и так далее. В большинстве реализаций используется очередь «первым пришел – первым обслужен» (FIFO). Очередь гарантирует, что мы потребляем узлы «уровень за уровнем».
Двоичные деревья поиска (BST) — это двоичные деревья с отсортированными значениями; в частности, для каждого узла левый дочерний элемент меньше, а правый дочерний элемент имеет такое же или большее значение. BST популярны, потому что позволяют выполнять быстрый поиск. Сложность времени поиска в обычном бинарном дереве не лучше, чем в связанном списке; вам все равно придется перебирать все узлы, пока не будет найдено значение. С другой стороны, бинарные деревья поиска имеют временную сложность O (log N), если предположить, что дерево сбалансировано.
Тип | Деятельность | Уровень | Комментарии |
---|
Графики
АлгоритмыГрафики являются неотъемлемой частью подготовки к интервью. К счастью, такие алгоритмы, как BFS и DFS, являются обобщениями своих аналогов бинарного дерева, поэтому ничто в этом разделе не должно вас удивить.