Этот пост для вас, если вы можете ответить “да” на все/большинство приведенных ниже вопросов:
- Вы являетесь старшекурсником инженерного факультета на четырехлетнем курсе.
- Ваша специальность – компьютерные науки и инженерия.
- Вы склонны к программированию.
- Вы подумываете о карьере программиста.
- Вы слышали о Java от своих друзей/коллег и хотите изучить его.
- У вас есть некоторая форма знакомства с языком программирования Java, но вы хотите еще больше расширить свои знания.
В наши дни легко быть ошеломленным, глядя на то, что другие люди делают в области программирования. Учитывая разнообразие доступных вариантов с низким кодом/без кода для “создания” программного обеспечения. Будучи учителем около 6-7 лет, я встречал немало учеников, которые подходили ко мне и спрашивали: “Чему мы должны научиться?”.
На что я в основном отвечаю: “Ну, начните с языка программирования и хорошо его изучите”. Вначале я и не подозревал, что это утверждение в основном приносит больше вреда, чем пользы студенту, который запутался в своих карьерных путях или в том, какой выбор они делают, учитывая возможности, с которыми они в настоящее время сталкиваются.
Затем они (студенты) начинают задавать мне множество вопросов, которые в значительной степени субъективны и зависят от самого студента. Иногда это также вопрос проявления инициативы и/или принятия решения о выборе и доведения его до конца, чего, как я заметил, не хватает молодому поколению в наши дни. Последующие вопросы, которые я затем получаю, примерно таковы:
- Какой “лучший” язык программирования?
- Является ли язык программирования “X” лучше, чем язык программирования “Y”? Почему?
- С чего мне следует начать?
- Чему мне нужно научиться, чтобы получить работу?
- Я посмотрел это видео на YouTube с этим типичным ютубером, будет ли этого достаточно?
- Нужно ли мне для этого приобретать дорогостоящий курс?
Нужно ли мне для этого приобретать дорогостоящий курс?
Как я уже испытал, если вы готовы изучать Java (поскольку изначально этот пост был о Java) в 2021 году, ваш путь от “новичка” до
Прежде чем мы начнем изучать вещи, я просто хотел бы сделать оговорку, что многие люди скажут вам обратное, они часто будут подходить к вам и говорить: “О, это так просто, просто сделайте “это”, посмотрите это “видео”, запишитесь на этот курс …”, который это полная чушь. Изучение языка программирования точно так же, как изучение нового разговорного языка, ваш мозг должен устранить или, по крайней мере, игнорировать ваши предыдущие предубеждения и привыкнуть мыслить в терминах нового языка. Для этого вам нужно прилагать постоянные усилия и усердно работать. Если бы это было на самом деле так просто, как говорят некоторые люди, все, кого вы знаете, были бы разработчиками rockstar, и мы бы жили в программной утопии, свободной от проблем (возможно, изобилующей ошибками, lol).
Просто помни, что КАЖДЫЙ язык программирования говорит компьютеру, что делать!. В конце концов, все переводится на 1 и 0 для вашего процессора, так что не имеет значения, какой язык вы используете для “кодирования” вашего следующего большого приложения или веб-сайта! Языки предназначены для повышения эффективности и пользы разработчиков, а не компьютеров.
Для начала я бы порекомендовал эту книгу: Java: Руководство для начинающих Герберта Шильдта
1. Синтаксис и семантика:
- Типы данных (8 Примитивных Типов Java)
- Переменные (Ключевое слово
var
) - Преобразование и приведение типов
- Автоматическое Продвижение Типа
- Массивы
- Операторы в Java (Арифметические, Побитовые, Реляционные, Логические логические, Присваивание,
?
Оператор, Приоритет оператора) - Управляющие операторы в Java (If, If-Else, If-Else-If, Switch (новые и старые))
- Операторы итерации (While, Do-While, For, For-Each, Вложенные циклы) [продолжение, перерыв и ярлыки]
- Использование аргументов командной строки в программе Java
- Класс
String
- Varargs [Аргументы Переменной Длины]
- Класс сканера, класс BufferedReader
2. Объектно-ориентированное программирование:
- Типы программных модулей в Java [4 – Класс, Абстрактный класс, Интерфейс, Перечисление + 1 запись]
- Объявление и использование объектов в методах
- Ссылочные типы и значения
- Методы (сигнатура метода, типы методов)
- Конструкторы
- Тот
этот
ключевое слово - Методы Перегрузки
- Перегрузка Конструкторов
- Использование объектов (ссылочных типов) в качестве параметров и аргументов метода
- Использование объектов (ссылочных типов) в качестве возвращаемых типов методов
- Рекурсия в Java (Стек вызовов, Хвостовая рекурсия, Головная рекурсия)
- Ключевое слово
static
(созданиестатических
членов в классе) - Ключевое слово
final
(с классом, с методом, с переменной-членом класса) - Вложенные классы и Внутренние классы
- Наследование в Java (суперклассы и подклассы) [Иерархии в программах]
- Ключевое слово
super |/(вызов членов суперкласса из подкласса)
Типы иерархий в Java [Простые, многоуровневые, Множественные, Гибридные] - Переопределение метода
- Абстрактные классы и абстрактные члены
- Сопряжение (определение интерфейса, реализация интерфейса, вложенные интерфейсы, элементы в интерфейсе, частные ИЛИ статические методы ИЛИ методы по умолчанию)
- Пакеты в программе Java (ПУТЬ к КЛАССУ, импорт)
- Обработка исключений (типы исключений, перехваченные и неперехваченные исключения, try-catch, try-finally, try-catch-finally, множественные блоки перехвата, вложенные операторы try,
- throw
и
throwsключевое слово, пользовательские исключения)
Многопоточное программирование (Потоковая модель Java, Основной поток, Создание потока, - Поток
класс и
Выполняемыйинтерфейс, несколько потоков,
sleep()метод, приоритеты потоков, использование лямбда-выражения для создания потока, использование анонимного класса для создания потока)
Классы перечисления в Java - Оболочки типов (классы-оболочки в Java)
- Упаковка и распаковка
- Аннотации на Java
- Обобщения в Java (Ограниченные типы, Типы подстановочных знаков, Ограниченные подстановочные знаки, общие методы, общие конструкторы, обобщения со статическими методами, общие классы, общие интерфейсы, перегрузка и переопределение в общих методах, Удаление типов, общие массивы)
- Лямбда-выражение (функциональные интерфейсы, лямбда в качестве аргументов, ссылки на методы)
- Stream API (типы методов, общие методы из API)
- Обработка строк (конструкторы классов строк, длина строки, операции со строками, извлечение символов, сравнение строк, поиск строк, изменение строк, StringBuilder, StringBuffer)
- Классы в пакете
- java.lang
3. Структуры данных и алгоритмы:
- Фреймворк коллекций на Java (интерфейсы коллекций – List, Set, Deque, классы коллекций, – ArrayList, LinkedList, HashSet, TreeSet, PriorityQueue, ArrayDeque, использование итераторов для коллекций, класс итератора, цикл для каждого, потоки, Пользовательские классы коллекций, Интерфейсы карт и классы карт, Вектор, Стек, Словарь, Хэш-таблица, Свойства)
- Разное – StringTokenizer, Набор битов, Необязательно, LocalDate, LocalTime, LocalDateTime, GregorianCalendar, Часовой пояс, Locale, Случайный, Таймер, Валюта, Формат номера, формат строки.
4. Решение проблем:
Когда у вас есть приличные знания по темам, написанным выше, вы можете попробовать свои силы в решении некоторых проблем (также известных как Конкурентное программирование, CP). Вот некоторые рекомендуемые веб-сайты
- ТопКодер
- CodeForces
- КодерБайт
- Проект Эйлер
- Хакерранк
- CodeChef
- Упражнение
- Кодовые войны
- Код LeetCode
- Сфера Онлайн Судья SPOJ
- Игра в кодирование Выберите ту, которая вам нравится, все они предназначены для одного и того же, чтобы помочь вам расширить свои знания языка. Есть также несколько хороших книг, которые помогут вам изучить основы конкурентного программирования, такие как
- Руководство по конкурентному программированию Изучению и совершенствованию алгоритмов с помощью Конкурсов
- Проблемы с кодированием на Java
- Полное руководство по собеседованию по кодированию на Java
Намеренный порядок разделов – 1-2-3-4, хотя вы могли бы выполнить раздел 4 в соответствии с вашим комфортом, вы также можете начать раздел 4 после раздела 2. ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ что это не полный список, есть еще много чего, что нужно охватить, это просто для того, чтобы вам было достаточно комфортно, чтобы после этого вы могли попробовать что-нибудь с Java. Надеюсь, этот пост в блоге поможет хотя бы некоторым из вас!
Оригинал: “https://dev.to/dbc2201/a-simple-roadmap-for-java-beginners-in-2021-3k06”