#вопросы_с_собеседований
Что такое «локальный класс»? Каковы его особенности?
Local inner class (Локальный класс) - это вложенный класс, который может быть декларирован в любом блоке, в котором разрешается декларировать переменные. Как и простые внутренние классы (Member inner class) локальные классы имеют имена и могут использоваться многократно. Как и анонимные классы, они имеют окружающий их экземпляр только тогда, когда применяются в нестатическом контексте.
Локальные классы имеют следующие особенности:
• Видны только в пределах блока, в котором объявлены;
• Не могут быть объявлены как private/public/protected или static;
• Не могут иметь внутри себя статических объявлений методов и классов, но могут иметь финальные статические поля, проинициализированные константой;
• Имеют доступ к полям и методам обрамляющего класса;
• Могут обращаться к локальным переменным и параметрам метода, если они объявлены с модификатором final.
#вопросы_с_собеседований
Что такое «статический класс»?
Это вложенный класс, объявленный с использованием ключевого слова static. К классам верхнего уровня модификатор static неприменим.
Lineate ищет Java-разработчиков с опытом от 3-х лет и предлагает возможность для релокации в Грузию
Компания предоставляет:
— трудоустройство в грузинском филиале;
— зарплату в местном банке (в лари);
— билеты для сотрудников с багажом за счет компании;
— жилье на первые 2 недели, помощь с поиском жилья для дальнейшего проживания;
— релокационный бонус $1000.
Зарплатная вилка для сеньоров: 3 300–3 800 USD (10 000–11 600 лари)
От вас ждем:
— профессиональное владение инструментами Spring Boot, Spring Data, Spring Batch, Netty (Async IO);
— опыт работы с SQL / NoSQL базами данных;
— уровень английского языка не ниже Pre-intermediate.
Подробнее о вакансии можно прочитать по ссылке.
#вопросы_с_собеседований
В чем разница между классами java.util.Collection и java.util.Collections?
java.util.Collections - набор статических методов для работы с коллекциями.
java.util.Collection - один из основных интерфейсов Java Collections Framework.
Мы усиливаем команду IT специалистов в Альфа-Банке и ищем Java разработчиков для развития наших Fintech продуктов.
Что предстоит делать:
- Разрабатывать приложения, которые масштабируются на все дистанционные каналы банка (интернет-банк, мобильное приложение, платёжные сервисы и многое другое).
Что мы предлагаем:
📌 Welcome бонус 250 000 рублей (до вычета НДФЛ) за уровень Middle+ сразу после выхода на работу. Уровень подтверждаем на техническом интервью
📌 Стабильный и прозрачный доход + квартальная премия по результатам KPI
📌 Гибкий график работы: вы сможете планировать время так, как удобно вам
Можно откликнуться на вакансию на нашем сайте или написать рекрутеру @ezaharova
#вопросы_с_собеседований
Какие различные методы управления сессией в сервлетах вы знаете?
При посещении клиентом Web-ресурса и выполнении вариантов запросов, контекстная информация о клиенте не хранится. В протоколе HTTP нет возможностей для сохранения и изменения информации о предыдущих посещениях клиента. Сеанс (сессия) – соединение между клиентом и сервером, устанавливаемое на определенное время, за которое клиент может отправить на сервер сколько угодно запросов. Сеанс устанавливается непосредственно между клиентом и Web-сервером. Каждый клиент устанавливает с сервером свой собственный сеанс. Сеансы используются для обеспечения хранения данных во время нескольких запросов Web-страницы или на обработку информации, введенной в пользовательскую форму в результате нескольких HTTP-соединений (например, клиент совершает несколько покупок в интернет-магазине; студент отвечает на несколько тестов в системе дистанционного обучения).
Существует несколько способов обеспечения уникального идентификатора сессии:
User Authentication – Предоставление учетных данных самим пользователем в момент аутентификации. Переданная таким образом информация в дальнейшем используется для поддержания сеанса. Это метод не будет работать, если пользователь вошёл в систему одновременно из нескольких мест.
HTML Hidden Field – Присвоение уникального значения скрытому полю HTML страницы, в момент когда пользователь начинает сеанс. Этот метод не может быть использован со ссылками, потому что нуждается в подтверждении формы со скрытым полем каждый раз во время формирования запроса. Кроме того, это не безопасно, т.к. существует возможность простой подмены такого идентификатора.
URL Rewriting – Добавление идентификатора сеанса как параметра URL. Достаточно утомительная операция, потому что требует постоянного отслеживания этого идентификатора при каждом запросе или ответе.
Cookies – Использование небольших фрагментов данных, отправленных web-сервером и хранимых на устройстве пользователя. Данный метод не будет работать, если клиент отключает использование cookies.
Session Management API – Использование специального API для отслеживания сеанса, построенный на основе и на методах, описанных выше и который решает частные проблемы перечисленных способов:
Чаще всего недостаточно просто отслеживать сессию, необходимо ещё и сохранять какие-либо дополнительные данные о ней, которые могут потребоваться при обработке последующих запросов. Осуществление такого поведения требует много дополнительных усилий.
Все вышеперечисленные методы не являются универсальными: для каждого из них можно подобрать конкретный сценарий, при котором они не будут работать.
❓ Не знаете, с чего начать осваивать Fullstack-разработку на JavaScript?
👉 Приходите на открытый вебинар «Выравнивание по центру в CSS». Занятие пройдет 22 марта в Otus.
❗️ Программа рассчитана на тех, кто еще не имеет навыков программирования.
✅ На открытом уроке разберем способы выравнивания HTML блока по центру, используя современные техники CSS. Также поговорим про flexbox, grid, position.
📌 Не упустите шанс попробовать обучение на онлайн-курсе «Специализация Fullstack JavaScript Developer» от OTUS и начать осваивать новую профессию.
👉 Зарегистрируйтесь на мероприятие, чтобы участвовать https://otus.pw/EFrP/
Самое мучительное в поиске работы — ожидание ответа и бесконечные этапы отбора. В Почтатехе считают, что всё должно быть проще, и приглашают всех джавистов на One day offer 9 апреля.
Никаких географических ограничений: ждут участников со всех уголков страны и уже готовы предложить конкурентные условия и амбициозные задачи в продуктах Почты России. Если ты спец с опытом в Java-разработке от трёх лет, смело откликайся до 3 апреля включительно: https://clck.ru/dnhQ9
Как написать свой первый автотест за 1 час?
Посетить открытое занятие курса "Автоматизация тестирования на Java" от ребят из школы автоматизации QA.GURU бесплатное открытое занятие состоится 23-го марта в 20:00 МСК.
Почему надо сходить:
— Разработаем ваш первый (или не первый) автотест на поиск в Google
—Расскажут о рынке QA🔥 Кто, кому, за что и сколько платит?
— Покажут боевой проект с полной инфраструктурой (Web, mobile, API)
— Дадут домашнее задание и проверят его.
Занятие бесплатное — для участия вступайте в чат @qa_guru_chat — ссылка на занятие будет там.
#вопросы_с_собеседований
Какие режимы доступа к файлу есть у RandomAccessFile?
"r" открывает файл только для чтения. Запуск любых методов записи данных приведет к выбросу исключения IOException.
"rw" открывает файл для чтения и записи. Если файл еще не создан, то осуществляется попытка создать его.
"rws" открывает файл для чтения и записи подобно "rw", но требует от системы при каждом изменении содержимого файла или метаданных синхронно записывать эти изменения на физический носитель.
"rwd" открывает файл для чтения и записи подобно "rws", но требует от системы синхронно записывать изменения на физический носитель только при каждом изменении содержимого файла. Если изменяются метаданные, синхронная запись не требуется.
🔥Хардкорный тест по Java🔥
⭕️Осторожно! Из-за этого курса можно стать супервостребованным Java-разработчиком! Пройди тест из 20 вопроса и испытай себя.
🦸🏼♂️62 компании-партнера ждут, когда ты овладеешь этим мастерством. Проходи вступительный тест и помни большая сила — большая ответственность!
📌ПРОЙТИ ТЕСТ - https://otus.pw/6Dz95/
#вопросы_с_собеседований
Как исключить поля из сериализации?
Для управления сериализацией при определении полей можно использовать ключевое слово transient, таким образом исключив поля из общего процесса сериализации.
✨Какая бывает тестовая документация и зачем она нужна?
21 марта в 20:00 в OTUS пройдет открытый вебинар «Теория тестирования. Документация тестирования».
🔥Вместе с преподавателем-экспертом мы поговорим о той документации, которую составляет тестировщик, а именно: дефекты, чек-листы, тест-кейсы.
После demo-занятия вы сможете продолжить осваивать необходимые навыки на онлайн-курсе «Специализация QA Automation Engineer».
👇Регистрация на вебинар:
https://otus.pw/yZHe
#вопросы_с_собеседований
Можно ли объявить метод абстрактным и статическим одновременно?
Нет. В таком случае компилятор выдаст ошибку: "Illegal combination of modifiers: ‘abstract’ and ‘static’". Модификатор abstract говорит, что метод будет реализован в другом классе, а static наоборот указывает, что этот метод будет доступен по имени класса.
Что такое JDBC-драйвер? Какие бывают типы?
JDBC – Java DataBase Connectivity – соединение с базами данных на Java. Это стандарт взаимодействия с БД. Его интерфейс поставляется в стандартной JDK в виде пакета java.sql. Какой бы библиотекой для работы с базой данных вы ни пользовались, в ее основе почти всегда лежит низкоуровневый JDBC.
JDBC-драйвер – реализация JDBC для определенной базы данных. В приложении может быть зарегистрировано несколько разных драйверов. При соединении к базе, нужный выбирается исходя из URL соединения. Драйверы делятся на 4 типа:
Тип 1 – JDBC-ODBC мост. Делегирует работу с базой установленному в системе ODBC-драйверу. Платформозависимый. Не поддерживается с Java 8.
Тип 2 – Native API. Делегирует работу с базой библиотеке, установленной в системе. Платформозависимый. Библиотеки в отличие от ODBC специфичны для конкретной базы, поэтому такой драйвер обычно работает быстрее.
Тип 3 – драйвер сетевого протокола. Работает с промежуточным слоем (JavaEE сервером приложений), который транслирует запросы в сетевой протокол, с которым работает конкретная БД. Такой драйвер полностью реализован на Java.
Тип 4 – драйвер протокола БД/тонкий драйвер. Полная реализация протокола взаимодействия с базой данных. Отличается от типа 3 тем, что здесь логика протокола находится не на внешнем промежуточном слое, а прямо в самом драйвере.
⁉️Какие бывают стили программирования на Java?
🗓 23 марта в 20:00 состоится открытый урок «Объектно-ориентированное и функциональное программирование». На вебинаре вместе с практикующим экспертом поговорим о стилях программирования и необходимости каждого из них.
🍀Разберём основные принципы объектно-ориентированного стиля: инкапсуляция, наследование, полиморфизм. А еще узнаем, какие возможности функционального стиля предоставляет язык Java.
💪🏻 Используйте эту возможность, чтобы попробовать онлайн-курс «Специализация Java-разработчик» и узнать о нем больше.
📌Регистрация на занятие:https://otus.pw/BIDW/
Как сериализация работает с наследованием?
Когда Serializable класс имеет цепочку родителей, пока эти родители тоже Serializable, десериализация объекта идет от родителя к наследнику, в обход конструктора. Вместо него вызываются методы readObject (readObjectNoData). Но как только встречается первый предок, не реализующий интерфейс Serializable, инициализация для него возвращается в нормальное русло – вместо readObject вызывается конструктор без аргументов. Если такого конструктора нет, или он объявлен private, исполнение выбросит InvalidClassException.
При сериализации несериализуемые предки просто игнорируются.
Если класс несериализуемый и не предоставляет достаточного доступа к своему логическому состоянию для наследников, правильно реализовать его наследника сериализуемым может быть невозможно.
Популярный вопрос на тему – как когда сериализуешь объект класса-наследника, избежать сериализации его родительской части. Единственный способ добиться этого – кастомизировать сериализационную форму, определив собственную реализацию writeObject(), либо используя интерфейс Externalizable.
Открытость класса для наследования делает неприменимым паттерн serialization proxy (который рассмотрим позднее).