Русский
Русский
English
Статистика
Реклама

Впечатления

Приключение в один день или One Day Offer от Яндекса

30.05.2021 14:10:27 | Автор: admin

Вступление

Привет, Хабр. Недавно я получил оффер от Яндекса за один день и, не буду скрывать, я этому очень рад. Поэтому мне захотелось поделиться с сообществом своим опытом и мыслями относительно One Day Offer от Яндекса (в дальнейшем ОДО).

Начну с того, что название сия мероприятия вполне описывает его суть. За один день ты проходишь два собеседования и несколько финалов (о них поговорим позже) и в тот же день, если со всем справился, получаешь оффер. Звучит хорошо, но так ли оно на самом деле? Оказалось, что да, все происходит именно так. Никакого ожидания по несколько месяцев и никакой неопределенности по количеству интервью. Всё действительно происходит так быстро, и это, я считаю, очень круто.

Что это

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

Лично я участвовал в ОДО для мобильщиков, поэтому буду рассказывать про опыт участия именно с точки зрения мобильщика :)

Контест

На самом деле, чтобы попасть на ОДО, нужно для начала успешно пройти несложный контест. Времени на него дается предостаточно: с момента регистрации на ОДО до того дня, когда будут проводиться собеседования.

В моем случае контест состоял из двух задач: одна алгоритмическая и одна на платформу. По ощущениям, алгоритмическая задача была на уровне easy задач с литкода, так что с ней я справился примерно минут за 30. Правда потом потратил ещё 20 на попытку оптимизировать написанное, поскольку у задачи был follow up - написать решение, которое будет использовать константное количество памяти. Такое решение у меня написать не получилось, но это оказалось не критично. Перейдем к более интересному - задаче по платформе. Поскольку я Android разработчик, задание у меня было, что логично, по андроиду. Само по себе задание абсолютно не сложное, но очень интересное. Передо мной был код активити и нужно было перечислить все ошибки, допущенные в этих 30 строчках кода. Разбираться в коде я люблю, поэтому задание принесло мне сплошное удовольствие, и я сидел с ним все оставшееся время, дабы найти вообще все недочеты, которые там есть, и пояснить каждый. Не уверен, что нашел все, но, тем не менее, с заданием я справился и меня пригласили на ОДО.

Приветствие

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

На приветствии Дима Макаров (руководитель группы Android в Маркете) и Юра Кочарян (руководитель группы Android в Дзене) рассказали немного про Яндекс и провели для нас небольшую Q&A сессию. А ещё мы увидели вот такой вот интересный кадр

Нас заверили, что это чистая случайность, и я, пожалуй, оспаривать это не буду :)Нас заверили, что это чистая случайность, и я, пожалуй, оспаривать это не буду :)

После приветствия началось первое собеседование - платформа. И мы плавно переходим к нему.

Собеседование по платформе

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

  • Классы в Kotlin

  • Clean Architecture in Android

  • Способы хранения данных (простые и сложные вопросы)

  • Жизненный цикл View и его API

  • Intents

  • Приоритеты OOM Killer

  • Асинхронная работа в Android

  • Serializable vs Parcelable

  • Производительность базовых ViewGroup

  • MV* паттерны

  • RxJava

  • WorkManager и Services

Все вопросы были +- стандартные, и напрягся я только на вопросах по Rx и многопоточности, поскольку в этих темах я не очень хорошо разбираюсь. В общем, если знал - отвечал, если не знал - честно признавал это.

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

Собеседование по кодингу

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

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

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

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

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

Финалы

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

И уже через полтора часа после завершения финала я получил заветный оффер от Яндекса.

Заключение

Вот, как-то так и прошел мой One Day Offer. Также я нигде не упомянул, что на протяжении всего мероприятия на связи были рекрутеры Яндекса, которые сообщали фидбэк по собеседованиям и расписание, за что им отдельное спасибо. Ещё одним приятным бонусом стал промокод на Яндекс Еду, чтобы "ожидание обратной связи было приятным". В общем, мероприятие крутое, и я всем советую в нем участвовать. Надеюсь мой опыт и впечатления от ОДО будут полезны будущим кандидатам и помогут организаторам сделать это мероприятие ещё лучше.

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

Подробнее..

Перевод От инвалида до киборга при помощи руки с ИИ

26.04.2021 18:04:48 | Автор: admin

Будущее здесь безо всяких преувеличений. В нашей публикации Третий глаз для незрячих рассказывалось о том, как можно облегчить жизнь незрячим людям при помощи нескольких ультразвуковых сенсоров. Сегодня рассказываем о кибернетической руке на основе глубокого обучения, точность вычислений которой составляет более 95 %. Также в статье есть впечатления смельчака, решившегося опробовать технологию на себе. Именно его вы видите на КДПВ.


Послушать историю [на английском] можно на SoundCloud

На этой неделе появилось 600 новых статей об архитектуре Transformer. Как мне быть? Случайным образом выбрать из них несколько, опубликовать у себя практически без изменений (не считая каких-то мелочей) и, возможно, чуть-чуть улучшить?

Надеюсь, вы не слишком обескуражены таким вступлением, но прошу понять меня правильно: архитектура Transformer сегодня настолько популярна, что сообщения о ней забивают все другие. Само собой, это потрясающая архитектура, она может оказаться чрезвычайно полезной во многих случаях, и недаром большинство исследователей сходят по ней с ума, но в области искусственного интеллекта (ИИ) есть и другие вещи, и, поверьте, не менее, а даже более увлекательные! Не стоит волноваться, я, естественно, буду рассказывать о впечатляющих проектах, созданных на базе архитектуры Transformer, применяемой в NLP, машинном распознавании образов и во множестве других областей. Я считаю эту архитектуру весьма перспективной, но просто пересказывать содержание новых работ, внося в них лишь косметические изменения, для меня не так интересно.

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

Связанная статья. Сможет ли архитектура Transformer заменить CNN в машинном распознавании образов?

Обратимся же теперь к настоящей теме этой статьи! Тема эта не имеет никакого отношения ни к архитектуре Transformer, ни даже к GAN, в ней нет никаких модных словечек (за исключением, пожалуй, слова "киберпанк"), но, тем не менее, это одно из самых крутых применений ИИ, с которыми я сталкивался в последнее время! Эта штука способна решать насущные проблемы многих людей и круто изменить их жизнь к лучшему. Конечно, она работает не так эффектно, как, например, превращение человеческого лица в персонажа аниме или мультфильма, зато ничто не сравнится с её полезностью.

Представляю вашему вниманию "Портативный автоматический ручной нейропротез с управлением пальцами на основе методов глубокого обучения", авторы: Nguyen, Drealan и др. Или, выражаясь словами одного из авторов, перед вами рука "киберпанка"!

Но сначала хочу напомнить о бесплатном мероприятии NVIDIA GTC, которое должно состояться на следующей неделе. Вы узнаете множество интересных новостей из мира искусственного интеллекта, а если подпишетесь на мою новостную рассылку, вас ждёт приз от Института глубокого обучения, которым я руковожу. Если вас заинтересует это предложение, можете ознакомиться с моим предыдущим видео, в нём я говорил об этом призе.

Теперь давайте более подробно ознакомимся с этой уникальной и поражающей воображение новой работой.

В этой работе на нейропротез накладываются технологии глубокого обучения, позволяющие контролировать в реальном времени движения отдельных пальцев протеза. Человек, потерявший руку 14 лет назад, теперь может двигать искусственными пальцами, как на обычной руке! Задержка прохождения команд составляет от 50 до 120 миллисекунд, точность движений от 95 до 99 %. Из этой работы следует, что встраивание технологий глубоких нейросетей непосредственно в носимые биомедицинские устройства не только возможно, но и чрезвычайно эффективно!

Настоящий киборг!Настоящий киборг!

В данном случае был использован модуль NVIDIA Jetson Nano, специально разработанный для развёртывания систем ИИ в автономных приложениях. Это позволило использовать GPU и мощные библиотеки, такие как TensorFlow и PyTorch, внутри самого манипулятора. Авторы проекта говорят: "При реализации нашего нейронного декодера мы отыскали самый подходящий компромисс между размерами, мощностью и производительностью". Главная цель данной работы решить проблему эффективного развёртывания нейронных декодеров глубокого обучения на портативном устройстве, используемом в реальных приложениях, для долгосрочного применения в клинической практике.

НейропротезНейропротез

Естественно, есть много технических тонкостей, о которых я здесь рассказывать не буду (какой из меня специалист!). Например, я не буду рассказывать о том, как соединяются друг с другом нервные волокна и биоэлектронные элементы, какие применяются микросхемы, позволяющие одновременно осуществлять нейронную запись и стимуляцию, или как реализованы программное и аппаратное обеспечения, обеспечивающие работу системы декодирования двигателя в реальном времени. Если вы захотите узнать больше об этом, можете обратиться к описаниям соответствующих работ, их можно легко найти по ссылкам. Давайте просто рассмотрим принципы глубокого обучения, реализованные в этом удивительном изобретении. Инновационная идея заключалась в оснащении системы декодирования двигателя технологиями глубокого обучения, что позволило снизить вычислительную нагрузку на платформу Jetson Nano.

Схема NVIDIA Jet NanoСхема NVIDIA Jet Nano

На рисунке показан поток обработки данных платформой Jetson Nano. Сначала данные в виде сигналов периферических нервов от ампутированной руки отправляются на платформу. Эти данные предварительно обрабатываются. Этот шаг очень важен: берётся выборка входных необработанных нейронных данных, после чего система рассчитывает их основные характеристики во временной области, а затем загружает в модели. Такие предварительно обработанные данные соответствуют основным характеристикам нейронных данных односекундной давности, полученных от ампутированной руки и очищенных от источников шума. Затем эти прошедшие обработку данные передаются в модель глубокого обучения, и на выходе получается конечный результат возможность управления движением каждого пальца. Всего наборов выходных данных пять, по одному на каждый палец.

Как в реальности работает использованная авторами модель? В её основе лежит применение свёрточного слоя. Такой слой используется для идентификации различных представлений входных данных. В данном случае количество свёрток равняется 64. Эти свёртки были получены с использованием различных фильтров, то есть всего имеется 64 различных представления.

Фильтры представляют собой сетевые параметры, которым система обучилась во время тренинга для правильного управления протезом после его подсоединения. Мы знаем, что время в данном случае является крайне важным фактором, так пальцы должны двигаться плавно, поэтому для представления такого зависящего от времени аспекта при декодировании данных были выбраны управляемые рекуррентные блоки (GRU).

Блоки GRU сообщают модели, что делала рука в последнюю секунду (что было закодировано сначала) и что ей нужно делать дальше (что декодируется в настоящее время). Говоря простым языком, GRU это не что иное, как улучшенная версия рекуррентных нейронных сетей, или RNN.

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

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

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

Мы получили общее представление о работе и точности модели, но остался ещё ряд вопросов. Например, что ощущает человек, пользующийся нейропротезом? Насколько реальны его ощущения? Насколько качественно работает протез? В общем, всех интересует вопрос: может ли такой протез заменить настоящую руку?

Вот, что рассказывает сам пациент:

Я понимаю, что эта штука ещё требует доработки. В ней должно быть больше "жизненных" функций для выполнения повседневных задач, чтобы можно было не задумываться о том, в каком положении находится рука и в каком режиме она запрограммирована. Надо чтобы она работала так: увидел, дотянулся и взял. [...] В идеале я должен ощущать на теле не протез, а обычную руку. Я полагаю, мы до этого дойдём. Я верю в это!

Для меня данное изобретение самый невероятный пример применения технологий искусственного интеллекта.

Это изобретение способно повысить качество жизни человека, и нет ничего почётнее этой цели. Надеюсь, вам понравилась эта статья. Также можете посмотреть видеоверсию, где можно своими глазами посмотреть на движения настоящей руки киборга. Спасибо, что прочитали статью. В видеоролике об этом уже говорилось, но я повторю здесь: "Это безумно круто!"

Менять весь мир это очень большая цель и она практически недостижима. Но нам вполне по силам изменить некоторую его часть. Такие протезы и ПО для них могут сделать мир лучше для многих людей, которые по каким-то причинам лишились части тела. Если для реализации ваших задумок не хватает знаний можете обратить внимание на наш расширенный курс по Machine Learning и Deep Learning и возможно именно вы научите протезы откликаться на малейшие нервные импульсы.

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы Ссылки
  • [1] Nguyen & Drealan et al. (2021) A Portable, Self-Contained Neuroprosthetic Hand with Deep Learning-Based Finger Control.

  • [2]. Luu & Nguyen et al. (2021) Deep Learning-Based Approaches for Decoding Motor Intent from Peripheral Nerve Signals.

  • [3]. Nguyen et al. (2021) Redundant Crossfire: A Technique to Achieve Super-Resolution in Neurostimulator Design by Exploiting Transistor Mismatch: https://experts.umn.edu/en/publications/redundant-crossfire-a-technique-to-achieve-super-resolution-in-ne

  • [4]. Nguyen & Xu et al. (2020) A Bioelectric Neural Interface Towards Intuitive Prosthetic Control for Amputees

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru