seniorjavist | Unsorted

Telegram-канал seniorjavist - Senior Java Developer

-

Изучаем Java. По вопросам сотрудничества: @seniorvladislav

Subscribe to a channel

Senior Java Developer

#вопросы_с_собеседований
Почему нет метода iterator.add() чтобы добавить элементы в коллекцию?

Iterator предназначен только для итерации по коллекции, а не для модификации коллекции. Добавление элементов через итератор нарушило бы принцип единственной ответственности.

— Многие коллекции, например ArrayList, реализуются на основе массива. Добавление элемента в середину массива — дорогая операция, требующая создания нового массива и копирования всех элементов.

— Если позволить итератору изменять коллекцию, это может привести к непредсказуемому поведению и ошибкам, особенно при работе с многопоточностью.

Collection уже предоставляет методы add() и remove() для модификации коллекции, поэтому нет необходимости дублировать эту функциональность в Iterator.

Читать полностью…

Senior Java Developer

⁉️ Как создать TCP/IP-серверное приложение в Java?

Стек протоколов TCP/IP позволяет обеспечивать доставку информации в необходимое место назначения. Умение с ней работать – важный скилл для разработчика. 

🦾 Изучите эту технологию на бесплатном открытом уроке «TCP/IP-сервер в Java» от OTUS.

На эфире: 
- Посмотрим, какие есть варианты реализации TCP/IP-серверного приложения в Java.
- Изучим пару примеров, их особенности и области применения.

📌 Занятие пройдёт 17 октября в 20:00 мск в рамках курса «Java Developer. Professional». После бесплатного вебинара вы сможете продолжить обучение на курсе в рассрочку.

👉 Зарегистрируйтесь на событие прямо сейчас, а мы напомним в день вебинара.

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8KMEsM

Читать полностью…

Senior Java Developer

Semaphore

Semaphore — это класс, который позволяет ограничивать количество потоков, одновременно работающих с каким-либо ресурсом.

Поток должен получить разрешение, чтобы войти в критическую секцию.
Semaphore управляет набором разрешений (permits), а конструктор принимает количество разрешений.
Если разрешений нет, поток ставится в очередь до освобождения.

Метод acquire() получает разрешение, release() — освобождает.

#это_база

Читать полностью…

Senior Java Developer

Метод isSorted()

Метод isSorted() используется для проверки, отсортирован ли массив или коллекция.
Метод принадлежит интерфейсу Collection и возвращает boolean значение.

Проверяется, находятся ли элементы коллекции в порядке возрастания. Для числовых типов сравниваются значения, для объектов — их natural ordering.

Работает за линейное время O(n), где n — размер коллекции.
Может использоваться для предварительной проверки перед вызовом sorted() или sort().

#это_база

Читать полностью…

Senior Java Developer

🔥В OTUS продолжается набор в группу курса Kotlin Backend Developer Professional. Это отличная возможность расширить свои возможности разработки на Kotlin!

18 октября в 19:00 мск. приглашаем на бесплатный урок «Возможности Kotlin для создания DSL на примере JsonBuilder».

⚡️На занятии:

- рассмотрим общую теорию о DSL: назначение, особенности, практика;
- попрактикуемся в создание DSL на примере JsonBuilder;
- рассмотрим возможности Kotlin, полезные для создания DSL;
- узнаем, как создавать собственные DSL и применять их при написании приложения;
- познакомимся с замыканиями и extension-методами.
Отправьте заявку, чтобы записаться на урок и получить спец. условия при поступлении в группу.

👉Регистрация https://otus.pw/797v/

❗️Легендой курса является разработка стартапа. В рамках легенды обсуждается реализация экстремальных проектов, в которых сочетаются высокая неопределенность и жесткие ограничения по времени и ресурсам. При покупке курса возможна рассрочка платежа

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8K2Mns

Читать полностью…

Senior Java Developer

Как Greenplum помогает аналитикам и архитекторам?

Эта БД используется для сложной аналитики по большим объёмам данных. Она быстро выполняет сложные аналитические запросы благодаря MPP-архитектуре и сочетает в себе возможность масштабируемости на десятки терабайт, строгую консистентность данных, ANSI SQL и джойны.
Изучите эту технологию на бесплатном открытом уроке «Greenplum в высоконагруженных системах» от OTUS.

На эфире разберем:
- Обзор аналитических возможностей Greenplum
- Настройку Greenplum для высоконагруженных систем
- Пример с использованием Greenplum в реальной системе

🔥 Преподаватель Дмитрий Золотов – Flutter+Kotlin Developer в Yandex.

📅 Занятие пройдёт 16 октября в 20:00 мск в рамках курса «Highload Architect».

🌐 Зарегистрируйтесь на событие прямо сейчас: https://otus.pw/fa4HD/

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8K1MM5

Читать полностью…

Senior Java Developer

Опрос для опытных ИТ-специалистов.

Поделитесь мнением об ИТ-работодателях. Напишите, что вам нравится, а что — нет. Так компании смогут исправить ошибки, улучшить условия и присылать офферы, на которые хочется соглашаться.

Посмотрите, это займет не больше 10 минут

Читать полностью…

Senior Java Developer

Типичный программист — сюда айтишники заходят отдохнуть от тупых заказчиков и бесконечных правок.

Залетай, тут уже угарают над твоим говнокодом: /channel/+H1tY9ytqhP1iNTk6

Читать полностью…

Senior Java Developer

Интерфейс UnaryOperator

Интерфейс UnaryOperator предназначен для представления функций, которые принимают один аргумент и возвращают результат того же типа, что и аргумент.
Он является специализированным функциональным интерфейсом, входящим в пакет java.util.function.

UnaryOperator часто используется в stream API для применения функций к элементам потока.

В примере UnaryOperator используется для преобразования строк в верхний регистр с помощью метода map().

Читать полностью…

Senior Java Developer

shutdown hook

Shutdown hook позволяет приложению выполнить некоторый код перед завершением приложения.

Для создания hook нужно создать объект класса Thread и передать его в метод addShutdownHook() класса Runtime.
Когда приложение завершается, все заданные hook выполнятся последовательно.

Shutdown hook работает в случае нормального или аварийного завершения приложения и часто используется для освобождения ресурсов, закрытия соединений, сохранения данных.

#это_база

Читать полностью…

Senior Java Developer

Что значит быть дата-инженером?

Присоединяйся к бесплатной Q&A сессии:
Расскажем
, что такое быть дата-инженером, как им стать, и как развиваться в профессии.

Все в формете Q&A, задавай любые вопросы опытным дата-инженерам. Помни, самый глупый вопрос – незаданный 😉

Кому будет полезно:
junior DE - если только начинаешь свой путь дата-инженера, сможешь задать вопрос опытным коллегам
DS и DA - сможешь узнать больше о типах задач, с которыми работают дата-инженеры
разработчики - если хочешь сменить профессию, попробовать свои силы в данных, то вебинар поможет разобраться с вектором развития
техлиды и менеджеры - вебинар поможет определить направление развития вашей дата-команды

Бонусы зарегистрированным: разыграем 2 бесплатных места на поток «Data-Engineer 13.0». Дополнительно два счастливчик получат скидку 50%.

Спикеры:
🕶 Игорь Мосягин, Klarna
🧢 Алексей Ница, NewProLab


📅Дата: 10 октября 2023
🕗Время: 20:00 по МСК
🔵Место: YouTube


🔗[Записаться на бесплатный вебинар]

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Какие есть режимы доступа к файлу?

В Java есть несколько режимов доступа к файлам:

Read (чтение): открывает файл для чтения, позволяет читать данные из файла.

Write (запись): открывает файл для записи, позволяет записывать данные в файл. При этом старое содержимое файла удаляется.

Append (добавление): открывает файл для записи, но данные добавляются в конец файла, старое содержимое сохраняется.

RandomAccess (произвольный доступ): позволяет читать и записывать данные в произвольном месте в файле.

Для указания режима доступа используются константы из класса File:
File.READ, File.WRITE, File.APPEND и т.д.

Выбор нужного режима зависит от задачи, а комбинируя режимы, можно получить различные варианты работы с файлами.

Читать полностью…

Senior Java Developer

ServletRequest

ServletRequest — это интерфейс, который предоставляет доступ к запросу, полученному сервлетом. Он используется для получения данных из запроса, таких как параметры, заголовки, атрибуты и др.

ServletRequest позволяет сервлету взаимодействовать с клиентом вне зависимости от деталей реализации или протокола запроса.

В этом примере из запроса получается параметр "name" с помощью метода getParameter(). Затем это значение используется для вывода приветствия в ответ клиенту.

Читать полностью…

Senior Java Developer

Митапы от Сбера для IT-сообщества — это всегда интересно, весело и очень полезно. Следующий, кстати, пройдёт уже 17 октября в Рязани 👨💻

В этот раз банк приглашает специалистов на IT Talk by Sber, чтобы поговорить о трёх вехах разработки: frontend, backend и ML. Ведущие эксперты расскажут:

✔️ Чем может быть полезен GraalVM и как его эффективно применяют в платёжном шлюзе Сбера? Спикер — главный разработчик платёжного шлюза Сбера - Антон Ленок.

✔️ Системы сборки: в погоне за скоростью. Спикер – руководитель направления frontend–разработки в команде Брокерского бизнеса - Василий Маркитан.

✔️ Как работает GigaChat и где его использовать? Спикер — ML-инженер департамента SberDevices — Эль-Айясс Дани Валид.

Помимо новых знаний, в программе будет розыгрыш мерча, интерактивная фотозона для лучших кадров, нетворкинг и вкуснейший кейтеринг.

Скорее регистрируйтесь по ссылке. Встречаемся 17 октября в 18:30 в лофт-пространстве «Свобода» по адресу: Соборная площадь, 21 💚

Читать полностью…

Senior Java Developer

Привет! На связи организатор IT-конференций по разным направлениям разработки Podlodka Crew

♨️ Приглашаем посетить третий сезон Podlodka Java Crew. Окунёмся в масштабную и важную для каждого Java-разработчика тему «Работа с базой данных» и рассмотрим её со всех возможных сторон. Ведь какой бэкенд без SQL?

В этом сезоне вас ждёт много дискуссий, мнений и нетворкинга. В программе не только технические доклады, но ещё и два публичных собеседования, воркшопы и круглый стол:

🔸 Поговорим про паттерны обработки данных - стриминг, батчи, cdc;
🔸 Узнаем, как не наступить на грабли сочетая Debezium с Postgres;
🔸 Разберёмся в тонкостях CRUD-сервисов: Spring, Jooq, PostgreSQL, Liquibase, Testcontainers
🔸 Сравним использование NoSQL и SQL баз данных на конкретных примерах.

🤓 А ещё в программе — традиционный бар на тему «Интеграция через базу — не антипаттерн» — обсудим и поделимся опытом.

🤑 Для ранних пташек — низкие цены! Посмотреть программу и купить билет со скидкой можно на сайте: https://podlodka.io/javacrew

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Почему Map не наследуется от Collection?

Это связано с тем, что Map представляет отображение ключ-значение, в то время как Collection представляет коллекцию объектов.

Коллекции работают с объектами на основе их позиции в коллекции, тогда как в Map объекты доступны по ключу. Поэтому операции, определенные в Collection, такие как добавление, получение по индексу и итерация, не имеют смысла для Map.

Вместо этого в Map определены операции для работы с парами ключ-значение, такие как put(), get(), containsKey() и другие. Наследование Map от Collection привело бы к наследованию неподходящих методов.

Читать полностью…

Senior Java Developer

Инвалидация итераторов

Инвалидация итераторов - это ситуация, когда итератор, используемый для доступа к элементам контейнера, становится некорректным или недействительным.

Она может привести к непредсказуемому поведению и ошибкам в программе, поэтому важно понимать, какие операции могут вызвать инвалидацию для каждого конкретного контейнера.

В этом примере обращение к элементу через итератор *it может вызвать непредсказуемое поведение или ошибку выполнения программы, ведь после вставки нового элемента итератор it становится недействительным, так как вставка нового элемента приводит к перераспределению памяти внутри вектора.

Читать полностью…

Senior Java Developer

Чтобы узнать всё о «трёх китах» создания IT-продукта — анализе, разработке и тестировании — можно долго искать информацию самостоятельно, а можно просто прийти на IT Talk by Sber в Ростове-на-Дону 😏

Топовые спикеры Сбера расскажут на примерах собственных продуктов о:

✔️ Лучших практиках в части аналитики и принципах организации работы продуктовых команд по стримам. Спикер — системный аналитик команды ИКАР Артур Аветисов.

✔️ Популярных причинах, почему может тормозить релизный процесс, и методах борьбы с этой проблемой. Спикер — QA Lead команды СберДруг Михаил Новотарский.

✔️ Новых и невиданных аспектах Spring Security. Спикер — Java Lead в «Домклик» Павел Кислов.

В перерывах между докладами участников будут ждать кейтеринг, кофе-брейк, музыкальное выступление и классный нетворкинг. Встречаемся 19 октября в 18:00 в лофте «БИБЛИОТЕКА» по адресу: ул. 13-я Линия, 34.

Зарегистрироваться!

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Что такое Executor?

Executor — это интерфейс, который позволяет запускать задачи асинхронно. Используется вместе с интерфейсами Callable и Future для асинхронного выполнения задач.

Он определяет единственный метод execute(), который принимает объект Runnable с задачей для выполнения.
Интерфейс позволяет отделить логику создания и запуска потоков от самих задач.

Потоки создаются заранее и хранятся в пуле, а задачи просто отправляются на выполнение через execute().
Это дает выигрыш в производительности, т. к. исключает накладные расходы на создание новых потоков.

Читать полностью…

Senior Java Developer

Приоритеты потоков

Приоритеты потоков используются для определения того, как операционная система должна разделять вычислительные ресурсы между потоками. Приоритеты потоков представлены целыми числами от 1 до 10, где 1 — минимальный приоритет, а 10 — максимальный приоритет. По умолчанию все потоки имеют нормальный приоритет (5).

Здесь важно понимать, что приоритеты могут вести себя по-разному в зависимости от операционной системы и JVM. На некоторых системах высокоприоритетные потоки могут получать больше времени выполнения, чем низкоприоритетные, но это не гарантировано.

#для_продвинутых

Читать полностью…

Senior Java Developer

Маршалинг

Маршалинг (marshaling) — это процесс преобразования объектов в другой формат, который может быть использован для передачи данных через сеть, сохранения на диске или для других целей. Он также известен как сериализация. Обратным процессом является демаршалинг (unmarshaling или десериализация), который восстанавливает объекты из сериализованных данных.

#для_продвинутых

Читать полностью…

Senior Java Developer

FixedThemeResolver

FixedThemeResolver — это класс из пакета Spring Framework, который используется для установки фиксированной темы (или стиля) для веб-приложения. Тема определяет внешний вид компонентов пользовательского интерфейса, таких как цвета, шрифты, изображения и т. д.

Когда вы создаете веб-приложение с использованием Spring Framework, вы можете хотеть дать пользователю возможность выбора темы или стиля. FixedThemeResolver предоставляет простой способ жестко задать тему в коде и применить ее ко всем страницам вашего веб-приложения.

#для_продвинутых

Читать полностью…

Senior Java Developer

Класс StringJoiner

Класс StringJoiner предназначен для построения строки путем соединения элементов из коллекции.
Он позволяет указать разделитель, префикс и суффикс результирующей строки.

StringJoiner часто используется при необходимости преобразовать коллекцию объектов в строку.

В примере StringJoiner используется как раз для объединения имен в строку с разделителем и добавлением префикса/суффикса.

Читать полностью…

Senior Java Developer

🥶 Забудь о Web2 Программировании: Переходи на Web3 и Зарабатывай От $60,000!

Если ты разработчик, но до сих пор не в теме Web3, то упустил множество возможностей. Middle Web3 разработчики уже зарабатывают от $5,000 до $8,000 в месяц!

🔎 Что такое Web3 в двух словах, и как стать мастером блокчейн-разработки?
🔎 Какие перспективы ждут именно тебя на рынке Web3, учитывая твой текущий стек?
🔎 Вакансии, зарплаты и требования к блокчейн-разработчикам: разберем на реальных примерах с рынка.
🔎 Как за 2 года увеличить доход до $5,000+ и стать Middle в Web3?
🔎 Апгрейд: как стать более востребованным, не меняя текущий стек?

✈️ И даже поделимся секретами релокации и работы в международной компании!

🗺 Построим личный роадмеп и разберем все это на 30-минутной бесплатной консультации:

Как действующему программисту расширить стек до Web3 и стать блокчейн-разработчиком на Solidity, увеличив доход в $ за несколько месяцев!

👨‍💼 Кто проводит?

Рекрутеры Crypton Studio — крупнейшей студии блокчейн-разработки в Европе (6 лет на рынке, более 160+ сотрудников, в числе которых 63% разработчиков, огромное портфолио из более чем 100 успешно реализованных проектов для клиентов из 20 стран). Они запустили новый проект MarniD и телеграм-канал, где можно учиться на их опыте!

Места на консультацию ограничены

Если ты действующий разраб, то переходи на сайт и оставляй заявку
ссылка

Команда свяжется с тобой и забронирует слот на Zoom! Узнай о своих возможностях на рынке будущего!

Читать полностью…

Senior Java Developer

Класс AbstractSet

AbstractSet — это абстрактный класс, который предоставляет базовую реализацию интерфейса Set. Он входит в java.util пакет.

AbstractSet реализует большинство методов интерфейса Set, оставляя для подклассов только методы size() и iterator(). Это позволяет создавать подклассы с минимальным кодом.
Для хранения элементов AbstractSet использует объект Collection, передаваемый в конструктор.

Методы add(), remove(), contains() делегируют работу соответствующим методам внутренней коллекции.
Методы size(), isEmpty(), clear() и другие используют объект коллекции для реализации.

#это_база

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Какие условия “благополучной” сериализации объекта?

Для успешной сериализации объекта должны выполняться следующие условия:

1. Класс объекта должен имплементировать интерфейс Serializable.

2. В классе должно быть определено serialVersionUID — идентификатор версии класса. Это нужно для совместимости версий класса при десериализации.

3. Все поля класса должны быть сериализуемыми типами данных. Примитивные типы сериализуются автоматически, для объектов вложенных классов нужно также выполнить условия сериализации.

4. Если в классе есть поля, которые не нужно сериализовывать, они помечаются модификатором transient.

5. Методы класса сериализации не подлежат, сериализуются только данные объекта.

6. Класс должен иметь конструктор по умолчанию без параметров для корректной десериализации.

Читать полностью…

Senior Java Developer

ServletResponse

ServletResponse — это интерфейс, который предоставляет сервлету возможности для формирования ответа клиенту. Он используется для отправки данных в ответ на запрос клиента.

ServletResponse позволяет абстрагироваться от деталей протокола и реализации при формировании ответа.

Здесь с помощью ServletResponse устанавливается тип ответа, получается объект для записи, и формируется HTML-страница в качестве ответа клиенту.

Читать полностью…

Senior Java Developer

ServletContext

ServletContext предоставляет сервлету доступ к контексту веб-приложения. Он содержит общую информацию о приложении и позволяет сервлетам взаимодействовать.
Доступ к ServletContext можно получить через метод getServletContext() класса ServletConfig.

Через ServletContext можно получить данные инициализационных параметров web.xml.
ServletContext позволяет сервлетам оставлять атрибуты, доступные всем сервлетам данного приложения.

Также с его помощью можно получить ресурсы приложения, например потоки ввода-вывода.

#это_база

Читать полностью…

Senior Java Developer

ServletConfig

ServletConfig используется для настройки сервлетов при их инициализации.

Основные моменты, которые следует знать о ServletConfig:

ServletConfig предоставляет сервлету доступ к инициализационным параметрам. Эти параметры определяются в дескрипторе развертывания (например, web.xml).

— Для получения экземпляра ServletConfig используется метод getServletConfig(), вызываемый в методе инициализации сервлета init().

— Через ServletConfig можно получить доступ к контексту сервлета с помощью метода getServletContext().

— Можно получить значение инициализационного параметра по имени с помощью метода getInitParameter().

— Можно перечислить все инициализационные параметры методом getInitParameterNames().

#это_база

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Как правильно сравнить значения строк двух различных объектов типа String и StringBuffer?

Чтобы сравнить значения строк из этих классов, нужно преобразовать их к одному типу, например String.
Для объекта StringBuffer можно вызвать метод toString(), который вернет строку типа String.

После этого значения уже можно сравнивать с помощью метода equals().

Или для простого сравнения значений можно использовать метод compareTo(), который вернет 0 если строки равны.

Читать полностью…
Subscribe to a channel