Обновить
32K+
169
Родион Горковенко@RodionGork

IT-энтузиаст

95,6
Рейтинг
119
Подписчики
Отправить сообщение

Собеседования в Яндекс и ВК (бэкенд, февраль 2026) — этапы, задачки, впечатления

Уровень сложностиПростой
Время на прочтение29 мин
Охват и читатели44K

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

Краткий вывод такой: описанные в той статье «обновления» присутствуют, но значительных изменений не ощущается. В конце выявился «один нюанс», который портит целесообразность процесса изначально (можно сразу пролистать в конец статьи если любопытно). Так что «обновлениям» впереди ещё немалый путь!

Читать далее

Про LRU-кэш (в том числе — на собеседовании) — 3 способа реализации

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели11K

LRU-кэш это популярная структура данных, хранящая пары ключ-значение, но в отличие от обычной "мэпы" ограниченная по размеру - более старые (least-recently-used) записи пропадают при переполнении. Он популярен и на собеседованиях (видимо как альтернатива заезженным алгоритмам сортировок). Собственно под влиянием небольшого спора с интервьюером и родилась эта заметка :)

Огорчает, что обычно подразумевают конкретно "классическую" реализацию с мэпой и двухсвязным списком. В некоторых языках (Java) даже в стандартную либу входит такая комбинация (LinkedHashMap).

А на деле способов реализации можно найти или придумать много - в этом смысле задачка тем и хороша что простор для "пошевелить мозгами" очень большой. Здесь мы покажем как от "классического" способа прийти к двум более простым вариантам (без списка - "с таймстемпами" или "с поколениями"). Как в инженерной практике так и на собеседовании - чем проще, тем лучше. И мы проанализируем и проверим, проседает ли быстродействие (а может наоборот улучшается?)

так проседает или улучшается?

Забавный парадокс отправки в канал в Go

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели9K

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

(UPD - нет не единственный, смотри примечание в конце - код более похожий на то что можно встретить в жизни)

Читать далее

Мелкий нюанс безопасности логина на примере Госуслуг

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели20K

Если внезапно пришла СМС‑ка «код для входа на госуслуги 314159» — какие обычно ваши чувства и действия? Если кратко — пароль, похоже, надо поменять — код приходит только после того как ввели правильный пароль, если не ошибаюсь.

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

Читать далее

Горе от Ума — почему IT-проекты пишутся долго и стоят дорого (иногда)

Время на прочтение6 мин
Охват и читатели16K

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

Готовится релиз. Сроки подходят. Мне скидывают странный баг: Наше приложение вдруг стало жаловаться на невозможность соединиться с соседним.

А почему не может? Защищённое соединение не устанавливается.

А почему не устанавливается? Файлы сертификатов для этого соединения не удаётся загрузить.

А почему файлы не грузятся? А потому что путь к файлам "отсутствует в конфигурации".

А если руками залезть и глазами посмотреть - присутствует. Чудеса! Эффект Шрёдингера!

Ну и что это за грязная магия?

Программирование Роботов — разбор задач «квалификации» соревнования от МТС — немного кода, видео и геометрии

Время на прочтение18 мин
Охват и читатели5.9K

Отборочный этап «TrueTechChamp» завершился и можно поговорить о подходах к задачам. Здесь будут описаны наивные решения программиста, почти незнакомого с робототехникой, впрочем, зато по всем трем задачам — из чего автор делает вывод что узкоспециальные познания тут не требуются — это развлечение доступное, в общем‑то, всем:‑)

Задачи были такие: 1) проехать по известному «лабиринту» из двух комнат с фиксированными препятствиями, то есть запрограммировать фиксированный маршрут — кое‑кто бился над этим неделю и больше — но всё же решений около сотни; 2) проехать неизвестный лабиринт из стенок под прямыми углами — с этим справились вчетверо меньше команд; 3) проехать по змеевидной платформе, используя камеру глубины, и не упасть за край — мне известно примерно о двух с половиной решениях её.

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

Погнали!

Закройте сокет, даже если он не открылся

Время на прочтение3 мин
Охват и читатели5.4K

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

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

Если вы создали сокет, попытались его открыть и отвалились по таймауту - не переиспользуйте его! Для новой попытки обязательно создавайте новый сокет!

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

Читать далее

Программирование Роботов от МТС — соревнование с педальным приводом

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели8.2K

Недавно МТС анонсировали очередное соревнование TrueTechChamp 2025 — в нём две части — одна с типичными «алгоритмическими» задачами, другая на «программирование роботов». Участвовать можно в любой (или в обеих), но с первой всё незамысловато — а мы поговорим о второй.

«Отборочный» этап продлится ещё больше 3 недель (до 20 октября), так что любой желающий может влиться. Эта заметка расскажет, в чём собственно заключаются задачи, и с какими сложностями мы сталкиваемся — также будут замечания организационного характера. Надеюсь это поможет тем, кто также захочет поучаствовать. Ну или просто поведает о происходящем для тех, кому любопытно, но регистрироваться неохота. Можно даже погонять роботов локально, без регистрации, скачав нужные материалы.

Читать далее

Простота и Гласность

Время на прочтение1 мин
Охват и читатели5.3K

В именах Masha, Rodion и Ekaterina насчитываем 2, 3 и 5 гласных букв — это всё простые числа. Гласными в рамках этой задачи считаются aouie, без y (хотя это дискриминация).

Представьте, даны две строки одинаковой длины, например abbas и abzac — они задают некий диапазон всевозможных строк (этой же длины) в алфавитном порядке:

abbas, abbat, ..., abyzz, abzaa, abzab, abzac

Сколько в этом диапазоне строк, имеющих «простое» количество гласных? Тут даже ребёнок легко сосчитает — всего 7289:)

А как посчитать если ограничение на длину строки — до 150 символов? Приглашаем попробовать новую задачу на CodeAbbey от Клайва Фрэйзера: Prime Vowel Count — она хороша тем что демонстрирует довольно общий подход к целому классу подобных задач (не обязательно даже про строки).

Читать далее нечего

Несколько занятных вопросов собеседований по Go

Время на прочтение3 мин
Охват и читатели20K

Наверное, многим знакомо - пишешь ты на языке (вот скажем, Go) уже не первый год - а на собеседовании всё равно найдут чем удивить :-) Вот поделюсь уловом последних дней - не смейтесь над моей наивностью - вдруг кому пригодится!

Читать далее

3 кусочка «сахара» к синтаксису языка Lua

Время на прочтение10 мин
Охват и читатели10K

Lua — симпатичный и хороший язык — умещает богатый функционал в очень маленькой реализации (интерпретатор и библиотека — это всего один исполнимый файл на 300кб) — и притом изначально ориентирован на «человечный» синтаксис. Хотя он не в топе популярности, но за простоту встраивания (помимо человечности и функциональности) он используется в ряде популярных проектов — от Roblox до Tarantool, например.

Однако есть мелочи которые несколько снижают радость от его использования. Когда я встроил его у себя на сайте для того чтобы сделать несколько «игровых» задач на программирование, пользователи высказывали неодобрение из‑за непривычного оператора неравенства, отсутствия комбинированных операторов присваивания и пр.

В этой статье мы разберемся как (и куда) внести маленькие дополнения чтобы усовершенствовать синтаксис интерпретатора, но сохранить совместимость. Результат можно «потыкать живьём» в онлайновой «песочнице».

Читать далее

Первый Спутник, язык FORTH и немного о JIT-компиляции

Время на прочтение10 мин
Охват и читатели11K

Здесь не будет песен и сказок о том какой крутой и недооценённый язык Forth:) По совокупности обстоятельств он скорее уже история. Однако некоторые связанные с ним аспекты поучительны и перспективны (например, для энтузиастов и разработчиков языков и компиляторов) — и хочется их записать на память, да и поделиться с коллегами.

-

Читать далее

Самобеглый Код :-)

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

В игре CoreWars участники писали программы, которые сами клонировались в памяти и пытались затереть друг друга. Работало это в виртуальной машине с хитроумными инструкциями, которые позволяли создавать очень короткий код. Простейшая само-копирующаяся программа, "самобеглый MOV", выглядела вот так:

MOV 0, 1

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

Мне неизвестны реальные процессоры в которых были бы подобные "удобные" инструкции. И вот любопытно - насколько короткой можно сделать (а можно ли?) подобную "самобеглую" программу для какой-нибудь настоящей архитектуры. Ну хотя бы для 8086. Тем более что там сегменты обозримого размера - 64 килобайта.

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

Читать далее

Старый но симпатичный DEBUG.EXE

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели12K

Почему-то не нашёл с первой попытки здесь на Хабре какого-нибудь демо или инструкции по использованию этой старинной, но милой тулы из стандартной поставки DOS. Давайте быстренько это исправим. Как легко догадаться из названия - DEBUG.EXE предполагается использовать для отладки. Мы же напишем пару коротких ассемблерных программ "с нуля" - это не займет много времени, а притом даст лёгкое ощущение магии!

Экспериментировать можно в DosBox или DosEmu - правда если вы возьмёте версию DEBUG.EXE например из MS-DOS 6.22 то скорее всего обнаружите что она не заработает в эмуляторе. Несложно отыскать в интернете рабочую версию (из Windows XP или FreeDOS например - иногда также под именем DEBUG.COM) - либо установить полноценный ДОС в виртуалку вроде VirtualBox.

Внимание! Эта статья имеет скорее развлекательно-познавательное назначение - её автор вовсе не думает что кому-то (кроме студентов со старыми лабами по "архитектуре микро-ЭВМ") в наше время это понадобится в практических целях. Мне же эта мини-инструкция пригодится как вспомогательная для будущей статьи про "самокопирующуюся программу".

Читать далее

Язык Cangjie от Huawei — скачаем, запустим, попробуем

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели16K

О том что Huawei обнародует собственный язык программирования новости ходили уже давно. Ещё в прошлом году при поиске работы мне уже предлагали работать с этим языком - правда "не сейчас а вот-вот вскоре" :) На тот момент компилятор и прочие инструменты ещё не были в открытом доступе. Сейчас же страница скачивания - вот она - под Linux, Windows и Darwin (да ещё и плагин к VSCode)!

В этой статье - беглый обзор. Я попробовал скачать-запустить и, пройдясь по разделам документации, описал основные фичи - так что вы можете сэкономить себе время и за 5-10 минут составить представление о Cangjie. Сразу скажу - чего-то оригинального, инновационного - я не заметил. Нет такого, чтобы как с Haskell, Erlang или Rust на первых порах пришлось ломать голову. Для программистов на Java, Go, C++ много будет довольно привычных вещей (можно сказать - "обокрали" эти языки тут и там понемногу).

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

Есть нюанс с примерами - Habr естественно не поддерживает подсветку синтаксиса для Cangjie (пока) - а для наглядности это желательно. Пожалуй буду вставлят картинками, за что заранее прошу извинения.

Читать далее

Ваша модель не играет в шахматы, а только притворяется

Время на прочтение8 мин
Охват и читатели7.7K

В комментариях обратили внимание на статью от 2022 года, где специалисты компании Meanotek взялись специально натренировать GPT-2 «весьма прилично играть в шахматы». К счастью они оставили демо‑страничку где можно поиграть против их модели — то есть, потестировать результат вместо чтения длинной статьи (о чем пару слов тоже скажем).

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

Читать далее

Некоторые замечания об игре в Шахматы против LLM (на примере deepseek)

Время на прочтение6 мин
Охват и читатели13K

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

Идея с игрой в шахматы хороша тем что на ней легко продемонстрировать и неспециалисту как возможности так и ограничения LLM. Эксперименты на эту тему появились уже давно, например в статье на Хабре же от 2023 года. Там автор на 6м ходу сделал неправильный ход но LLM этого не заметила. Мы кратенько посмотрим есть ли прогресс в этом направлении, попробуем немного изменить подход и потестируем ещё пару игр.

(сразу скажу - несмотря на прошедшие два года и явно принятые разработчиками усилия добиться адекватности мне почти не удалось)

Читать далее

Простой программатор для атмеловских 8051

Время на прочтение7 мин
Охват и читатели8K

В этой заметке речь больше про принцип — программатор можно сделать так, чтобы на стороне компьютера не требовался дополнительный софт. Будем прямо лить HEX‑файл в последовательный порт. Идея не новая, но не лишне напомнить (в том числе об одном‑двух подводных камнях рассказать).

Собственно программатор — голый Arduino с прошивкой, разбирающей HEX‑файл построчно и реализующий программирование целевого чипа по SPI. Прошивка и инструкции сложены в репозитории на гитхабе: At89s‑prog.

Конкретные чипы (At89s...) здесь скорее для примера. Мы не будем воспевать достоинства 8051-й архитектуры (конечно, они архаичны но у них есть плюсы, благодаря которым они до сих пор сохраняют популярность). У меня в какой‑то момент оказалась их горстка а программатора под рукой не нашлось. Они (те что с индексом S) программируются через SPI, а не стандартным «многоногим» интерфейсом что делает удобным их применение в любительских поделках.

Читать далее

О типах отрицательных сопротивлений — и как они используются в генераторах сигналов

Время на прочтение12 мин
Охват и читатели8.5K

Что такое "отрицательное сопротивление"? Под этот термин подходят различные явления и устройства - но нам годятся далеко не все. Данная статья содержит пояснения по теории к статье про Гармонический Осциллятор с Отрицательным Сопротивлением. Её можно читать отдельно или только заглядывать сюда по ходу чтения основной статьи, для справки.

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

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

Читать далее

Генератор синусоиды из LC-контура и отрицательного сопротивления

Время на прочтение14 мин
Охват и читатели14K

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

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

Поэтому мы обсудим альтернативу - с использованием "отрицательного сопротивления" - подключая к нему LC-контур прямо в том виде в каком он нарисован в учебнике, мы сразу получаем рабочий осциллятор и с широчайшим диапазоном по частоте!

Мы проверим эту идею на практике! Подключим LC-контур к двум типам схем с отрицательным сопротивлением - сперва к "лямбда-диоду" (на транзисторах), а потом к "транзитрону" (на электронной трехсеточной лампе - пентоде).

Теоретические пояснения к данной статье вынесены в отдельную заметку "О типах отрицательных сопротивлений" - а то слишком громоздко получалось. Обе написаны так чтобы их комфортно было читать и по отдельности.

Читать далее

Информация

В рейтинге
86-й
Откуда
Санкт-Петербург и область, Россия
Работает в
Зарегистрирован
Активность