Обложка канала

Библиотека джависта. Страница 53

20804 @javaproglib

Полезные материалы по всему, что может быть полезно разработчику на Java.

  • Библиотека джависта

    #вопросы_с_собеседований В чём заключается разница между IO и NIO? Java IO (input-output) является потокоориентированным, а Java NIO (new/non-blocking io) – буфер-ориентированным. Потокоориентированный ввод/вывод подразумевает чтение/запись из потока/в поток одного или нескольких байт в единицу времени поочередно. Данная информация нигде не кэшируются. Таким образом, невозможно произвольно двигаться по потоку данных вперед или назад. В Java NIO данные сначала считываются в буфер, что дает больше гибкости при обработке данных. • Потоки ввода/вывода в Java IO являются блокирующими. Это значит, что когда в потоке выполнения вызывается read() или write() метод любого класса из пакета java.io.*, происходит блокировка до тех пор, пока данные не будут считаны или записаны. Поток выполнения в данный момент не может делать ничего другого. Неблокирующий режим Java NIO позволяет запрашивать считанные данные из канала (channel) и получать только то, что доступно на данный момент, или вообще ничего, если доступных данных пока нет. Вместо того, чтобы оставаться заблокированным пока данные не станут доступными для считывания, поток выполнения может заняться чем-то другим. Тоже самое справедливо и для неблокирующего вывода. Поток выполнения может запросить запись в канал некоторых данных, но не дожидаться при этом пока они не будут полностью записаны. • В Java NIO имеются селекторы, которые позволяют одному потоку выполнения мониторить несколько каналов ввода. Т.е. существует возможность зарегистрировать несколько каналов с селектором, а потом использовать один поток выполнения для обслуживания каналов, имеющих доступные для обработки данные, или для выбора каналов, готовых для записи.
  • Библиотека джависта

    Skillbox проводит набор на курс «Профессия Java-разработчик». Java — универсальный язык программирования. Выбирайте Java, и вы будете востребованы не только в небольших IT-агентствах, но и в топовых компаниях — таких как Mail ru, Альфа-Банк, OZON и Авито. В курсе мы собрали всё для успешного старта в профессии: — Много практики с экспертами в java-разработке; — 6 месяцев бесплатного обучения — первый платёж через полгода; — Стажировка в команде и возможность трудоустроиться juniorом в компании-партнёры уже во время обучения; — Гарантия трудоустройства или возврат денег. 🎁 Получите скидку 45% на курс по промокоду «ЛЕТО». Промокод нужно назвать менеджеру. Оставляйте заявку прямо сейчас: https://clck.ru/rbtZZ
  • Библиотека джависта

    #вопросы_с_собеседований Расскажите о методах жизненного цикла JSP. Контейнер сервлетов (например, Tomcat, GlassFish) создает из JSP-страницы класс сервлета, наследующего свойства интерфейса javax.servlet.jsp.HttpJspBase и включающего следующие методы: • jspInit() — метод объявлен в JSP странице и реализуется с помощью контейнера. Этот метод вызывается один раз в жизненном цикле JSP для того, чтобы инициализировать конфигурационные параметры указанные в дескрипторе развертывания. Этот метод можно переопределить с помощью определения элемента JSP scripting и указания необходимых параметров для инициализации; • jspService() — метод переопределяется контейнером автоматически и соответствует непосредственно коду JSP, описанному на странице. Этот метод определен в интерфейсе HttpJspPage, его имя начинается с нижнего подчеркивания и он отличается от других методов жизненного цикла тем, что его невозможно переопределить; • jspDestroy() — метод вызывается контейнером для удаления объекта из памяти (на последней фазе жизненного цикла JSP - Destroy). Метод вызывается только один раз и доступен для переопределения, предоставляя возможность освободить ресурсы, которые были созданы в jspInit().
  • Реклама

  • Библиотека джависта

    ❗Курс по алгоритмам и структурам данным начинается сегодня. 🚂 Запрыгиваем в уходящий поезд! Информация для тех, кто еще думает: • Разбираем все основные алгоритмы понятным языком; • Тренируемся их применять и решаем задачи; • Живые трансляции и общение в коммьюнити; • Курс ведет разработчик Яндекс Go Степан Мацкевич; • Ученики смогут пройти боевое тестовое собеседование с разработчиками Яндекс! ⚡Вы сможете успеть сегодня отправить заявку и записаться в группу! 👉 Записывайтесь: https://proglib.io/w/a6bd553e
  • Библиотека джависта

    #вопросы_с_собеседований Будет ли работать HashMap, если все добавляемые ключи будут иметь одинаковый hashCode()? Да, будет, но в этом случае HashMap вырождается в связный список и теряет свои преимущества.
  • Библиотека джависта

    Тимлиду нужно не только быть опытным инженером, но и знать, как управлять проектами, эффективно распределять таски и мотивировать команду. Этими навыки можно овладеть на онлайн-курсе «Team Lead» в OTUS. 📚 За 5 месяцев вы рассмотрите все аспекты управления командой разработчиков: — Презентация проекта. — Основы тайм-менеджмента. — Грамотный найм сотрудников. — Микро- и макроменеджмент. — Контроль и мотивация команды. — Построение процессов разработки. — Управление кризисами. 🎯 Оставьте заявку, чтобы зарезервировать место в группе по спеццене https://otus.pw/xU6T/ ➡️ Узнать, как проходит учебный процесс, и познакомится с преподавателями помогут открытые уроки: 💻 11 июля«Как правильно увольнять человека» 💻 19 июля«Управление удаленной командой в текущих реалиях»
  • Библиотека джависта

    #вопросы_с_собеседований Сколько элементов будет пропущено, если Iterator.next() будет вызван после 10-ти вызовов Iterator.hasNext()? Нисколько - hasNext() осуществляет только проверку наличия следующего элемента.
  • Библиотека джависта

    #вопросы_с_собеседований Объясните смысл параметров в конструкторе HashMap(int initialCapacity, float loadFactor). initialCapacity - исходный размер HashMap, количество корзин в хэш-таблице в момент её создания. • loadFactor - коэффициент заполнения HashMap, при превышении которого происходит увеличение количества корзин и автоматическое перехэширование. Равен отношению числа уже хранимых элементов в таблице к её размеру.
  • Библиотека джависта

    Оффер в Яндекс за два дня 🚀 9-10 июля мы проводим Weekend Offer для мобильных разработчиков, участники которого смогут присоединиться к командам Маркета, Еды, Такси и многих других наших сервисов. Если вы хотите делать продукты Яндекса лучше и у вас есть опыт коммерческой разработки iOS, Android, Flutter от 3 лет — регистрируйтесь на сайте и решайте задачи предварительного этапа. 9 июля мы проведем две онлайн-секции с кодом, а уже на следующий день презентуем офферы лучшим участникам. Задачи доступны до 23:59 6 июля, так что не затягивайте!
  • Библиотека джависта

    #вопросы_с_собеседований Как и когда происходит увеличение количества корзин в HashMap? Помимо capacity у HashMap есть еще поле loadFactor, на основании которого, вычисляется предельное количество занятых корзин capacity * loadFactor. По умолчанию loadFactor = 0.75. По достижению предельного значения, число корзин увеличивается в 2 раза и для всех хранимых элементов вычисляется новое «местоположение» с учетом нового числа корзин.
  • Библиотека джависта

    #вопросы_с_собеседований Что такое «денормализация»? Для чего она применяется? Денормализация базы данных — это процесс осознанного приведения базы данных к виду, в котором она не будет соответствовать правилам нормализации. Обычно это необходимо для повышения производительности и скорости извлечения данных за счет увеличения избыточности данных.
    Библиотека джависта

    Нормализация - это процесс преобразования отношений базы данных к виду, отвечающему нормальным формам (пошаговый, обратимый процесс замены исходной схемы другой схемой, в которой наборы данных имеют более простую и логичную структуру). Нормализация предназначена для приведения структуры базы данных к виду, обеспечивающему минимальную логическую избыточность, и не имеет целью уменьшение или увеличение производительности работы или же уменьшение или увеличение физического объёма базы данных. Конечной целью нормализации является уменьшение потенциальной противоречивости хранимой в базе данных информации.

    Telegram
  • Библиотека джависта

    Заканчивается набор в Школу бэкенд-разработки Академии Яндекса (Python и Java)! За 2 месяца обучения вы прокачаете профессиональные скиллы, пообщаетесь с экспертами и другими увлечёнными студентами, погрузитесь в задачи IT-индустрии. Участие в школе бесплатное, занятия можно совмещать с работой или учёбой. Обучение состоит из двух этапов: 🔸 с 20 июля по 8 сентября — онлайн-часть с лекциями, семинарами и практическими занятиями; 🔸 с 9 по 25 сентября — офлайн-часть в Москве, работа в командах над реальными проектами Яндекса. Билеты и проживание студентам из других городов мы оплатим. Чтобы поступить, нужно до 23 июня отправить заявку и успешно справиться с тестовыми заданиями. Более подробную информацию о школе и ответы на популярные вопросы от кандидатов можно узнать в записи трансляции о Школе бэкенд-разработки.

    Открыт набор в Школу разработки интерфейсов, Школу бэкенд-разработки, Школу мобильной разработки и Школу менеджеров

    Академия Яндекса открывает набор в летние школы
  • Библиотека джависта

    #вопросы_с_собеседований Что такое busy spin? busy spin – это техника, которую программисты используют, чтобы заставить поток ожидать при определённом условии. В отличие от традиционных методов wait(), sleep() или yield(), которые подразумевают уступку процессорного времени, этот метод вместо уступки выполняет пустой цикл. Это необходимо для того, чтобы сохранить кэш процессора, т.к. в многоядерных системах существует вероятность, что приостановленный поток продолжит своё выполнение уже на другом ядре, а это повлечет за собой перестройку состояния процессорного кэша, которая является достаточно затратной процедурой.
  • Библиотека джависта

    Конференция JPoint 2022 на день вернется в офлайн 24 июня. Для всех, кто соскучился по живому общению с единомышленниками, команда JPoint сделала отдельный офлайн-день. В теплом ламповом офлайне вас ждут: ✔ Доклады о фреймворках, тестировании на Java, архитектуре, многопоточности и не только. ✔ Дискуссии с участием спикеров после каждого доклада (вживую, а не в Zoom!). ✔ Круглые столы о JVM, Data Engineering в Java и собеседованиях разработчиков. ✔ Партнерские стенды с мини-докладами и возможностью получить мерч. ✔ Живое общение с единомышленниками. 📍Санкт-Петербург, Park Inn by Radisson Pulkovskaya, 24 июня Вместе с билетом на офлайн-день вы получите доступ к записям более чем 30 докладов и других активностей с онлайн-части конференции.  Подробности, полную программу и билеты вы можете найти по ссылке. Если покупаете билет за свой счет (а не за счет компании), то воспользуйтесь промокодом для получения скидки: javaproglib2022JRGpc
  • Библиотека джависта

    📐 10 алгоритмов для работы с графами, которые должен знать каждый кодер Знакомимся с десятью маст-хэв для каждого кодера алгоритмами, которые будут полезными для работы с графами (исходный код прилагается). https://proglib.io/sh/LpZb98VWRM
  • Реклама

  • Библиотека джависта

    #вопросы_с_собеседований Сколько переходов происходит в момент вызова HashMap.get(key) по ключу, который есть в таблице? • ключ равен null: 1 - выполняется единственный метод getForNullKey(). • любой ключ отличный от null: 4 - вычисление хэш-кода ключа; определение номера корзины; поиск значения; возврат значения.
  • Библиотека джависта

    #вопросы_с_собеседований Какое худшее время работы метода get(key) для ключа, который есть в HashMap? O(N). Худший случай - это поиск ключа в HashMap, вырожденного в список по причине совпадения ключей по hashCode() и для выяснения хранится ли элемент с определённым ключом может потребоваться перебор всего списка.
  • Библиотека джависта

    🔥 Собираешься осваивать Java с нуля? Одна из тем, которую нужно освоить — это языки статической и динамической типизации. 📅 Приглашаем 22 июня в 20:00 мск на бесплатный вебинар «Языки статической и динамической типизации»! 📚 Вместе с Сергеем Петрелевичем, сертифицированным Java-разработчиком, поговорим о стилях программирования и необходимости каждого из них. Разберём основные принципы объектно-ориентированного стиля: инкапсуляция, наследование, полиморфизм и возможности функционального стиля языка Java. 📌 Регистрация на бесплатный вебинар: https://otus.pw/V77A/