JavaScript. Разбор задачи #61
![]()
Обычные функции не могут быть остановлены на полпути после вызова. Однако функцию генератор можно “остановить” на полпути, а затем продолжить с того места, где она остановилась. Каждый раз, когда в функции-генераторе встречает ключевое слово yield , функция возвращает значение, указанное после него. Обратите внимание, что функция генератора в этом случае не return значение, оно yields значение.
Сначала мы инициализируем функцию генератор с i , равным 10 . Мы вызываем функцию генератор, используя метод next () . Когда мы в первый раз вызываем функцию генератора, i равно 10 . Он встречает первое ключевое слово yield , получая значение i . Генератор теперь "приостановлен", и 10 выводится в консоль.
Затем мы снова вызываем функцию с помощью метода next () . Она запускается с того места, где остановилась ранее, все еще с i , равным 10 . Теперь он встречает следующее ключевое слово yield и возвращает i * 2 . i равно 10 , поэтому он возвращает 10 * 2 , то есть 20 . Это приводит к 10, 20.
Javascript что будет выведено в консоль яндекс
Давайте разберем что здесь происходит.
Изначально в стеке выполнения находится сам скрипт, поэтому сначала выполняется только он.
В первой строке появляется setTimeout , который ставит переданный колбэк в очередь макрозадач (macrotask queue) на выполнение.
После этого в переменную p запишется промис. Стоит отметить, что создание промиса в данном случае происходит синхронно. Это значит, что код из переданного колбэка выполнится прямо сейчас. В результате в консоль выведется ‘Создание промиса’ .
Далее мы уведомляем потребителя then , что хотели бы выполнить переданную функцию после успешного выполнения промиса. Так как промис уже имеет состояние fulfilled (мы вызвали resolve() при его создании), колбэк из then будет немедленно передан в очередь микрозадач (microtask queue) на выполнение.
В конце выполнения скрипта выведется ‘Конец скрипта’ .
Скрипт является макрозадачей. Как мы уже знаем, после завершения каждой задачи опустошается очередь микрозадач. В ней находится только ранее переданный в then колбэк. В результате его выполнения в консоль выведется ‘Обработка промиса’ .
Так как очередь микрозадач опустела, можно продолжить выполнять код из очереди макрозадач. Там сейчас находится только колбэк, который мы передавали setTimeout . После его выполнения выведется ‘Таймаут’ .
Собеседование JavaScript
JavaScript собеседование #50: Как работает Intl.Collator
Как в JavaScript работает Intl.Collator? В чем разница между двумя сортировками? Что будет выведено на экран? . . . . . . . . . . . . . .
March 24, 2021 · 1 мин · Coderslang Master
JavaScript собеседование #49: Добавляем новый элемент в JS массив по индексу
Изменится ли длина массива? Что появится в консоли? . . . . . . . . . . . . . . . . . У всех JavaScript массивов есть функция push.
March 21, 2021 · 1 мин · Coderslang Master
JavaScript собеседование #48: Кошка размером с собаку
Сколько ошибок в этом коде? Что появится на экране? . . . . . . . . . . . . . . . . . В JavaScript доступ к полям объекта можно получить двумя способами.
March 18, 2021 · 1 мин · Coderslang Master
JavaScript собеседование #47: Как работает Object.setPrototypeOf в JS
Как работает Object.setPrototypeOf в JavaScript? Что будет выведено на экран? . . . . . . . . . . . . . . . . . Теория Функция Object.setPrototypeOf устанавливает новый прототип любому JavaScript объекту.
March 15, 2021 · 2 мин · Coderslang Master
JavaScript собеседование #46: Поле length у JS функций
Что хранится в поле length у JavaScript функций? Что будет выведено в консоль? . . . . . . . . . . . . . . . . .
March 12, 2021 · 1 мин · Coderslang Master
JavaScript собеседование #45: Форматирование Валют в JS
Как в JavaScript форматировать число в локализованную валюту? Что будет выведено в консоль? . . . . . . . . . . . . . . . . .
March 9, 2021 · 1 мин · Coderslang Master
JavaScript собеседование #44: В чем отличие Number от BigInt?
Что произойдет, если в JavaScript добавить числу суффикс n? Что будет выведено на экран? . . . . . . . . . . . . . . . .
March 6, 2021 · 1 мин · Coderslang Master
JavaScript собеседование #43: Object.toString и Array.toString
В чем разница между функциями Object.toString и Array.toString в JavaScript? Что будет выведено на экран? . . . . . . . . . . . . . . .
March 3, 2021 · 1 мин · Coderslang Master
JavaScript собеседование #42: Как работает в Math.max в JS
Как работает Math.max в JavaScript? Что будет выведено на экран? . . . . . . . . . . . . . . . . . Функция Math.max() в JavaScript, принимает переменное количество аргументов и возвращает больший из них.
February 28, 2021 · 1 мин · Coderslang Master
JavaScript собеседование #41: Увеличиваем MAX_SAFE_INTEGER
True или false? Что появится в консоли? . . . . . . . . . . . . . . . . . В JavaScript принят формат чисел с плавающей запятой двойной точности.
February 25, 2021 · 1 мин · Coderslang Master © 2023 Coderslang: Стань Программистом ·
5 простых тестовых заданий на позицию Junior Frontend-разработчик
По статистике наших студентов, каждое пятое собеседование на вакансию Junior Frontend-разработчик — успешное. Большую роль в конечном решении по кандидату играет тестовое задание и вопросы. Это один из этапов отбора, и если вы до него дошли — поздравляем, это уже большое достижение! Теперь вам нужно показать то, чему вы научились, чтобы занять желаемую должность.
Ниже приведены примеры заданий, с которыми встретились наши студенты на собеседованиях, и даны советы, как с ними справиться. Предугадать точную формулировку вашего тестового невозможно, но мы сформировали общее представление об уровне сложности и видах задач, которые вам предстоит решить.
1. Что выведет на экран следующий код?
Ответ: 10
Пояснение: В функции b 3 аргумента, индексы которых начинаются с [0]. Таким образом, аргумент с индексом [2] — это a . В первой строке функции третьему аргументу функции присваивается значение 10.
2. Что выведет в консоль следующий код?
Ответ: false false true
Пояснение: == сравнивает на равенство и не проверяет идентичность типов, поэтому в третьей строке кода в консоль будет выведено значение true .
3. Что выведет в консоль следующий код?
Ответ: 1
Пояснение: В данном примере выполнена деструктуризация. По умолчанию переменной у присваивается значение первого элемента массива.
4. В каком порядке исполняются скрипты? Почему?
Ответ:
- <script src=»https://tproger.ru/articles/5-prostyh-testovyh-zadanij-na-poziciju-junior-frontend-razrabotchik/script-2.js»></script> // Время загрузки скрипта 1s
- <script async src=»https://tproger.ru/articles/5-prostyh-testovyh-zadanij-na-poziciju-junior-frontend-razrabotchik/script-6.js»></script> // Время загрузки скрипта 1s
- <script async src=»https://tproger.ru/articles/5-prostyh-testovyh-zadanij-na-poziciju-junior-frontend-razrabotchik/script-1.js»></script> // Время загрузки скрипта 1.5s
- <script src=»https://tproger.ru/articles/5-prostyh-testovyh-zadanij-na-poziciju-junior-frontend-razrabotchik/script-5.js»></script> // Время загрузки скрипта 2s
- <script defer src=»https://tproger.ru/articles/5-prostyh-testovyh-zadanij-na-poziciju-junior-frontend-razrabotchik/script-3.js»></script> // Время загрузки скрипта 3s
- <script defer src=»https://tproger.ru/articles/5-prostyh-testovyh-zadanij-na-poziciju-junior-frontend-razrabotchik/script-4.js»></script> // Время загрузки скрипта 1.5s
- <script defer src=»https://tproger.ru/articles/5-prostyh-testovyh-zadanij-na-poziciju-junior-frontend-razrabotchik/script-7.js»></script> // Время загрузки скрипта 0.1s
Пояснение: Когда браузер загружает HTML и доходит до тега <script>. </script> , он не может продолжать строить DOM. Он должен сначала выполнить скрипт. То же самое происходит и с внешними скриптами <script src=»https://tproger.ru/articles/5-prostyh-testovyh-zadanij-na-poziciju-junior-frontend-razrabotchik/»></script> : браузер должен подождать, пока загрузится скрипт, выполнить его, и только затем обработать остальную страницу.
async : Порядок загрузки (кто загрузится первым, тот и сработает). Может выполниться до того, как страница полностью загрузится. Такое случается, если скрипты маленькие или хранятся в кэше, а документ достаточно большой.
defer : Порядок документа (как расположены в документе). Выполняется после того, как документ загружен и обработан (ждёт), непосредственно перед DOMContentLoaded .
Поэтому сначала исполнится скрипт 1, поскольку он первый в очереди и по скорости загрузки. Далее 2, потому что у него скорость загрузки такая же быстрая — 1 секунда. Загрузка асинхронно — вне очереди, 3 скрипт загружается за 1,5 секунды и выполняется сразу после загрузки, затем 4 скрипт загружается в порядке очереди и по скорости 2 секунды, последние скрипты — 5, 6, 7. Они загружаются в конце и в порядке очереди размещения в DOM.
5. Что выведет в консоль этот код?
Ответ: 3
Пояснение: х объявлена как функция, поэтому в итоге она перезаписалась с 10 на 3.
Помните, что каждое собеседование — уникальный шанс получить обратную связь от опытных экспертов, используйте его для вашего развития. Всегда просите фидбек по тестовому заданию, чтобы оно стало точкой вашего роста. Как опытный программист и владелец онлайн-школы веб-разработчиков также могу выделить следующие советы для успешного прохождения собеседования:
- Работодатель прекрасно понимает, что вы не знаете всего, поскольку вы не middle или senior разработчик. С вас не будут требовать высокого уровня выполнения кода, но это не повод расслабляться.
- Правильного эталонного решения задачи не существует. Если вы не знаете, как справиться с тестовым — сделайте несколько предположений и продемонстрируйте свой ход мыслей.
- Программирование — это развитие практических навыков, поэтому решайте как можно больше задач, чтобы развивать в себе навык профильного мышления.
- Соискатель допускает, что вы не знаете решения, и что такие ситуации будут происходить и в работе. Поэтому важно показать ваш ход мыслей, когда вы не знаете ответов. Озвучивайте или пишите предположения, описывайте попытки, демонстрируйте свою готовность к подобным вызовам.
- Одно из ключевых качеств джуниора — уметь задавать вопросы, работать с обратной связью и быстро обучаться. Покажите свою готовность развиваться и проактивность через вопросы. Когда вы сдали задание, попросите обратную связь по нему. Поинтересуйтесь, чего от вас ожидали, насколько ваше решение оптимально. Это выделит вас среди других кандидатов.
Помните, что на позицию начинающего специалиста большой спрос, и вам нужно выделиться среди конкурентов. Компания готова вкладываться в вас время и обучать, но вы должны быть активным, задавать вопросы, показать свою способность к обучению и заинтересованность в позиции. Помните, что многие компании в первую очередь ищут именно огонь в глазах, желание расти и развиваться.