Как стать автором
Обновить
-17
0
Антон Нехаев @nehaev

Пользователь

Отправить сообщение

Без одной faangи или как я проходил собеседования

Время на прочтение14 мин
Количество просмотров30K

Привет, Хабр! Меня зовут Рустам, работаю программистом 9 лет. 7 лет работал в Контуре и около 2 лет в Яндексе. В этой статье расскажу про свой опыт подготовки и прохождения собеседований в большие технологические компании, поделюсь рекомендациями.

Пробовался в Facebook, Apple, Amazon, Microsoft, Google. Пять попыток: четыре на бэкенд программиста, одна на инженера по инфраструктуре. Два предложения по работе, два отказа, одно потенциальное предложение.

Принял предложение в Amazon. Сейчас в Лондоне.

Читать далее
Всего голосов 82: ↑79 и ↓3+76
Комментарии27

ДА вздрогнет FAANG* или [практическое руководство] по поиску работы в США/Европе для айтишника

Время на прочтение5 мин
Количество просмотров24K
*FAANG — акроним 5 крупнейших tech компаний (Facebook, Apple, Amazon, Netflix and Google), предоставляющих одни из самых хороших возможностей для разработчиков, которые мечтают/планируют/хотят приобщиться к волне IT-эмиграции.

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

К сожалению, на практике подобный процесс поиска работы часто заканчивается неудачами. Сайты со списком вакансий — один из самых низкоэффективных способов, по крайней мере в США.

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

image
Читать дальше →
Всего голосов 28: ↑21 и ↓7+14
Комментарии27

Почему ты не станешь программистом

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров110K

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

Читать далее
Всего голосов 99: ↑85 и ↓14+71
Комментарии316

Глубокое погружение в Java Memory Model

Время на прочтение53 мин
Количество просмотров127K


Я провел в изучении JMM много часов и теперь делюсь с вами знаниями в простой и понятной форме.


В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.

Читать дальше →
Всего голосов 109: ↑109 и ↓0+109
Комментарии60

Сравнение подходов к реализации распределенных транзакций для микросервисов

Время на прочтение21 мин
Количество просмотров40K

Как архитектор-консультант в Red Hat, я имел возможность поработать над множеством проектов для наших клиентов. У каждого из них есть свои особенности, которые, однако, имеют некоторые общие черты. Большинство клиентов хотят знать, как скоординировать запись в несколько систем одновременно. Ответ на этот вопрос обычно включает подробное объяснение двойной записи, распределенных транзакций, современных альтернатив, а также возможных сценариев сбоев и недостатков каждого подхода. Как правило, именно в этот момент заказчик понимает, что разделение монолитного приложения на микросервисы - долгий и сложный путь, обычно требующий компромиссов.

Читать далее
Всего голосов 36: ↑36 и ↓0+36
Комментарии9

Основы Java Bytecode

Время на прочтение29 мин
Количество просмотров29K

Внимание, статья содержит довольно много картинок и получилась довольно тяжелой и объемной

Как и многие базовые вещи на habr уже были статьи о bytecode, основные же отличия данной статьи - в попытке визуализировать, что происходит внутри, и краткий справочник инструкций (может кому пригодиться), многие с примерами использования.

В данной статье будут рассмотрены только основы Java Bytecode. Если вы уже знакомы с его основами, статья вряд ли будет вам интересна.

Вглубь
Всего голосов 14: ↑14 и ↓0+14
Комментарии5

Как нанять трех разработчиков Scala в штат за три месяца

Время на прочтение5 мин
Количество просмотров4.7K
Безработица, замена человека роботами, сокращения, невозможность найти стабильную и регулярно и хорошо оплачиваемую работу – о чем это они? Что за фантастика? Или эта статья родом из советского прошлого – о том, как тяжело жить при капитализме?

Сегодня ИТ-компании страдают от нехватки ИТ-специалистов, HR-ы придумывают все новые «плюшки» и организуют максимально дружелюбную и комфортную среду для работы ИТ-специалистов, разработчиков, DevOps-ов, аналитиков, которые диктуют правила рынку труда. Во всех соцсетях слышны стенания рекрутеров и HR-ов – где искать ИТ-специалистов, как их заманить на вакансию, а потом удержать и не повышать зарплату каждый квартал? Каждый ищет свои пути выполнения плана по найму. Расскажу про наш опыт – как мы решили вопрос с наймом Scala-разработчиков в 2020 году.

Началось все, когда мы поняли, что нанять трех Scala-разработчиков с рынка быстрее, чем за полгода, а в реальности и за все три квартала, мы не сможем. Поэтому решили пойти по пути «сделай сам» и задумались о внутреннем бесплатном курсе для студентов, а также для желающих переквалифицироваться в Scаla-разработчиков. Вы ведь тоже мечтаете стать Scаla-разработчиком? Нет??? Странно…


Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии5

13 звуков и интервалов. Их восприятие и обозначение. Лады отклонения и модуляции

Время на прочтение11 мин
Количество просмотров16K

Вторая статья цикла "Природа музыкальных ощущений". В ней продолжение вскрытия внутреннего содержания музыки - обоснование и объяснение эмпирических ощущений которые производят лады, звуки и музыкальные интервалы. Также подробно объясняю происхождение и логику названий звуков(нот) и интервалов.

Читать далее
Всего голосов 18: ↑14 и ↓4+10
Комментарии56

Мой уход из Яндекса, как не потерять мотивацию за полгода подготовки в FAANG и реджект в Google

Время на прочтение12 мин
Количество просмотров103K

Мой уход из Яндекса, как не потерять мотивацию за полгода подготовки в FAANG и реджект в Google.

Читать далее
Всего голосов 168: ↑158 и ↓10+148
Комментарии297

Сравнение библиотек логирования Log4j и Gflog. Управление памятью

Время на прочтение8 мин
Количество просмотров3K

Сложные системы логируют большой объем информации. Хорошо продуманные и детализированные записи могут помочь в поиске и устранении серьёзных проблем. У большинства систем нет ограничений, какое логирование использовать ― синхронное или асинхронное. И всё же многие высокопроизводительные системы обычно предпочитают использовать асинхронное логирование без мусора (garbage-free), чтобы избежать задержек при сборке мусора (GC events) и операциях ввода-вывода (IO operations). В этой статье мы заглянем под капот библиотек логирования Java Log4j и Gflog и посмотрим, чем они отличаются с точки зрения управления памятью. Мы узнаем, как они реализованы, чтобы максимально сократить создание короткоживущих объектов.

Читать далее
Всего голосов 3: ↑2 и ↓1+1
Комментарии2

Как проходят архитектурные секции собеседования в Яндексе: практика дизайна распределённых систем

Время на прочтение25 мин
Количество просмотров124K
Привет, меня зовут Костя Кардаманов, я работаю в отделе технологий разработки Яндекса. Обычно такой же фразой я приветствую и кандидатов на собеседовании. А сегодня я хотел бы рассказать вам, как и зачем мы проводим интервью по дизайну систем с бэкенд-разработчиками. Сразу скажу: для фронтендеров, мобильных разработчиков и ML-инженеров подобный тип собеседований применим слабо, так что эти специальности мы здесь обсуждать не будем.

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

Что такое дизайн информационных систем


Основная цель любой IT-компании — производить сервисы, которые решают задачи пользователей. Мы должны уметь собирать элементы системы в единый механизм, который будет эффективно выполнять поставленную цель, и если первый тип собеседований нацелен в первую очередь на проверку необходимого минимума, то интервью про дизайн систем проверяет достаточность навыков кандидата в достижении конечной цели. Далекому от IT пользователю принципы и устройство систем могут казаться бесконечно сложными, но мы, их разработчики, должны иметь (не обязательно детальное) представление о принципах функционирования и роли каждого компонента.

Опытный читатель может сказать — в мире полно платных и бесплатных решений, из которых я могу собрать систему как из деталей конструктора, зачем мне понимать устройство этих деталей?
Читать дальше →
Всего голосов 94: ↑92 и ↓2+90
Комментарии37

Миниатюрный датчик качества воздуха на батарейке с e-ink экраном

Время на прочтение6 мин
Количество просмотров27K
Приветствую всех читателей Habr! В своей сегодняшней статье, хочу рассказать вам о своем новом DIY беспроводном устройстве – датчике качества воздуха. Помимо оценки качества воздуха, датчик может оценивать уровень освещенности в помещении, температуру, влажность и атмосферное давление, на основе данных атмосферного давления, устройство может предсказывать прогноз погоды. Это полностью открытый проект.

Узнать подробности
Всего голосов 115: ↑106 и ↓9+97
Комментарии56

Диаграммы по управлению памятью в Java процессе

Время на прочтение2 мин
Количество просмотров4.2K

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

Читать далее
Всего голосов 13: ↑6 и ↓7-1
Комментарии8

Полезные консольные Linux утилиты

Время на прочтение13 мин
Количество просмотров107K

В этой подборке представлены полезные малоизвестные консольные Linux утилиты. В списке не представлены Pentest утилиты, так как у них есть своя подборка.


Осторожно много скриншотов. Добавил до ката утилиту binenv.


binenv — cамая интересная утилита для установки новых популярных программ в linux, но которых нет в пакетном менеджере.

Читать дальше →
Всего голосов 118: ↑114 и ↓4+110
Комментарии110

Руководство по возможностям Java версий 8-16

Время на прочтение15 мин
Количество просмотров41K

Последнее обновление: 05 апреля 2021 г.

Вы можете использовать это руководство, чтобы получить практическую информацию о том, как найти и установить последнюю версию Java, понять различия между дистрибутивами Java (AdoptOpenJdk, OpenJDK, OracleJDK и т. д.), А также получить обзор функций языка Java, включая версии Java версии. 8-16.

Читать далее
Всего голосов 26: ↑24 и ↓2+22
Комментарии23

Введение в неблокирующие алгоритмы

Время на прочтение8 мин
Количество просмотров22K

Неблокирующие алгоритмы широко применяются в ядре Linux когда традиционные примитивы блокировки либо не могут быть использованы, либо недостаточно быстры. Эта тема многим интересна и время от времени всплывает на LWN. Из недавнего — вот эта июльская статья, которая собственно и сподвигла меня написать свою серию. Ещё чаще разговор заходит про механизм read-copy-update (RCU — руководство 2007 года всё ещё актуально), подсчёт ссылок, и способы сделать более понятные, высокоуровные API ко всему этому разнообразию. Ну а сейчас вас ждёт погружение в идеи, стоящие за неблокирующими алгоритмами, а также их использованием в ядре.


Знание низкоуровневой модели памяти в целом считается продвинутым уровнем понимания, которого страшатся даже опытные программисты-ядерщики. Словами нашего редактора (из его июльской статьи): «Понять модель памяти можно лишь правильно повёрнутым мозгом». Говорят, что моделью памяти Linux (и файлом memory-barriers.txt в частности) можно пугать детей. Порой для достижения эффекта достаточно всего лишь рявкнуть “acquire” или “release”.


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

Читать дальше →
Всего голосов 39: ↑36 и ↓3+33
Комментарии60

Повесть о том, как один инженер HTTP/2 Client разгонял

Время на прочтение26 мин
Количество просмотров15K
На примере «JEP 110: HTTP/2 Client» (который в будущем появится в JDK) Сергей Куксенко из Oracle показывает, как команда его запускала, где смотрела и что крутила, чтобы сделать его быстрее.

Предлагаем вам расшифровку его доклада с JPoint 2017. В целом речь тут пойдет не про HTTP/2. Хотя, конечно, без ряда деталей по нему обойтись не удастся.


Всего голосов 45: ↑43 и ↓2+41
Комментарии5

Теория категорий для программистов: предисловие

Время на прочтение5 мин
Количество просмотров108K
Вот уже некоторое время я обдумываю идею написать книгу о теории категорий для программистов. Не компьютерных теоретиков, программистов — скорее инженеров, чем ученых. Я знаю, что это звучит безумно, и я сам достаточно напуган. Я знаю, что есть огромная разница между наукой и техникой, потому, что я работал по обе стороны баррикад. Но у меня всегда был очень сильный порыв объяснить вещи. Я восхищаюсь Ричардрм Фейнманом, который был мастером простых объяснений. Я знаю, я не Фейнман, но я буду стараться изо всех сил. Я начинаю с публикации этого предисловия, которое должно мотивировать читателя изучить теорию категорий, и надеюсь на начало дискуссии и обратную связь.

Я постараюсь в нескольких параграфах убедить вас, что эта книга написана для вас, и развеять все ваши сомнения в необходимости изучения этой, одной из самых абстрактных областей математики, в свое драгоценное свободное время.
Читать дальше →
Всего голосов 55: ↑51 и ↓4+47
Комментарии25

Cortex и не только: распределённый Prometheus

Время на прочтение17 мин
Количество просмотров8K

В последнее время Prometheus стал де-факто стандартом для сбора и хранения метрик. Он удобен для разработчиков ПО - экспорт метрик можно реализовать в несколько строк кода. Для DevOps/SRE, в свою очередь, есть простой язык PromQL для получения метрик из хранилища и их визуализации в той же Grafana.

Но Prometheus имеет ряд недостатков, способы устранения которых я хочу рассмотреть в этой статье. Также разберём деплой Cortex.

Ныряем
Всего голосов 6: ↑6 и ↓0+6
Комментарии8

Project Loom: Современная маcштабируемая многопоточность для платформы Java

Время на прочтение27 мин
Количество просмотров25K


Эффективное использование многочисленных ядер современных процессоров — сложная, но всё более важная задача. Java была одним из первых языков программирования со встроенной поддержкой concurrency. Ее concurrency-модель, основанная на нативных тредах, хорошо масштабируется для тысяч параллельно выполняющихся стримов, но оказывается слишком тяжеловесной для современного реактивного программирования с сотнями тысяч параллельных потоков.


Ответ на эту проблему — Project Loom. Он определяет и реализует в Java новые легковесные параллельные примитивы.


Алан Бейтман, руководитель проекта OpenJDK Core Libraries Project, потратил большую часть последних лет на проектирование Loom таким образом, чтобы он естественно и органично вписывался в богатый набор существующих библиотек Java и парадигм программирования. Об этом он и рассказал на Joker 2020. Под катом — запись с английскими и русскими субтитрами и перевод его доклада.

Всего голосов 33: ↑33 и ↓0+33
Комментарии32
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность