В этом году для GopherCon команда Ozon Tech подготовила пару часов докладов на самые разные темы: от классических — о микросервисной архитектуре, до по-настоящему гошных.
Итак для всех, кто пропустил онлайн, в нашем плейлисте доклады от разработчиков одной из самых больших Golang-команд России.
Наслаждайтесь!
https://habr.com/ru/company/ozontech/blog/516044/
Итак для всех, кто пропустил онлайн, в нашем плейлисте доклады от разработчиков одной из самых больших Golang-команд России.
Наслаждайтесь!
https://habr.com/ru/company/ozontech/blog/516044/
Хабр
Мы все записали: доклады Ozon на GopherCon Online 2020
Привет, Хабр! В этом году для GopherCon команда Ozon Tech подготовила пару часов докладов на самые разные темы: от классических — о микросервисной архитектуре, до по-настоящему гошных. Итак...
HTML, HyperText Markup Language («язык гипертекстовой разметки») — стандартизированный язык разметки документов в WWW. На данный момент актуальна 5 версия этого языка - HTML5.
#вопросы_с_собеседований
Почему HttpServlet класс объявлен как абстрактный?
Почему HttpServlet класс объявлен как абстрактный?
Класс HTTPServlet предоставляет лишь общую реализацию сервлета для HTTP протокола. Реализация ключевых методов doGet() и doPost(), содержащих основную бизнес-логику, перекладывается на разработчика и по умолчанию возвращает HTTP 405 Method Not Implemented error.
#вопросы_с_собеседований
Что такое ReadWriteLock?
Что такое ReadWriteLock?
ReadWriteLock – это интерфейс расширяющий базовый интерфейс Lock. Используется для улучшения производительности в многопоточном процессе и оперирует парой связанных блокировок (одна - для операций чтения, другая - для записи). Блокировка чтения может удерживаться одновременно несколькими читающими потоками, до тех пор пока не появится записывающий. Блокировка записи является эксклюзивной.
Существует реализующий интерфейс ReadWriteLock класс ReentrantReadWriteLock, который поддерживает до 65535 блокировок записи и до стольки же блокировок чтения.
Существует реализующий интерфейс ReadWriteLock класс ReentrantReadWriteLock, который поддерживает до 65535 блокировок записи и до стольки же блокировок чтения.
ReadWriteLock rwLock = new ReentrantReadWriteLock();
Lock rLock = rwLock.readLock();
Lock wLock = rwLock.writeLock();
wLock.lock();
try {
// exclusive write
} finally {
wLock.unlock();
}
rLock.lock();
try {
// shared reading
} finally {
rLock.unlock();
}
#вопросы_с_собеседований
Что вы знаете о OutOfMemoryError?
Что вы знаете о OutOfMemoryError?
OutOfMemoryError выбрасывается, когда виртуальная машина Java не может создать (разместить) объект из-за нехватки памяти, а сборщик мусора не может высвободить достаточное её количество.
Область памяти, занимаемая java процессом, состоит из нескольких частей. Тип OutOfMemoryError зависит от того, в какой из них не хватило места:
☕️ java.lang.OutOfMemoryError: Java heap space: Не хватает места в куче, а именно, в области памяти в которую помещаются объекты, создаваемые в приложении программно. Обычно проблема кроется в утечке памяти. Размер задается параметрами -Xms и -Xmx.
☕️ java.lang.OutOfMemoryError: PermGen space: (до версии Java 8) Данная ошибка возникает при нехватке места в Permanent области, размер которой задается параметрами -XX:PermSize и -XX:MaxPermSize.
☕️ java.lang.OutOfMemoryError: GC overhead limit exceeded: Данная ошибка может возникнуть как при переполнении первой, так и второй областей. Связана она с тем, что памяти осталось мало и сборщик мусора постоянно работает, пытаясь высвободить немного места. Данную ошибку можно отключить с помощью параметра -XX:-UseGCOverheadLimit.
☕️ java.lang.OutOfMemoryError: unable to create new native thread: Выбрасывается, когда нет возможности создавать новые потоки.
Область памяти, занимаемая java процессом, состоит из нескольких частей. Тип OutOfMemoryError зависит от того, в какой из них не хватило места:
☕️ java.lang.OutOfMemoryError: Java heap space: Не хватает места в куче, а именно, в области памяти в которую помещаются объекты, создаваемые в приложении программно. Обычно проблема кроется в утечке памяти. Размер задается параметрами -Xms и -Xmx.
☕️ java.lang.OutOfMemoryError: PermGen space: (до версии Java 8) Данная ошибка возникает при нехватке места в Permanent области, размер которой задается параметрами -XX:PermSize и -XX:MaxPermSize.
☕️ java.lang.OutOfMemoryError: GC overhead limit exceeded: Данная ошибка может возникнуть как при переполнении первой, так и второй областей. Связана она с тем, что памяти осталось мало и сборщик мусора постоянно работает, пытаясь высвободить немного места. Данную ошибку можно отключить с помощью параметра -XX:-UseGCOverheadLimit.
☕️ java.lang.OutOfMemoryError: unable to create new native thread: Выбрасывается, когда нет возможности создавать новые потоки.
#вопросы_с_собеседований
Согласно Кнуту и Кормену существует две основных реализации хэш-таблицы: на основе открытой адресации и на основе метода цепочек. Как реализована HashMap? Почему, по вашему мнению, была выбрана именно эта реализация? В чем плюсы и минусы каждого подхода?
Согласно Кнуту и Кормену существует две основных реализации хэш-таблицы: на основе открытой адресации и на основе метода цепочек. Как реализована HashMap? Почему, по вашему мнению, была выбрана именно эта реализация? В чем плюсы и минусы каждого подхода?
Привет, меня зовут Артём, я являюсь CEO IT-издания Библиотека программиста, и сейчас ищу редактора. Нам нужен грамотный специалист, не понаслышке знакомый с информационными технологиями.
Предстоит:
— писать, редактировать и оформлять новые публикации на сайте Библиотеки программиста (статьи и тесты-викторины)
— редактировать старые публикации по замечаниям читателей
— взаимодействовать с авторами, разработчиками и другими членами команды
— предлагать темы, формировать контент-план и ТЗ для публикаций
писать и редактировать тексты под рекламные кампании
— реагировать на комментарии читателей
Как мы вас себе представляем:
— владеете терминологией, принятой в сообществе IT-разработчиков
— умеете выполнять задания в сжатые сроки
— готовы постоянно поддерживать контакт, оперативно отвечать на возникающие вопросы
— знакомы с HTML, чтобы корректно править старые публикации
— любите объяснять сложные вещи понятным читателю языком, знакомы с инфостилем
— стремитесь увлечь читателя, но не в ущерб фактам
— готовы ежедневно выпускать не менее 1 материала (своего или авторского)
У нас уже есть:
— аудитория (в том числе 350 тыс. VK, свыше 150 тыс. Telegram)
— база публикаций, тестов, обсуждений
— редакционная политика (не придется писать с нуля)
— инструменты оформления и публикации материалов, в том числе планирования
— метрики анализа популярности материалов
— система push-уведомлений
— несколько регулярно пишущих авторов, контент-менеджеры, занимающиеся публикациями в соцсетях, рекламный отдел, команда разработчиков
Если вы подходите:
— зарплатная вилка от 50 до 70 тысяч рублей в месяц
— будем регулярно оплачивать труд 📅 дважды в месяц
— поможем освоиться в команде и работе с инструментами сайта
Чтобы откликнуться, вы можете прислать портфолио из релевантных публикации на ящик [email protected] или выполнить тестовое задание и прислать результат на тот же email.
Предстоит:
— писать, редактировать и оформлять новые публикации на сайте Библиотеки программиста (статьи и тесты-викторины)
— редактировать старые публикации по замечаниям читателей
— взаимодействовать с авторами, разработчиками и другими членами команды
— предлагать темы, формировать контент-план и ТЗ для публикаций
писать и редактировать тексты под рекламные кампании
— реагировать на комментарии читателей
Как мы вас себе представляем:
— владеете терминологией, принятой в сообществе IT-разработчиков
— умеете выполнять задания в сжатые сроки
— готовы постоянно поддерживать контакт, оперативно отвечать на возникающие вопросы
— знакомы с HTML, чтобы корректно править старые публикации
— любите объяснять сложные вещи понятным читателю языком, знакомы с инфостилем
— стремитесь увлечь читателя, но не в ущерб фактам
— готовы ежедневно выпускать не менее 1 материала (своего или авторского)
У нас уже есть:
— аудитория (в том числе 350 тыс. VK, свыше 150 тыс. Telegram)
— база публикаций, тестов, обсуждений
— редакционная политика (не придется писать с нуля)
— инструменты оформления и публикации материалов, в том числе планирования
— метрики анализа популярности материалов
— система push-уведомлений
— несколько регулярно пишущих авторов, контент-менеджеры, занимающиеся публикациями в соцсетях, рекламный отдел, команда разработчиков
Если вы подходите:
— зарплатная вилка от 50 до 70 тысяч рублей в месяц
— будем регулярно оплачивать труд 📅 дважды в месяц
— поможем освоиться в команде и работе с инструментами сайта
Чтобы откликнуться, вы можете прислать портфолио из релевантных публикации на ящик [email protected] или выполнить тестовое задание и прислать результат на тот же email.
Библиотека программиста
Материалы, которые научат и помогут программировать. Книги и лекции, видеоуроки и советы, тесты знаний и обсуждение горячих тем. Присоединяйтесь!
HashMap реализован с использованием метода цепочек, т.е. каждой ячейке массива (корзине) соответствует свой связный список и при возникновении коллизии осуществляется добавление нового элемента в этот список.
Для метода цепочек коэффициент заполнения может быть больше 1 и с увеличением числа элементов производительность убывает линейно. Такие таблицы удобно использовать, если заранее неизвестно количество хранимых элементов, либо их может быть достаточно много, что приводит к большим значениям коэффициента заполнения.
Среди методов открытой реализации различают:
☕️ линейное пробирование;
☕️ квадратичное пробирование;
☕️ двойное хэширование.
Недостатки структур с методом открытой адресации:
☕️ количество элементов в хэш-таблице не может превышать размера массива. По мере увеличения числа элементов и повышения коэффициента заполнения производительность структуры резко падает, поэтому необходимо проводить перехэширование.
☕️ сложно организовать удаление элемента.
☕️ первые два метода открытой адресации приводят к проблеме первичной и вторичной группировок.
Преимущества хэш-таблицы с открытой адресацией:
☕️ отсутствие затрат на создание и хранение объектов списка;
☕️ простота организации сериализации/десериализации объекта.
Для метода цепочек коэффициент заполнения может быть больше 1 и с увеличением числа элементов производительность убывает линейно. Такие таблицы удобно использовать, если заранее неизвестно количество хранимых элементов, либо их может быть достаточно много, что приводит к большим значениям коэффициента заполнения.
Среди методов открытой реализации различают:
☕️ линейное пробирование;
☕️ квадратичное пробирование;
☕️ двойное хэширование.
Недостатки структур с методом открытой адресации:
☕️ количество элементов в хэш-таблице не может превышать размера массива. По мере увеличения числа элементов и повышения коэффициента заполнения производительность структуры резко падает, поэтому необходимо проводить перехэширование.
☕️ сложно организовать удаление элемента.
☕️ первые два метода открытой адресации приводят к проблеме первичной и вторичной группировок.
Преимущества хэш-таблицы с открытой адресацией:
☕️ отсутствие затрат на создание и хранение объектов списка;
☕️ простота организации сериализации/десериализации объекта.
Forwarded from Java jobs — вакансии для java-разработчиков
#вакансия #java #middle #удаленка
Требуется Backend java разработчик (не ниже middle) на постоянную работу.
Основная задача разработка бэкэнда приложений на java с нуля, доработка текущих проектов.
Работа удаленно, с возможными оплачиваемыми командировками в будущем.
На испытательный срок -2000 $
После испытательного - 2500 $
По итогам работы премии.
Требования:
* Хорошее знание Java EE или Spring
* Опыт разработки на Java/Kotlin
* Умение работать с SQL и не-SQL базами данных
* Знание C/C++
* Знание базового английского
Контакт для связи @viksantana
Требуется Backend java разработчик (не ниже middle) на постоянную работу.
Основная задача разработка бэкэнда приложений на java с нуля, доработка текущих проектов.
Работа удаленно, с возможными оплачиваемыми командировками в будущем.
На испытательный срок -2000 $
После испытательного - 2500 $
По итогам работы премии.
Требования:
* Хорошее знание Java EE или Spring
* Опыт разработки на Java/Kotlin
* Умение работать с SQL и не-SQL базами данных
* Знание C/C++
* Знание базового английского
Контакт для связи @viksantana
#вопросы_с_собеседований
Что такое пул строк?
Что такое пул строк?
Пул строк – это набор строк, хранящийся в Heap.
☕️ Пул строк возможен благодаря неизменяемости строк в Java и реализации идеи интернирования строк;
☕️ Пул строк помогает экономить память, но по этой же причине создание строки занимает больше времени;
☕️ Когда для создания строки используются ", то сначала ищется строка в пуле с таким же значением, если находится, то просто возвращается ссылка, иначе создается новая строка в пуле, а затем возвращается ссылка на неё;
☕️ При использовании оператора new создаётся новый объект String. Затем при помощи метода intern() эту строку можно поместить в пул или же получить из пула ссылку на другой объект String с таким же значением;
☕️ Пул строк является примером паттерна «Приспособленец» (Flyweight).
☕️ Пул строк возможен благодаря неизменяемости строк в Java и реализации идеи интернирования строк;
☕️ Пул строк помогает экономить память, но по этой же причине создание строки занимает больше времени;
☕️ Когда для создания строки используются ", то сначала ищется строка в пуле с таким же значением, если находится, то просто возвращается ссылка, иначе создается новая строка в пуле, а затем возвращается ссылка на неё;
☕️ При использовании оператора new создаётся новый объект String. Затем при помощи метода intern() эту строку можно поместить в пул или же получить из пула ссылку на другой объект String с таким же значением;
☕️ Пул строк является примером паттерна «Приспособленец» (Flyweight).
Псс… Соскучились? 😝 Photo Lab объявляет о старте онлайн-хакатона PhotoHack Mobile с призовым фондом 500 000 рублей! 🔥
В этот раз перед участниками стоит задача разработать мобильное приложение, используя технологии Photo Lab. При этом речь не идёт о чём-то масштабном и грандиозном, а наоборот, нужно создать нишевый продукт, направленный на решение конкретной задачи.
Где: онлайн
Когда: 12-13 сентября 2020 года
Кого мы ждём: мобильных разработчиков, специалистов по Machine Learning и Data Science, продакт-менеджеров, UI/UX-дизайнеров, авторов креативных идей, а также студентов технических специальностей.
P.S. в команде может быть не более пяти человек 😉
Подробная информация и регистрация на сайте: https://bit.ly/2QnPLpG
Торопитесь! Заявки принимаются до 11 сентября 2020
В этот раз перед участниками стоит задача разработать мобильное приложение, используя технологии Photo Lab. При этом речь не идёт о чём-то масштабном и грандиозном, а наоборот, нужно создать нишевый продукт, направленный на решение конкретной задачи.
Где: онлайн
Когда: 12-13 сентября 2020 года
Кого мы ждём: мобильных разработчиков, специалистов по Machine Learning и Data Science, продакт-менеджеров, UI/UX-дизайнеров, авторов креативных идей, а также студентов технических специальностей.
P.S. в команде может быть не более пяти человек 😉
Подробная информация и регистрация на сайте: https://bit.ly/2QnPLpG
Торопитесь! Заявки принимаются до 11 сентября 2020
#вопросы_с_собеседований
Чем различаются Enumeration и Iterator?
Чем различаются Enumeration и Iterator?
Погрузись в мир Java-разработки и напиши свою первую программу на одном из самых востребованных языков программирования за три дня. Занятия бесплатные, а опыт в написании кода не обязателен для участия — материал будет доступным для всех.
Регистрация займёт меньше минуты: 👉 https://clc.am/O1bwgg.
Java — отличный выбор даже для новичков в коде!
➕ Имеет дружественный и понятный синтаксис.
➕ Востребован на рынке труда.
➕ Java-приложения работают на любом устройстве и в любой операционной системе.
➕ Это один из самых высокооплачиваемых языков в разработке.
Трёх дней достаточно, чтобы узнать о базовых инструментах, которые программисты применяют в работе, и попробовать их на практике.
⭐️ Если попадёшь в тройку лучших участников — получишь сертификат на 30 000 рублей для обучения в Skillbox!
Регистрация займёт меньше минуты: 👉 https://clc.am/O1bwgg.
Java — отличный выбор даже для новичков в коде!
➕ Имеет дружественный и понятный синтаксис.
➕ Востребован на рынке труда.
➕ Java-приложения работают на любом устройстве и в любой операционной системе.
➕ Это один из самых высокооплачиваемых языков в разработке.
Трёх дней достаточно, чтобы узнать о базовых инструментах, которые программисты применяют в работе, и попробовать их на практике.
⭐️ Если попадёшь в тройку лучших участников — получишь сертификат на 30 000 рублей для обучения в Skillbox!
Хотя оба интерфейса и предназначены для обхода коллекций, между ними имеются существенные различия:
☕️ с помощью Enumeration нельзя добавлять/удалять элементы;
☕️ в Iterator исправлены имена методов для повышения читаемости кода (Enumeration.hasMoreElements() соответствует Iterator.hasNext(), Enumeration.nextElement() соответствует Iterator. next() и т.д);
☕️ Enumeration присутствуют в устаревших классах, таких как Vector/Stack, тогда как Iterator есть во всех современных классах-коллекциях.
☕️ с помощью Enumeration нельзя добавлять/удалять элементы;
☕️ в Iterator исправлены имена методов для повышения читаемости кода (Enumeration.hasMoreElements() соответствует Iterator.hasNext(), Enumeration.nextElement() соответствует Iterator. next() и т.д);
☕️ Enumeration присутствуют в устаревших классах, таких как Vector/Stack, тогда как Iterator есть во всех современных классах-коллекциях.
#вопросы_с_собеседований
Оцените количество памяти на хранение одного примитива типа byte в LinkedList?
Оцените количество памяти на хранение одного примитива типа byte в LinkedList?