AuraOverlay Скачать

лайвкодинг и чужой экран

AI для технического собеседования

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

macOS 14.2 и новее · Windows 10 и 11 · расширения для браузера не нужны

слева задача, справа разбор

Как это выглядит на экране

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

общий редактор

Дана строка. Вернуть длину самой длинной подстроки без повторяющихся символов.

# "abcabcbb" -> 3    "bbbbb" -> 1    "pwwkew" -> 3

def longest_unique(s):
    best = 0
    for i in range(len(s)):
        for j in range(i, len(s)):
            # перебираю все куски — а если строка длинная?
разбор поверх редактора

Условие. Найти самый длинный кусок строки подряд, в котором ни один символ не повторяется. Нужна только его длина, сам кусок не просят.

  • Держим окно из двух границ: правая идёт по строке.
  • Для каждого символа помним, где он встретился последний раз.
  • Повтор попал внутрь окна — двигаем левую границу за него.
def longest_unique(s):
    # символ -> последняя позиция
    seen = {}
    left = best = 0
    for right, ch in enumerate(s):
        if ch in seen and seen[ch] >= left:
            left = seen[ch] + 1
        seen[ch] = right
        best = max(best, right - left + 1)
    return best

Сложность. По времени O(n): каждая граница проходит строку ровно один раз. По памяти — до размера алфавита. Пустая строка даёт ноль, строка из одинаковых символов — единицу.

путь кадра

Текст с экрана читает ваш компьютер, а не сервер

Это важная развилка: можно было бы отправлять на сервер одну картинку и там разбирать её целиком. Сделано иначе.

1 Кадр Снимается экран, на котором стоит указатель мыши. Свои окна приложение на этот момент убирает.
2 Строки Система распознаёт текст на месте и отдаёт его вместе с координатами каждой строки.
3 Запрос Картинка и собранный текст уходят одним сообщением: модель смотрит на них вместе.
4 Поток Разбор появляется по мере готовности, с первой строки, а не одним куском в конце.

Распознаванием занимаются Vision на macOS и Windows.Media.Ocr на Windows — они уже стоят в системе, поэтому в установщике нет ни одной лишней модели, а за чтение экрана не платится ни секунды сети.

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

Что именно уезжает наружу. Кадр и распознанный текст — да, иначе разбирать нечем. Кадр перед отправкой ужимается до 1920 точек по ширине: модели всё равно режут картинку на части, а лишние мегабайты только удлиняют ожидание. Снимается один экран — тот, где курсор; если условие открыто на втором мониторе, переведите туда мышь перед нажатием.

секунды

Где на самом деле уходит время

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

снимок экрана ≈ 0,2 с
распознавание на устройстве ≈ 0,4 с
первые слова разбора ≈ 1,5 с
разбор дописан целиком ≈ 6 с

Числа типичные, а не обещанные: машина, монитор и сеть у всех свои, и на macOS сам захват экрана иногда растягивается на секунду-другую. Последняя полоса приглушена нарочно — эти шесть секунд вы не сидите и не ждёте, а уже читаете: текст печатается по мере появления, и к концу разбора начало давно прочитано.

честно

Чего разбор с экрана не сделает

  • Не напечатает за вас. Код не подставляется в редактор и буфер обмена не трогается: переносить решение вы будете руками, своим темпом.
  • Не увидит того, что за краем экрана. В кадр попадает только видимое. Если половина условия ушла под прокрутку, разбор будет по половине условия.
  • Не угадает закрытые тесты. Решение строится по тому, что написано в условии. Про хитрый случай, о котором там ни слова, вы узнаете одновременно с проверяющей системой.
  • Не станет невидимым, если вы сами показываете весь рабочий стол. На Windows окно в захват не попадает. На macOS 14 и новее выбирайте в списке демонстрации окно редактора — тогда рядом с ним можно держать что угодно.

вопросы

Коротко о главном

Что уходит в модель, когда вы снимаете экран?

Две вещи сразу: сам кадр и строки, которые распознала система на вашей машине. Кадру модель верит в общем — по нему видно, как устроена страница. Строкам верит в мелочах: одиночный символ на сжатом изображении легко пропадает, а в распознанном тексте остаётся.

Распознавание текста происходит на сервере?

Нет, читает сама операционная система: Vision на macOS и Windows.Media.Ocr на Windows. Никакой отдельной модели для этого не скачивается и в установщике не лежит. Строки собираются на компьютере и покидают его только вместе с запросом на разбор.

Сколько ждать разбор задачи?

Типичная картина такая: кадр — около двух десятых секунды, распознавание — около четырёх десятых, первые слова разбора — примерно через полторы секунды, весь текст целиком — секунд за шесть. Числа зависят от машины и сети, а на macOS сам захват экрана иногда занимает секунду-другую.

Приложение попадёт в собственный снимок?

Нет, свои окна оно прячет на время кадра, и в снимок попадает только то, что под ними: редактор, условие, переписка. Указатель мыши при этом никуда не уезжает, а фокус остаётся в том же окне, где и был.

А если задачу показывает интервьюер со своего экрана?

Его демонстрация для приложения — обычная картинка на вашем мониторе, и она разбирается так же. Но у сжатого видеопотока буквы плывут, и распознавание ошибается чаще обычного. Если на условие есть ссылка, надёжнее открыть его у себя.

дальше

Разделы по теме

Дайте ему задачу, которую не решили вчера

Первые 30 минут бесплатно — их хватает на один разговор. Дальше подписка по времени или пакет собеседований.

macOS 14.2 и новее · Windows 10 и 11