Собеседования в крупные IT-компании почти всегда содержат алгоритмическую секцию — даже если вы собеседуетесь на позицию, в работе на которой алгоритмы возникать вряд ли будут. Ниже мы приводим пример задачи, с которой вы можете столкнуться на вашем следующем интервью. Мы расскажем, как эта задача решается, но мы настоятельно рекомендуем вам читать решение только после того, как вы попробуете решить задачу самостоятельно: во-первых, это отличная тренировка; во-вторых, вы лучше запомните решение, если придумаете его сами (не отказывайте себе в этом удовольствии!); в-третьих, даже если вы подумаете над задачей, но не решите её, время не будет потеряно: прочитав потом решение, вы лучше его поймёте и оцените его красоту.
Новости
МКБ Реактор глазами стартапа: как работает ускоритель и какой от него толк
Привет, Хабр! Меня зовут Дмитрий Ермолич, я работаю генеральным директором в компании KD-systems. Сегодня хочу рассказать всем товарищам-стартаперам об опыте нашей команды в бизнес-акселераторе МКБ Реактор. Вероятно, ребята из МКБ вдохновились примером швейцарского ЦЕРНа и создали свой ускоритель. Только не элементарных частиц, а финтех-проектов, чтобы привлечь для решения своих задач айтишников разных стран, взглядов и технологий. Посмотреть, что из этого вышло, приглашаю под кат.
Нейронная сеть для ведения боевых действий. Какая война может быть с технологически развитой страной?
Ежеминутные военные сводки наших СМИ непроизвольно в голове программиста преобразуются в технологические решения. Заранее скажем, что мы не выдаем военных тайн ничьих стран, а только излагаем наше видение автоматизации процесса. Хотя всегда надо помнить поговорку от компании Спецлаб: если к тебе пришла умная мысль, значит, она уже кем-то реализована.
Почему идентификация лиц невозможна — так, как этого хочет заказчик?
Кто все эти люди и кто из них я?
Запускаем DOS игру в браузере
В 2022 году мало кого можно удивить DOS игрой в браузере. Благодаря dosbox они доступны на многих платформах. А поддержка браузера появилась с развитием компилятора emscripten. js-dos один из самых заметных проектов портирования dosbox в браузер. Последняя версия js-dos уже имеет достаточную производительность для комфортной игры в такие игры как Duke, Doom, C&C, Red Alert, WarCraft и многие другие.
Как управлять распределенными командами, достигать целей и отвечать за результат — обсуждаем с Head of PMO СберМаркета
Глеб Корсунов, CBDO Holyweb, побеседовал с руководителем проектного офиса СберМаркета Дмитрием Ирешевым о том, как построить грандиозные планы и достичь их, и почему правильно организованная коммуникация сотрудников позволяет не потерять мотивацию.
Бесплатные инструменты на основе OpenAI Codex
Думаю, многие знают изобретение Codex от OpenAI. Это мощная нейронная сеть, которая может делать любые операции с программным кодом. Она бесплатна, но доступна ограниченному кругу лиц.
Мне удалось получить доступ к сие чуду. Я, как любитель всего открытого, решил косвенно дать людям доступ к Codex, поэтому я разработал сервис - CodeTools. С помощью него можно перевести код с одного языка на другой, упростить код, задокументировать код, дополнить код и многое другое...
Как мы научили AI писать тексты для бизнеса не хуже, чем копирайтеры
Привет, Хабр! Я Алексей, data scientist в Сбере, отвечаю за AI создание персонализированного маркетингового контента для разных каналов коммуникаций.
Как и другие подразделения Сбера, мы в трайбе «Массовая персонализация» создаём много текстового контента. Это тексты для СМС, пуш-уведомлений, e-mail, рекламные баннеры и прочее для СберБанка. (Да-да, это мы шлём вам эсэмэски!)
Мы хотели сделать этот процесс эффективнее — как по продажам, так и по затратам на производство контента. После того как SberDevices выкатили ruGPT-3, мы решили обобщить накопленные за несколько лет данные и доверить AI написание текстов для наших клиентов.
Получилось ли это? Спойлер: да, ещё как. Но обо всём по порядку.
История о том, как из проблемы у нас получилось хобби, профессия и заработок
Расскажу, как мы с одногруппником бросили работу в сфере IT и финансов и через год стали зарабатывать вдвое больше, работая на себя. Сначала напишу первую часть — о том, как мы бросали работу. А дальше посмотрим.
Делаем радио из Cyberpunk 2077
Я не ждал Cyberpunk 2077 десять лет, я даже не смотрел презентации на Е3 и трейлеров, а переносы меня не огорчали — мой компьютер все равно не удовлетворял системным требованиям. Так уж произошло, что через два месяца после релиза я обновил компьютер, а друг подарил мне цифровую копию игры.
С первых часов я проникся миром игры, противоречивым и жестоким, но по-своему красивым и привлекательным. Я наиграл уже более двух сотен часов, разведал, кажется, каждый уголок, пока выход сюжетных DLC задерживается. Значит, есть время «перенести» технику из игры в реальную жизнь. Я давно хотел сделать интернет-радио…
Одна слабая транзакция в ECDSA в блокчейне Биткоина и с помощью Lattice Attack мы получили Private Key к монетам BTC
Начнем с того что алгоритм цифровой подписи на эллиптических кривых (ECDSA) — это распространенная схема цифровой подписи, которую мы видим во многих наших обзорах кода. Он обладает некоторыми желательными свойствами, но также может быть очень хрупким для восстановления закрытого ключа с помощью атаки по побочному каналу, раскрывающей менее одного бита секретного одноразового номера.
ECDSA — это особая форма алгоритма цифровой подписи (DSA). DSA — это довольно распространенная схема цифровой подписи , которая определяется тремя алгоритмами: генерация ключа, подпись и проверка. Алгоритм генерации ключей генерирует закрытый и открытый ключи; закрытый ключ отвечает за создание подписей; а открытый ключ отвечает за проверку подписей. Алгоритм подписи принимает в качестве входных данных сообщение и закрытый ключ и создает подпись. Алгоритм проверки принимает в качестве входных данных сообщение, подпись и открытый ключ и возвращает значение true или false, указывая, является ли подпись действительной.
DSA определяется для любой математической группы, и эта схема безопасна до тех пор, пока проблема дискретного логарифмирования сложна для этой группы. Обычно используемая группа представляет собой целые числа по модулю простого числа p . Наряду с этой группой у нас будет генератор группы g и некоторая криптографически безопасная хэш - функция H. Мы можем предположить, что p , g и H будут общеизвестны.
Генерация ключей работает, сначала случайным образом выбирая значение x из целых чисел по модулю p . Затем вычисляется значение y = g x mod p . Закрытый ключ подписи имеет значение x , а открытый ключ — y . Ключ подписи должен храниться в секрете, поскольку именно он позволяет делать подписи.
Нирвана и нейробиология: как создать потребительскую ценность
ПМЭФ пестрит заявлениями о возможностях для бизнеса. Только ленивый не вспомнил набивший оскомину стереотип о возможностях в эпоху перемен. Чем обернется освоение этих самых возможностей? Только бы не тоннами однотипных товаров, состряпанных на скорую руку с одной только целью — занять пустое место на полке. В общем, не хочется на те же самые грабли.
Под граблями я имею в виду материалистический подход к потребительскому спросу. Как у нас принято считать? В ситуации дефицита, главное это продукт, его технические характеристики и свойства. А всякие там UI и UX, клиентский опыт опять же, все от лукавого. Вот это вот залихватское «ну, а че там такого, создайте русский айфон»…Ну создайте, че там такого?
Создать русский айфон совсем не просто. И дело здесь не в том, что нет у нас комплектующих, инженеров или технологий. Отнюдь. Народ, который сам летает в космос и подвозит туда большую часть планеты, не только в айфон может. Проблема совсем в другой плоскости. Плоскость эта называется создание ценности.
Ценность определяет выбор и влияет на принятие решений. Конечно, если этот выбор есть. На всякий случай сделаю оговорку, не та ценность, которая мертвым грузом лежит в томах по стратегическому развитию. Речь идет о ценности, которая активирует центр удовольствия в подкорковых структурах головного мозга. Несмотря на эфемерность понятия, ценность имеет вполне себе материальный субстрат и представлена в виде целого набора нейромедиаторов: дофамин, окситоцин и эндорфины.
Процесс выбора и принятия решения принято выражать через незатейливое уравнение, решение = ценность — боль. Где ценность это совокупность психологических полезностей по Канеману, а боль — это препятствия на пути обладания этой самой ценностью. Решение этого уравнения происходит каждый раз, когда необходимо сделать выбор или принять решение. Как это происходит?
Выход из ада зависимостей: взгляд iOS-разработчика
Как не попасть в ад из внешних зависимостей? Как сделать так, чтобы проект собирался с одинаковыми версиями зависимостей на машинах разных разработчиков? Рассказываем, зачем нужны менеджеры зависимостей и как ими пользоваться правильно.
Понимание общих принципов поможет не только iOS-разработчикам: у всех менеджеров зависимостей проглядывается общая схема фиксации версий, и требования к распространяемым утилитам во многом похожи.
CANON 7 LTM. Дальномерный флагман от CANON, родом из 60-х
И я решил начать писать свои субъективные обзоры и проводить тест-драйвы интересных экземпляров, тем более, что информации про некоторые из них в рунете не так много.
Начать я хотел бы с фотоаппарата, который попал ко мне последним(на момент начала написания сего опуса, который затянулся на полгода) — это флагманская дальномерка от Canon родом из 1960-х — Canon 7.
Метод CI/CD: чистый код и строгая дисциплина
Оперативная подготовка программного продукта к релизу — ключевое конкурентное преимущество во многих отраслях бизнеса. Кто сможет быстро предоставить качественный продукт займет лидирующие позиции. Поэтому в основе тестирований современных компаний, которые растут и гибко реагируют на любые изменения, лежит методология непрерывной интеграции и доставки (CI/CD). Их IT-команды используют Agile-подход при разработке программного обеспечения, а CI/CD — одна из подобных практик, но именно по части DevOps. Она позволяет проводить различные тесты на каждом этапе (интеграция) и завершать их запуском с развертыванием закомиченного кода в фактический продукт, который уже могут увидеть конечные пользователи (доставка). Основные возможности, которые появляются при использовании этой концепции — отследить ошибки и оперативно их устранить, а также написать качественный и чистый код.
Как мы снимали второй сезон ITить-колотить
Четыре года назад мы неожиданно для самих себя решились на создание мини-сериала про борьбу админа, ИТ-руководителя, генерального директора с мировыми катаклизмами, проверяющими органами, собственным раздолбайством и массовым эгоизмом. Множество допущенных по неопытности ошибок не помешали создать интересный продукт — общее число просмотров первого сезона немного не дотягивает до полумиллиона.
В 2021 году Cloud4Y решил повторить этот опыт. Делимся историей о том, как мы создавали второй сезон.
Модуль vs Компонент
Чем модуль отличается от компонента. Чем схема модулей отличается от схемы компонентов.
Рис. 1. Три проекции описания системы по стандарту ISO 81346-1
Очень часто сталкиваюсь с тем, что даже опытные инженеры, да и не только они путают эти понятия. Хотя есть четкие стандарты (например ISO 81346) которые определяют их. Если вы будете гуглить, то зачастую схема компонентов может называться схема модулей, а схема модулей — схемой компонентов. Так в чем же разница, и как их отличить?
Виртуальный COM-порт на STM32 или как управлять контроллером через USB не привлекая внимания санитаров
Написать эту статью меня сподвигли те сложности, которые пришлось пройти в попытке разобраться, как же именно ядро контроллера STM32F103 работает с драйвером USB, который находится на борту. Имеющиеся туториалы по созданию устройств, в том числе и композитных, в основном сфокусированы на особенностях использования библиотек. Но когда оставшегося места в памяти контроллера мало а парамеры его работы полностью предсказуемы, лучшим решением становится написать собственный обработчик прерываний. А для этого нужно понять,
Разнообразный арсенал социальной инженерии: виды атак и способы их предотвращения
Слышали ли вы про такие виды информационных атак, как Baiting, Honey Trap, Scareware, Water Holing, Quid pro Quo? В этой статье рассмотрим их и ряд других, в том числе различные виды фишинга, а также приведём громкие примеры атак и расскажем про эффективные способы защиты от них.
Инспекция кода: заводим врагов
Когда всё делается правильно, инспекция кода – отличный инструмент для улучшения качества кода и распространения базовых знаний внутри команды. Но если делать всё неправильно, она может отравить человеку существование. Так что это отличный полигон для отмщения через пассивную агрессию. У коллеги всё слишком хорошо получается? Или он вечно выливает себе остатки кофе, а новый не заваривает? Или как-то раз три гола назад не поздоровался с вами, потому что не заметил, что вы в офисе? Пришло время отплатить за всё сполна при помощи инспекции кода!