Java Developer
6.45K subscribers
235 photos
8 videos
12 files
279 links
MAKE JAVA GREAT AGAIN

Мемы: @java_memes
加入频道
Тест на пиво

Как понять на собеседовании, что вам подходит команда, люди, которые вас интервьюируют? Подумайте, смогли бы вы пойти с ними вечером после работы выпить пивка, поиграть в страйкбол, боулинг. Было бы вам с ними комфортно, интересно?
Сегодня в 17:00 я проведу трансляцию, в которой подробнее расскажу о предстоящем курсе Java Core Challenge. Трансляция будет полезна участникам и тем, кто заинтересовался, но пока не решился, тк возникли какие-то вопросы. Расскажу о том, для какого уровня подготовки подойдет этот курс и что именно он вам даст. Ну и помимо этого, отвечу на ваши вопросы в прямом эфире. До связи:)

Ссылка на трансляцию:
https://youtu.be/OI1d958YTSI
Как выучить что-то новое

Пост делал для участников Java Core Challenge, но поделюсь со всеми)

Я знаю, что по окончании университета, а иногда и раньше, многие теряют навык обучения. Мы забываем, как сосредотачиваться на одном деле и как запоминать новую информацию, потому что зачастую такой нужды больше нет. Но уметь УЧИТЬСЯ это 100% навык, без которого не возьмут в будущее.

Когда я начал плотно учить джаву, я поменял всё расписание дня под это дело на какое-то время. Планировал, какие материалы буду изучать каждый день, завёл для учебы новый блокнот, куда записывал многое от руки. В общем, создал новые привычки , для того чтобы туда комфортно вписалось обучение.

Было бы здорово, если каждый из вас вынесет из этого курса столько пользы, сколько вам необходимо, а может даже больше.

Поэтому я хочу поделиться с вами рабочими приёмами, которые помогут легче и эффективнее усвоить новый материал:

1. Пишите конспекты
Постарайтесь завести тетрадь/блокнот, куда сможете записывать краткую выжимку из прочитанного теоретического материала. Серьезно! Все же знают, как написание помогает запоминанию.
Если время сильно ограничено, запишите в конце дня пару пунктов или тем, которые выучили или прочли за этот день. Это хорошо упорядочит информацию в голове

2. Повторяйте изученное перед сном
Постарайтесь делать так, чтобы последней информацией, которую вы получите за день, была информация по теме курса, а не сериалы, новости и тд. Это очень поможет усвоению!

3. Не делать несколько дел одновременно
Решать задачу, читать материал желательно без видосов и сериалов на фоне. А листать ленту новостей и переписываться приятнее без отвлечений на обучение!
Лучше выделить 30 минут на прочтение главы и сделать это быстро и хорошо, чем тупить над ней час, отвечая друзьям в тг или отвлекаясь на ленту. Так мы сэкономим своё время.

4. Отложить телефон как можно дальше
Если ест
ь возможность, читайте материалы с ПК, чтобы не отвлекаться на уведомления и не заходить в перерывах в привычные приложения. Если получится читать теорию только с телефона – ставьте авиарежим.

5. Запланируйте специально 2 часа в день
Попробуйте внести их в план дня заранее, так точно будет удобнее. Например, я знаю, что сегодня у меня свободный вечер, так что выделю два часа на обучение после рабочего дня, а послезавтра вечером у меня встреча с друзьями, значит выделю час утром перед работой на обучение и час в рабочее время, если занятость позволяет.
Время на обучение не найдется, если специально не освободить его от других дел.

6. Не бойтесь задавать вопросы
Если вам что-то непонятно — пишите, спрашивайте, докапывайтесь до сути. И помните, глупых вопросов не бывает.
Java to Scala. Вопросы с собеседований

Недавно у меня друг перешел на Scala-проект. Он готовился две недели, прошел 17 собеседований, получил 7 офферов. До этого у него было два года коммерческого опыта на java-проекте. Я попросил его расписать, что спрашивают на собеседованиях. Получилось очень подробно и здорово.

Типичное собеседование по Scala можно описать как hardcore-версию собеседования на позицию Senior Java. Причем не берем в счет позиции типа better Java или Java/Scala. Речь о Scala, где нет как минимум var переменных, циклов, сеттеров и мутабельных коллекций, ну или где за этим хотя бы стараются следить. Практически нигде вам не будут задавать типичных вопросов про HashMap, методы Object, контракты equals/hashcode, как работает Docker и прочую лабуду, а сразу начнут лезть в душу. Большинство вопросов, конечно, задают и на Java-собесах, но насыщенность Scala собеседования глубокими вопросами зашкаливает и отделаться каким-нибудь определением не получится, нужно будет объяснять как это работает внутри. Вот примерный список тем, которые необходимо довольно глубоко изучить. Начнём с обязательной части.

1.Многопоточка. Про неё спрашивают вместо HashMap. Нужно знать всё. Как работает многопоточное приложение, отличие потоков java от потоков системы и процессов, может ли одно java/scala приложение работать на нескольких процессорах, happens-before, какие языковые конструкции могут гарантировать happens-before, как в жизни помогают и как работают volatile/final, CAS, способы синхронизации, виды дедлоков, как бороться с ними, Future, недостатки и преимущества Future, пулы потоков, какие пулы в каких кейсах лучше использовать. Отдельно выделяют fork/join и просят рассказать, как он устроен внутри и для каких бизнес-задач подходит, а для каких нет. Атомики, как атомики реализованы, виды локов, проблемы с lazy полями в многопоточной среде и как реализованы lazy поля, отсюда вопрос про минусы этих реализаций и все что в голову взбредет.

2. Java Memory Model. Первая часть собеса никогда не обходится без обсуждения JMM. Виды GC, алгоритмы работы, различия, преимущества и недостатки, способы оптимизации работы, основные показатели, в каких случаях какой необходимо выбрать, способы поиска проблем. Рассказать, как реализована оптимизация хвостовой рекурсии в Scala. Обычно разбор многопоточки и JMM занимает 50% времени всего собеседования.

3.Алгоритмы и структуры данных. В 90% случаев обязательно попросят написать на бумажке задачку а-ля Фибоначчи с хвостовой рекурсией, реализовать метод flatMap/map у листа, обход графа/дерева, развернуть рекурсивно лист. Или другую из первых 40 задач с leetcode, которые заточены на рекурсию. Дальше интервьюеры пройдутся по всем структурам данных в Scala, их различия, юз кейсы, сложности, что там под капотом. Спросят про сортировки. Очень популярен вопрос про различные кейсы сортировок огромных файлов и поиск в уже отсортированных файлах нужного элемента, где бинарным поиском не обойтись.

4.Scala Core. Иерархия типов, иерархия коллекций, система типов, Nothing/Null. Где-то спрашивали, как реализован Nothing и как получается, что он подтип всех? Часто собеседующие спрашивают про вариантность, просят рассказать про кейсы, дают какие-нибудь задачки на расставления вариантности у типов. Задают вопросы про тайп классы, тайп конструкторы, экстеншен методы, функции и типы высшего порядка, виды имплиситов, зачем это все нужно и области применения.

For comprehension: во что раскладывается, что будет, если не написать yield, дают различные примеры, где типы не совпадают и спрашивают, будет ли работать, во что превращается в байткоде.

Pattern matching: что нужно, для того, чтобы это работало. Отсюда вопросы про алгебраические типы данных, как они реализованы в Scala и почему именно так. Ещё нужно быть готовым объяснить, чем Scala тебя так привлекла. Рассказать о плюсах и минусах.

#scala
5.Функциональщина. Если на проекте используется ФП, а на позициях чисто по Scala(not better Java) ФП используется почти всегда, аналогом вопроса про HashMap является разбор Монады, рассказ про чистые функции и ссылочную прозрачность. Причем в теорию категорий никто не лезет. Возможно, спрашивают на собеседованиях Senior Scala. Достаточно рассказать на прикладном уровне что такое Монада, от кого она "наследуется", зачем нужна, что дает. Отсюда вытекают вопросы про Аппликативы, Функторы, Моноиды и различные реализации в Scala. Если вы использовали какие-то библиотеки, типа Cats/Scalaz/ZIO/Monix, то обязательно и по ним спросят, но очень поверхностно.

6.Архитектура. Обязательно будут вопросы про архитектуру. Попросят расписать все про последний проект. Рассказать, почему реализовано так, а не иначе, что хотел бы улучшить и пр. Дают задачу на разработку архитектуры под различные бизнес-задачи. Но в большинстве случаев все сводится к распределенным системам и отсюда вытекает много вопросов по оптимизации таких систем и доп вопросы по алгоритмам, Например, как реализовать транзакционность для распределенных хранилищ данных или назвать алгоритмы распределения обработки одного бесконечного входного потока данных несколькими потоками приложения.
После полутора часов первой обязательной части собеседования идут проектно-специфические вопросы. Их обычно задают и на Java и на Scala-собеседованиях.

7. Kafka и другие. Одни из самых популярных вопросов - это Kafka. Любят спрашивать, почему она так популярна, чем отличается от других очередей и очередь ли это вообще? Для чего там партиции и топики, можно ли без них, какие гарантии дает Kafka. Еще спрашивают про Spark/MapReduce, но далеко не идут. Про RDD, HDFS, этапы MapReduce, проблемы, с которыми сталкивались, их способы решения. Из deprecated вещей бывает что-нибудь про акку. Например, какой пул используется внутри, как акторы хранят очередь задач и взаимодействуют друг с другом, можно ли стейт менять. Как правило функциональное программирование и BigData вместе не дружат, поэтому про это и спрашивают мало где.

8. SQL. Про SQL спрашивают далеко не везде. Просят организовать хранение данных для разных кейсов. Например, профили пользователей, которые можно лайкать. SQL/NoSQL ли это будет? Какие таблицы нужны? Какие связи будут? Потом могут попросить написать хитрый SQL запрос для выгрузки данных из твоей же только что созданной БД. И благодаря таким вопросам могут указать на ошибки. Популярен такой вопрос: очень долго выполняется SELECT, ваши действия? Сразу намекну, что проставления индексов, просмотр плана запроса, выпиливание JOIN из запроса недостаточно. Редко всплывают вопросы про ACID/BASE и уровни изоляции транзакций.

9. REST/SOAP. Попадаются вопросы по REST/SOAP и протоколам, которые они используют. В основном про TCP/UDP и HTTP. Например, когда нужен UDP, а когда TCP? Назвать примерно хотя бы уровни OSI. Методы HTTP, какие гарантии дает GET, а какие POST, их различия, какие где надо использовать. В задачах про архитектуру часто просят написать API и объяснить почему здесь POST, а не GET или наоборот.

10. DevOps. Для любителей Devops-практик есть плохая новость. Про это нигде не спрашивают. Из 17 компаний меня спросили только в одном месте что-то про K8s и Docker. И то, поняли, что я ничего про это не знаю, но в итоге все равно оффер прислали.
Java Developer pinned «Java to Scala. Вопросы с собеседований Недавно у меня друг перешел на Scala-проект. Он готовился две недели, прошел 17 собеседований, получил 7 офферов. До этого у него было два года коммерческого опыта на java-проекте. Я попросил его расписать, что спрашивают…»
AlphaZero

Начал читать «21 урок для 21 века». Решил поделиться отрывком про AlphaZero, который меня удивил. Может кто тоже не в теме

Уже давно никого не удивляет, что компьютер способен обыграть человека в шахматы, но 7 декабря 2017 года алгоритм AlphaZero компании Google выиграл у Stockfish 8, чемпиона мира 2016 года среди компьютерных программ. Stockfish 8 имела доступ к опыту, накопленному человеком за сотни лет игры в шахматы, а также к данным шахматных программ за несколько десятков лет. Она могла просчитывать 70 миллионов шахматных позиций в секунду. Скорость вычислений AlphaZero составляла лишь 80 тысяч операций в секунду, и создатели программы не обучили ее шахматной стратегии – даже стандартным дебютам. Осваивая шахматы, программа AlphaZero использовала самые современные методы машинного обучения, играя сама с собой. Тем не менее из ста партий, сыгранных со Stockfish 8, новичок AlphaZero выиграл 28 и свел вничью 72. Ни одного проигрыша! Поскольку алгоритм AlphaZero не учился у человека, многие из его выигрышных ходов и стратегий выглядят весьма необычно. Их с полным основанием можно назвать творческими – если не гениальными.

Угадайте, сколько времени потребовалось AlphaZero, чтобы научиться играть в шахматы, подготовиться к матчу с Stockfish 8 и развить у себя гениальную интуицию? Четыре часа. Это не опечатка. Столетиями шахматы считались одним из высших достижений человеческого разума. Программа AlphaZero за четыре часа без какой бы то ни было помощи со стороны человека проделала путь от полного незнания до вершин мастерства.
Внутренние митапы

Мы тут внутри отдела наконец решили организовать внутренние митапы. Договорились по четвергам после работы собираться на час-два, чтобы обсудить какую-нибудь тему.

Формат такой — сначала докладчик выступает на выбранную тему, а потом все вместе дискутируем. Тема может быть любой — от внутреннего устройства проекта до супер модной технологии.

Профит пока не могу назвать какой-то. Но мне уже это нравится, так как шэринг знаний отличная штука для прокачивания команды.
Митапы в стартапах

Вспомнил, что на прошлой работе у нас такие митапы организовывались почти каждую пятницу. Иногда они перерастали в посиделки на пуфиках под пиво и пиццу. Выступают почти все: программисты, аналитики, дизайнеры, менеджеры. Самое интересное, что компания сама стимулирует такие активности.

Во-первых, в зависимости от грейда сотруднику предоставляют сумму, которую он может потратить на курсы, конференцию, другой вид обучения. Но есть условие — после прохождения курса, нужно подготовить доклад и поделиться знаниями с коллегами.

Во-вторых, выступающим на портале начисляют внутреннюю валюту. Условно, один доклад — 500 коинов, которые можно потом обменять на рубли и потратить на свои нужды.

В-третьих, у каждого сотрудника есть план развития на полгода. И обычно одна из целей — организовать митап.

А у вас в компании проводятся митапы?
В «Яндекс.Такси» появился рейтинг пассажиров
Java Developer
В «Яндекс.Такси» появился рейтинг пассажиров
Для тех, кто не в теме, это кадр из Чёрного зеркала (3 сезон 1 серия). В этой серии показывается мир, где у каждого человека есть социальный рейтинг. И от этого рейтинга зависит всё: подвезёт ли таксис, выдадут ли тебе кредит, как будут относиться коллеги на работе, пригласят ли друзья на свадьбу.

Цените фрагмент из серии - https://youtu.be/ykLVwV9uGtQ
Про инстаграм

Хочу поделиться наблюдениями:

Во-первых, эйчары теперь хантят и через инстаграм. Подписалась недавно на меня девушка и сходу пишет в директ «а не хотите к нам Джавистом заскочить?» (Дарья @daf_v, привет) Оказалось, что это наши подрядчики. А у большинства таких компаний соглашения не хантить разработчиков своих заказчиков. В итоге порекомендовал ей подписаться на канал, на этом и разошлись.

По-поводу «прослушки» в инстаграм. Наверно уже все про это читали/проверили на себе, что инстаграм слушает все разговоры. Звучит страшно, но теперь таргетинговая реклама стала настолько меткой, что мне показываются реально интересные мероприятия, хакатоны, митапы, сервисы, о которых я не узнал бы другими путями.

В рекламе часто показываются вакансии от Сбера, Альфы, Райфа и других. Но всё меркнет в сравнении с крутыми рекламами вакансий для разработчиков от Авиасейлс. Скину сюда скрин.

В общем пора прокачивать свой инстаграм. Подписывайтесь! instagram.com/zybkin Там ничего лишнего, только годный контент: мемы и еда. И немного офисных будней.
Вакансии от Авиасейл из сторис
В ближайшее время работаю
Anonymous Quiz
57%
Из дома 🏡
43%
Из офиса 🏢
Удаленка и карантин

Прикольно, как офисные сотрудники быстро и вынужденно перешли на удаленную работу. Не то чтобы кто-то сопротивлялся этому, но у руководителей часто есть сомнения, что люди из дома работают менее эффективно. Но вот благодаря общему карантину мы уже почти месяц на удаленке.

Респект парням из отделов техподдержки и сопровождения. Думаю, переходные дни были дико сложные. Особенно в крупных компаниях, где удаленная работа это исключительный случай. И тут за пару дней нужно перевести тысячи людей.

Месяц удаленки. Не думал, что так быстро привыкну. Проснулся, сделал зарядку, заварил чай, включил vpn, rdp и уже на работе. И никаких пробок и толкучек в метро. Эффективность тоже увеличилась. Отсутствие минусов опен спейсов этому способствовало. Спокойно сидишь пилишь задачи, а если нужно обкашлять срочный вопрос, то всегда можно позвонить.

Карантин внес и другие коррективы. Компании стали работать в минус. В моей, например, многих сотрудников перевели в режим простоя (айти отделы тоже). Простой - это приостановка работы по экономическим причинам и когда ты получаешь не менее 2/3 от зп. Дальше нам предложили на выбор проявить лояльность компании и работать или отдыхать. То есть можно не работать и получать 2/3 от дохода. Но почти все работают.

Пишите, как у вас поменялась работа в период карантина @zybkin
IT после кризиса

Судя по тому, что пишут в личку и по рассказам моих знакомых, во многих компаниях сокращают бюджеты и замораживают проекты. Объявляют, что в ближайшее время не будет индексаций зп и повышений в грейдах. Приостанавливают найм новых сотрудников. Но это сейчас, в коронакризис. Про то, что будет после кризиса, пока непонятно. На эту тему недавно посмотрел два интересных видоса от Димы SeniorSoftwareVlogger’а и Сергея Немчинского.

Что ждет программистов после коронавируса youtu.be/Dq9Qvhnf_iQ

Как отразится кризис на IT
youtu.be/iHphKrMxpH0
У меня после конференций скопилось несколько тестов от компаний. Чтобы они не лежали без дела в заметках, буду периодически публиковать их сюда.