Какие алгоритмы нужно знать, чтобы стать хорошим программистом?
Самые распространенные алгоритмы и структуры данных, но и более сложные вещи, о которых вы могли не знать.
🔗 Основной сайт
🔗 Зеркало
Зачем вообще нужны алгоритмы?
Знание алгоритмов и структур данных является важной базой у начинающих программистов для оптимизации кода. Эти знания помогут держать мозг в тонусе, пройти техническое собеседование любой сложности на позицию разработчика и повысить свой чек за работу.
Как мне оперативно научиться применять алгоритмы?
Мы запустили курс «Алгоритмы и структуры данных», на котором junior и middle+ программисты смогут потренировать навыки применения алгоритмов и сгенерировать идеальные решения сложных задач в сообществе других разработчиков.
➡️ Начать обучение
Самые распространенные алгоритмы и структуры данных, но и более сложные вещи, о которых вы могли не знать.
🔗 Основной сайт
🔗 Зеркало
Зачем вообще нужны алгоритмы?
Знание алгоритмов и структур данных является важной базой у начинающих программистов для оптимизации кода. Эти знания помогут держать мозг в тонусе, пройти техническое собеседование любой сложности на позицию разработчика и повысить свой чек за работу.
Как мне оперативно научиться применять алгоритмы?
Мы запустили курс «Алгоритмы и структуры данных», на котором junior и middle+ программисты смогут потренировать навыки применения алгоритмов и сгенерировать идеальные решения сложных задач в сообществе других разработчиков.
➡️ Начать обучение
#вопросы_с_собеседований
Что вы знаете о действиях JSP (Action tag и JSP Action Elements).
Наиболее часто используемыми
•
•
•
•
•
Что вы знаете о действиях JSP (Action tag и JSP Action Elements).
Action tag
и JSP Action Elements
предоставляют методы работы с Java Beans
, подключения ресурсов, проброса запросов и создания динамических XML
элементов. Такие элементы всегда начинаются с записи jsp:
и используются непосредственно внутри страницы JSP
без необходимости подключения сторонних библиотек или дополнительных настроек.Наиболее часто используемыми
JSP Action Elements
являются:•
jsp:include: <jsp:include page="относительный URL" flush="true"/>
- подключить файл при запросе страницы. Если необходимо, чтобы файл подключался в процессе трансляции страницы, то используется директива page
совместно с атрибутом include
;•
jsp:useBean: <jsp:useBean att=значение*/> или <jsp:useBean att=значение*>...</jsp:useBean>
- найти или создать Java bean
;•
jsp:setProperty: <jsp:setProperty att=значение*/>
- установить свойства Java bean
, или явно, или указанием на соответствующее значение, передаваемое при запросе;•
jsp:forward: <jsp:forward page="относительный URL"/>
- передать запрос другой странице;•
jsp:plugin: <jsp:plugin attribute="значение"*>...</jsp:plugin>
- сгенерировать (в зависимости от типа браузера) тэги OBJECT
или EMBED
для апплета, использующего технологию Java Plugin
.❓Тест: Python, Java, JavaScript — что выбрать?
Чтобы помочь вам сориентироваться с будущей профессией и не жалеть о впустую потраченном времени, мы вместе с Яндекс Практикумом подготовили тест, который поможет сделать правильный выбор на основе ваших предпочтений.
На выходе получите рекомендацию, с какого языка вам начать свой путь в программировании будет интереснее.
Python, Java или JavaScript.
🔗 Основной сайт
🔗 Зеркало
Чтобы помочь вам сориентироваться с будущей профессией и не жалеть о впустую потраченном времени, мы вместе с Яндекс Практикумом подготовили тест, который поможет сделать правильный выбор на основе ваших предпочтений.
На выходе получите рекомендацию, с какого языка вам начать свой путь в программировании будет интереснее.
Python, Java или JavaScript.
🔗 Основной сайт
🔗 Зеркало
Spring: новости за прошедшую неделю / 11-е октября
Вашему вниманию предлагается информационная подборка материалов "Spring: новости за прошедшую неделю" от Джоша Лонга (Josh Long).
Приятного чтения! 😃
https://spring.io/blog/2022/10/11/this-week-in-spring-october-11th-2022
Вашему вниманию предлагается информационная подборка материалов "Spring: новости за прошедшую неделю" от Джоша Лонга (Josh Long).
Приятного чтения! 😃
https://spring.io/blog/2022/10/11/this-week-in-spring-october-11th-2022
This Week in Spring - October 11th, 2022
Level up your Java code and explore what Spring can do for you.
#вопросы_с_собеседований
Чем stub отличается от mock?
Чем stub отличается от mock?
stub
используется как заглушка сервисов, методов, классов и т.д. с заранее запрограммированным ответом на вызовы.mock
использует подмену результатов вызова, проверяет сам факт взаимодействия, протоколирует и контролирует его.Вы используете ненадежный код
В декабре прошлого года Log4Shell сократил ночи многих людей в мире JVM. Хуже того, используя аналогию с землетрясением, после первоначального землетрясения возникло множество афтершоков.
Я сразу установил связь между Log4Shell и Security Manager. Сначала я не хотел об этом писать. Но ко мне поступили просьбы, и я не мог обойти это стороной.
Насколько я помню команда Oracle отказалась от Security Manager в Java 17. Один из аргументов, на котором основывалось это решение, заключается в том, что он изначально был разработан для защиты апплетов.
Читать статью
В декабре прошлого года Log4Shell сократил ночи многих людей в мире JVM. Хуже того, используя аналогию с землетрясением, после первоначального землетрясения возникло множество афтершоков.
Я сразу установил связь между Log4Shell и Security Manager. Сначала я не хотел об этом писать. Но ко мне поступили просьбы, и я не мог обойти это стороной.
Насколько я помню команда Oracle отказалась от Security Manager в Java 17. Один из аргументов, на котором основывалось это решение, заключается в том, что он изначально был разработан для защиты апплетов.
Читать статью
Хабр
Вы используете ненадежный код
В декабре прошлого года Log4Shell сократил ночи многих людей в мире JVM. Хуже того, используя аналогию с землетрясением, после первоначального землетрясения возникло множество афтершоков. Я сразу...
Как работает метод Thread.join()?
Когда поток вызывает
Когда поток вызывает
join()
для другого потока, текущий работающий поток будет ждать, пока другой поток, к которому он присоединяется, не будет завершён:void join()
void join(long millis)
void join(long millis, int nanos)
Что будет выведено на экран?
Anonymous Quiz
19%
A got caught B got caught
29%
B got caught
25%
Compiler Error
27%
A got caught
Какие аннотации фикстур существуют в JUnit?
•
•
•
•
•
@BeforeClass
- определяет код, который должен единожды выполниться перед запуском набора тестовых методов.•
@AfterClass
- код, выполняемый один раз после исполнения набора тестовых методов.•
@Before
- определяет код, который должен выполняться каждый раз перед запуском любого тестовым методом.•
@After
- код, выполняемый каждый раз после исполнения любого тестового метода.⬆️ Достиг потолка в профессии: как устроиться в международную компанию
Расскажем о том, как оценить свой уровень английского, грамотно оформить резюме и успешно пройти собеседование в международную команду.
https://proglib.io/sh/1wkX235TZe
Зеркало
Расскажем о том, как оценить свой уровень английского, грамотно оформить резюме и успешно пройти собеседование в международную команду.
https://proglib.io/sh/1wkX235TZe
Зеркало
#вопросы_с_собеседований
Что такое «шаблон проектирования»?
Плюсы использования шаблонов:
• снижение сложности разработки за счёт готовых абстракций для решения целого класса проблем.
• облегчение коммуникации между разработчиками, позволяя ссылаться на известные шаблоны.
• унификация деталей решений: модулей и элементов проекта.
• возможность отыскав удачное решение, пользоваться им снова и снова.
• помощь в выборе выбрать наиболее подходящего варианта проектирования.
Минусы:
• слепое следование некоторому выбранному шаблону может привести к усложнению программы.
• желание попробовать некоторый шаблон в деле без особых на то оснований.
Что такое «шаблон проектирования»?
Шаблон
(паттерн
) проектирования
(design pattern
) — это проверенное и готовое к использованию решение. Это не класс и не библиотека, которую можно подключить к проекту, это нечто большее - он не зависит от языка программирования, не является законченным образцом, который может быть прямо преобразован в код и может быть реализован по-разному в разных языках программирования.Плюсы использования шаблонов:
• снижение сложности разработки за счёт готовых абстракций для решения целого класса проблем.
• облегчение коммуникации между разработчиками, позволяя ссылаться на известные шаблоны.
• унификация деталей решений: модулей и элементов проекта.
• возможность отыскав удачное решение, пользоваться им снова и снова.
• помощь в выборе выбрать наиболее подходящего варианта проектирования.
Минусы:
• слепое следование некоторому выбранному шаблону может привести к усложнению программы.
• желание попробовать некоторый шаблон в деле без особых на то оснований.
Типы шаблонов проектирования.
• Основные (Fundamental) - основные строительные блоки других шаблонов. Большинство других шаблонов использует эти шаблоны в той или иной форме.
• Порождающие шаблоны (Creational) — шаблоны проектирования, которые абстрагируют процесс создание экземпляра. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять созданный объект, а шаблон, порождающий объекты, делегирует создание объектов другому объекту.
• Структурные шаблоны (Structural) определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу.
• Поведенческие шаблоны (Behavioral) определяют взаимодействие между объектами, увеличивая таким образом его гибкость.
• Основные (Fundamental) - основные строительные блоки других шаблонов. Большинство других шаблонов использует эти шаблоны в той или иной форме.
• Порождающие шаблоны (Creational) — шаблоны проектирования, которые абстрагируют процесс создание экземпляра. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять созданный объект, а шаблон, порождающий объекты, делегирует создание объектов другому объекту.
• Структурные шаблоны (Structural) определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу.
• Поведенческие шаблоны (Behavioral) определяют взаимодействие между объектами, увеличивая таким образом его гибкость.
Многопоточность Java. #неОпятьАСнова #javaJunior #javaCore
Эта статья, как и все последующие – моя попытка структурировать полученные знания в процессе изучения Java. В этой статье тезисно собрана вся основная информация по теме и те формулировки, которые показались мне наиболее удачными и понятными.
Это мой конспект, если хотите.
На источники, откуда черпалась информация, предоставлены ссылки в конце статьи.
Статья будет полезна тем, кто изучает или повторяет основы Java Core.
И тем, кто готовится к собеседованию.
https://habr.com/ru/post/693244/
Эта статья, как и все последующие – моя попытка структурировать полученные знания в процессе изучения Java. В этой статье тезисно собрана вся основная информация по теме и те формулировки, которые показались мне наиболее удачными и понятными.
Это мой конспект, если хотите.
На источники, откуда черпалась информация, предоставлены ссылки в конце статьи.
Статья будет полезна тем, кто изучает или повторяет основы Java Core.
И тем, кто готовится к собеседованию.
https://habr.com/ru/post/693244/
Хабр
Многопоточность Java. #неОпятьАСнова #javaJunior #javaCore
Эта статья, как и все последующие – моя попытка структурировать полученные знания в процессе изучения Java. Здесь тезисно собрана вся основная информация по теме и те формулировки, которые показались...
Напишите простейший многопоточный ограниченный буфер с использованием synchronized.
class QueueSynchronized<T> {
private volatile int size = 0;
private final Object[] content;
private final int capacity;
private int out;
private int in;
private final Object isEmpty = new Object();
private final Object isFull = new Object();
QueueSynchronized(final int capacity) {
this.capacity = capacity;
content = new Object[this.capacity];
out = 0;
in = 0;
size = 0;
}
private int cycleInc(int index) {
return (++index == capacity)
? 0
: index;
}
@SuppressWarnings("unchecked")
T get() throws InterruptedException {
if (size == 0) {
synchronized (isEmpty) {
while (size < 1) {
isEmpty.wait();
}
}
}
try {
synchronized (this) {
final Object value = content[out];
content[out] = null;
if (size > 1) {
out = cycleInc(out);
}
size--;
return (T) value;
}
} finally {
synchronized (isFull) {
isFull.notify();
}
}
}
QueueSynchronized<T> put(T value) throws InterruptedException {
if (size == capacity) {
synchronized (isFull) {
while (size == capacity) {
isFull.wait();
}
}
}
synchronized (this) {
if (size == 0) {
content[in] = value;
} else {
in = cycleInc(in);
content[in] = value;
}
size++;
}
synchronized (isEmpty) {
isEmpty.notify();
}
return this;
}
}
Что такое ООП?
Объектно-ориентированное программирование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
• объектно-ориентированное программирование использует в качестве основных логических конструктивных элементов объекты, а не алгоритмы;
• каждый объект является экземпляром определенного класса
• классы образуют иерархии.
Программа считается объектно-ориентированной, только если выполнены все три указанных требования. В частности, программирование, не использующее наследование, называется не объектно-ориентированным, а программированием с помощью абстрактных типов данных.
Согласно парадигме ООП программа состоит из объектов, обменивающихся сообщениями. Объекты могут обладать состоянием, единственный способ изменить состояние объекта - послать ему сообщение, в ответ на которое, объект может изменить собственное состояние.
Объектно-ориентированное программирование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
• объектно-ориентированное программирование использует в качестве основных логических конструктивных элементов объекты, а не алгоритмы;
• каждый объект является экземпляром определенного класса
• классы образуют иерархии.
Программа считается объектно-ориентированной, только если выполнены все три указанных требования. В частности, программирование, не использующее наследование, называется не объектно-ориентированным, а программированием с помощью абстрактных типов данных.
Согласно парадигме ООП программа состоит из объектов, обменивающихся сообщениями. Объекты могут обладать состоянием, единственный способ изменить состояние объекта - послать ему сообщение, в ответ на которое, объект может изменить собственное состояние.