#вопросы_с_собеседований
Зачем добавили ArrayList, если уже был Vector?
☕️ Методы класса Vector синхронизированы, а ArrayList - нет;
☕️ По умолчанию Vector удваивает свой размер, когда заканчивается выделенная под элементы память. ArrayList же увеличивает свой размер только на половину.
Vector это устаревший класс и его использование не рекомендовано.
#вопросы_с_собеседований
Чем полезны неизменяемые объекты?
Неизменяемость (immutability) помогает облегчить написание многопоточного кода. Неизменяемый объект может быть использован без какой-либо синхронизации. К сожалению, в Java нет аннотации @Immutable, которая делает объект неизменяемым, для этого разработчикам нужно самим создавать класс с необходимыми характеристиками. Для этого необходимо следовать некоторым общим принципам: инициализация всех полей только в конструкторе, отсутствие методов setX() вносящих изменения в поля класса, отсутствие утечек ссылки, организация отдельного хранилища копий изменяемых объектов и т.д.
Курс: «Разработчик. Из мидла в сеньоры»
Для мидл-разработчиков, которые чувствуют что способны на большее, чем просто закрывать задачи.
Мы подготовили курс с участием специалистов из сферы финтеха и учли основные навыки, которые нужны чтобы перейти на сеньор-позицию.
На курсе ты научишься:
→ Управлять командой разработки и наймом специалистов
→ Проектировать архитектуру приложений в больших системах
→ Использовать продуктовое мышление в разработке
→ Проходить техническое интервью на позицию сеньор-разработчика
Курс состоит из 7 лекций с практическими заданиями и стартует уже 11 октября.
Участие — бесплатное. Зарегистрироваться и узнать подробности ты можешь по ссылке → https://slurm.club/3DioBdQ
#вопросы_с_собеседований
override vs overload
• override — возможность переопределениия поведения метода в типах-потомках
• overload — возможность переопределять метод с одним именем, но разным набором аргументов
Узнай уровень своей крутости!
Специально ко Дню программиста Сбер запустил квест с реальными персонажами.
Презентация приложения для распознавания голосов птиц «Щебет» начнётся через 30 минут, а продукт ещё не до конца готов! Не теряй время – переходи по ссылке и выбирай, кто ты в команде, выполняй задания и получи возможность сделать игру реальностью!
#вопросы_с_собеседований
Что такое Semaphore?
Semaphore – это новый тип синхронизатора: семафор со счётчиком, реализующий шаблон синхронизации Семафор. Доступ управляется с помощью счётчика: изначальное значение счётчика задаётся в конструкторе при создании синхронизатора, когда поток заходит в заданный блок кода, то значение счётчика уменьшается на единицу, когда поток его покидает, то увеличивается. Если значение счётчика равно нулю, то текущий поток блокируется, пока кто-нибудь не выйдет из защищаемого блока. Semaphore используется для защиты дорогих ресурсов, которые доступны в ограниченном количестве, например подключение к базе данных в пуле.
Курс: «Разработчик. Из мидла в сеньоры»
Для мидл-разработчиков, которые чувствуют что способны на большее, чем просто закрывать задачи.
Мы подготовили курс с участием специалистов из сферы финтеха и учли основные навыки, которые нужны чтобы перейти на сеньор-позицию.
На курсе ты научишься:
→ Управлять командой разработки и наймом специалистов
→ Проектировать архитектуру приложений в больших системах
→ Использовать продуктовое мышление в разработке
→ Проходить техническое интервью на позицию сеньор-разработчика
Курс состоит из 7 лекций с практическими заданиями и стартует уже 10 октября.
Участие — бесплатное. Зарегистрироваться и узнать подробности ты можешь по ссылке → https://slurm.club/3DioBdQ
#вопросы_с_собеседований
Что такое «фреймворк Fork/Join»?
Фреймворк Fork/Join, представленный в JDK 7, - это набор классов и интерфейсов позволяющих использовать преимущества многопроцессорной архитектуры современных компьютеров. Он разработан для выполнения задач, которые можно рекурсивно разбить на маленькие подзадачи, которые можно решать параллельно.
• Этап Fork: большая задача разделяется на несколько меньших подзадач, которые в свою очередь также разбиваются на меньшие. И так до тех пор, пока задача не становится тривиальной и решаемой последовательным способом.
• Этап Join: далее (опционально) идёт процесс «свёртки» - решения подзадач некоторым образом объединяются пока не получится решение всей задачи.
Решение всех подзадач (в т.ч. и само разбиение на подзадачи) происходит параллельно.
Для решения некоторых задач этап Join не требуется. Например, для параллельного QuickSort — массив рекурсивно делится на всё меньшие и меньшие диапазоны, пока не вырождается в тривиальный случай из 1 элемента. Хотя в некотором смысле Joinбудет необходим и тут, т.к. всё равно остаётся необходимость дождаться пока не закончится выполнение всех подзадач.
Ещё одно замечательное преимущество этого фреймворка заключается в том, что он использует work-stealing алгоритм: потоки, которые завершили выполнение собственных подзадач, могут «украсть» подзадачи у других потоков, которые всё ещё заняты.
👨🎓 31 лучший вуз России для будущих программистов 2022-2023
Составили список из 31 вуза, где вы научитесь думать как программист и получите фундаментальные знания в области математики, информатики, компьютерных наук и так далее. Для удобства вузы отсортированы по среднему проходному баллу ЕГЭ: от наибольшего к наименьшему.
🔗 Основной сайт
🔗 Зеркало
Стартовать в IT за три дня
Даже в такой престижной сфере, как IT, есть специальности, которые ценятся особенно высоко. И дело здесь даже не в зарплате. Профессиональные тестировщики ПО – люди, без которых не обойтись. Они ищут ошибки, смотрят, чтобы программа делала именно то, что задумано, проверяют, как работают приложения и многое другое. К тому же, эта профессия - отличный старт для будущего специалиста!
Бесплатный трехдневный интенсив «Тестировщик ПО: инструкция по быстрому старту в IT» познакомит вас с профессией и откроет двери в мир профессионалов IT
За три дня вы:
— погрузитесь в профессию тестировщика ПО, чтоб понять, подходит ли она вам;
— научитесь работать в инструменте для автоматического тестирования Postman;
— напишете баг-репорт и протестируете API сайт;
— пообщаетесь с экспертами и узнаете требования потенциальных работодателей.
📍Ждем вас 12, 13 и 14 сентября в 18:00!
🔹https://clc.to/-oHZBQ
#вопросы_с_собеседований
Какие методы для работы с cookies предусмотрены в сервлетах?
Servlet API предоставляет поддержку cookies через класс javax.servlet.http.Cookie:
• Для получения массива cookies из запроса необходимо воспользоваться методом HttpServletRequest.getCookies(). Методов для добавления cookies в HttpServletRequest не предусмотрено.
• Для добавления cookie в ответ используется HttpServletResponse.addCookie(Cookie c). Метода получения cookies в HttpServletResponse отсутствует.
#вопросы_с_собеседований
Какие различные методы управления сессией в сервлетах вы знаете?
При посещении клиентом Web-ресурса и выполнении вариантов запросов, контекстная информация о клиенте не хранится. В протоколе HTTP нет возможностей для сохранения и изменения информации о предыдущих посещениях клиента. Сеанс (сессия) – соединение между клиентом и сервером, устанавливаемое на определенное время, за которое клиент может отправить на сервер сколько угодно запросов. Сеанс устанавливается непосредственно между клиентом и Web-сервером. Каждый клиент устанавливает с сервером свой собственный сеанс. Сеансы используются для обеспечения хранения данных во время нескольких запросов Web-страницы или на обработку информации, введенной в пользовательскую форму в результате нескольких HTTP-соединений (например, клиент совершает несколько покупок в интернет-магазине; студент отвечает на несколько тестов в системе дистанционного обучения).
Существует несколько способов обеспечения уникального идентификатора сессии:
User Authentication – Предоставление учетных данных самим пользователем в момент аутентификации. Переданная таким образом информация в дальнейшем используется для поддержания сеанса. Это метод не будет работать, если пользователь вошёл в систему одновременно из нескольких мест.
HTML Hidden Field – Присвоение уникального значения скрытому полю HTML страницы, в момент когда пользователь начинает сеанс. Этот метод не может быть использован со ссылками, потому что нуждается в подтверждении формы со скрытым полем каждый раз во время формирования запроса. Кроме того, это не безопасно, т.к. существует возможность простой подмены такого идентификатора.
URL Rewriting – Добавление идентификатора сеанса как параметра URL. Достаточно утомительная операция, потому что требует постоянного отслеживания этого идентификатора при каждом запросе или ответе.
Cookies – Использование небольших фрагментов данных, отправленных web-сервером и хранимых на устройстве пользователя. Данный метод не будет работать, если клиент отключает использование cookies.
Session Management API – Использование специального API для отслеживания сеанса, построенный на основе и на методах, описанных выше и который решает частные проблемы перечисленных способов:
Чаще всего недостаточно просто отслеживать сессию, необходимо ещё и сохранять какие-либо дополнительные данные о ней, которые могут потребоваться при обработке последующих запросов. Осуществление такого поведения требует много дополнительных усилий.
Все вышеперечисленные методы не являются универсальными: для каждого из них можно подобрать конкретный сценарий, при котором они не будут работать.
Отличия String/StringBuilder/StringBuffer
• String — иммутабельный байтовый массив
• StringBuilder — helper-класс для построения строк, не предоставляет гарантий синхронизации
• StringBuffer — то же, что и StringBuilder, с synchronized методами
Научитесь разрабатывать микросервисную архитектуру!
Первые шаги в этом направлении вы можете сделать на открытых уроках онлайн-курса «Microservice Architecture» OTUS для для бэкенд-разработчиков, тимлидов и администраторов. Занятие проведут опытные архитекторы.
🗓 «Паттерны аутентификации и авторизации» — 13 сентября в 20:00 мск.
Узнаете о различных паттернах аутентификации и авторизации, а также о сессионной аутентификации на основе кук и токенов (jwt) и работе identity провайдеров.
👉🏻 Пройдите вступительный тест для записи на урок — https://otus.pw/B5Oe/
🗓 «Тестирование в микросервисной архитектуре» — 21 сентября в 20:00 мск.
Узнаете о различных типах тестов и инструментах, используемых в тестировании, а также поговорим о том, как микросервисная архитектура изменила подходы к тестированию.
👉🏻 Пройдите вступительный тест для записи на урок — https://otus.pw/3vww/