Практические задачи по программированию 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 модульных тестов проверяют ваш код.

[email protected]

Посетите наш блог

Интервью по кодированию Учебное пособие | 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, являются обобщениями своих аналогов бинарного дерева, поэтому ничто в этом разделе не должно вас удивить.