Как SDK встраивалась в сайт клиента
Что проверяют
Работали ли вы с кодом, который исполняется на чужой странице, где вы не контролируете ни сборку, ни стили, ни политику безопасности. Следом обычно спрашивают, что будет с сайтом клиента, если ваш скрипт упадёт или CDN не ответит.
Как отвечать
Это вопрос про ваш опыт, поэтому стройте ответ вокруг реального проекта: что за SDK, кто его встраивал, какие были ограничения. Технический каркас:
- способ доставки: сниппет с тегом
<script async>, npm-пакет со сборками ESM и UMD илиiframe. Сниппет обычно создаёт очередь-заглушку вwindow, чтобы вызовы до загрузки скрипта не терялись; - изоляция кода: одна глобальная переменная на всё SDK, никаких полифиллов в чужие прототипы, свои зависимости внутри бандла, чтобы не конфликтовать с библиотеками сайта;
- изоляция стилей: Shadow DOM у веб-компонента или префиксы классов. Для платёжных форм и всего, где важна безопасность,
iframeи общение черезpostMessageс проверкойevent.origin; - безопасность: клиенту приходится добавить ваш домен в
script-src,connect-srcилиframe-srcсвоей CSP, для закреплённой версии можно дать хэш для атрибутаintegrity; - SPA: методы
initиdestroy, отслеживание смены маршрута, без утечек обработчиков; - отказоустойчивость: ошибки SDK ловятся внутри и не ломают страницу, загрузка не блокирует рендер, у бандла есть бюджет по размеру.
Результат называйте своими цифрами: сколько сайтов подключили, за какой срок, какой вес у бандла. Если SDK вы не писали, честно скажите, что встраивали чужой, например аналитику, чат или платёжный виджет, и расскажите о проблемах со стороны сайта: конфликты стилей, CSP, влияние на скорость загрузки.
Где спотыкаются
Ограничиваются фразой «вставили скрипт перед </body>». Интервьюер ждёт разговора об изоляции, версиях и чужом окружении.
Приносят круглую цифру вроде «конверсия выросла на 15%» без объяснения, как её мерили. Первый же уточняющий вопрос про A/B-тест такую цифру разваливает.
Забывают про сторонние куки и CSP. SDK, который рассчитывает на куки в iframe другого домена, в Safari и Firefox ведёт себя иначе, чем в Chrome, и это всплывает уже у клиента.