☕️ Интерфейс Runnable появился в Java 1.0, а интерфейс Callable был введен в Java 5.0 в составе библиотеки java.util.concurrent;
☕️ Классы, реализующие интерфейс Runnable для выполнения задачи, должны реализовывать метод run(). Классы, реализующие интерфейс Callable - метод call();
☕️ Метод Runnable.run() не возвращает никакого значения, Callable.call() возвращает объект Future, который может содержать результат вычислений;
☕️ Метод run() не может выбрасывать проверяемые исключения, в то время как метод call() может.
☕️ Классы, реализующие интерфейс Runnable для выполнения задачи, должны реализовывать метод run(). Классы, реализующие интерфейс Callable - метод call();
☕️ Метод Runnable.run() не возвращает никакого значения, Callable.call() возвращает объект Future, который может содержать результат вычислений;
☕️ Метод run() не может выбрасывать проверяемые исключения, в то время как метод call() может.
#вопросы_с_собеседований
Что такое cookies?
Что такое cookies?
Сookies («куки») — небольшой фрагмент данных, отправленный web-сервером и хранимый на устройстве пользователя. Всякий раз при попытке открыть страницу сайта, web-клиент пересылает соответствующие этому сайту cookies web-серверу в составе HTTP-запроса. Применяется для сохранения данных на стороне пользователя и на практике обычно используется для:
☕️ аутентификации пользователя;
☕️ хранения персональных предпочтений и настроек пользователя;
☕️ отслеживания состояния сеанса доступа пользователя;
☕️ ведения разнообразной статистики.
☕️ аутентификации пользователя;
☕️ хранения персональных предпочтений и настроек пользователя;
☕️ отслеживания состояния сеанса доступа пользователя;
☕️ ведения разнообразной статистики.
#вопросы_с_собеседований
В чем заключаются различия между cтеком (stack) и кучей (heap) с точки зрения многопоточности?
В чем заключаются различия между cтеком (stack) и кучей (heap) с точки зрения многопоточности?
Участвуй в конкурсе Secur'IT Cup от Лаборатории Касперского!
Придумай игру о кибербезопасности и получии приз в $10 000 или поездку на конференцию!
Регистрируйся в конкурсе прямо сейчас!
Придумай игру о кибербезопасности и получии приз в $10 000 или поездку на конференцию!
Регистрируйся в конкурсе прямо сейчас!
Cтек – участок памяти, тесно связанный с потоками. У каждого потока есть свой стек, которые хранит локальные переменные, параметры методов и стек вызовов. Переменная, хранящаяся в стеке одного потока, не видна для другого.
Куча – общий участок памяти, который делится между всеми потоками. Объекты, неважно локальные или любого другого уровня, создаются в куче. Для улучшения производительности, поток обычно кэширует значения из кучи в свой стек, в этом случае для того, чтобы указать потоку, что переменную следует читать из кучи, используется ключевое слово volatile.
Куча – общий участок памяти, который делится между всеми потоками. Объекты, неважно локальные или любого другого уровня, создаются в куче. Для улучшения производительности, поток обычно кэширует значения из кучи в свой стек, в этом случае для того, чтобы указать потоку, что переменную следует читать из кучи, используется ключевое слово volatile.
#вопросы_с_собеседований
Какая роль поля serialVersionUID в сериализации?
Какая роль поля serialVersionUID в сериализации?
Android Studio 4.0 Development Essentials - Java Edition (2020)
Автор: Neil Smyth
Количество страниц: 796
В 2018 году Google представила сообществу разработчиков Android Jetpack, разработанный для ускорения и упрощения разработки современных и надежных приложений для Android. Он представляет собой набор инструментов, библиотек и рекомендаций по архитектуре. Основные элементы Jetpack рассматриваются в этом последнем издании Android Studio Development Essentials. Книга полностью обновлена для Android Studio 4.0 и Android 10 (Q), её цель - научить навыкам, необходимым для разработки приложений на базе Android с использованием языка программирования Java.
Скачать книгу
Автор: Neil Smyth
Количество страниц: 796
В 2018 году Google представила сообществу разработчиков Android Jetpack, разработанный для ускорения и упрощения разработки современных и надежных приложений для Android. Он представляет собой набор инструментов, библиотек и рекомендаций по архитектуре. Основные элементы Jetpack рассматриваются в этом последнем издании Android Studio Development Essentials. Книга полностью обновлена для Android Studio 4.0 и Android 10 (Q), её цель - научить навыкам, необходимым для разработки приложений на базе Android с использованием языка программирования Java.
Скачать книгу
Telegram
Книги для программистов (reserved)
Android Studio 4.0 Development Essentials - Java Edition (2020)
Автор: Neil Smyth
Автор: Neil Smyth
Курс математики для анализа данных от Proglib и МГУ
Мы предлагаем без отрыва от работы освоить математику для анализа данных.
✅ онлайн-встречи с преподавателями из МГУ в Zoom
✅ подойдет всем, кто хочет вспомнить высшую математику или подготовиться к школе анализа данных Яндекса
🕗 длительность 5 месяцев, по 2 раза в неделю
💸 от 5 350 руб. в месяц.
Мы дарим промокод на скидку 10% до 6 октября — JAVAPROGLIB
Подробнее о курсе — тут
Программа курса — тут
Мы предлагаем без отрыва от работы освоить математику для анализа данных.
✅ онлайн-встречи с преподавателями из МГУ в Zoom
✅ подойдет всем, кто хочет вспомнить высшую математику или подготовиться к школе анализа данных Яндекса
🕗 длительность 5 месяцев, по 2 раза в неделю
💸 от 5 350 руб. в месяц.
Мы дарим промокод на скидку 10% до 6 октября — JAVAPROGLIB
Подробнее о курсе — тут
Программа курса — тут
serialVersionUID используется для указания версии сериализованных данных.
Когда мы не объявляем serialVersionUID в нашем классе явно, среда выполнения Java делает это за нас, но этот процесс чувствителен ко многим метаданным класса включая количество полей, тип полей, модификаторы доступа полей, интерфейсов, которые реализованы в классе и пр.
Рекомендуется явно объявлять serialVersionUID т.к. при добавлении, удалении атрибутов класса динамически сгенерированное значение может измениться и в момент выполнения будет выброшено исключение InvalidClassException.
private static final long serialVersionUID = 20161013L;
Когда мы не объявляем serialVersionUID в нашем классе явно, среда выполнения Java делает это за нас, но этот процесс чувствителен ко многим метаданным класса включая количество полей, тип полей, модификаторы доступа полей, интерфейсов, которые реализованы в классе и пр.
Рекомендуется явно объявлять serialVersionUID т.к. при добавлении, удалении атрибутов класса динамически сгенерированное значение может измениться и в момент выполнения будет выброшено исключение InvalidClassException.
private static final long serialVersionUID = 20161013L;
Functional Programming in Java (2017)
Автор: Pierre-Yves Saumont
Количество страниц: 472
Книга учит разработчиков Java, как включить самые мощные преимущества функционального программирования в новый и имеющийся код на Java. Вы научитесь функционально думать о задачах программирование на Java и использовать функциональный подход, чтобы упростить понимание, оптимизацию, поддержку и масштабирование ваших приложений.
Скачать книгу
Автор: Pierre-Yves Saumont
Количество страниц: 472
Книга учит разработчиков Java, как включить самые мощные преимущества функционального программирования в новый и имеющийся код на Java. Вы научитесь функционально думать о задачах программирование на Java и использовать функциональный подход, чтобы упростить понимание, оптимизацию, поддержку и масштабирование ваших приложений.
Скачать книгу
Telegram
Книги для программистов (reserved)
Functional Programming in Java (2017)
Автор: Pierre-Yves Saumont
Автор: Pierre-Yves Saumont
Библиотека джависта | Java, Spring, Maven, Hibernate pinned «Курс математики для анализа данных от Proglib и МГУ Мы предлагаем без отрыва от работы освоить математику для анализа данных. ✅ онлайн-встречи с преподавателями из МГУ в Zoom ✅ подойдет всем, кто хочет вспомнить высшую математику или подготовиться к школе…»
Secure By Design (2019)
Авторы: Daniel Deogun, Dan Bergh Johnsson, Daniel Sawano
Количество страниц: 410
Разработчикам нужно создавать программное обеспечение безопасным. Но нельзя тратить все свое время на безопасность. Ответ - использовать хорошие принципы проектирования, инструменты и образ мышления, которые по умолчанию предоставляют безопасность. Secure by Design учит разработчиков использовать дизайн для обеспечения безопасности при разработке программного обеспечения. Эта книга полна шаблонов и передовых практик, которые вы можете напрямую применить в разработке.
Скачать книгу
Авторы: Daniel Deogun, Dan Bergh Johnsson, Daniel Sawano
Количество страниц: 410
Разработчикам нужно создавать программное обеспечение безопасным. Но нельзя тратить все свое время на безопасность. Ответ - использовать хорошие принципы проектирования, инструменты и образ мышления, которые по умолчанию предоставляют безопасность. Secure by Design учит разработчиков использовать дизайн для обеспечения безопасности при разработке программного обеспечения. Эта книга полна шаблонов и передовых практик, которые вы можете напрямую применить в разработке.
Скачать книгу
Telegram
Progbook.djvu | Книги для программистов
Secure By Design (2019)
Авторы: Daniel Deogun, Dan Bergh Johnsson, Daniel Sawano
Авторы: Daniel Deogun, Dan Bergh Johnsson, Daniel Sawano
#вопросы_с_собеседований
Зачем добавили ArrayList, если уже был Vector?
Зачем добавили ArrayList, если уже был Vector?
☕️ Методы класса Vector синхронизированы, а ArrayList - нет;
☕️ По умолчанию Vector удваивает свой размер, когда заканчивается выделенная под элементы память. ArrayList же увеличивает свой размер только на половину.
Vector это устаревший класс и его использование не рекомендовано.
☕️ По умолчанию Vector удваивает свой размер, когда заканчивается выделенная под элементы память. ArrayList же увеличивает свой размер только на половину.
Vector это устаревший класс и его использование не рекомендовано.
Погрузись в мир Java-разработки и напиши свою первую программу на одном из самых востребованных языков программирования за три дня. Занятия бесплатные, а опыт, который ты получишь, поможет тебе понять, в каком направлении двигаться дальше!
Регистрация займёт меньше минуты: 👉 https://clc.am/v6m4ZA
Три дня тебя будет обучать профи в своем деле, который уже более 15 лет работает в сфере Java и веб-разработки, является директором центра SymbioWay и находит IT-специалистов для крупнейших компаний России — Даниил Пилипенко.
🔥 Получишь базовые навыки программирования на Java, научишься писать на нём и узнаешь основные функции.
🔥 Попрактикуешься в разработке и создашь свой первый проект — программу для мониторинга рабочего стола.
🔥 Узнаешь о базовых инструментах, которые программист применяет в своей работе.
🔥 Сможешь общаться с преподавателем интенсива и с другими участниками в закрытом чате в Telegram.
⭐️ Если попадёшь в тройку лучших участников — получишь сертификат на 30 000 рублей для обучения в Skillbox!
Регистрация займёт меньше минуты: 👉 https://clc.am/v6m4ZA
Три дня тебя будет обучать профи в своем деле, который уже более 15 лет работает в сфере Java и веб-разработки, является директором центра SymbioWay и находит IT-специалистов для крупнейших компаний России — Даниил Пилипенко.
🔥 Получишь базовые навыки программирования на Java, научишься писать на нём и узнаешь основные функции.
🔥 Попрактикуешься в разработке и создашь свой первый проект — программу для мониторинга рабочего стола.
🔥 Узнаешь о базовых инструментах, которые программист применяет в своей работе.
🔥 Сможешь общаться с преподавателем интенсива и с другими участниками в закрытом чате в Telegram.
⭐️ Если попадёшь в тройку лучших участников — получишь сертификат на 30 000 рублей для обучения в Skillbox!
#вопросы_с_собеседований
Что такое busy spin?
Что такое busy spin?
busy spin – это техника, которую программисты используют, чтобы заставить поток ожидать при определённом условии. В отличие от традиционных методов wait(), sleep() или yield(), которые подразумевают уступку процессорного времени, этот метод вместо уступки выполняет пустой цикл. Это необходимо для того, чтобы сохранить кэш процессора, т.к. в многоядерных системах существует вероятность, что приостановленный поток продолжит своё выполнение уже на другом ядре, а это повлечет за собой перестройку состояния процессорного кэша, которая является достаточно затратной процедурой.