10 ключевых ошибок при изучении программирования
В данном видео описываются 10 ключевых ошибок студентов и преподавателей с точки зрения автора.
https://youtu.be/kw9zPNYtYws
В данном видео описываются 10 ключевых ошибок студентов и преподавателей с точки зрения автора.
https://youtu.be/kw9zPNYtYws
YouTube
10 ключевых ошибок при изучении программирования
В данном видео описываются 10 ключевых ошибок студентов и преподавателей с точки зрения автора.
Наше дружное сообщество:
https://t.me/pse_club
Полезности для программистов:
https://proselyte.net/
00:00:00 - введение
00:00:30 - цели видео
00:01:13 - план…
Наше дружное сообщество:
https://t.me/pse_club
Полезности для программистов:
https://proselyte.net/
00:00:00 - введение
00:00:30 - цели видео
00:01:13 - план…
new vs valueOf
Старайтесь всегда использовать метод
Все оболочки, кроме чисел с плавающей точкой, от Byte до Long, имеют кэш. По умолчанию этот кэш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кэша. Значение из кэша достается в 3.5 раза быстрее, чем при использовании конструктора, плюс идёт экономия памяти.
Помимо этого, наиболее часто используемые значения могут также быть закэшированы компилятором и виртуальной машиной.
Старайтесь всегда использовать метод
valueOf вместо конструктора в стандартных классах-оболочках примитивных типов, кроме тех случаев, когда вам нужно конкретно выделить память под новое значение. Сейчас объясню, почему.Все оболочки, кроме чисел с плавающей точкой, от Byte до Long, имеют кэш. По умолчанию этот кэш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кэша. Значение из кэша достается в 3.5 раза быстрее, чем при использовании конструктора, плюс идёт экономия памяти.
Помимо этого, наиболее часто используемые значения могут также быть закэшированы компилятором и виртуальной машиной.
Какой флаг JVM позволяет расширить диапазон кешируемых значений для целых типов?
Anonymous Quiz
0%
-XX:+PrintFlagsFinal
0%
-Xss<size>
0%
-XX:AutoBoxCacheMax=<size>
0%
-XX:BiasedLockingStartupDelay=<delay>
Java Challenges: 100+ Proven Tasks that Will Prepare You for Anything
Автор: Michael Inden (2021)
Автор Майкл Инден описывает альтернативные решения и анализирует возможные подводные камни и типичные ошибки при проектировании систем. Примеры рассматриваются с использованием JShell, JUnit 5 для модульного тестирования и проверки решений. Также, подробно описывается O-нотация для оценки производительности алгоритмов.
Скачать
👉 @java_360
Автор: Michael Inden (2021)
Автор Майкл Инден описывает альтернативные решения и анализирует возможные подводные камни и типичные ошибки при проектировании систем. Примеры рассматриваются с использованием JShell, JUnit 5 для модульного тестирования и проверки решений. Также, подробно описывается O-нотация для оценки производительности алгоритмов.
Скачать
👉 @java_360
Java-разработчик (middle)
#полныйдень #офис
Локация: Санкт-Петербург
Компания: Сбер
Обязанности:
- работа в роли разработчика в Agile-команде;
- оценка трудоёмкости доработок, планирование работ в спринтах;
- контроль работ, code review;
- техническая экспертиза;
- написание технической документации.
Требования:
- отлично знаете ООП, различные алгоритмы и структуры данных;
- понимаете микросервисную архитектуру;
- владеете Java8, Spring Framework, Hibernate;
- умеете писать unit-тесты;
- имеете опыт работы с SQL (Oracle, PosgreSQL);
- использовали средство сборки Maven;
- имеете опыт работы с Wildfly;
- умеете работать с Git, Gitflow;
- владеете HTML, CSS, JavaScript, понимаете принципы работы React;
- используете Jenkins, Git, Jira, Confluence;
знакомы с unix-системами;
- используете методологии гибкой разработки;
- делаете код-ревью.
#полныйдень #офис
Локация: Санкт-Петербург
Компания: Сбер
Обязанности:
- работа в роли разработчика в Agile-команде;
- оценка трудоёмкости доработок, планирование работ в спринтах;
- контроль работ, code review;
- техническая экспертиза;
- написание технической документации.
Требования:
- отлично знаете ООП, различные алгоритмы и структуры данных;
- понимаете микросервисную архитектуру;
- владеете Java8, Spring Framework, Hibernate;
- умеете писать unit-тесты;
- имеете опыт работы с SQL (Oracle, PosgreSQL);
- использовали средство сборки Maven;
- имеете опыт работы с Wildfly;
- умеете работать с Git, Gitflow;
- владеете HTML, CSS, JavaScript, понимаете принципы работы React;
- используете Jenkins, Git, Jira, Confluence;
знакомы с unix-системами;
- используете методологии гибкой разработки;
- делаете код-ревью.
Прокачай свои знания в архитектуре современных распределенных систем
Стремишься занять позицию сеньора или даже архитектора? Этот курс для тебя!
✅Разберешься в event-driven системах
✅Обретешь уверенность на system design интервью в российских и зарубежных компаниях
✅Поймешь как устроен подход event sourcing, паттерн CQRS
✅Твердо поймешь основы Domain-driven design, как его применять
✅Создашь распределенную event-sourcing based систему и сможешь заимплементить распределенную транзакцию
Авторский курс от преподавателя Санкт-Петербургского университета ИТМО и разработчика высоконагруженных систем Андрея Суховицкого.
Твоими менторами станут ребята из Amazon, Revolut, JetBrains, Yandex или Ozon.
❗️Старт курса - 3 апреля, лекции и задания доступны уже сейчас!❗️
Переходи по ссылке и подавай заявку!
Стремишься занять позицию сеньора или даже архитектора? Этот курс для тебя!
✅Разберешься в event-driven системах
✅Обретешь уверенность на system design интервью в российских и зарубежных компаниях
✅Поймешь как устроен подход event sourcing, паттерн CQRS
✅Твердо поймешь основы Domain-driven design, как его применять
✅Создашь распределенную event-sourcing based систему и сможешь заимплементить распределенную транзакцию
Авторский курс от преподавателя Санкт-Петербургского университета ИТМО и разработчика высоконагруженных систем Андрея Суховицкого.
Твоими менторами станут ребята из Amazon, Revolut, JetBrains, Yandex или Ozon.
❗️Старт курса - 3 апреля, лекции и задания доступны уже сейчас!❗️
Переходи по ссылке и подавай заявку!
QA Automation Engineer (senior)
#удаленка #офис #гибкийграфик
Локация: Москва
Компания: Stellar Labs
Обязанности:
- Разработка архитектуры автотестов совместно с архитектором/тимлидами;
- Тестирование Backend с большим количеством интеграций, встраивание разработанных автотестов в CI/CD;
- Составление сценариев автотестов, quality gates, чек листов;
- Развивать процессы тестирования (оптимизация регресса, оценка трудозатрат, ревью требований на ранних этапах).
Требования:
- Опыт программирования на Java/Kotlin;
- Опыт работы в сфере автоматизации не менее 3-х лет;
- Опыт разработки автотестов как API, так и UI;
- Разработка тестов для микросервисной архитектуры приложений;
- Опыт работы с базами данных;
- Опыт ведения и развития базы знаний;
- Разница в часовом поясе с Москвой не более 3 часов.
#удаленка #офис #гибкийграфик
Локация: Москва
Компания: Stellar Labs
Обязанности:
- Разработка архитектуры автотестов совместно с архитектором/тимлидами;
- Тестирование Backend с большим количеством интеграций, встраивание разработанных автотестов в CI/CD;
- Составление сценариев автотестов, quality gates, чек листов;
- Развивать процессы тестирования (оптимизация регресса, оценка трудозатрат, ревью требований на ранних этапах).
Требования:
- Опыт программирования на Java/Kotlin;
- Опыт работы в сфере автоматизации не менее 3-х лет;
- Опыт разработки автотестов как API, так и UI;
- Разработка тестов для микросервисной архитектуры приложений;
- Опыт работы с базами данных;
- Опыт ведения и развития базы знаний;
- Разница в часовом поясе с Москвой не более 3 часов.
Что такое Type Erasure?
Компилятор удаляет из байткода класс-файла информацию о типах-дженериках. Этот процесс и называется стирание типов (type erasure). Он появился в Java 5 вместе с самими дженериками. Такое решение позволило сохранить обратную совместимость без перекомпилляции кода Java 4.
Стирание состоит из трех действий:
🔘 Если параметры ограничены (bounded), вместо типа-параметра в местах использования подставляется верхняя граница, иначе Object;
🔘 В местах присвоения значения типа-параметра в переменную обычного типа добавляется каст к этому типу;
🔘 Генерируются bridge-методы.
Информация о типах стирается только из методов и полей, но остается в метаинформации самого класса. Получить эту информацию в рантайме можно с помощью рефлекшна, методом Field#getGenericType.
Тип со стертой информацией о дженериках называется «Non-reifiable».
Стирание типов позволяет не создавать при применении дженериков новые классы, в отличие от, например, шаблонов C++.
Компилятор удаляет из байткода класс-файла информацию о типах-дженериках. Этот процесс и называется стирание типов (type erasure). Он появился в Java 5 вместе с самими дженериками. Такое решение позволило сохранить обратную совместимость без перекомпилляции кода Java 4.
Стирание состоит из трех действий:
🔘 Если параметры ограничены (bounded), вместо типа-параметра в местах использования подставляется верхняя граница, иначе Object;
🔘 В местах присвоения значения типа-параметра в переменную обычного типа добавляется каст к этому типу;
🔘 Генерируются bridge-методы.
Информация о типах стирается только из методов и полей, но остается в метаинформации самого класса. Получить эту информацию в рантайме можно с помощью рефлекшна, методом Field#getGenericType.
Тип со стертой информацией о дженериках называется «Non-reifiable».
Стирание типов позволяет не создавать при применении дженериков новые классы, в отличие от, например, шаблонов C++.
Академия Яндекса продолжает набор в Летние школы сразу в трех странах — в РФ, Сербии и Казахстане. Предусмотрено обучение для специалистов с опытом работы по следующим направлениям:
— фронтенд
— бэкенд-разработка (Python, Java, C++, Go)
— мобильная разработка (iOS, Android, Flutter)
— школа менеджеров (управление проектами и продуктами, продуктовая аналитика)
Программа начнется с теории и небольших заданий в онлайне, а затем студенты школ будут практиковаться на реальных проектах в фулстэк-группах с опытными наставниками в офисах Яндекса в Москве, Белграде и Алматы. Всем иногородним студентам, успешно прошедшим отбор и онлайн-этап, Яндекс оплатит билеты и проживание на период оффлайн-обучения.
Для участия необходимо отправить заявку и выполнить тестовое задание, которое размещено на страницах Школ. Дедлайны вступительных испытаний: до 13 апреля (Школа для менеджеров), до 27 апреля (Школы для разработчиков). В общем, go rockstars 🦾
— фронтенд
— бэкенд-разработка (Python, Java, C++, Go)
— мобильная разработка (iOS, Android, Flutter)
— школа менеджеров (управление проектами и продуктами, продуктовая аналитика)
Программа начнется с теории и небольших заданий в онлайне, а затем студенты школ будут практиковаться на реальных проектах в фулстэк-группах с опытными наставниками в офисах Яндекса в Москве, Белграде и Алматы. Всем иногородним студентам, успешно прошедшим отбор и онлайн-этап, Яндекс оплатит билеты и проживание на период оффлайн-обучения.
Для участия необходимо отправить заявку и выполнить тестовое задание, которое размещено на страницах Школ. Дедлайны вступительных испытаний: до 13 апреля (Школа для менеджеров), до 27 апреля (Школы для разработчиков). В общем, go rockstars 🦾
Летние школы Яндекса
Ежегодная образовательная программа Яндекса, больше половины выпускников которой становятся стажёрами и сотрудниками компании
Сказка о типизации
В некотором царстве, в некотором государстве жил был царь. Как-то раз объявил царь всему народу - "Кто решит три моих задачки, тот сам сможет царём стать". И даже контракт метода опубликовал, всё честь по чести.
Читать статью
В некотором царстве, в некотором государстве жил был царь. Как-то раз объявил царь всему народу - "Кто решит три моих задачки, тот сам сможет царём стать". И даже контракт метода опубликовал, всё честь по чести.
Читать статью
Teletype
Сказка о типизации
В некотором царстве, в некотором государстве жил был царь. Как-то раз объявил царь всему народу - "Кто решит три моих задачки, тот сам...
Советы по Java Pro: редкие приемы, которые помогут улучшить ваше программирование
В этой статье мы рассмотрим некоторые из редких и действенных советов и приемов, которые помогут вам раскрыть весь потенциал Java и создать элегантный и эффективный код.
От функциональных интерфейсов и ссылок на методы до потокового API и необязательных классов — мы рассмотрим некоторые расширенные функции Java, которые часто упускают из виду, но которые могут значительно улучшить ваш опыт программирования.
Итак, давайте погрузимся и раскроем всю мощь Java!
https://blog.devgenius.io/java-pro-tips-rare-tricks-to-supercharge-your-programming-d4290c100d56
В этой статье мы рассмотрим некоторые из редких и действенных советов и приемов, которые помогут вам раскрыть весь потенциал Java и создать элегантный и эффективный код.
От функциональных интерфейсов и ссылок на методы до потокового API и необязательных классов — мы рассмотрим некоторые расширенные функции Java, которые часто упускают из виду, но которые могут значительно улучшить ваш опыт программирования.
Итак, давайте погрузимся и раскроем всю мощь Java!
https://blog.devgenius.io/java-pro-tips-rare-tricks-to-supercharge-your-programming-d4290c100d56
Всем привет!
Мы создали канал на YouTube, куда будем заливать все вебинары, подписывайтесь чтобы не потерять 🎈
И ловите #вебинар, который провёл Илья в прошлую пятницу
https://youtu.be/HXahV7pJRy4
Мы создали канал на YouTube, куда будем заливать все вебинары, подписывайтесь чтобы не потерять 🎈
И ловите #вебинар, который провёл Илья в прошлую пятницу
https://youtu.be/HXahV7pJRy4
YouTube
Вебинар: Как я осуществил свою детскую мечту и стал сеньором с нуля за 4 года
#вебинар #itjobs #junior #middle #senior
Спикер: Илья, программист
Спикер: Илья, программист
#Вопросы_с_собеседования
Каково максимальное число значений hashCode()?
Число значений следует из сигнатуры int hashCode() и равно диапазону типа int — 2^32.
Каково максимальное число значений hashCode()?
Что выведет следующий код?
Anonymous Quiz
0%
falsetrue
0%
Произойдет ошибка компиляции
0%
truetrue
0%
falsefalse
Согласно Кнуту и Кормену существует две основных реализации хэш-таблицы: на основе открытой адресации и на основе метода цепочек. Как реализована HashMap? Почему, по вашему мнению, была выбрана именно эта реализация? В чем плюсы и минусы каждого подхода?
HashMap реализован с использованием метода цепочек, т.е. каждой ячейке массива (корзине) соответствует свой связный список и при возникновении коллизии осуществляется добавление нового элемента в этот список.
Для метода цепочек коэффициент заполнения может быть больше 1 и с увеличением числа элементов производительность убывает линейно. Такие таблицы удобно использовать, если заранее неизвестно количество хранимых элементов, либо их может быть достаточно много, что приводит к большим значениям коэффициента заполнения.
Среди методов открытой реализации различают:
• линейное пробирование;
• квадратичное пробирование;
• двойное хэширование.
Недостатки структур с методом открытой адресации:
• Количество элементов в хэш-таблице не может превышать размера массива. По мере увеличения числа элементов и повышения коэффициента заполнения производительность структуры резко падает, поэтому необходимо проводить перехэширование.
• Сложно организовать удаление элемента.
• Первые два метода открытой адресации приводят к проблеме первичной и вторичной группировок.
Преимущества хэш-таблицы с открытой адресацией:
• отсутствие затрат на создание и хранение объектов списка;
• простота организации сериализации/десериализации
👉@BookJava
HashMap реализован с использованием метода цепочек, т.е. каждой ячейке массива (корзине) соответствует свой связный список и при возникновении коллизии осуществляется добавление нового элемента в этот список.
Для метода цепочек коэффициент заполнения может быть больше 1 и с увеличением числа элементов производительность убывает линейно. Такие таблицы удобно использовать, если заранее неизвестно количество хранимых элементов, либо их может быть достаточно много, что приводит к большим значениям коэффициента заполнения.
Среди методов открытой реализации различают:
• линейное пробирование;
• квадратичное пробирование;
• двойное хэширование.
Недостатки структур с методом открытой адресации:
• Количество элементов в хэш-таблице не может превышать размера массива. По мере увеличения числа элементов и повышения коэффициента заполнения производительность структуры резко падает, поэтому необходимо проводить перехэширование.
• Сложно организовать удаление элемента.
• Первые два метода открытой адресации приводят к проблеме первичной и вторичной группировок.
Преимущества хэш-таблицы с открытой адресацией:
• отсутствие затрат на создание и хранение объектов списка;
• простота организации сериализации/десериализации
👉@BookJava
Прокачай свои знания в архитектуре современных распределенных систем
Стремишься занять позицию сеньора или даже архитектора? Этот курс для тебя!
✅Разберешься в event-driven системах
✅Обретешь уверенность на system design интервью в российских и зарубежных компаниях
✅Поймешь как устроен подход event sourcing, паттерн CQRS
✅Твердо поймешь основы Domain-driven design, как его применять
✅Создашь распределенную event-sourcing based систему и сможешь заимплементить распределенную транзакцию
Авторский курс от преподавателя Санкт-Петербургского университета ИТМО и разработчика высоконагруженных систем Андрея Суховицкого.
Твоими менторами станут ребята из Amazon, Revolut, JetBrains, Yandex или Ozon.
❗️Старт курса - 3 апреля, лекции и задания доступны уже сейчас!❗️
Переходи по ссылке и подавай заявку!
Стремишься занять позицию сеньора или даже архитектора? Этот курс для тебя!
✅Разберешься в event-driven системах
✅Обретешь уверенность на system design интервью в российских и зарубежных компаниях
✅Поймешь как устроен подход event sourcing, паттерн CQRS
✅Твердо поймешь основы Domain-driven design, как его применять
✅Создашь распределенную event-sourcing based систему и сможешь заимплементить распределенную транзакцию
Авторский курс от преподавателя Санкт-Петербургского университета ИТМО и разработчика высоконагруженных систем Андрея Суховицкого.
Твоими менторами станут ребята из Amazon, Revolut, JetBrains, Yandex или Ozon.
❗️Старт курса - 3 апреля, лекции и задания доступны уже сейчас!❗️
Переходи по ссылке и подавай заявку!
Прокачай свои знания в архитектуре современных распределенных систем
Стремишься занять позицию сеньора или даже архитектора? Этот курс для тебя!
✅Разберешься в event-driven системах
✅Обретешь уверенность на system design интервью в российских и зарубежных компаниях
✅Поймешь как устроен подход event sourcing, паттерн CQRS
✅Твердо поймешь основы Domain-driven design, как его применять
✅Создашь распределенную event-sourcing based систему и сможешь заимплементить распределенную транзакцию
Авторский курс от преподавателя Санкт-Петербургского университета ИТМО и разработчика высоконагруженных систем Андрея Суховицкого.
Твоими менторами станут ребята из Amazon, Revolut, JetBrains, Yandex или Ozon.
❗️Старт курса - 3 апреля, лекции и задания доступны уже сейчас!❗️
Переходи по ссылке и подавай заявку!
Стремишься занять позицию сеньора или даже архитектора? Этот курс для тебя!
✅Разберешься в event-driven системах
✅Обретешь уверенность на system design интервью в российских и зарубежных компаниях
✅Поймешь как устроен подход event sourcing, паттерн CQRS
✅Твердо поймешь основы Domain-driven design, как его применять
✅Создашь распределенную event-sourcing based систему и сможешь заимплементить распределенную транзакцию
Авторский курс от преподавателя Санкт-Петербургского университета ИТМО и разработчика высоконагруженных систем Андрея Суховицкого.
Твоими менторами станут ребята из Amazon, Revolut, JetBrains, Yandex или Ozon.
❗️Старт курса - 3 апреля, лекции и задания доступны уже сейчас!❗️
Переходи по ссылке и подавай заявку!
В чем разница между методами GET и POST?
•
• Передача данных методом
•
•
GET передает данные серверу используя URL, тогда как POST передает данные, используя тело HTTP запроса. Длина URL ограничена 1024 символами, это и будет верхним ограничением для данных, которые можно отослать через GET. POST может отправлять гораздо большие объемы данных. Лимит устанавливается web-server и составляет обычно около 2 Mb.• Передача данных методом
POST более безопасна, чем методом GET, так как секретные данные (например пароль) не отображаются напрямую в web-клиенте пользователя, в отличии от URL, который виден почти всегда. Иногда это преимущество превращается в недостаток - вы не сможете послать данные за кого-то другого.•
GET метод является неизменяемым, тогда как POST — изменяемый.Java Developer (middle )
#удаленка #офис #гибрид #гибкийграфик #полныйдень
ЗП: от 150 000 до 200 000 ₽
Компания: Тринити
Обязанности:
• Решение сложных задач (возможно без дизайна и аналитики).
• Написание красивого и чистого кода.
• Code review/cross review всей команды.
• Развитие внутреннего движка проектов (Java 8/ Spring boot).
• Участие в проектировании структуры БД.
Требования:
• Опыт реальной коммерческой разработки не менее 2 лет.
• Отличное знание Java, Spring.
• Умение работать с GitLab, Linux, Docker.
• Умение объяснить коллегам по команде чего не хватает для реализации задачи.
Откликнуться: @katrinmartyn
#удаленка #офис #гибрид #гибкийграфик #полныйдень
ЗП: от 150 000 до 200 000 ₽
Компания: Тринити
Обязанности:
• Решение сложных задач (возможно без дизайна и аналитики).
• Написание красивого и чистого кода.
• Code review/cross review всей команды.
• Развитие внутреннего движка проектов (Java 8/ Spring boot).
• Участие в проектировании структуры БД.
Требования:
• Опыт реальной коммерческой разработки не менее 2 лет.
• Отличное знание Java, Spring.
• Умение работать с GitLab, Linux, Docker.
• Умение объяснить коллегам по команде чего не хватает для реализации задачи.
Откликнуться: @katrinmartyn