Привет! 👋 Мы ищем контент-менеджера для ведения наших профильных тг-каналов. Увлеченность вопросами разработки и информационных технологий обязательна.
➡️ Подробнее о вакансии
➡️ Форма для отклика
➡️ Подробнее о вакансии
➡️ Форма для отклика
#вопросы_с_собеседований
Можно ли использовать строки в конструкции switch?
Да, начиная с Java 7 в операторе
• участвующие строки чувствительны к регистру;
• используется метод
• согласно документации, Java 7 для строк в
Можно ли использовать строки в конструкции switch?
Да, начиная с Java 7 в операторе
switch
можно использовать строки, ранние версии Java не поддерживают этого. При этом:• участвующие строки чувствительны к регистру;
• используется метод
equals()
для сравнения полученного значения со значениями case
, поэтому во избежание NullPointerException
стоит предусмотреть проверку на null
.• согласно документации, Java 7 для строк в
switch
, компилятор Java формирует более эффективный байткод для строк в конструкции switch
, чем для сцепленных условий if-else
.#вопросы_с_собеседований
Что такое JSON схема?
JSON Schema — один из языков описания структуры JSON-документа, используя синтаксис JSON.
Это самоописательный язык: при его использовании для обработки данных и описания их допустимости могут использоваться одни и те же инструменты сериализации/десериализации.
Что такое JSON схема?
JSON Schema — один из языков описания структуры JSON-документа, используя синтаксис JSON.
Это самоописательный язык: при его использовании для обработки данных и описания их допустимости могут использоваться одни и те же инструменты сериализации/десериализации.
#вопросы_с_собеседований
Что такое MIME тип?
MIME, Multipurpose Internet Mail Extension (Многоцелевые расширения Интернет-почты) — спецификация для передачи по сети файлов различного типа: изображений, музыки, текстов, видео, архивов и др. В HTML указание MIME-типа используется при передаче данных форм и вставки на страницу различных объектов.
Что такое MIME тип?
MIME, Multipurpose Internet Mail Extension (Многоцелевые расширения Интернет-почты) — спецификация для передачи по сети файлов различного типа: изображений, музыки, текстов, видео, архивов и др. В HTML указание MIME-типа используется при передаче данных форм и вставки на страницу различных объектов.
#вопросы_с_собеседований
Чем отличается процесс от потока?
Процесс — экземпляр программы во время выполнения, независимый объект, которому выделены системные ресурсы (например, процессорное время и память). Каждый процесс выполняется в отдельном адресном пространстве: один процесс не может получить доступ к переменным и структурам данных другого. Если процесс хочет получить доступ к чужим ресурсам, необходимо использовать межпроцессное взаимодействие. Это могут быть конвейеры, файлы, каналы связи между компьютерами и многое другое.
Для каждого процесса ОС создает так называемое «виртуальное адресное пространство», к которому процесс имеет прямой доступ. Это пространство принадлежит процессу, содержит только его данные и находится в полном его распоряжении. Операционная система же отвечает за то, как виртуальное пространство процесса проецируется на физическую память.
Поток (thread) — определенный способ выполнения процесса, определяющий последовательность исполнения кода в процессе. Потоки всегда создаются в контексте какого-либо процесса, и вся их жизнь проходит только в его границах. Потоки могут исполнять один и тот же код и манипулировать одними и теми же данными, а также совместно использовать описатели объектов ядра, поскольку таблица описателей создается не в отдельных потоках, а в процессах. Так как потоки расходуют существенно меньше ресурсов, чем процессы, в процессе выполнения работы выгоднее создавать дополнительные потоки и избегать создания новых процессов.
Чем отличается процесс от потока?
Процесс — экземпляр программы во время выполнения, независимый объект, которому выделены системные ресурсы (например, процессорное время и память). Каждый процесс выполняется в отдельном адресном пространстве: один процесс не может получить доступ к переменным и структурам данных другого. Если процесс хочет получить доступ к чужим ресурсам, необходимо использовать межпроцессное взаимодействие. Это могут быть конвейеры, файлы, каналы связи между компьютерами и многое другое.
Для каждого процесса ОС создает так называемое «виртуальное адресное пространство», к которому процесс имеет прямой доступ. Это пространство принадлежит процессу, содержит только его данные и находится в полном его распоряжении. Операционная система же отвечает за то, как виртуальное пространство процесса проецируется на физическую память.
Поток (thread) — определенный способ выполнения процесса, определяющий последовательность исполнения кода в процессе. Потоки всегда создаются в контексте какого-либо процесса, и вся их жизнь проходит только в его границах. Потоки могут исполнять один и тот же код и манипулировать одними и теми же данными, а также совместно использовать описатели объектов ядра, поскольку таблица описателей создается не в отдельных потоках, а в процессах. Так как потоки расходуют существенно меньше ресурсов, чем процессы, в процессе выполнения работы выгоднее создавать дополнительные потоки и избегать создания новых процессов.
Как стать уверенным разработчиком на главном языке «энтерпрайза» Java?
Например, записаться на курс по Java-разработке от Хекслета.
Курс поможет освоить язык, алгоритмы и структуры данных, работу с микросервисами, фреймворком Spring Boot, базами данных и инфраструктурой.
На Хекслете курс спроектирован так, что его невозможно просто «отсидеть» или «прослушать». Именно поэтому студенты могут получить оффер ещё во время обучения, а некоторые работодатели указывают их курсы как преимущество при найме.
✏️Узнайте подробнее о программе: https://bit.ly/3jVZUZD
Например, записаться на курс по Java-разработке от Хекслета.
Курс поможет освоить язык, алгоритмы и структуры данных, работу с микросервисами, фреймворком Spring Boot, базами данных и инфраструктурой.
На Хекслете курс спроектирован так, что его невозможно просто «отсидеть» или «прослушать». Именно поэтому студенты могут получить оффер ещё во время обучения, а некоторые работодатели указывают их курсы как преимущество при найме.
✏️Узнайте подробнее о программе: https://bit.ly/3jVZUZD
#вопросы_с_собеседований
Что такое «авторизация» и «аутентификация»? Чем они отличаются?
Аутентификация - это проверка соответствия субъекта и того, за кого он пытается себя выдать, с помощью некой уникальной информации, в простейшем случае - с помощью имени входа и пароля.
Авторизация - это проверка и определение полномочий на выполнение некоторых действий (например, чтение файла) в соответствии с ранее выполненной аутентификацией.
Очевидно, что это разные понятия, но при этом без первого не может быть второго и наоборот. То есть имея разрешение на работу, вы не сможете оказаться на рабочем месте без предъявления пропуска, равно как и нет смысла в демонстрации пропуска, если вы не планируете работать. Именно тот факт, что одного не бывает без другого, и вызывает у людей заблуждение, что это одно и то же.
Что такое «авторизация» и «аутентификация»? Чем они отличаются?
Аутентификация - это проверка соответствия субъекта и того, за кого он пытается себя выдать, с помощью некой уникальной информации, в простейшем случае - с помощью имени входа и пароля.
Авторизация - это проверка и определение полномочий на выполнение некоторых действий (например, чтение файла) в соответствии с ранее выполненной аутентификацией.
Очевидно, что это разные понятия, но при этом без первого не может быть второго и наоборот. То есть имея разрешение на работу, вы не сможете оказаться на рабочем месте без предъявления пропуска, равно как и нет смысла в демонстрации пропуска, если вы не планируете работать. Именно тот факт, что одного не бывает без другого, и вызывает у людей заблуждение, что это одно и то же.
#вопросы_с_собеседований
Могут ли у разных ссылок на один объект (ref0 == ref1) быть ref0.equals(ref1) == false?
В общем случае - могут, если метод equals() реализован некорректно и не выполняет свойство рефлексивности: для любых ненулевых ссылок x метод x.equals(x) должен возвращать true.
Могут ли у разных ссылок на один объект (ref0 == ref1) быть ref0.equals(ref1) == false?
В общем случае - могут, если метод equals() реализован некорректно и не выполняет свойство рефлексивности: для любых ненулевых ссылок x метод x.equals(x) должен возвращать true.
Правила переопределения метода Object.equals().
1. Использование оператора
2. Использование оператор
3. Приведение аргумента к правильному типу. Поскольку эта операция следует за проверкой
4. Обход всех значимых полей класса и проверка того, что значение поля в текущем объекте и значение того же поля в проверяемом на эквивалентность аргументе соответствуют друг другу. Если проверки для всех полей прошли успешно, возвращается результат
По окончанию переопределения метода
1. Использование оператора
==
для проверки, является ли аргумент ссылкой на указанный объект. Если является, возвращается true
. Если сравниваемый объект == null
, должно вернуться false
.2. Использование оператор
instanceof
и вызова метода getClass()
для проверки, имеет ли аргумент правильный тип. Если не имеет, возвращается false
.3. Приведение аргумента к правильному типу. Поскольку эта операция следует за проверкой
instanceof
она гарантированно будет выполнена.4. Обход всех значимых полей класса и проверка того, что значение поля в текущем объекте и значение того же поля в проверяемом на эквивалентность аргументе соответствуют друг другу. Если проверки для всех полей прошли успешно, возвращается результат
true
, в противном случае - false
.По окончанию переопределения метода
equals()
следует проверить: является ли порождаемое отношение эквивалентности рефлексивным, симметричным, транзитивным и непротиворечивым? Если ответ отрицательный, метод подлежит соответствующей правке.#вопросы_с_собеседований
Каким образом реализованы методы hashCode() и equals() в классе Object?
Реализация метода
Каким образом реализованы методы hashCode() и equals() в классе Object?
Реализация метода
Object.equals()
сводится к проверке на равенство двух ссылок:public boolean equals(Object obj) {Реализация метода
return (this == obj);
}
Object.hashCode()
описана как native
, т.е. определенной не с помощью Java кода и обычно возвращает адрес объекта в памяти:public native int hashCode();
#вопросы_с_собеседований
Как найти максимальное число в наборе?
Как найти максимальное число в наборе?
Stream
.of(5, 3, 4, 55, 2)
.mapToInt(a -> a)
.max()
.getAsInt(); //55
#вопросы_с_собеседований
Для чего нужен метод hashCode()?
Метод
• если хэш коды разные, то и объекты гарантированно разные;
• если хэш коды равны, то объекты могут не обязательно равны.
Для чего нужен метод hashCode()?
Метод
hashCode()
необходим для вычисления хэш кода переданного в качестве входного параметра объекта. В Java это целое число, в более широком смысле - битовая строка фиксированной длины, полученная из массива произвольной длины. Этот метод реализован таким образом, что для одного и того же входного объекта, хэш код всегда будет одинаковым. Следует понимать, что в Java множество возможных хэш кодов ограничено типом int
, а множество объектов ничем не ограничено. Из-за этого, вполне возможна ситуация, что хэш коды разных объектов могут совпасть:• если хэш коды разные, то и объекты гарантированно разные;
• если хэш коды равны, то объекты могут не обязательно равны.
Системные знания и практику по Java не заменить информацией из интернета, а хорошие курсы стоят дорого, но!
В Kata Academy можно выучиться на Java-разработчика бесплатно, а заплатить уже после трудоустройства по специальности из фактической зарплаты.
Если задуматься, то все в выигрыше 👉
—Ты получаешь работу с хорошей зарплатой, мы получаем процент за инвестиции в тебя и продолжаем прокачивать твои навыки еще 2 года;
— в наших интересах научить тебя так, чтобы твоя зарплата была как можно выше;
— мы развиваем твои навыки и после курсов: проводим выездные мероприятия и мастер-классы — и доходы наших выпускников растут;
— мы не зависим от банков и их рассрочек — кризис не повлиял на доступность курсов.
Чтобы попасть на курс, нужно выполнить небольшое тестовое задание. Переходи по ссылке и оставляй заявку!
В Kata Academy можно выучиться на Java-разработчика бесплатно, а заплатить уже после трудоустройства по специальности из фактической зарплаты.
Если задуматься, то все в выигрыше 👉
—Ты получаешь работу с хорошей зарплатой, мы получаем процент за инвестиции в тебя и продолжаем прокачивать твои навыки еще 2 года;
— в наших интересах научить тебя так, чтобы твоя зарплата была как можно выше;
— мы развиваем твои навыки и после курсов: проводим выездные мероприятия и мастер-классы — и доходы наших выпускников растут;
— мы не зависим от банков и их рассрочек — кризис не повлиял на доступность курсов.
Чтобы попасть на курс, нужно выполнить небольшое тестовое задание. Переходи по ссылке и оставляй заявку!
#вопросы_с_собеседований
Что такое «коллекция»?
«Коллекция» - это структура данных, набор каких-либо объектов. Данными (объектами в наборе) могут быть числа, строки, объекты пользовательских классов и т.п.
Что такое «коллекция»?
«Коллекция» - это структура данных, набор каких-либо объектов. Данными (объектами в наборе) могут быть числа, строки, объекты пользовательских классов и т.п.
Forwarded from Java jobs — вакансии для java-разработчиков
👔 Специалист Java, MySQL, JPQL
⛳️ Keepcode
💼🥁 Офис / удаленка
💵 120 000 - 300 000 рублей
Подробнее: https://proglib.io/vacancies/specialist-java-mysql-jpql-keepcode-2022-04-28
⛳️ Keepcode
💼🥁 Офис / удаленка
💵 120 000 - 300 000 рублей
Подробнее: https://proglib.io/vacancies/specialist-java-mysql-jpql-keepcode-2022-04-28
#вопросы_с_собеседований
Почему Map — это не Collection, в то время как List и Set являются Collection?
Collection представляет собой совокупность некоторых элементов. Map - это совокупность пар «ключ-значение».
Почему Map — это не Collection, в то время как List и Set являются Collection?
Collection представляет собой совокупность некоторых элементов. Map - это совокупность пар «ключ-значение».
🔥 Как Junior Java Dev вырасти до Middle ?
Отправь свое резюме, наш эксперт бесплатно разберёт его и расскажет, каких знаний и навыков не хватает для перехода на Middle позицию.
💻 А еще у нас есть курс «Middle Java Dev», который уже больше года помогает Junior специалистам успешно строить карьеру.
Как все проходит?
На протяжении двух с половиной месяцев тебя будут обучать Senior’ы и Teamlead’ы ведущих банков страны. Лучших студентов возьмем в команду.
Чему будут учить?
На курсе будем изучать базы данных, Spring, Kafka, Kubernetes и Istio. Помимо этого еще будут практические занятия, домашние задания, Live Coding и консультации с ментором.
👉🏼 Заявка на бесплатный разбор резюме: https://cutt.ly/9GbNfCU
Отправь свое резюме, наш эксперт бесплатно разберёт его и расскажет, каких знаний и навыков не хватает для перехода на Middle позицию.
💻 А еще у нас есть курс «Middle Java Dev», который уже больше года помогает Junior специалистам успешно строить карьеру.
Как все проходит?
На протяжении двух с половиной месяцев тебя будут обучать Senior’ы и Teamlead’ы ведущих банков страны. Лучших студентов возьмем в команду.
Чему будут учить?
На курсе будем изучать базы данных, Spring, Kafka, Kubernetes и Istio. Помимо этого еще будут практические занятия, домашние задания, Live Coding и консультации с ментором.
👉🏼 Заявка на бесплатный разбор резюме: https://cutt.ly/9GbNfCU
#вопросы_с_собеседований
В чем разница между классами java.util.Collection и java.util.Collections?
В чем разница между классами java.util.Collection и java.util.Collections?
java.util.Collections
- набор статических методов для работы с коллекциями.java.util.Collection
- один из основных интерфейсов Java Collections Framework
.#вопросы_с_собеседований
Что такое «fail-fast поведение»?
В Java Collections API некоторые итераторы ведут себя как fail-fast и выбрасывают
Реализация такого поведения осуществляется за счет подсчета количества модификаций коллекции (
• при изменении коллекции счетчик модификаций так же изменяется;
• при создании итератора ему передается текущее значение счетчика;
• при каждом обращении к итератору сохраненное значение счетчика сравнивается с текущим, и, если они не совпадают, возникает исключение.
Что такое «fail-fast поведение»?
fail-fast
поведение означает, что при возникновении ошибки или состояния, которое может привести к ошибке, система немедленно прекращает дальнейшую работу и уведомляет об этом. Использование fail-fast
подхода позволяет избежать недетерминированного поведения программы в течение времени.В Java Collections API некоторые итераторы ведут себя как fail-fast и выбрасывают
ConcurrentModificationException
, если после его создания была произведена модификация коллекции, т.е. добавлен или удален элемент напрямую из коллекции, а не используя методы итератора.Реализация такого поведения осуществляется за счет подсчета количества модификаций коллекции (
modification count
):• при изменении коллекции счетчик модификаций так же изменяется;
• при создании итератора ему передается текущее значение счетчика;
• при каждом обращении к итератору сохраненное значение счетчика сравнивается с текущим, и, если они не совпадают, возникает исключение.
#вопросы_с_собеседований
Приведите примеры итераторов, реализующих поведение fail-safe
Итератор коллекции
Приведите примеры итераторов, реализующих поведение fail-safe
Итератор коллекции
CopyOnWriteArrayList
и итератор представления keySet
коллекции ConcurrentHashMap
являются примерами итераторов fail-safe
.#вопросы_с_собеседований
Что такое протокол передачи данных? Какие протоколы вы знаете?
Протокол передачи данных — набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами. Эти соглашения задают единообразный способ передачи сообщений и обработки ошибок при взаимодействии программного обеспечения разнесённой в пространстве аппаратуры, соединённой тем или иным интерфейсом.
Наиболее известные протоколы передачи данных:
HTTP (Hyper Text Transfer Protocol)
FTP (File Transfer Protocol)
POP3 (Post Office Protocol)
SMTP (Simple Mail Transfer Protocol)
TELNET (TErminaL NETwork)
Что такое протокол передачи данных? Какие протоколы вы знаете?
Протокол передачи данных — набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами. Эти соглашения задают единообразный способ передачи сообщений и обработки ошибок при взаимодействии программного обеспечения разнесённой в пространстве аппаратуры, соединённой тем или иным интерфейсом.
Наиболее известные протоколы передачи данных:
HTTP (Hyper Text Transfer Protocol)
FTP (File Transfer Protocol)
POP3 (Post Office Protocol)
SMTP (Simple Mail Transfer Protocol)
TELNET (TErminaL NETwork)