#вопросы_с_собеседований
В чем заключаются различия между CyclicBarrier и CountDownLatch?
В чем заключаются различия между CyclicBarrier и CountDownLatch?
CountDownLatch (замок с обратным отсчетом) предоставляет возможность любому количеству потоков в блоке кода ожидать до тех пор, пока не завершится определенное количество операций, выполняющихся в других потоках, перед тем как они будут «отпущены», чтобы продолжить свою деятельность. В конструктор CountDownLatch(int count) обязательно передается количество операций, которое должно быть выполнено, чтобы замок «отпустил» заблокированные потоки.
Примером CountDownLatch из жизни может служить сбор экскурсионной группы: пока не наберется определенное количество человек, экскурсия не начнется.
CyclicBarrier реализует шаблон синхронизации «Барьер». Циклический барьер является точкой синхронизации, в которой указанное количество параллельных потоков встречается и блокируется. Как только все потоки прибыли, выполняется опционное действие (или не выполняется, если барьер был инициализирован без него), и, после того, как оно выполнено, барьер ломается и ожидающие потоки «освобождаются». В конструкторы барьера CyclicBarrier(int parties) и CyclicBarrier(int parties, Runnable barrierAction) обязательно передается количество сторон, которые должны «встретиться», и, опционально, действие, которое должно произойти, когда стороны встретились, но перед тем когда они будут «отпущены».
CyclicBarrier является альтернативой метода join(), который «собирает» потоки только после того, как они выполнились.
CyclicBarrier похож на CountDownLatch, но главное различие между ними в том, что использовать «замок» можно лишь единожды - после того, как его счётчик достигнет нуля, а «барьер» можно использовать неоднократно, даже после того, как он «сломается».
Примером CountDownLatch из жизни может служить сбор экскурсионной группы: пока не наберется определенное количество человек, экскурсия не начнется.
CyclicBarrier реализует шаблон синхронизации «Барьер». Циклический барьер является точкой синхронизации, в которой указанное количество параллельных потоков встречается и блокируется. Как только все потоки прибыли, выполняется опционное действие (или не выполняется, если барьер был инициализирован без него), и, после того, как оно выполнено, барьер ломается и ожидающие потоки «освобождаются». В конструкторы барьера CyclicBarrier(int parties) и CyclicBarrier(int parties, Runnable barrierAction) обязательно передается количество сторон, которые должны «встретиться», и, опционально, действие, которое должно произойти, когда стороны встретились, но перед тем когда они будут «отпущены».
CyclicBarrier является альтернативой метода join(), который «собирает» потоки только после того, как они выполнились.
CyclicBarrier похож на CountDownLatch, но главное различие между ними в том, что использовать «замок» можно лишь единожды - после того, как его счётчик достигнет нуля, а «барьер» можно использовать неоднократно, даже после того, как он «сломается».
☕️ Сначала попробуй: обзор условно-бесплатных курсов по Java
Образовательные онлайн-платформы предлагают множество коммерческих курсов по Java. Если вы не хотите покупать кота в мешке, стоит бесплатно их протестировать. Рассказываем, как это можно сделать.
https://proglib.io/sh/kYLEsA3nie
Образовательные онлайн-платформы предлагают множество коммерческих курсов по Java. Если вы не хотите покупать кота в мешке, стоит бесплатно их протестировать. Рассказываем, как это можно сделать.
https://proglib.io/sh/kYLEsA3nie
Хочешь освоить востребованную профессию Java-разработчика и работать в топовых IT-компаниях Москвы? Расходы во время обучение берет на себя Java Mentor, а оплата только после твоего трудоустройства программистом ☕️⚡️
🙋♂️👉 Подать заявку: https://clck.ru/WZ3KV
• Ты освоишь востребованные технологии, а опытные наставники будут контролировать усвоение материала.
• Ты получишь опыт в бизнес-проекте необходимый для трудоустройства.
• A HR-специалисты помогут составить резюме и подготовят тебя к прохождению трудных собеседований.
• Поддержка от мощного сообщество единомышленников.
Каждый выпускник получает от трех предложений о работе. Поэтому работодателя выберешь самостоятельно после успешных собеседований.
🙋♂️👉 Подать заявку: https://clck.ru/WZ3KV
• Ты освоишь востребованные технологии, а опытные наставники будут контролировать усвоение материала.
• Ты получишь опыт в бизнес-проекте необходимый для трудоустройства.
• A HR-специалисты помогут составить резюме и подготовят тебя к прохождению трудных собеседований.
• Поддержка от мощного сообщество единомышленников.
Каждый выпускник получает от трех предложений о работе. Поэтому работодателя выберешь самостоятельно после успешных собеседований.
#вопросы_с_собеседований
Чем отличаются два интерфейса Runnable и Callable?
Чем отличаются два интерфейса Runnable и Callable?
☕️ Интерфейс Runnable появился в Java 1.0, а интерфейс Callable был введен в Java 5.0 в составе библиотеки java.util.concurrent;
☕️ Классы, реализующие интерфейс Runnable для выполнения задачи, должны реализовывать метод run(). Классы, реализующие интерфейс Callable - метод call();
☕️ Метод Runnable.run() не возвращает никакого значения, Callable.call() возвращает объект Future, который может содержать результат вычислений;
☕️ Метод run() не может выбрасывать проверяемые исключения, в то время как метод call() может.
☕️ Классы, реализующие интерфейс Runnable для выполнения задачи, должны реализовывать метод run(). Классы, реализующие интерфейс Callable - метод call();
☕️ Метод Runnable.run() не возвращает никакого значения, Callable.call() возвращает объект Future, который может содержать результат вычислений;
☕️ Метод run() не может выбрасывать проверяемые исключения, в то время как метод call() может.
#вопросы_с_собеседований
В чем проблема сериализации Singleton?
В чем проблема сериализации Singleton?
Проблема в том, что после десериализации мы получим другой объект. Таким образом, сериализация дает возможность создать Singleton еще раз, что недопустимо. Существует два способа избежать этого:
☕️ явный запрет сериализации;
☕️ определение метода с сигнатурой (default/public/private/protected/) Object readResolve() throws ObjectStreamException, назначением которого станет возврат замещающего объекта вместо объекта, на котором он вызван.
☕️ явный запрет сериализации;
☕️ определение метода с сигнатурой (default/public/private/protected/) Object readResolve() throws ObjectStreamException, назначением которого станет возврат замещающего объекта вместо объекта, на котором он вызван.
Forwarded from Java jobs — вакансии для java-разработчиков
Вакансия: Java разработчик
Россия/Москва
Удаленка/офис по желанию
Полная занятость
Зарплата: от 300 до 400 тыс. руб.
Компания: NGRS
Контакты: @elenaNGRS
Эл. почта: [email protected]
⠀
Мы ищем опытного разработчика JAVA для работы по расширению и поддержке функционала Back Office системы крупного инвестиционного банка
⠀
ЧТО МЫ ОЖИДАЕМ ОТ ВАС:
• Опыт разработки клиент-серверных приложений на базе Java от 3х лет;
• Опыт применения основных библиотек Java (lang/io/net/util/concurrent);
• Знание и навык практического применения шаблонов разработки ПО;
• Умение находить нестандартные решения проблем;
• Навыки отладки и профилирования приложения;
• Базовое знание языка запросов SQL;
• Английский – технический уровень.
⠀
БОЛЬШИМ ПЛЮСОМ БУДЕТ:
•Желание решать задачи (в перспективе) Business / System аналитика, чтобы решать целиком задачу для бизнеса от начала и до конца (понимать бизнес составляющую, предлагать и реализовывать инженерное решение)
• Опыт создания пользовательского интерфейса (swing/jide);
• Знание технологий на базе XML: XSD, JAXP, XPath;
• Знание Spring, JDBC, JMS, EJB;
• Опыт анализа производительности и оптимизации SQL-запросов;
⠀
ОСНОВНЫЕ ПЛЮСЫ РАБОТЫ У НАС:
• Работа в компактной команде 4-5 экспертов, что позволяет максимально быстро и эффективно обмениваться знаниями и профессионально расти;
• Прямое взаимодействие с бизнес-заказчиками, понимание и анализ проблемы «из первых рук»;
• Приобретение опыта работы с активно развивающимся продуктом, востребованным в топовых инвестиционных банках России и за рубежом;
• Решение актуальных задач бизнеса (а не разработка «сферического коня в вакууме»).
⠀
УСЛОВИЯ РАБОТЫ:
• Возможность работать удаленно;
• Конкурентная заработная плата, уровень обсуждается индивидуально с кандидатом;
• Годовой бонус;
• Страхование ДМС для сотрудника и членов семьи (супруг / супруга и дети), начиная с 1-ого дня работы;
• Страхование жизни от несчастных случаев и критических заболеваний для сотрудника, начиная с 1-ого дня работы;
• Местонахождение офиса – Москва Сити (для тех, кто хочет работать в офисе);
• Профессиональный коллектив, возможность карьерного роста, интересные задачи, прямое общение с бизнес-заказчиком;
• Использование английского языка.
Россия/Москва
Удаленка/офис по желанию
Полная занятость
Зарплата: от 300 до 400 тыс. руб.
Компания: NGRS
Контакты: @elenaNGRS
Эл. почта: [email protected]
⠀
Мы ищем опытного разработчика JAVA для работы по расширению и поддержке функционала Back Office системы крупного инвестиционного банка
⠀
ЧТО МЫ ОЖИДАЕМ ОТ ВАС:
• Опыт разработки клиент-серверных приложений на базе Java от 3х лет;
• Опыт применения основных библиотек Java (lang/io/net/util/concurrent);
• Знание и навык практического применения шаблонов разработки ПО;
• Умение находить нестандартные решения проблем;
• Навыки отладки и профилирования приложения;
• Базовое знание языка запросов SQL;
• Английский – технический уровень.
⠀
БОЛЬШИМ ПЛЮСОМ БУДЕТ:
•Желание решать задачи (в перспективе) Business / System аналитика, чтобы решать целиком задачу для бизнеса от начала и до конца (понимать бизнес составляющую, предлагать и реализовывать инженерное решение)
• Опыт создания пользовательского интерфейса (swing/jide);
• Знание технологий на базе XML: XSD, JAXP, XPath;
• Знание Spring, JDBC, JMS, EJB;
• Опыт анализа производительности и оптимизации SQL-запросов;
⠀
ОСНОВНЫЕ ПЛЮСЫ РАБОТЫ У НАС:
• Работа в компактной команде 4-5 экспертов, что позволяет максимально быстро и эффективно обмениваться знаниями и профессионально расти;
• Прямое взаимодействие с бизнес-заказчиками, понимание и анализ проблемы «из первых рук»;
• Приобретение опыта работы с активно развивающимся продуктом, востребованным в топовых инвестиционных банках России и за рубежом;
• Решение актуальных задач бизнеса (а не разработка «сферического коня в вакууме»).
⠀
УСЛОВИЯ РАБОТЫ:
• Возможность работать удаленно;
• Конкурентная заработная плата, уровень обсуждается индивидуально с кандидатом;
• Годовой бонус;
• Страхование ДМС для сотрудника и членов семьи (супруг / супруга и дети), начиная с 1-ого дня работы;
• Страхование жизни от несчастных случаев и критических заболеваний для сотрудника, начиная с 1-ого дня работы;
• Местонахождение офиса – Москва Сити (для тех, кто хочет работать в офисе);
• Профессиональный коллектив, возможность карьерного роста, интересные задачи, прямое общение с бизнес-заказчиком;
• Использование английского языка.
Привет! На связи Библиотека программиста. Мы проводим двустороннее исследование, которое поможет программистам и компаниям легче находить друг друга. Хотим, чтобы HR-специалисты знали о реальных ожиданиях специалистов из IT. В анонимной форме многие вещи изложить проще, чем на собеседовании.
Если ты программист пройди опрос в гугл-форме займет около 5 минут: https://forms.gle/rA6zUm5Q5XSNzEdN8
Для HR мы подготовили вторую часть опроса в гугл-форме займет около 5 минут: https://forms.gle/w5tStDYABNL9phz26.
Участники опроса получат доступ к результатам исследования.
Если ты программист пройди опрос в гугл-форме займет около 5 минут: https://forms.gle/rA6zUm5Q5XSNzEdN8
Для HR мы подготовили вторую часть опроса в гугл-форме займет около 5 минут: https://forms.gle/w5tStDYABNL9phz26.
Участники опроса получат доступ к результатам исследования.
Get Programming with Scala (2021)
Автор: Daniela Sfregola
Количество страниц: 560
Книга, наполненная примерами и упражнениями, является идеальной отправной точкой для разработчиков, обладающих определенными знаниями объектно-ориентированного программирования, которые хотят изучить язык программирования на JVM и попутно приобрести несколько навыков функционального программирования. Овладейте Scala, и вы будете хорошо вооружены, чтобы соответствовать подходу к программированию к типу проблемы, с которой вы имеете дело.
Скачать книгу
Автор: Daniela Sfregola
Количество страниц: 560
Книга, наполненная примерами и упражнениями, является идеальной отправной точкой для разработчиков, обладающих определенными знаниями объектно-ориентированного программирования, которые хотят изучить язык программирования на JVM и попутно приобрести несколько навыков функционального программирования. Овладейте Scala, и вы будете хорошо вооружены, чтобы соответствовать подходу к программированию к типу проблемы, с которой вы имеете дело.
Скачать книгу
Telegram
Книги для программистов (reserved)
Get Programming with Scala (2021)
Автор: Daniela Sfregola
Автор: Daniela Sfregola
Forwarded from Java jobs — вакансии для java-разработчиков
Вакансия: Java разработчик
Россия/Москва
Удаленка/офис по желанию
Полная занятость
Зарплата: от 300 до 400 тыс. руб.
Компания: NGRS
Контакты: @elenaNGRS
Эл. почта: [email protected]
⠀
Мы ищем JAVA разработчика для написания алгоритмов для трейдинга.
ЧТО МЫ ЖДЕМ ОТ ВАС:
1. Проектирование и разработка ключевого функционала торговой системы и торговых стратегий;
2. Рефакторинг существующего кода, оптимизация работы системы;
3. Обеспечение 3-х уровней поддержки.
⠀
ВАМ ОБЯЗАТЕЛЬНО НУЖНО ИМЕТЬ:
• Высшее техническое образование;
• Опыт разработки 3+ года;
• Java 8 SE, знание принципов модели памяти Java;
• Опыт работы с многопоточностью;
• Знание основных алгоритмов и структур данных;
• Знание паттернов проектирования;
• Умение писать сложные SQL-запросы, знание принципов работы систем реляционных баз данных;
• Опыт TDD;
• Английский язык на уровне деловой переписки.
⠀
БУДЕТ ОТЛИЧНО, ЕСЛИ У ВАС ИМЕЕТСЯ:
• Опыт создания веб-интерфейсов.
• Опыт работы с NoSQL и большими данными.
• Знание фондовых или денежных рынков и финансовых инструментов.
УСЛОВИЯ РАБОТЫ:
• Возможность работать удаленно;
• Конкурентная заработная плата, уровень обсуждается индивидуально с кандидатом;
• Годовой бонус;
• Страхование ДМС для сотрудника и членов семьи (супруг / супруга и дети), начиная с 1-ого дня работы;
• Страхование жизни от несчастных случаев и критических заболеваний для сотрудника, начиная с 1-ого дня работы;
• Местонахождение офиса – Москва Сити (для тех, кто хочет работать в офисе);
• Профессиональный коллектив, возможность карьерного роста, интересные задачи, прямое общение с бизнес-заказчиком;
• Использование английского языка.
Россия/Москва
Удаленка/офис по желанию
Полная занятость
Зарплата: от 300 до 400 тыс. руб.
Компания: NGRS
Контакты: @elenaNGRS
Эл. почта: [email protected]
⠀
Мы ищем JAVA разработчика для написания алгоритмов для трейдинга.
ЧТО МЫ ЖДЕМ ОТ ВАС:
1. Проектирование и разработка ключевого функционала торговой системы и торговых стратегий;
2. Рефакторинг существующего кода, оптимизация работы системы;
3. Обеспечение 3-х уровней поддержки.
⠀
ВАМ ОБЯЗАТЕЛЬНО НУЖНО ИМЕТЬ:
• Высшее техническое образование;
• Опыт разработки 3+ года;
• Java 8 SE, знание принципов модели памяти Java;
• Опыт работы с многопоточностью;
• Знание основных алгоритмов и структур данных;
• Знание паттернов проектирования;
• Умение писать сложные SQL-запросы, знание принципов работы систем реляционных баз данных;
• Опыт TDD;
• Английский язык на уровне деловой переписки.
⠀
БУДЕТ ОТЛИЧНО, ЕСЛИ У ВАС ИМЕЕТСЯ:
• Опыт создания веб-интерфейсов.
• Опыт работы с NoSQL и большими данными.
• Знание фондовых или денежных рынков и финансовых инструментов.
УСЛОВИЯ РАБОТЫ:
• Возможность работать удаленно;
• Конкурентная заработная плата, уровень обсуждается индивидуально с кандидатом;
• Годовой бонус;
• Страхование ДМС для сотрудника и членов семьи (супруг / супруга и дети), начиная с 1-ого дня работы;
• Страхование жизни от несчастных случаев и критических заболеваний для сотрудника, начиная с 1-ого дня работы;
• Местонахождение офиса – Москва Сити (для тех, кто хочет работать в офисе);
• Профессиональный коллектив, возможность карьерного роста, интересные задачи, прямое общение с бизнес-заказчиком;
• Использование английского языка.
Сделайте HashSet из ключей HashMap.
HashSet<Object> set = new HashSet<>(map.keySet());
#вопросы_с_собеседований
Что означает NULL в SQL?
Что означает NULL в SQL?
NULL - специальное значение (псевдозначение), которое может быть записано в поле таблицы базы данных. NULL соответствует понятию «пустое поле», то есть «поле, не содержащее никакого значения».
NULL означает отсутствие, неизвестность информации. Значение NULL не является значением в полном смысле слова: по определению оно означает отсутствие значения и не принадлежит ни одному типу данных. Поэтому NULL не равно ни логическому значению FALSE, ни пустой строке, ни 0. При сравнении NULL с любым значением будет получен результат NULL, а не FALSE и не 0. Более того, NULL не равно NULL!
NULL означает отсутствие, неизвестность информации. Значение NULL не является значением в полном смысле слова: по определению оно означает отсутствие значения и не принадлежит ни одному типу данных. Поэтому NULL не равно ни логическому значению FALSE, ни пустой строке, ни 0. При сравнении NULL с любым значением будет получен результат NULL, а не FALSE и не 0. Более того, NULL не равно NULL!
#вопросы_с_собеседований
Что такое JOIN?
Что такое JOIN?
JOIN - оператор языка SQL, который является реализацией операции соединения реляционной алгебры. Предназначен для обеспечения выборки данных из двух таблиц и включения этих данных в один результирующий набор.
Особенностями операции соединения являются следующее:
☕️ в схему таблицы-результата входят столбцы обеих исходных таблиц (таблиц-операндов), то есть схема результата является «сцеплением» схем операндов;
☕️ каждая строка таблицы-результата является «сцеплением» строки из одной таблицы-операнда со строкой второй таблицы-операнда;
☕️ при необходимости соединения не двух, а нескольких таблиц, операция соединения применяется несколько раз (последовательно).
Особенностями операции соединения являются следующее:
☕️ в схему таблицы-результата входят столбцы обеих исходных таблиц (таблиц-операндов), то есть схема результата является «сцеплением» схем операндов;
☕️ каждая строка таблицы-результата является «сцеплением» строки из одной таблицы-операнда со строкой второй таблицы-операнда;
☕️ при необходимости соединения не двух, а нескольких таблиц, операция соединения применяется несколько раз (последовательно).
Spring 5 Recipes: A Problem-Solution Approach (2017)
Авторы: Marten Deinum, Daniel Rubio, Josh Long
Количество страниц: 870
Рецепты в Spring 5 Recipes охватывают основы Spring, такие как контейнер Spring IoC, Spring AOP / AspectJ и другие. Книга поможет при старте нового проекта, она написана для опытных разработчиков.
Во время чтения книги вы:
✔️Изучите повторно используемые рецепты кода и фрагменты для ядра Spring, аннотации и другие инструменты разработки;
✔️Поработаете с Spring REST и микросервисами для разработки веб-сервисов и интеграции в ваши корпоративные Java-приложения;
✔️Используете Spring Batch, NoSQL и большие данные для создания и интеграции различных сервисов и ресурсов облачных вычислений;
✔️Интегрируете Java Enterprise Edition и другие API Java для использования в Spring;
✔️Используете код Grails.
Скачать книгу
Авторы: Marten Deinum, Daniel Rubio, Josh Long
Количество страниц: 870
Рецепты в Spring 5 Recipes охватывают основы Spring, такие как контейнер Spring IoC, Spring AOP / AspectJ и другие. Книга поможет при старте нового проекта, она написана для опытных разработчиков.
Во время чтения книги вы:
✔️Изучите повторно используемые рецепты кода и фрагменты для ядра Spring, аннотации и другие инструменты разработки;
✔️Поработаете с Spring REST и микросервисами для разработки веб-сервисов и интеграции в ваши корпоративные Java-приложения;
✔️Используете Spring Batch, NoSQL и большие данные для создания и интеграции различных сервисов и ресурсов облачных вычислений;
✔️Интегрируете Java Enterprise Edition и другие API Java для использования в Spring;
✔️Используете код Grails.
Скачать книгу
Telegram
Книги для программистов (reserved)
Spring 5 Recipes: A Problem-Solution Approach (2017)
Авторы: Marten Deinum, Daniel Rubio, Josh Long
Авторы: Marten Deinum, Daniel Rubio, Josh Long
Что такое «каналы»?
Каналы (channels) – это логические (не физические) порталы, абстракции объектов более низкого уровня файловой системы (например, отображенные в памяти файлы и блокировки файлов), через которые осуществляется ввод/вывод данных, а буферы являются источниками или приёмниками этих переданных данных. При организации вывода, данные, которые необходимо отправить, помещаются в буфер, который затем передается в канал. При вводе, данные из канала помещаются в заранее предоставленный буфер.
Каналы напоминают трубопроводы, по которым эффективно транспортируются данные между буферами байтов и сущностями по ту сторону каналов. Каналы – это шлюзы, которые позволяют получить доступ к сервисам ввода/вывода операционной системы с минимальными накладными расходами, а буферы – внутренние конечные точки этих шлюзов, используемые для передачи и приема данных.
Каналы (channels) – это логические (не физические) порталы, абстракции объектов более низкого уровня файловой системы (например, отображенные в памяти файлы и блокировки файлов), через которые осуществляется ввод/вывод данных, а буферы являются источниками или приёмниками этих переданных данных. При организации вывода, данные, которые необходимо отправить, помещаются в буфер, который затем передается в канал. При вводе, данные из канала помещаются в заранее предоставленный буфер.
Каналы напоминают трубопроводы, по которым эффективно транспортируются данные между буферами байтов и сущностями по ту сторону каналов. Каналы – это шлюзы, которые позволяют получить доступ к сервисам ввода/вывода операционной системы с минимальными накладными расходами, а буферы – внутренние конечные точки этих шлюзов, используемые для передачи и приема данных.
OCA Java SE 8 Programmer I Certification Guide (2017)
Автор: Mala Gupta
Количество страниц: 704
OCA Java SE 8 Programmer I Certification Guide готовит Java-разработчиков к экзамену 1Z0-808 с подробным раскрытием тех тем Java, которые обычно встречаются на экзамене. Каждая глава начинается со списка целей экзамена, сопоставленных с номерами разделов, за которыми следуют примеры вопросов и упражнений. Вы будете готовиться с помощью разных способов, в том числе используя запоминающиеся аналогии, диаграммы, блок-схемы и хорошо прокомментированный код. Вы также узнаете о типичных ошибках на экзамене и способах избежать ловушек.
Скачать книгу
Автор: Mala Gupta
Количество страниц: 704
OCA Java SE 8 Programmer I Certification Guide готовит Java-разработчиков к экзамену 1Z0-808 с подробным раскрытием тех тем Java, которые обычно встречаются на экзамене. Каждая глава начинается со списка целей экзамена, сопоставленных с номерами разделов, за которыми следуют примеры вопросов и упражнений. Вы будете готовиться с помощью разных способов, в том числе используя запоминающиеся аналогии, диаграммы, блок-схемы и хорошо прокомментированный код. Вы также узнаете о типичных ошибках на экзамене и способах избежать ловушек.
Скачать книгу
Telegram
Книги для программистов (reserved)
OCA Java SE 8 Programmer I Certification Guide (2017)
Автор: Mala Gupta
Автор: Mala Gupta