en
Feedback
Frontend | Вопросы собесов

Frontend | Вопросы собесов

Open in Telegram

📈 Analytical overview of Telegram channel Frontend | Вопросы собесов

Channel Frontend | Вопросы собесов (@easy_javascript_ru) in the Russian language segment is an active participant. Currently, the community unites 18 271 subscribers, ranking 7 328 in the Technologies & Applications category and 36 922 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 18 271 subscribers.

According to the latest data from 18 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -130 over the last 30 days and by -5 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 9.76%. Within the first 24 hours after publication, content typically collects 5.46% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 1 783 views. Within the first day, a publication typically gains 997 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 9.
  • Thematic interests: Content is focused on key topics such as ставь, браузер, html, border, flex.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
Сайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+T0COHtFzCJkwMDUy Задачи t.me/+_tcX2w2EmvdmMTgy Вакансии t.me/+CgCAzIyGHHg0Nzky

Thanks to the high frequency of updates (latest data received on 19 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

18 271
Subscribers
-524 hours
-307 days
-13030 days
Posts Archive
⚡Узнайте об актуальных инструментах веб-разработки в 2024 году, последних тенденциях и лучших практиках в разработке фронтенд
⚡Узнайте об актуальных инструментах веб-разработки в 2024 году, последних тенденциях и лучших практиках в разработке фронтенда (React, Vue 3, Svelte) и бэкенда (C#, ASP.NET)! 🔥17 октября в 20.00 мск приглашаем на открытую конференцию "Эффективная веб-разработка в 2024 году: новинки в React, Vue и ASP.NET",  на которой обсудим: ✅ React, Vue 3 и Svelte: ключевые обновления в этих фреймворках, которые упрощают создание и поддержку кода. Преимущества и недостатки каждого фреймворка; ✅ Новые возможности .NET 8/9: улучшения в C# и ASP.NET; ✅ Интеграция с фронтендом: продемонстрируем, как легко создавать и взаимодействовать с современными фронтенд-технологиями. 👉Регистрация https://otus.pw/x19wx/?erid=LjN8K1h5d 🎁Бонусы участника: Карта развития навыков специалиста ASP.NET  и  Базовые операторы в JavaScript #реклама О рекламодателе

🤔 Что такое promise и какие состояния у него есть? Promise в JavaScript — это объект, который представляет результат асинхронной операции. Он может находиться в одном из трёх состояний: pending (ожидание), fulfilled (выполнено) и rejected (отклонено). Fulfilled означает, что операция завершилась успешно, а rejected — что произошла ошибка. Это удобный способ работы с асинхронным кодом и упрощает обработку результатов таких операций. Ставь 👍 и забирай 📚 Базу знаний

🤔 Где заканчивается js, а где начинается дом ? JS заканчивается там, где он перестает быть просто набором инструкций и начинает манипулировать DOM, т.е. когда скрипт обращается к элементам страницы (например, через document.getElementById), он начинает взаимодействовать с DOM для изменения структуры, стилей или содержимого веб-страницы. 🚩JavaScript Используется для создания динамических и интерактивных веб-страниц. Он работает в браузере и на сервере (с помощью Node.js). JavaScript сам по себе не имеет знаний о веб-странице или ее структуре. Он предоставляет синтаксис и базовые возможности для выполнения вычислений, обработки данных, работы с объектами и функциями. 🚩Основные возможности: 🟠Управление переменными и типами данных: Объявление переменных (var, let, const). Работа с различными типами данных (строки, числа, объекты, массивы). 🟠Управление потоком: Условные операторы (if, else, switch). Циклы (for, while, do-while). 🟠Работа с функциями: Объявление и вызов функций. Работа с анонимными и стрелочными функциями. 🟠Объектно-ориентированное программирование: Создание объектов и классов. Наследование и полиморфизм. 🚩DOM (Document Object Model) Это программный интерфейс для веб-документов. Он представляет структуру HTML-документа как дерево объектов, которые могут быть изменены скриптами (например, JavaScript). DOM позволяет JavaScript взаимодействовать с HTML-страницей: изменять элементы, стили, атрибуты и содержимое страницы. 🚩Основные возможности: 🟠Доступ к элементам: Получение элементов по идентификатору(document.getElementById), классу(document.getElementsByClassName), тегу(document.getElementsByTagName), селектору(document.querySelector, document.querySelectorAll). 🟠Изменение структуры документа: Создание новых элементов (document.createElement). Добавление и удаление элементов (appendChild, removeChild). 🟠Изменение содержимого и атрибутов: Изменение текста и HTML-содержимого (element.textContent, element.innerHTML). Управление атрибутами (element.setAttribute, element.getAttribute). 🟠События: Добавление обработчиков событий (element.addEventListener). Создание и отправка пользовательских событий. 🚩Примеры Изменение содержимого элемента:
<!DOCTYPE html>
<html>
<head>
    <title>Пример DOM</title>
</head>
<body>
    <div id="myDiv">Исходный текст</div>
    <button onclick="changeText()">Изменить текст</button>

    <script>
        function changeText() {
            // Получение элемента DOM
            const myDiv = document.getElementById('myDiv');
            // Изменение содержимого элемента
            myDiv.textContent = 'Измененный текст';
        }
    </script>
</body>
</html>
Создание и добавление нового элемента:
<!DOCTYPE html>
<html>
<head>
    <title>Пример добавления элемента</title>
</head>
<body>
    <button onclick="addElement()">Добавить элемент</button>

    <script>
        function addElement() {
            // Создание нового элемента
            const newElement = document.createElement('p');
            newElement.textContent = 'Новый параграф';

            // Добавление нового элемента в DOM
            document.body.appendChild(newElement);
        }
    </script>
</body>
</html>
🚩Граница JavaScript — это язык программирования, который предоставляет базовые возможности для работы с данными и логикой. DOM — это интерфейс, который предоставляет структуру HTML-документа и позволяет JavaScript взаимодействовать с этой структурой. Граница между ними можно представить так: 🟠JavaScript: Работа с данными, логика выполнения, функции, объекты и т.д. 🟠DOM: Представление HTML-документа как дерева объектов и возможность манипуляции этими объектами через JavaScript. Ставь 👍 и забирай 📚 Базу знаний

Верстаешь? Оцени 7 причин пройти наш бесплатный интенсив по Frontend-разработке: 1. Ты сверстаешь веб-сайт на HTML + CSS; 2.
Верстаешь? Оцени 7 причин пройти наш бесплатный интенсив по Frontend-разработке: 1. Ты сверстаешь веб-сайт на HTML + CSS; 2. Оживишь страницу с помощью JavaScript; 3. Используешь фронтенд-фреймворк Angular; 4. Подключишь Backend и загрузишь сайт на хостинг; 5. Получишь советы по доработке своего проекта; 6. Добавишь в портфолио 1 качественный проект; 7. Получишь в подарок чек-лист «45 мест для поиска работы». А главное, ты проведёшь 7 дней в приятной компании Fullstack-разработчика с 10-летним стажем – Романа Чернова. 👉 Проскочить на интенсив бесплатно Начинаем уже завтра. 🔥 С нас обучение, практика и помощь с выходом на фриланс.

🤔 Какой атрибут тега задаёт кодировку символов HTML документа?
Anonymous voting

🤔 Почему http-2, а не http-1 ? HTTP/2 предпочтительнее HTTP/1.1 потому, что он позволяет мультиплексирование запросов по одному соединению, сжимает заголовки для эффективности передачи данных и улучшает общую производительность веб-сайтов за счет бинарного формата и приоритезации потоков. 🚩МинусыОграниченное количество одновременных соединений: HTTP/1.1 позволяет использовать несколько одновременных соединений для загрузки ресурсов с одного домена, но это число ограничено (обычно 6-8 соединений). Это приводит к значительным задержкам, особенно при загрузке большого количества ресурсов (изображений, скриптов, стилей) на современных веб-страницах. ➖Небольшие размеры заголовков: В HTTP/1.x заголовки передаются в каждом запросе и ответе, что увеличивает накладные расходы, особенно при использовании длинных куки-файлов и других данных заголовков. ➖Отсутствие мультиплексирования: HTTP/1.x не поддерживает отправку нескольких запросов и ответов одновременно по одному соединению, что приводит к блокировке при медленных запросах или больших ресурсах. ➖Частые разрывы соединений: В HTTP/1.x соединения часто закрываются после завершения передачи данных, что требует повторного установления соединений для последующих запросов, увеличивая задержки. 🚩ПлюсыБинарный протокол: HTTP/2 использует бинарное кодирование вместо текстового в HTTP/1.x, что упрощает анализ и обработку данных, а также снижает вероятность ошибок. ➕Мультиплексирование: HTTP/2 позволяет отправлять несколько запросов и получать несколько ответов одновременно по одному TCP-соединению, устраняя блокировку и повышая эффективность передачи данных. ➕Сжатие заголовков (HPACK): HTTP/2 использует эффективное сжатие заголовков, что значительно уменьшает накладные расходы при передаче заголовков. ➕Приоритеты потоков: HTTP/2 поддерживает установку приоритетов для отдельных потоков данных, что позволяет более эффективно управлять передачей важных ресурсов. ➕Постоянные соединения: HTTP/2 поддерживает длительные соединения, что уменьшает количество повторных установлений соединений и улучшает производительность. ➕Серверная инициатива (Server Push): HTTP/2 позволяет серверу отправлять ресурсы клиенту до того, как они будут запрошены, что ускоряет загрузку страниц. 🚩Примеры преимуществ HTTP/2 🟠Мультиплексирование: В HTTP/1.1 каждый запрос требует отдельного соединения или использования техники keep-alive для удержания соединения открытым, что приводит к блокировке. В HTTP/2, благодаря мультиплексированию, все ресурсы могут быть загружены одновременно по одному соединению. 🟠Сжатие заголовков: Заголовки в HTTP/2 сжимаются, что особенно полезно для повторяющихся заголовков, таких как куки. 🟠Server Push: Сервер может отправлять необходимые ресурсы, такие как стили и скрипты, до того, как клиент их запросит, что снижает количество запросов и улучшает время загрузки страницы. Ставь 👍 и забирай 📚 Базу знаний

⚡️ IT-обучение теперь в Telegram! В cвязи с недавнем замедлением Ютуба — лучшие обучающие каналы переехали в Telegram Вот кан
⚡️ IT-обучение теперь в Telegram! В cвязи с недавнем замедлением Ютуба — лучшие обучающие каналы переехали в Telegram Вот каналы для айтишников: 👩‍💻 Frontend: @Frontend ⚙️ Backend: @Backend 🤓 Общее айти: @portalToIT 👩‍💻 Python: @Python 📱 GitHub: @GitHub 👩‍💻 Java: @Java 👩‍💻 C#: @Csharp 👩‍💻 С/С++: @Cpp 🖥 Базы Данных & SQL: @SQL 👩‍💻 Golang: @Golang 👩‍💻 PHP: @PHP 👩‍💻 Моб. разработка: @MobDev 👩‍💻 Разработка игр: @GameDev 👩‍💻 DevOps: @DevOps 🖥 Data Science: @DataScience 🤔 Хакинг & ИБ: @InfoSec 🐞 Тестирование: @QA 📱 Маркетинг: @Marketing 🖥 Дизайн: @Design ➡️ Сохраняйте себе, чтобы не потерять

🤔 Какой тип CSS-свойства background-clip определяет, что фон будет ограничен контентом элемента?
Anonymous voting

🤔 Что известно про отладку js ? Отладка JS кода — это процесс поиска и исправления ошибок, которые возникают в программном обеспечении. Этот процесс важен для выявления логических ошибок, неправильных значений переменных и других проблем, которые могут возникнуть во время разработки. Рассмотрим основные инструменты и методы для отладки JavaScript кода. 🚩Основные инструменты 🟠Консоль разработчика в браузере Все современные браузеры (Chrome, Firefox, Edge, Safari) имеют встроенные инструменты для разработчиков, которые включают консоль для вывода сообщений, просмотра значений переменных и выполнения JavaScript кода в реальном времени. Пример использования консоли в Chrome: 1⃣Откройте инструменты разработчика (F12 или Ctrl+Shift+I). 2⃣Перейдите на вкладку "Console". 3⃣Используйте console.log(), console.error(), console.warn() для вывода сообщений в консоль.
console.log('Это сообщение для отладки');
console.error('Это сообщение об ошибке');
console.warn('Это предупреждающее сообщение');   
🟠Точки останова (breakpoints) Точки останова позволяют приостановить выполнение кода на определенной строке, чтобы можно было исследовать текущее состояние программы (значения переменных, выполнение функций и т.д.). Пример использования точек останова в Chrome: 1⃣Откройте инструменты разработчика и перейдите на вкладку "Sources". 2⃣Найдите и откройте файл JavaScript. 3⃣Щелкните на номер строки, где хотите установить точку останова. 4⃣Обновите страницу и выполнение остановится на установленной точке останова. 🟠Интерактивное выполнение кода Инструменты разработчика позволяют выполнять JavaScript код в реальном времени через консоль. Пример: 1⃣Откройте инструменты разработчика и перейдите на вкладку "Console". 2⃣Введите и выполните произвольный JavaScript код, например:
let x = 10;
let y = 20;
console.log(x + y); // 30
🟠Просмотр вызовов функций (Call Stack) Инструменты разработчика позволяют отслеживать вызовы функций и видеть, как они были вызваны друг другом. Пример: Когда выполнение приостановлено на точке останова, откройте вкладку "Call Stack" в инструментах разработчика, чтобы увидеть последовательность вызовов функций. 🚩Методы Использование console.log() Это простой и распространенный метод для вывода значений переменных и сообщений на разных этапах выполнения кода.
function add(a, b) {
    console.log('Аргументы:', a, b);
    return a + b;
}

let result = add(5, 3);
console.log('Результат:', result);
Отладочные утверждения (Assertions) Метод console.assert() позволяет выполнять утверждения и выводить сообщение, если условие ложно.
let x = 5;
console.assert(x === 5, 'x должно быть равно 5');
console.assert(x === 10, 'x должно быть равно 10'); // Выведет сообщение   
Ставь 👍 и забирай 📚 Базу знаний

Senior-разработчик создал крутейший канал про SQL Благодаря простым картинкам даже новичок научится разрабатывать приложения
+4
Senior-разработчик создал крутейший канал про SQL Благодаря простым картинкам даже новичок научится разрабатывать приложения с использованием баз данных. Присоединяйтесь: @SQL

🤔 Какой метод JavaScript используется для создания нового HTML элемента?
Anonymous voting

🔥 Ресурсы для подготовки к работе в IT! 🔥 1️⃣ База собеседований IT – это уникальная коллекция собеседований от реальных топовых компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и многие другие! 🏢 Мы собрали 150+ собеседований, чтобы ты мог подготовиться к интервью с уверенностью и успехом. 2️⃣ База тестовых заданий – твоё секретное оружие для успешного прохождения этапов отбора! 📋 Здесь ты найдёшь 121+ тестовых заданий от тех же топовых компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries. Решай реальные задачи и набирайся опыта для будущих собеседований! 🎯 Присоединяйся к базам и прокачай свои шансы на успешное трудоустройство!

🤔 От чего зависит this ? Значение this зависит от контекста, в котором функция вызывается. Понимание того, как this определяется в различных ситуациях, является ключом к правильному использованию функций и методов в JavaScript. Рассмотрим основные правила и примеры. 🚩Основные правила Глобальный контекст или контекст функции: В глобальном контексте (вне любой функции) или внутри обычной функции (не метода объекта) this ссылается на глобальный объект, который является window в браузере или global в Node.js.
      console.log(this); // window в браузере или global в Node.js

   function globalFunction() {
     console.log(this); // window в браузере или global в Node.js
   }
   
   globalFunction();
Методы объекта: Когда функция вызывается как метод объекта, this ссылается на объект, который использовался для вызова метода.
      const obj = {
     name: 'Alice',
     greet: function() {
       console.log(this.name);
     }
   };
   
   obj.greet(); // 'Alice'
Конструкторы и классы: this ссылается на вновь созданный объект.
      function Person(name) {
     this.name = name;
   }
   
   const person = new Person('Bob');
   console.log(person.name); // 'Bob'
   
   class Animal {
     constructor(name) {
       this.name = name;
     }
   }
   
   const animal = new Animal('Charlie');
   console.log(animal.name); // 'Charlie'
Явное задание this с помощью call, apply и bind: Методы call и apply позволяют вызывать функцию с явно заданным значением this. Метод bind создает новую функцию, которая при вызове имеет определенное значение this.
function sayHello() {
     console.log(this.name);
   }
   
   const person = { name: 'David' };
   
   sayHello.call(person); // 'David'
   sayHello.apply(person); // 'David'
   
   const boundSayHello = sayHello.bind(person);
   boundSayHello(); // 'David'
🚩Значение this зависит от контекста вызова: 🟠В глобальном контексте и обычных функциях this ссылается на глобальный объект (window или global). 🟠В методах объекта this ссылается на сам объект. 🟠В конструкторах и классах this ссылается на вновь созданный объект. 🟠С помощью call, apply и bind можно явно задать значение this. 🟠Стрелочные функции захватывают this из окружающего лексического контекста. 🟠Вложенные функции могут иметь различное значение this, что можно решить с помощью стрелочных функций или сохранения контекста внешней функции. Ставь 👍 и забирай 📚 Базу знаний

CodHub теперь в Telegram! Бесплатные обучающие материалы, которые лучше платных — книги, ресурсы, статьи и курсы топовых вузо
CodHub теперь в Telegram! Бесплатные обучающие материалы, которые лучше платных — книги, ресурсы, статьи и курсы топовых вузов страны тут: 👩‍💻 Материалы по Python 👩‍💻 Материалы по Frontend 👩‍💻 Материалы по Java 👩‍💻 Материалы по С# 👩‍💻 Материалы по C/C++ 👩‍💻 Материалы по Хакингу 🖥 Материалы по SQL 👩‍💻 Материалы по Kotlin/Swift 👩‍💻 Материалы по Linux 🐞 Материалы по QA 👩‍💻 Материалы по Go 👩‍💻 Материалы по PHP Подписываетесь: @CodHub_tg

🤔 Какое значение будет у переменной z после выполнения выражения: let z = "3" * "3";?
Anonymous voting

Обучаем Java-разработчиков оплата после выхода на работу В Kata Academy можно выучиться на Java-разработчика бесплатно, а зап
Обучаем Java-разработчиков оплата после выхода на работу В Kata Academy можно выучиться на Java-разработчика бесплатно, а заплатить уже после трудоустройства по специальности из фактической зарплаты. Если задуматься, то все в выигрыше: — ты получаешь работу в Москве или Санкт-Петербурге с хорошей зарплатой, мы получаем процент за инвестиции в тебя; — в наших интересах научить тебя так, чтобы твоя зарплата была как можно выше; — мы прокачиваем твои навыки еще 2 года после курса: проводим выездные мероприятия и мастер-классы — и доходы наших выпускников растут; — мы не зависим от банков и их рассрочек — кризис не повлиял на доступность курсов. Чтобы попасть на курс, нужно выполнить небольшое тестовое задание. Переходи по ссылке и оставляй заявку! Узнать больше #реклама 16+ kata.academy О рекламодателе

🤔 Как js понимает, что есть следующий прототип ? Использует скрытое свойство [[Prototype]] (также известное как __proto__) для каждого объекта, чтобы установить связь с его прототипом. Это позволяет объекту наследовать свойства и методы от другого объекта. 🚩Как она работает 🟠Свойство `__proto__`: Каждый объект в JavaScript имеет скрытое свойство [[Prototype]], доступное как proto (неофициальный, но широко поддерживаемый способ доступа). Оно указывает на прототип объекта, от которого этот объект наследует свойства и методы. Это свойство устанавливается автоматически при создании объекта. 🟠Поиск свойства или метода: Когда вы пытаетесь получить доступ к свойству или методу объекта, JavaScript сначала ищет его на самом объекте. Если свойство или метод не найдено, поиск продолжается в объекте, на который указывает proto. Этот процесс продолжается вверх по цепочке прототипов до тех пор, пока не будет найдено свойство или не будет достигнут конец цепочки (обычно это Object.prototype). Рассмотрим пример, чтобы проиллюстрировать, как работает цепочка прототипов:
// Создаем объект Animal
function Animal(name) {
  this.name = name;
}

Animal.prototype.speak = function() {
  console.log(`${this.name} издает звук.`);
};

// Создаем объект Dog, который наследует от Animal
function Dog(name, breed) {
  Animal.call(this, name); // Вызов конструктора Animal
  this.breed = breed;
}

Dog.prototype = Object.create(Animal.prototype); // Наследование прототипа Animal
Dog.prototype.constructor = Dog;

Dog.prototype.bark = function() {
  console.log(`${this.name} лает.`);
};

const myDog = new Dog('Рекс', 'Лабрадор');

myDog.speak(); // Рекс издает звук.
myDog.bark(); // Рекс лает.
🚩Как JS ищет свойства и методы 1⃣Первый уровень поиска: Когда вы вызываете myDog.speak(), JavaScript сначала ищет метод speak на самом объекте myDog. 2⃣Поиск в прототипе: Поскольку myDog не имеет собственного метода speak, JavaScript смотрит на объект, на который указывает myDog.__proto__. В данном случае это Dog.prototype. 3⃣Продолжение поиска: Если метод speak не найден в Dog.prototype, JavaScript продолжает искать в Dog.prototype.__proto__, который указывает на Animal.prototype. 4⃣Нахождение метода: Метод speak найден в Animal.prototype, и он вызывается. 5⃣Конец цепочки: Если бы метод speak не был найден в Animal.prototype, JavaScript продолжил бы поиск в Animal.prototype.__proto__, который указывает на Object.prototype. Если метод не найден и в Object.prototype, возвращается undefined. 🚩Операторы для проверки цепочки прототипов: Операторвень поиска: Проверяет, является ли объект экземпляром конструктора, следуя по цепочке прототипов.
console.log(myDog instanceof Dog); // true
console.log(myDog instanceof Animal); // true
console.log(myDog instanceof Object); // true
Метод isPrototypeOf: Проверяет, находится ли объект в цепочке прототипов другого объекта.
      console.log(Animal.prototype.isPrototypeOf(myDog)); // true
   console.log(Dog.prototype.isPrototypeOf(myDog)); // true
   
Метод Object.getPrototypeOf: Возвращает прототип объекта.
console.log(Object.getPrototypeOf(myDog) === Dog.prototype); // true
console.log(Object.getPrototypeOf(Dog.prototype) === Animal.prototype); // true
   
Ставь 👍 и забирай 📚 Базу знаний

👩‍💻 Программирование уже в Telegram! Вот 10 обучающих каналов по самым востребованным направлениям в IT. Выбирай своё напра
👩‍💻 Программирование уже в Telegram! Вот 10 обучающих каналов по самым востребованным направлениям в IT. Выбирай своё направление: 👩‍💻 Frontend: @code_ready 👩‍💻 Backend: @backend_ready 👩‍💻 Python: @python_ready 👩‍💻 Java: @java_ready 👩‍💻 C/C++: @cpp_ready 👩‍💻 C#: @csharp_ready 🖥 Базы Данных & SQL: @sql_ready 👩‍💻 Весь IT: @roadmap_ready 📖 IT Архив: @archive_ready 🖥 Design: @time_design 📌 Ресурсы, гайды, шпаргалки, книги и задачи для каждого языка программирования.

🤔 Какой метод используется для копирования значений всех собственных перечисляемых свойств из одного или более исходных объектов в целевой объект?
Anonymous voting

Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специал
+9
Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно! Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита. Для этого нужно: - Перейти по ссылке - Заполнить анкету и ответить на вопросы (занимает менее 3 минут) - На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать Перейти на сайт #реклама 16+ urban-university.ru О рекламодателе