В ВТБ открыта вакансия Java-разработчика. На позиции вы будете:
— разрабатывать приложения с использованием микросервисной архитектуры;
— участвовать в code review;
— заниматься написанием unit-тестов.
Присоединяйтесь к ВТБ и вы получите:
— достойную заработную плату и соц.пакет;
— живые и интересные проекты;
— команда из лучших профессионалов, среди более 5000 IT-специалистов компании;
— карьерный рост и возможность выбора направления развития.
Отправляйте резюме до 23 апреля включительно: https://clc.am/lTzxjA
— разрабатывать приложения с использованием микросервисной архитектуры;
— участвовать в code review;
— заниматься написанием unit-тестов.
Присоединяйтесь к ВТБ и вы получите:
— достойную заработную плату и соц.пакет;
— живые и интересные проекты;
— команда из лучших профессионалов, среди более 5000 IT-специалистов компании;
— карьерный рост и возможность выбора направления развития.
Отправляйте резюме до 23 апреля включительно: https://clc.am/lTzxjA
#вопросы_с_собеседований
Как вызывать default метод интерфейса в реализующем этот интерфейс классе?
Как вызывать default метод интерфейса в реализующем этот интерфейс классе?
interface Paper {
default void show() {
System.out.println("default show()");
}
}
class Licence implements Paper {
public void show() {
Paper.super.show();
}
}
default void show() {
System.out.println("default show()");
}
}
class Licence implements Paper {
public void show() {
Paper.super.show();
}
}
#вопросы_с_собеседований
Какие классы позволяют преобразовать байтовые потоки в символьные и обратно?
Какие классы позволяют преобразовать байтовые потоки в символьные и обратно?
Объявляем конкурс на самый интересный контент в телеграм-каналах Proglib!
Призовой фонд — 280 тысяч рублей.
Автор лучшего поста в отдельно взятом канале получает 20 тысяч рублей.
В каналах по языкам программирования, data science и мобильной разработке интересно увидеть топовые материалы по этим темам, в канале @progbook топовые рецензии на книги, в @proglibrary материалы по общим темам: проектирование, базы данных, linux, алгоритмы и структуры данных. Поощряются интерактивные форматы — авторские тесты, квизы, функционал которых встроен в Telegram, гифки, шпаргалки, неочевидные фишки.
Полный список каналов:
https://yangx.top/progbook
https://yangx.top/proglibrary
https://yangx.top/pyproglib
https://yangx.top/frontendproglib
https://yangx.top/javaproglib
https://yangx.top/dsproglib
https://yangx.top/phpproglib
https://yangx.top/cppproglib
https://yangx.top/mobileproglib
https://yangx.top/goproglib
https://yangx.top/csharpproglib
https://yangx.top/devopsslib
https://yangx.top/testerlib
https://yangx.top/hackproglib
Все посты будут с лайками и дизлайками и хэштегом #proglib_contest. Ссылки мы будем прогонять через наш сокращатель, будут браться в расчет лайки, дизлайки, охваты, клики по ссылкам. Чем больше лайков/охватов/кликов по ссылкам в публикации, тем больше шансов статьи победителем в конкурсе. Присылайте посты боту @proglib_contest_bot с указанием, на какой канал идет публикация. Юридическая информация здесь.
Призовой фонд — 280 тысяч рублей.
Автор лучшего поста в отдельно взятом канале получает 20 тысяч рублей.
В каналах по языкам программирования, data science и мобильной разработке интересно увидеть топовые материалы по этим темам, в канале @progbook топовые рецензии на книги, в @proglibrary материалы по общим темам: проектирование, базы данных, linux, алгоритмы и структуры данных. Поощряются интерактивные форматы — авторские тесты, квизы, функционал которых встроен в Telegram, гифки, шпаргалки, неочевидные фишки.
Полный список каналов:
https://yangx.top/progbook
https://yangx.top/proglibrary
https://yangx.top/pyproglib
https://yangx.top/frontendproglib
https://yangx.top/javaproglib
https://yangx.top/dsproglib
https://yangx.top/phpproglib
https://yangx.top/cppproglib
https://yangx.top/mobileproglib
https://yangx.top/goproglib
https://yangx.top/csharpproglib
https://yangx.top/devopsslib
https://yangx.top/testerlib
https://yangx.top/hackproglib
Все посты будут с лайками и дизлайками и хэштегом #proglib_contest. Ссылки мы будем прогонять через наш сокращатель, будут браться в расчет лайки, дизлайки, охваты, клики по ссылкам. Чем больше лайков/охватов/кликов по ссылкам в публикации, тем больше шансов статьи победителем в конкурсе. Присылайте посты боту @proglib_contest_bot с указанием, на какой канал идет публикация. Юридическая информация здесь.
Telegram
Книги для программистов
Все о книгах из мира IT.
По рекламе: @proglib_adv
Учиться у нас: https://proglib.io/w/de94a698
Работать у нас: https://job.proglib.io/
Наши каналы: https://yangx.top/proglibrary/9197
РКН: https://www.gosuslugi.ru/snet/67931954509aba565214777d
По рекламе: @proglib_adv
Учиться у нас: https://proglib.io/w/de94a698
Работать у нас: https://job.proglib.io/
Наши каналы: https://yangx.top/proglibrary/9197
РКН: https://www.gosuslugi.ru/snet/67931954509aba565214777d
☕️ OutputStreamWriter — «мост» между классом OutputStream и классом Writer. Символы, записанные в поток, преобразовываются в байты.
☕️ InputStreamReader — аналог для чтения. При помощи методов класса Reader читаются байты из потока InputStream и далее преобразуются в символы.
☕️ InputStreamReader — аналог для чтения. При помощи методов класса Reader читаются байты из потока InputStream и далее преобразуются в символы.
Что такое Java-модули?
Java Platform Module System (JPMS) – система модулей, появившаяся в Java версии 9. Она разрабатывалась под названием Project Jigsaw, и ожидалась еще с Java 7.
Модуль – группа связанных пакетов и ресурсов. Механизм модулей определяет видимость содержимого одних модулей для других. Скрытые модули недоступны ни для обычного использования в коде, ни даже для рефлекшна:
Вдобавок, модули инкапсулируют собственные ресурсы – конфиги и медиафайлы больше не хранятся в общей куче.
Модуль определяется файлом объявления
JVM может работать относительно модулей в трех режимах:
• Legacy mode – применяется, когда код компилируется в режиме совместимости с версиями Java 8 и меньше. Весь код работает как безымянный модуль, флаги для настройки модулярности не работают.
• Single module mode – когда не используется флаг
• Multi-module mode – каждый модуль находится в собственной директории. Общая корневая директория передается в
#Модули
Java Platform Module System (JPMS) – система модулей, появившаяся в Java версии 9. Она разрабатывалась под названием Project Jigsaw, и ожидалась еще с Java 7.
Модуль – группа связанных пакетов и ресурсов. Механизм модулей определяет видимость содержимого одних модулей для других. Скрытые модули недоступны ни для обычного использования в коде, ни даже для рефлекшна:
Class.forName()
выбросит ClassNotFoundException
. Вдобавок, модули инкапсулируют собственные ресурсы – конфиги и медиафайлы больше не хранятся в общей куче.
Модуль определяется файлом объявления
module-info.java
.JVM может работать относительно модулей в трех режимах:
• Legacy mode – применяется, когда код компилируется в режиме совместимости с версиями Java 8 и меньше. Весь код работает как безымянный модуль, флаги для настройки модулярности не работают.
• Single module mode – когда не используется флаг
--module-source-path
. Структура проекта остается старой, файл module-info.java
лежит в директории /src
. Поэтому иметь несколько модулей в одном проекте не получится.• Multi-module mode – каждый модуль находится в собственной директории. Общая корневая директория передается в
--module-source-path
. Полноценное использование JPMS.#Модули
⚡️Ищете работу или мечтаете поменять профессию?
Полезная информация для вас. За интересными вакансиями следите на профильном канале @pravkiforyou.
Этот канал публикует вакансии с тех пор, как по телеграму ходили динозавры 🦖. Там сразу все условия и прямые контакты работодателей, без посредников.
Молодых перспективных специалистов легче найти в телеграме, а подписаться на вакансии тут: https://yangx.top/pravkiforyou
Полезная информация для вас. За интересными вакансиями следите на профильном канале @pravkiforyou.
Этот канал публикует вакансии с тех пор, как по телеграму ходили динозавры 🦖. Там сразу все условия и прямые контакты работодателей, без посредников.
Молодых перспективных специалистов легче найти в телеграме, а подписаться на вакансии тут: https://yangx.top/pravkiforyou
Инкапсуляция
Один из основных принципов ООП. Как обычно бывает с фундаментальными понятиями, границы определения размыты. В самом общем случае под инкапсуляцией подразумевается группировка информации и логики обработки именно этой информации. В этом смысле инкапсуляция достигается средствами модульного программирования.
Более узкий и прикладной смысл инкапсуляции – принцип сокрытия данных. Так инкапсуляция достигается не только группировкой, но и ограничением доступа к внутренней реализации для других компонентов. Под компонентами здесь подразумеваются и более мелкие чем модуль части программы. Функция инкапсулирует локальные переменные, класс инкапсулирует приватные поля.
Термин тесно связан с понятием абстракции. Это техника разделения программного контракта и средств его реализации. Если проще, разделения на интерфейс и его имплементацию.
Понятие инкапсуляции присуще не только ООП. Абстракция данных применяется например и в функциональном программировании, модуляризация широко применима в процедурных языках.
#ООП
Один из основных принципов ООП. Как обычно бывает с фундаментальными понятиями, границы определения размыты. В самом общем случае под инкапсуляцией подразумевается группировка информации и логики обработки именно этой информации. В этом смысле инкапсуляция достигается средствами модульного программирования.
Более узкий и прикладной смысл инкапсуляции – принцип сокрытия данных. Так инкапсуляция достигается не только группировкой, но и ограничением доступа к внутренней реализации для других компонентов. Под компонентами здесь подразумеваются и более мелкие чем модуль части программы. Функция инкапсулирует локальные переменные, класс инкапсулирует приватные поля.
Термин тесно связан с понятием абстракции. Это техника разделения программного контракта и средств его реализации. Если проще, разделения на интерфейс и его имплементацию.
Понятие инкапсуляции присуще не только ООП. Абстракция данных применяется например и в функциональном программировании, модуляризация широко применима в процедурных языках.
#ООП
Wikipedia
Модульное программирование
организация компьютерной программы как совокупности небольших независимых блоков
#вопросы_с_собеседований
Как выбрать все элементы определенного каталога по критерию (например, с определенным расширением)?
Как выбрать все элементы определенного каталога по критерию (например, с определенным расширением)?
Метод File.listFiles() возвращает массив объектов File, содержащихся в каталоге. Метод может принимать в качестве параметра объект класса, реализующего FileFilter. Это позволяет включить в список только те элементы, для которых метод accept возвращает true (критерием может быть длина имени файла или его расширение).
Есть опыт и знания в IT, которыми Вы хотите поделиться ?
Станьте автором технических статей вместе с Proglib и получайте достойное вознаграждение!
Библиотека программиста приглашает к сотрудничеству внештатных авторов,
которые хотят поделиться знаниями, пропиарить свой авторский блог или просто заработать.
Мы предлагаем удаленную работу, гибкий график, возможность зарабатывать до 12к за статью и выплаты 2 раза в месяц.
Мы не ограничиваем в количестве статей.
Постоянным авторам предусмотрены премии за лояльность.
Интересующие направления для написания статей:
• DevOps
• Блокчейн
• Информационная безопасность
• Ruby on Rails
• C/ C++/ C#
• Java
• Go разработка
• Разработка игр
• Android-разработка
• iOS-разработка
• Системная аналитика
• Тестирование ПО
• Виртуальная реальность
• 1С
• Business Intelligence
• Интернет вещей
• Системы и сети
• IT Management
Оставьте заявку на https://proglib.io/w/186f13ee и мы свяжемся с вами!
Станьте автором технических статей вместе с Proglib и получайте достойное вознаграждение!
Библиотека программиста приглашает к сотрудничеству внештатных авторов,
которые хотят поделиться знаниями, пропиарить свой авторский блог или просто заработать.
Мы предлагаем удаленную работу, гибкий график, возможность зарабатывать до 12к за статью и выплаты 2 раза в месяц.
Мы не ограничиваем в количестве статей.
Постоянным авторам предусмотрены премии за лояльность.
Интересующие направления для написания статей:
• DevOps
• Блокчейн
• Информационная безопасность
• Ruby on Rails
• C/ C++/ C#
• Java
• Go разработка
• Разработка игр
• Android-разработка
• iOS-разработка
• Системная аналитика
• Тестирование ПО
• Виртуальная реальность
• 1С
• Business Intelligence
• Интернет вещей
• Системы и сети
• IT Management
Оставьте заявку на https://proglib.io/w/186f13ee и мы свяжемся с вами!
LIFO и FIFO
Терминология, пришедшая в IT из бухучета. Так называют подходы к организации данных.
FIFO (First In, First Out, «первый пришел – первый ушел») – поведение как в очереди в магазине. Ему соответствует структура данных очередь). У такого хранилища две операции: enqueue – добавить элемент в конец, и dequeue – забрать из начала.
LIFO (Last In, First Out, «последний пришел – первый ушел» – наоборот, первый пришедший ждет всех остальных, подобно стопке тарелок. Соответственно, его реализует структура данных стек. Операция push кладет новый элемент наверх стопки, pop забирает сверху же.
Термины применяются не только к способу доступа к данным, но и к порядку разрешения конфликтов. Так, например, по принципу LIFO или FIFO может определяться порядок исполнения параллельно пришедших сигналов какой-либо системы: доступа к диску, планировки задач ОС, и прочих.
#Структуры
Терминология, пришедшая в IT из бухучета. Так называют подходы к организации данных.
FIFO (First In, First Out, «первый пришел – первый ушел») – поведение как в очереди в магазине. Ему соответствует структура данных очередь). У такого хранилища две операции: enqueue – добавить элемент в конец, и dequeue – забрать из начала.
LIFO (Last In, First Out, «последний пришел – первый ушел» – наоборот, первый пришедший ждет всех остальных, подобно стопке тарелок. Соответственно, его реализует структура данных стек. Операция push кладет новый элемент наверх стопки, pop забирает сверху же.
Термины применяются не только к способу доступа к данным, но и к порядку разрешения конфликтов. Так, например, по принципу LIFO или FIFO может определяться порядок исполнения параллельно пришедших сигналов какой-либо системы: доступа к диску, планировки задач ОС, и прочих.
#Структуры
Погрузись в разработку на востребованном языке программирования Java!
Присоединяйся к бесплатному онлайн-интенсиву 24 апреля в 12:00 по московскому времени: 👉 https://clc.am/m0PPxw
Тебя ждут 6 часов мощной практики и теории, командная работа и постоянный обмен кодом 😎 Интенсив подойдёт как для начинающих, так и для опытных разработчиков!
⚡️ Познакомишься с enterprise-технологией в Java и микросервисной архитектурой.
⚡️ Узнаешь все стадии разработки приложений, научишься писать микросервисы для полноценного enterprise-проекта, и разберёшься в работе протокола HTTP и стандарте REST.
⚡️ На практике разработаешь корпоративный онлайн-чат на Java.
⚡️ У тебя будет полноценный готовый проект, который сможешь вложить себе в портфолио!
📣 Твоим наставником будет разработчик с 17-летним опытом, директор центра подбора IT-специалистов SymbioWay — Даниил Пилипенко.
🎁 Все участники получат электронную книгу «Век живи — век учись» Кей Петерсон и Дэвида Колба, а те, кто сдаст домашнюю работу, получат сертификат на 15 000 рублей на любой курс Skillbox.
Присоединяйся к бесплатному онлайн-интенсиву 24 апреля в 12:00 по московскому времени: 👉 https://clc.am/m0PPxw
Тебя ждут 6 часов мощной практики и теории, командная работа и постоянный обмен кодом 😎 Интенсив подойдёт как для начинающих, так и для опытных разработчиков!
⚡️ Познакомишься с enterprise-технологией в Java и микросервисной архитектурой.
⚡️ Узнаешь все стадии разработки приложений, научишься писать микросервисы для полноценного enterprise-проекта, и разберёшься в работе протокола HTTP и стандарте REST.
⚡️ На практике разработаешь корпоративный онлайн-чат на Java.
⚡️ У тебя будет полноценный готовый проект, который сможешь вложить себе в портфолио!
📣 Твоим наставником будет разработчик с 17-летним опытом, директор центра подбора IT-специалистов SymbioWay — Даниил Пилипенко.
🎁 Все участники получат электронную книгу «Век живи — век учись» Кей Петерсон и Дэвида Колба, а те, кто сдаст домашнюю работу, получат сертификат на 15 000 рублей на любой курс Skillbox.
Что такое О-нотация?
Для оценки сложности алгоритмов по времени или по памяти используется понятие "О большое". Например, алгоритм пузырьковой сортировки работает со скоростью
По определению, это ограничение асимптотической сложности сверху, с точностью до константного множителя. То есть, это описание, на что примерно будет похоже поведение алгоритма на большом объеме данных. В случае пузырьковой сортировки – это значит, что чем больше размер n массива данных, тем ближе количество операций для его сортировки будет подходить (не превышая) к
Два важных вывода, которые следуют из этого определения:
1. Константный множитель из О-нотации можно (и принято) выбрасывать:
2. "Недоминантный компонент" тоже можно выбросить:
Вопросу понятия и применения асимптотической оценки сложности посвящена глава VI книги Cracking the Coding Interview. Вот некоторые примеры сложностей алгоритмов:
#Алгоритмы
Для оценки сложности алгоритмов по времени или по памяти используется понятие "О большое". Например, алгоритм пузырьковой сортировки работает со скоростью
O(n^2)
. По определению, это ограничение асимптотической сложности сверху, с точностью до константного множителя. То есть, это описание, на что примерно будет похоже поведение алгоритма на большом объеме данных. В случае пузырьковой сортировки – это значит, что чем больше размер n массива данных, тем ближе количество операций для его сортировки будет подходить (не превышая) к
(n*C)^2
. Здесь C
– любая фиксированная величина, не зависящая от n.Два важных вывода, которые следуют из этого определения:
1. Константный множитель из О-нотации можно (и принято) выбрасывать:
O(42*n) = O(n)
.2. "Недоминантный компонент" тоже можно выбросить:
O(n^2 + n) = O(n^2)
. Потому что n^2 + n < 2*n^2
при больших n
.Вопросу понятия и применения асимптотической оценки сложности посвящена глава VI книги Cracking the Coding Interview. Вот некоторые примеры сложностей алгоритмов:
#Алгоритмы
Библиотека программиста планирует организовать серию офлайн-мероприятий.
Мы создали опрос, чтобы учесть пожелания и интересы подписчиков, а также какие темы наиболее интересны. Опрос займет не более 3-х минут и пройти его можно тут.
Мы создали опрос, чтобы учесть пожелания и интересы подписчиков, а также какие темы наиболее интересны. Опрос займет не более 3-х минут и пройти его можно тут.
Google Docs
Какие мероприятия наиболее интересны?
Библиотека джависта | Java, Spring, Maven, Hibernate pinned «Погрузись в разработку на востребованном языке программирования Java! Присоединяйся к бесплатному онлайн-интенсиву 24 апреля в 12:00 по московскому времени: 👉 https://clc.am/m0PPxw Тебя ждут 6 часов мощной практики и теории, командная работа и постоянный…»
Связный список
Он же просто «список», самая простая после массива структура данных. Каждый элемент данных хранится в ячейке вместе со ссылкой на следующую. Таким образом, ячейки данных выстраиваются в цепочку.
В пользовательском коде сохраняется адрес «головы» списка – первой ячейки. От нее по ссылкам можно дойти до любого элемента «хвоста».
В отличие от простого массива, информация в списке разрозненна в памяти, что делает кэширование процессора менее эффективным. На хранение ссылок тратится дополнительная память. Взамен, список дает возможность вставки/удаления элемента в середине без перезаписывания остальных элементов.
Для ускорения доступа к последним элементам, а также для обхода данных с конца существует модификация, которая называется двусвязный список. В нём каждая ячейка хранит ссылку и на следующую, и на предыдущую.
Сложность поиска по значению и по индексу так же как и модификации в середине – линейная; любых действий с головным элементом – константная.
#Структуры
Он же просто «список», самая простая после массива структура данных. Каждый элемент данных хранится в ячейке вместе со ссылкой на следующую. Таким образом, ячейки данных выстраиваются в цепочку.
В пользовательском коде сохраняется адрес «головы» списка – первой ячейки. От нее по ссылкам можно дойти до любого элемента «хвоста».
В отличие от простого массива, информация в списке разрозненна в памяти, что делает кэширование процессора менее эффективным. На хранение ссылок тратится дополнительная память. Взамен, список дает возможность вставки/удаления элемента в середине без перезаписывания остальных элементов.
Для ускорения доступа к последним элементам, а также для обхода данных с конца существует модификация, которая называется двусвязный список. В нём каждая ячейка хранит ссылку и на следующую, и на предыдущую.
Сложность поиска по значению и по индексу так же как и модификации в середине – линейная; любых действий с головным элементом – константная.
#Структуры
☕️ 7 причин стать разработчиком на Java в 2021 году
Стремительно меняющиеся тренды, новые языки и высокие требования к коду ставят перед новичком вопрос: какой язык изучать, чтобы наверняка? Мы рекомендуем выбрать Java, несмотря на огромное
количество ультрамодных альтернатив.
https://proglib.io/sh/q8tzm6yx1V
Стремительно меняющиеся тренды, новые языки и высокие требования к коду ставят перед новичком вопрос: какой язык изучать, чтобы наверняка? Мы рекомендуем выбрать Java, несмотря на огромное
количество ультрамодных альтернатив.
https://proglib.io/sh/q8tzm6yx1V
В чем разница между агрегацией, композицией, и ассоциацией?
Ассоциация – знание одного класса о другом. Например, класс Начальник может быть связан с классом Подчиненный отношением ассоциации, чтобы передавать ему запросы. Если и Подчиненный должен обращаться к Начальнику – ассоциация называется двунаправленной.
Агрегация и композиция – две разновидности ассоциации. Композиция подразумевает, что ассоциированный объект – «подобъект», составная часть, не имеющая смысла без ссылающегося. На практике, например, отношение композиции появляется когда мы выделяем часть свойств объекта в отдельную сущность.
Агрегация не подразумевает отношения владения. Это просто ссылка на другой, самостоятельный объект. Он может продолжить функционировать, если ссылающийся объект прекратит существование. Например, класс-контейнер агрегирует хранимые элементы.
Ассоциация – знание одного класса о другом. Например, класс Начальник может быть связан с классом Подчиненный отношением ассоциации, чтобы передавать ему запросы. Если и Подчиненный должен обращаться к Начальнику – ассоциация называется двунаправленной.
Агрегация и композиция – две разновидности ассоциации. Композиция подразумевает, что ассоциированный объект – «подобъект», составная часть, не имеющая смысла без ссылающегося. На практике, например, отношение композиции появляется когда мы выделяем часть свойств объекта в отдельную сущность.
Агрегация не подразумевает отношения владения. Это просто ссылка на другой, самостоятельный объект. Он может продолжить функционировать, если ссылающийся объект прекратит существование. Например, класс-контейнер агрегирует хранимые элементы.