#вопросы_с_собеседований
Какие существуют способы перебирать элементы списка?
Какие существуют способы перебирать элементы списка?
☕️ Цикл for
for (int i = 0; i < list.size(); i++) {
//list.get(i);
}
☕️ Цикл с итератором
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
//iterator .next();
}
☕️ Цикл while
int i = 0;
while (i < list.size()) {
//list.get(i);
i++;
}
☕️ «for-each»
for (String element : list) {
//element;
}
for (int i = 0; i < list.size(); i++) {
//list.get(i);
}
☕️ Цикл с итератором
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
//iterator .next();
}
☕️ Цикл while
int i = 0;
while (i < list.size()) {
//list.get(i);
i++;
}
☕️ «for-each»
for (String element : list) {
//element;
}
Forwarded from Kaspersky
Друзья, нас почти 3 500!
Мы рады, что с нами именно вы — те, кто первыми хотят быть в курсе свежих новостей и событий из мира IT!
Мы решили разыграть наш фирменный мерч ЗА ПОДПИСКУ💥
Правила просты:
- подпишитесь на канал;
- нажмите на кнопку «Участвовать!» под этим постом.
Полные правила тут.
Итоги подведем 13 октября — победители будут выбраны ботом случайным образом.
Удачи!
Мы рады, что с нами именно вы — те, кто первыми хотят быть в курсе свежих новостей и событий из мира IT!
Мы решили разыграть наш фирменный мерч ЗА ПОДПИСКУ💥
Правила просты:
- подпишитесь на канал;
- нажмите на кнопку «Участвовать!» под этим постом.
Полные правила тут.
Итоги подведем 13 октября — победители будут выбраны ботом случайным образом.
Удачи!
#вопросы_с_собеседований
Что вы знаете о RandomAccessFile?
Что вы знаете о RandomAccessFile?
Класс java.io.RandomAccessFile обеспечивает чтение и запись данных в произвольном месте файла. Он не является частью иерархии InputStream или OutputStream. Это полностью отдельный класс, имеющий свои собственные (в большинстве своем native) методы. Объяснением этого может быть то, что RandomAccessFile имеет во многом отличающееся поведение по сравнению с остальными классами ввода/вывода так как позволяет, в пределах файла, перемещаться вперед и назад.
RandomAccessFile имеет такие специфические методы, как:
☕️ getFilePointer() для определения текущего местоположения в файле;
☕️ seek() для перемещения на новую позицию в файле;
☕️ length() для выяснения размера файла;
☕️ setLength() для установки размера файла;
☕️ skipBytes() для того, чтобы попытаться пропустить определённое число байт;
☕️ getChannel() для работы с уникальным файловым каналом, ассоциированным с заданным файлом;
☕️ методы для выполнения обычного и форматированного вывода из файла (read(), readInt(), readLine(), readUTF() и т.п.);
☕️ методы для обычной или форматированной записи в файл с прямым доступом (write(), writeBoolean(), writeByte() и т.п.).
Так же следует отметить, что конструкторы RandomAccessFile требуют второй аргумент, указывающий необходимый режим доступа к файлу - только чтение ("r"), чтение и запись ("rw") или иную их разновидность.
RandomAccessFile имеет такие специфические методы, как:
☕️ getFilePointer() для определения текущего местоположения в файле;
☕️ seek() для перемещения на новую позицию в файле;
☕️ length() для выяснения размера файла;
☕️ setLength() для установки размера файла;
☕️ skipBytes() для того, чтобы попытаться пропустить определённое число байт;
☕️ getChannel() для работы с уникальным файловым каналом, ассоциированным с заданным файлом;
☕️ методы для выполнения обычного и форматированного вывода из файла (read(), readInt(), readLine(), readUTF() и т.п.);
☕️ методы для обычной или форматированной записи в файл с прямым доступом (write(), writeBoolean(), writeByte() и т.п.).
Так же следует отметить, что конструкторы RandomAccessFile требуют второй аргумент, указывающий необходимый режим доступа к файлу - только чтение ("r"), чтение и запись ("rw") или иную их разновидность.
#вопросы_с_собеседований
Почему в некоторых интерфейсах вообще не определяют методов?
Почему в некоторых интерфейсах вообще не определяют методов?
Это так называемые маркерные интерфейсы. Они просто указывают что класс относится к определенному типу. Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.
☕️ Как в Java создавать собственные установочные пакеты JDK
Демонстрируем одну из новых возможностей Java 14 – создание нативных установочных версий JDK.
https://proglib.io/sh/v5MIDuL9Wh
Демонстрируем одну из новых возможностей Java 14 – создание нативных установочных версий JDK.
https://proglib.io/sh/v5MIDuL9Wh
Прояви себя в цифре! Участвуй в региональных Онлайн-Хакатонах Цифрового Прорыва!
Тебя ждет насыщенная серия конкурсов с актуальным кейсами от бизнеса и государства, а призовой фонд каждого хакатона до 3 млн. руб.!
Выбирай удобные даты, понравившийся кейс, собирай команду и покажи, на что ты способен:
16.10 - 18.10 - Центральный Хаб: https://leadersofdigital.ru/event/63007
24.10 - 26.10 - Северо-Кавказский Хаб: https://leadersofdigital.ru/event/63006
31.10 - 02.11 - Уральский Хаб: https://leadersofdigital.ru/event/63009
14.11 - 16.11 - Северо-Западный Хаб: https://leadersofdigital.ru/event/63011
Стань частью цифрового будущего России!
Тебя ждет насыщенная серия конкурсов с актуальным кейсами от бизнеса и государства, а призовой фонд каждого хакатона до 3 млн. руб.!
Выбирай удобные даты, понравившийся кейс, собирай команду и покажи, на что ты способен:
16.10 - 18.10 - Центральный Хаб: https://leadersofdigital.ru/event/63007
24.10 - 26.10 - Северо-Кавказский Хаб: https://leadersofdigital.ru/event/63006
31.10 - 02.11 - Уральский Хаб: https://leadersofdigital.ru/event/63009
14.11 - 16.11 - Северо-Западный Хаб: https://leadersofdigital.ru/event/63011
Стань частью цифрового будущего России!
Практический онлайн-курс «Enterprise-технологии в Java-разработке» — это курс, где ты научишься создавать корпоративные приложения и встраивать их в инфраструктуру бизнеса.
За шесть месяцев обучения ты сможешь сделаешь шаг от junior-разработчика к middle+ и в разы повысить свое конкурентное преимущество на рынке труда.
Здесь ты узнаешь:
- как работать с легаси-проектами и докручивать их, а не переписывать;
- как получать, хранить, обрабатывать данные через микросервисы;
- как подключать новые сервисы, не ломая работу старых;
- как работать с экосистемой микросервисов;
- как делать приложения отказоустойчивыми.
А главное, уже после вводных модулей ты включишься в командную разработку и сразу начнёшь применять полученные знания на практике.
Тебя ждут 22 тематических модуля и 170+ онлайн уроков, которые будут вести эксперты из SimbioWay и Сбербанка.
Результатом твоего обучения станет создание эмулятора работы инфраструктуры Netflix. Ты продумаешь архитектуру и разработаешь аналог популярного стримингового сервиса.
Переходи по ссылке https://clc.am/X_5-Tg записывайся на курс, пока действует скидка!
За шесть месяцев обучения ты сможешь сделаешь шаг от junior-разработчика к middle+ и в разы повысить свое конкурентное преимущество на рынке труда.
Здесь ты узнаешь:
- как работать с легаси-проектами и докручивать их, а не переписывать;
- как получать, хранить, обрабатывать данные через микросервисы;
- как подключать новые сервисы, не ломая работу старых;
- как работать с экосистемой микросервисов;
- как делать приложения отказоустойчивыми.
А главное, уже после вводных модулей ты включишься в командную разработку и сразу начнёшь применять полученные знания на практике.
Тебя ждут 22 тематических модуля и 170+ онлайн уроков, которые будут вести эксперты из SimbioWay и Сбербанка.
Результатом твоего обучения станет создание эмулятора работы инфраструктуры Netflix. Ты продумаешь архитектуру и разработаешь аналог популярного стримингового сервиса.
Переходи по ссылке https://clc.am/X_5-Tg записывайся на курс, пока действует скидка!
Распространённые способы решения race condition:
☕️ Использование локальной копии — копирование разделяемой переменной в локальную переменную потока. Этот способ работает только тогда, когда переменная одна и копирование производится атомарно (за одну машинную команду), использование volatile.
☕️ Синхронизация - операции над разделяемым ресурсом происходят в синхронизированном блоке (при использовании ключевого слова synchronized).
☕️ Комбинирование методов - вышеперечисленные способы можно комбинировать, копируя «опасные» переменные в синхронизированном блоке. С одной стороны, это снимает ограничение на атомарность, с другой — позволяет избавиться от слишком больших синхронизированных блоков.
Очевидных способов выявления и исправления состояний гонки не существует. Лучший способ избавиться от гонок — правильное проектирование многозадачной системы.
☕️ Использование локальной копии — копирование разделяемой переменной в локальную переменную потока. Этот способ работает только тогда, когда переменная одна и копирование производится атомарно (за одну машинную команду), использование volatile.
☕️ Синхронизация - операции над разделяемым ресурсом происходят в синхронизированном блоке (при использовании ключевого слова synchronized).
☕️ Комбинирование методов - вышеперечисленные способы можно комбинировать, копируя «опасные» переменные в синхронизированном блоке. С одной стороны, это снимает ограничение на атомарность, с другой — позволяет избавиться от слишком больших синхронизированных блоков.
Очевидных способов выявления и исправления состояний гонки не существует. Лучший способ избавиться от гонок — правильное проектирование многозадачной системы.
#вопросы_с_собеседований
В equals() требуется проверять, что аргумент equals(Object that) такого же типа, что и сам объект. В чем разница между this.getClass() == that.getClass() и that instanceof MyClass?
В equals() требуется проверять, что аргумент equals(Object that) такого же типа, что и сам объект. В чем разница между this.getClass() == that.getClass() и that instanceof MyClass?
Оператор instanceof сравнивает объект и указанный тип. Его можно использовать для проверки является ли данный объект экземпляром некоторого класса, либо экземпляром его дочернего класса, либо экземпляром класса, который реализует указанный интерфейс.
this.getClass() == that.getClass() проверяет два класса на идентичность, поэтому для корректной реализации контракта метода equals() необходимо использовать точное сравнение с помощью метода getClass().
this.getClass() == that.getClass() проверяет два класса на идентичность, поэтому для корректной реализации контракта метода equals() необходимо использовать точное сравнение с помощью метода getClass().
🤔 Ищешь первую работу или стажировку? В этом тебе поможет бот Энди! У него всегда есть инфа об адекватных вакансиях и стажировках, где тебя не будут эксплуатировать за печеньки.
Сейчас Энди проводит онлайн-ярмарку вакансий trANDY career 2.0, которая будет длиться до 18 октября! Эта неделя посвящена IT-индустрии и соответствующим вакансиям 🔥
Тебя ждут встречи с представителями IT-отделов крупных компаний, новые конкурсы, топовые IT-вакансии и многое другое. Так что следи за новостями чтобы не пропустить анонсы и мероприятия! 🤩
И да, все вакансии уже есть в чат-боте! Переходи по ссылке, заходи в диалог с сообществом, жми на кнопку Участвовать в trANDY career и выбирай, куда отправить свое резюме (можно сразу на все!) 😉
👉🏻 https://vk.com/andy_for_you
Сейчас Энди проводит онлайн-ярмарку вакансий trANDY career 2.0, которая будет длиться до 18 октября! Эта неделя посвящена IT-индустрии и соответствующим вакансиям 🔥
Тебя ждут встречи с представителями IT-отделов крупных компаний, новые конкурсы, топовые IT-вакансии и многое другое. Так что следи за новостями чтобы не пропустить анонсы и мероприятия! 🤩
И да, все вакансии уже есть в чат-боте! Переходи по ссылке, заходи в диалог с сообществом, жми на кнопку Участвовать в trANDY career и выбирай, куда отправить свое резюме (можно сразу на все!) 😉
👉🏻 https://vk.com/andy_for_you
#вопросы_с_собеседований
Что такое finalize()? Зачем он нужен?
Что такое finalize()? Зачем он нужен?
Через вызов метода finalize() (который наследуется от Java.lang.Object) JVM реализуется функциональность, аналогичная функциональности деструкторов в С++, используемых для очистки памяти перед возвращением управления операционной системе. Данный метод вызывается при уничтожении объекта сборщиком мусора (garbage collector) и, переопределяя finalize(), можно запрограммировать действия, необходимые для корректного удаления экземпляра класса - например, закрытие сетевых соединений, соединений с базой данных, снятие блокировок на файлы и т.д.
После выполнения этого метода объект должен быть повторно собран сборщиком мусора (и это считается серьезной проблемой метода finalize() т.к. он мешает сборщику мусора освобождать память). Вызов этого метода не гарантируется, т.к. приложение может быть завершено до того, как будет запущена сборка мусора.
Объект не обязательно будет доступен для сборки сразу же - метод finalize() может сохранить куда-нибудь ссылку на объект. Подобная ситуация называется «возрождением» объекта и считается антипаттерном. Главная проблема такого трюка - в том, что «возродить» объект можно только один раз.
После выполнения этого метода объект должен быть повторно собран сборщиком мусора (и это считается серьезной проблемой метода finalize() т.к. он мешает сборщику мусора освобождать память). Вызов этого метода не гарантируется, т.к. приложение может быть завершено до того, как будет запущена сборка мусора.
Объект не обязательно будет доступен для сборки сразу же - метод finalize() может сохранить куда-нибудь ссылку на объект. Подобная ситуация называется «возрождением» объекта и считается антипаттерном. Главная проблема такого трюка - в том, что «возродить» объект можно только один раз.
Стать ближе к сфере кибербезопасности и получить первые знания и навыки вы сможете уже 20 октября на интенсиве «Старт в кибербезопасности: Level 0».
За 4 дня практических занятий с экспертом вы научитесь:
— Устанавливать и настраивать Linux-системы на виртуальные машины
— Устанавливать и настраивать сеть на Linux-системах
— Детально понимать взаимодействие между виртуальной и физической машиной
— Осуществлять ряд сетевых и связанных с уязвимостью ОС атак, и разрабатывать защиту от них
— Анализировать безопасность ОС
Что это вам даст?
— Получите необходимые знания о профессии, чтобы оценить свои силы и перспективы
— Детально разберетесь с чего начинается эффективная система информационной безопасности.
— Поймете принципы осуществления кибератак и получите реальный опыт
— Подготовитесь к поступлению на профессиональную программу «Специалист по информационной безопасности»
Эксперт интенсива — Ильдар Садыков, действующий руководитель отдела ИБ Федерального бюро МСЭ Министерство труда и социальной защиты РФ. Управляет 2 000 системами в 85 регионах РФ.
Примите участие в интенсиве и обеспечьте себе уверенный старт на пути к востребованной профессии!
Записаться на интенсив: https://is.gd/wYORYn
За 4 дня практических занятий с экспертом вы научитесь:
— Устанавливать и настраивать Linux-системы на виртуальные машины
— Устанавливать и настраивать сеть на Linux-системах
— Детально понимать взаимодействие между виртуальной и физической машиной
— Осуществлять ряд сетевых и связанных с уязвимостью ОС атак, и разрабатывать защиту от них
— Анализировать безопасность ОС
Что это вам даст?
— Получите необходимые знания о профессии, чтобы оценить свои силы и перспективы
— Детально разберетесь с чего начинается эффективная система информационной безопасности.
— Поймете принципы осуществления кибератак и получите реальный опыт
— Подготовитесь к поступлению на профессиональную программу «Специалист по информационной безопасности»
Эксперт интенсива — Ильдар Садыков, действующий руководитель отдела ИБ Федерального бюро МСЭ Министерство труда и социальной защиты РФ. Управляет 2 000 системами в 85 регионах РФ.
Примите участие в интенсиве и обеспечьте себе уверенный старт на пути к востребованной профессии!
Записаться на интенсив: https://is.gd/wYORYn
#вопросы_с_собеседований
Какой класс предназначен для работы с элементами файловой системы?
Какой класс предназначен для работы с элементами файловой системы?
File работает непосредственно с файлами и каталогами. Данный класс позволяет создавать новые элементы и получать информацию существующих: размер, права доступа, время и дату создания, путь к родительскому каталогу.