Придумай концепцию любого IT-решения для сельского хозяйства и получи шанс выиграть 50 000 рублей. Тебе не обязательно быть программистом: предложить свою идею могут маркетологи, дизайнеры, продакт-менеджеры или команды студентов. Прием заявок — до 24 марта на сайте
https://prglb.ru/1dwt6
Генеральный спонсор — Россельхозбанк.
https://prglb.ru/1dwt6
Генеральный спонсор — Россельхозбанк.
Как написать код, который полюбят все
Набор практик хорошего кода, не зависящих от языка программирования. Примените их, и ваш код будет не только работать, но и читаться.
https://prglb.ru/2569h
Набор практик хорошего кода, не зависящих от языка программирования. Примените их, и ваш код будет не только работать, но и читаться.
https://prglb.ru/2569h
Уроки Java по самым сложным и продвинутым темам.
https://www.youtube.com/playlist?list=PL786bPIlqEjTO9pC06Phl7AtlH1wxyxgB
https://www.youtube.com/playlist?list=PL786bPIlqEjTO9pC06Phl7AtlH1wxyxgB
YouTube
Advanced Java - YouTube
#вопросы_с_собеседований
Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?
Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?
❓Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?
❗️ArrayList:
✔️Доступ к произвольному элементу по индексу за константное время O(1);
✔️Доступ к элементам по значению за линейное время O(N);
✔️Вставка в конец в среднем производится за константное время O(1);
✔️Удаление произвольного элемента из списка занимает значительное время, т.к. при этом все элементы находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (capacity) не изменяется);
✔️Вставка элемента в произвольное место списка занимает значительное время, т.к. при этом все элементы находящиеся «правее» смещаются на одну ячейку вправо;
✔️Минимум накладных расходов при хранении.
LinkedList:
✔️На получение элемента по индексу или значению потребуется линейное время O(N);
✔️На добавление и удаление в начало или конец списка потребуется константное O(1);
✔️Вставка или удаление в/из произвольного места за константное O(N);
✔️Требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся ещё указатели на следующий и предыдущий элементы списка.
В целом, LinkedList в абсолютных величинах проигрывает ArrayList и по потребляемой памяти, и по скорости выполнения операций. LinkedList предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список.
❗️ArrayList:
✔️Доступ к произвольному элементу по индексу за константное время O(1);
✔️Доступ к элементам по значению за линейное время O(N);
✔️Вставка в конец в среднем производится за константное время O(1);
✔️Удаление произвольного элемента из списка занимает значительное время, т.к. при этом все элементы находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (capacity) не изменяется);
✔️Вставка элемента в произвольное место списка занимает значительное время, т.к. при этом все элементы находящиеся «правее» смещаются на одну ячейку вправо;
✔️Минимум накладных расходов при хранении.
LinkedList:
✔️На получение элемента по индексу или значению потребуется линейное время O(N);
✔️На добавление и удаление в начало или конец списка потребуется константное O(1);
✔️Вставка или удаление в/из произвольного места за константное O(N);
✔️Требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся ещё указатели на следующий и предыдущий элементы списка.
В целом, LinkedList в абсолютных величинах проигрывает ArrayList и по потребляемой памяти, и по скорости выполнения операций. LinkedList предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список.
#вопросы_с_собеседований
Расскажите о типах шаблонов проектирования.
Расскажите о типах шаблонов проектирования.
❓Расскажите о типах шаблонов проектирования.
❗️✔️Основные (Fundamental) — основные строительные блоки других шаблонов. Большинство других шаблонов использует эти шаблоны в той или иной форме.
✔️Порождающие шаблоны (Creational) — шаблоны проектирования, которые абстрагируют процесс создания экземпляра. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять созданный объект, а шаблон, порождающий объекты, делегирует создание объектов другому объекту.
✔️Структурные шаблоны (Structural) определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу.
✔️Поведенческие шаблоны (Behavioral) определяют взаимодействие между объектами, увеличивая таким образом его гибкость.
❗️✔️Основные (Fundamental) — основные строительные блоки других шаблонов. Большинство других шаблонов использует эти шаблоны в той или иной форме.
✔️Порождающие шаблоны (Creational) — шаблоны проектирования, которые абстрагируют процесс создания экземпляра. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять созданный объект, а шаблон, порождающий объекты, делегирует создание объектов другому объекту.
✔️Структурные шаблоны (Structural) определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу.
✔️Поведенческие шаблоны (Behavioral) определяют взаимодействие между объектами, увеличивая таким образом его гибкость.
Как сделать эффективными обсуждения по видеосвязи
Поговорим об использовании видеосвязи для удаленной работы. Бесплатные тарифы программ для видеоконференций и простые практики эффективных обсуждений.
https://prglb.ru/3enw4
Поговорим об использовании видеосвязи для удаленной работы. Бесплатные тарифы программ для видеоконференций и простые практики эффективных обсуждений.
https://prglb.ru/3enw4
Java Language Features, 2nd Edition (2018)
Многие опытные Java-программисты не знают всех тонкостей и интересных фишек языка, о которых автор рассказывает в данной книге. Более того, в ней содержатся интересные замечания о ядре Java и советы по написанию более эффективного рабочего кода.
Скачать книгу
Многие опытные Java-программисты не знают всех тонкостей и интересных фишек языка, о которых автор рассказывает в данной книге. Более того, в ней содержатся интересные замечания о ядре Java и советы по написанию более эффективного рабочего кода.
Скачать книгу
Telegram
Книги для программистов (reserved)
Java Language Features, 2nd Edition (2018)
Автор: Kishori Sharan
Автор: Kishori Sharan
Еще более углубленный курс по Java - Java Beans, JMX, форматирование строк и другое.
https://www.youtube.com/playlist?list=PL786bPIlqEjQifz13w4nAE9d-53HW387n
https://www.youtube.com/playlist?list=PL786bPIlqEjQifz13w4nAE9d-53HW387n
YouTube
More advanced
Share your videos with friends, family, and the world
#вопросы_с_собеседований
Несколько вопросов по многопоточности
1. Каким образом можно создать поток?
2. Чем различаются Thread и Runnable?
3. В чём заключается разница между методами start() и run()?
Несколько вопросов по многопоточности
1. Каким образом можно создать поток?
2. Чем различаются Thread и Runnable?
3. В чём заключается разница между методами start() и run()?
❓Каким образом можно создать поток?
✔️Создать потомка класса Thread и переопределить его метод run();
✔️Создать объект класса Thread, передав ему в конструкторе экземпляр класса, реализующего интерфейс Runnable. Этот интерфейс содержит метод run(), который будет выполняться в новом потоке. Поток закончит выполнение, когда завершится его метод run().
✔️Вызвать метод submit() у экземпляра класса, реализующего интерфейс ExecutorService, передав ему в качестве параметра экземпляр класса, реализующего интерфейс Runnable или Callable (содержит метод call(), в котором описывается логика выполнения).
❓Чем различаются Thread и Runnable?
Thread - это класс, некоторая надстройка над физическим потоком.
Runnable - это интерфейс, представляющий абстракцию над выполняемой задачей.
Помимо того, что Runnable помогает разрешить проблему множественного наследования, несомненный плюс от его использования состоит в том, что он позволяет логически отделить логику выполнения задачи от непосредственного управления потоком.
❓В чём заключается разница между методами start() и run()?
Несмотря на то, что start() вызывает метод run() внутри себя, это не то же самое, что просто вызов run(). Если run() вызывается как обычный метод, то он вызывается в том же потоке и никакой новый поток не запускается, как это происходит в случае, когда вы вызываете метод start().
✔️Создать потомка класса Thread и переопределить его метод run();
✔️Создать объект класса Thread, передав ему в конструкторе экземпляр класса, реализующего интерфейс Runnable. Этот интерфейс содержит метод run(), который будет выполняться в новом потоке. Поток закончит выполнение, когда завершится его метод run().
✔️Вызвать метод submit() у экземпляра класса, реализующего интерфейс ExecutorService, передав ему в качестве параметра экземпляр класса, реализующего интерфейс Runnable или Callable (содержит метод call(), в котором описывается логика выполнения).
❓Чем различаются Thread и Runnable?
Thread - это класс, некоторая надстройка над физическим потоком.
Runnable - это интерфейс, представляющий абстракцию над выполняемой задачей.
Помимо того, что Runnable помогает разрешить проблему множественного наследования, несомненный плюс от его использования состоит в том, что он позволяет логически отделить логику выполнения задачи от непосредственного управления потоком.
❓В чём заключается разница между методами start() и run()?
Несмотря на то, что start() вызывает метод run() внутри себя, это не то же самое, что просто вызов run(). Если run() вызывается как обычный метод, то он вызывается в том же потоке и никакой новый поток не запускается, как это происходит в случае, когда вы вызываете метод start().
#вопросы_с_собеседований
1. Почему в некоторых интерфейсах вообще не определяют методов?
2. Для чего в Java используются статические блоки инициализации?
1. Почему в некоторых интерфейсах вообще не определяют методов?
2. Для чего в Java используются статические блоки инициализации?
❓Почему в некоторых интерфейсах вообще не определяют методов?
❗️Это так называемые маркерные интерфейсы. Они просто указывают, что класс относится к определенному типу. Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.
❓Для чего в Java используются статические блоки инициализации?
❗️Статические блоки инициализации используются для выполнения кода, который должен выполниться один раз при инициализации класса загрузчиком классов, в момент, предшествующий созданию объектов этого класса при помощи конструктора. Такой блок (в отличие от нестатических, принадлежащих конкретному объекту класса) принадлежит только самому классу (объекту метакласса Class).
❗️Это так называемые маркерные интерфейсы. Они просто указывают, что класс относится к определенному типу. Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.
❓Для чего в Java используются статические блоки инициализации?
❗️Статические блоки инициализации используются для выполнения кода, который должен выполниться один раз при инициализации класса загрузчиком классов, в момент, предшествующий созданию объектов этого класса при помощи конструктора. Такой блок (в отличие от нестатических, принадлежащих конкретному объекту класса) принадлежит только самому классу (объекту метакласса Class).
Серия туториалов по Maven, фреймворку для автоматизации сборки проектов.
https://youtu.be/Fe6lrsPmseo
https://youtu.be/Fe6lrsPmseo
YouTube
Maven Tutorial #1 - Overview Part 1
Free Maven Resources
Maven Reference Manual
http://www.luv2code.com/mavenreferencemanual
Maven eBooks
http://www.luv2code.com/mavenebooks
Maven Cheat Sheet
http://www.luv2code.com/mavencheatsheet
Developing with Eclipse and Maven (bonus ebook)
http:/…
Maven Reference Manual
http://www.luv2code.com/mavenreferencemanual
Maven eBooks
http://www.luv2code.com/mavenebooks
Maven Cheat Sheet
http://www.luv2code.com/mavencheatsheet
Developing with Eclipse and Maven (bonus ebook)
http:/…
Ребята из Тинькофф Старт открывают регистрацию на онлайн-трансляцию посвященную летней программе!
26 марта в 19:00 расскажут об открытых направлениях и как подготовиться к вступительным испытаниям для каждого из них. А еще обсудят внутреннюю кухню, особенности обучения и истории ребят, которые когда-то начинали с Тинькофф Старт, а теперь строят карьеру в Тинькофф.
Для участия в трансляции зарегистрируйтесь и ищите письмо-подтверждение со ссылкой на трансляцию в указанной почте: https://prglb.ru/5wr14
Напоминаем: у ребят есть телеграм-канал, где удобно следить за всеми новостями Тинькофф Образования: @tinkoff_fintech
26 марта в 19:00 расскажут об открытых направлениях и как подготовиться к вступительным испытаниям для каждого из них. А еще обсудят внутреннюю кухню, особенности обучения и истории ребят, которые когда-то начинали с Тинькофф Старт, а теперь строят карьеру в Тинькофф.
Для участия в трансляции зарегистрируйтесь и ищите письмо-подтверждение со ссылкой на трансляцию в указанной почте: https://prglb.ru/5wr14
Напоминаем: у ребят есть телеграм-канал, где удобно следить за всеми новостями Тинькофф Образования: @tinkoff_fintech
maven-cheat-sheet.pdf
147.3 KB
Шпаргалка по Maven для начинающих
#вопросы_с_собеседований
1. Необходимо добавить 1 млн. элементов, какую структуру из фреймворка Collections вы будете использовать?
2. Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?
1. Необходимо добавить 1 млн. элементов, какую структуру из фреймворка Collections вы будете использовать?
2. Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?
«Ни в одном месте не проучился дольше года». Интервью с Java-разработчиком
Взяли интервью у выпускника курса Java Mentor, который мы ранее рекомендовали нашим подписчикам. В комментариях под постом вы можете задать вопросы выпускнику лично.
https://prglb.ru/3gkr7
Взяли интервью у выпускника курса Java Mentor, который мы ранее рекомендовали нашим подписчикам. В комментариях под постом вы можете задать вопросы выпускнику лично.
https://prglb.ru/3gkr7