Frontend Interview - собеседования по Javascript / Html / Css
11.8K subscribers
2.08K photos
115 videos
316 files
521 links
Канал для подготовки к собеседованиям по фронтенду

Админ, сотрудничество, реклама: @seniorFrontPromo, @maria_seniorfront
Менеджер по рекламе: @Spiral_Yuri

Купить рекламу: https://telega.in/c/frontendinterview

Канал в реестре РКН:
https://rknn.link/su
Download Telegram
Spin Around, Touch the Ground

Вам дан массив, состоящий из строк "left" и "right". Каждая строка делает поворот на 90° в соответствующую сторону. Создайте функцию, которая вернет количество разворотов на 360°.

Примеры:
 ["left", "right", "left", "right"] ➞ 0

["right", "right", "right", "right", "right", "right", "right", "right"] ➞ 2

["left", "left", "left", "left"] ➞ 1


👉 @frontendInterview
Опасности использования innerHTML в JavaScript

innerHTML – это свойство, которое позволяет вставлять HTML-код внутрь элемента как строку. Однако оно небезопасно и может привести к серьезным проблемам.
document.getElementById("content").innerHTML = "<h1>Привет!</h1>";


Уязвимость: XSS-атаки (внедрение вредоносного кода)

Если innerHTML получает данные от пользователя (например, из формы или URL), хакер может вставить вредоносный JavaScript-код.
const userInput = "<script>alert('Вас взломали!');</script>";
document.getElementById("content").innerHTML = userInput;


Проблемы с безопасностью CSP (Content Security Policy)
Если в веб-приложении включена CSP (защита от XSS), то innerHTML может нарушать политику безопасности.
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">


Случайное удаление обработчиков событий

Если заменить содержимое элемента через innerHTML, все обработчики событий внутри него удалятся.
document.getElementById("btn").addEventListener("click", () => {
alert("Нажато!");
});

document.getElementById("container").innerHTML = "<button id='btn'>Клик</button>";
document.getElementById("btn").click(); // Ошибка, обработчик удален


👉 @frontendInterview
2👍2
Как включить в расчёт ширины и высоты элемента его border?
Anonymous Quiz
2%
display: block
13%
box-sizing: content-box
4%
box-sizing: fit-content
80%
box-sizing: border-box
Какой элемент будет рисоваться выше других? Или ниже остальных? Решает браузер по определённым правилам.

Контекст наложения — это концепция трёхмерного расположения элементов по оси z относительно пользователя, смотрящего на экран.

Самый базовый контекст наложения, существующий на любой странице формируется корневым элементом <html>. Все элементы внутри этого контекста сортируются и располагаются с оглядкой друг на друга.

Но мы можем создавать контексты наложения не только на странице целиком, но и в каждом отдельном блоке. Тогда вложенные в него дочерние блоки будут сортироваться и располагаться уже по правилам этого нового, родительского контекста наложения.

Новый контекст наложения формируется если:

1. это корневой элемент (<html>),
2. элемент позиционирован абсолютно (position: absolute) или относительно (position: relative) со свойством z-index, значение которого не auto,
3. флекс-элемент со свойством z-index, значение которого не auto и чей родительский элемент имеет свойство display: flex или display: inline-flex,
4. элементу задано свойство opacity со значением меньше 1,
5. элементу задано свойство transform со значением не none,
6. элементу задано свойство mix-blend-mode со значением не normal,
7. элементу задано свойство filter со значением не none,
8. элементу задано свойство isolation со значением isolate,
9. элемент с position: fixed,
10. элементу задано свойство will-change или аналогичный атрибут,
11. элементу задано свойство -webkit-overflow-scrolling со значением touch.
Остальные элементы, не создающие собственный контекст наложения, используют родительский контекст.

Обычно достаточно запомнить первые три сценария и чуть-чуть помнить про следующие два. Если браузер рисует что-то, чего вы не ожидали, можно всегда вернуться и подсмотреть остальные.

👉 @frontendInterview
👍31
Big O

Нотация Big O («О» большое) — это способ описания производительности функции без измерения времени ее выполнения. Вместо того, чтобы засекать, сколько секунд выполняется функция от начала до конца, Big O показывает, как меняется время ее выполнения по мере увеличения размера входных данных. Этот подход помогает понять, как программа будет вести себя при разных объемах входящей информации.

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

👉 @frontendInterview
This media is not supported in your browser
VIEW IN TELEGRAM
Немного не договорили, что стек с которым придется работать был актуален 10 лет назад

👉 @frontendInterview
🔥2
Как изменить стили кнопок с атрибутом disabled?

C атрибутом disabled, используя селекторы атрибутов. Селектор [disabled] позволяет выбрать все элементы, которые имеют этот атрибут, а селектор :disabled позволяет выбрать все элементы, которые находятся в состоянии disabled.

Пример использования Селектора [disabled]
Этот селектор выбирает все элементы, у которых присутствует атрибут disabled.
button[disabled] {
background-color: gray;
color: white;
border: 1px solid #ccc;
cursor: not-allowed; /* Указывает, что элемент недоступен для взаимодействия */
opacity: 0.6; /* Уменьшает непрозрачность */
}


Пример использования Псевдокласса :disabled
Этот селектор выбирает все элементы, которые находятся в состоянии disabled.
button:disabled {
background-color: gray;
color: white;
border: 1px solid #ccc;
cursor: not-allowed;
opacity: 0.6;
}



Комбинированный подход
Вы можете комбинировать селекторы атрибутов с другими селекторами для более точного применения стилей.
/* Стили для кнопок с классом .special, которые имеют атрибут disabled */
button.special[disabled] {
background-color: darkgray;
color: black;
border: 1px dashed #999;
cursor: not-allowed;
opacity: 0.7;
}


👉 @frontendInterview
👍2🔥1
Чистый Agile. Основы гибкости

Автор: Роберт Мартин

Agile — это всего лишь небольшая подборка методов и инструментов, помогающая небольшим командам программистов управлять небольшими проектами,… но приводящая к большим результатам, потому что каждый крупный проект состоит из огромного количества кирпичиков. Пять десятков лет работы с проектами всех мыслимых видов и размеров позволяют Дяде Бобу показать, как на самом деле должен работать Agile. Если вы хотите понять преимущества Agile, не ищите лёгких путей — нужно правильно применять Agile. «Чистый Agile» расскажет, как это делать разработчикам, тестировщикам, руководителям, менеджерам проектов и клиентам.

👉 @frontendInterview
isItLetter

Создайте функцию, которая проверяет, является ли переданный символ буквой.

Примеры:
 isItLetter('a') =>  true, `'a' is a letter`
isItLetter('1') => false, `'1' is not a letter`


👉 @frontendInterview
🤔1
Какая разница между композицией и наследованием?

Наследование представляет собой механизм, при котором один класс (подкласс или производный класс) наследует свойства и методы от другого класса (суперкласса или базового класса). Подкласс может расширить или изменить функциональность суперкласса. Это позволяет создавать иерархию классов, где подклассы наследуют общие атрибуты и методы от своих суперклассов.

Композиция представляет собой механизм, при котором объект содержит ссылки на другие объекты, называемые компонентами. Вместо того, чтобы наследовать функциональность, объекты используют функциональность компонентов, которые могут быть созданы независимо друг от друга. Это позволяет создавать объекты, состоящие из множества независимых компонентов, и изменять их поведение, комбинируя различные компоненты.

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

👉 @frontendInterview
👍2
Как frontend-разработчику получить оффер в Bigtech?

Ты вроде бы уже не джун, но всё равно чувствуешь, что топчешься на месте? Рынок перегрет, требований всё больше, а откликов — всё меньше? На собесах валят на алгоритмах или просят "нарисовать" архитектуру, как будто ты ведущий.

При этом вокруг кто-то постоянно получает офферы в Яндекс или VK, а у тебя не получается даже дойти до финального этапа? Хочется стабильности, интересных задач и наконец-то попасть в сильную команду...

Меня зовут Тихон, привет! Я — действующий Frontend-разработчик и ментор. Помогаю устроиться на хорошие позиции в Bigtech и сопровождаю на испытательном сроке.


В своем канале:
👉 публикую видео с решением задач, которые прямо сейчас дают крупные компании на собеседованиях
👉даю примеры по прохождению собеседований
👉разбираю резюме и докручиваю резюме подписчиков
👉и просто создаю дружелюбное, комфортное сообщество, где коллеги всегда готовы подсказать и поддержать

🎁В закрепе тебя ждёт подборка из 60 задач, которые сейчас дают на собеседованиях Яндекс, Т-Банк и другие крупные IT игроки.


Подписывайся и получай максимум пользы, а нас уже больше 3500 🤓: frontend_punks

Реклама, erid: 2W5zFGjSGm6 ИП Галактионов Тихон Витальевич, ИНН 771618975809
1👎1
МТС приглашает на масштабный ИТ-чемпионат True Tech Champ 2025!

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

В этом году ты сможешь:
— решать алгоритмические задачи в индивидуальном зачете;
— объединиться в команду с другими участниками и управлять роботом в лабиринте с помощью кода;
— попасть на офлайн шоу-финал в качестве участника или зрителя;
— побороться за призовой фонд 10 250 000 рублей.

Отборочные этапы состоятся онлайн, финал — 21 ноября в МТС Live Холл в Москве.

Регистрация открыта до 20 октября. Подай заявку прямо сейчас.
👩‍💻 Всем программистам посвящается!

Вот 17 авторских обучающих IT каналов по самым востребованным областям программирования:

Выбирай своё направление:

👩‍💻 Frontend — t.iss.one/frontend_ready
📱 JavaScript — t.iss.one/javascript_ready
👩‍💻 Backend — t.iss.one/backend_ready
📱 GitHub & Git — t.iss.one/github_ready
👩‍💻 Python — t.iss.one/python_ready
🤔 InfoSec & Хакинг — t.iss.one/hacking_ready
🖥 SQL & Базы Данных — t.iss.one/sql_ready
🤖 Нейросетиt.iss.one/neuro_ready
👩‍💻 C/C++ — https://t.iss.one/cpp_ready
👩‍💻 C# & Unity — t.iss.one/csharp_ready
👩‍💻 Java — t.iss.one/java_ready
👩‍💻 Linux — t.iss.one/linux_ready
🖼️ DevOpst.iss.one/devops_ready
📖 IT Книги — t.iss.one/books_ready
👩‍💻 Весь IT — t.iss.one/it_ready
👩‍💻 Bash & Shell — t.iss.one/bash_ready
🖥 Design — t.iss.one/design_ready

📌 Гайды, шпаргалки, задачи, ресурсы и фишки для каждого языка программирования!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Назовите способ изменения opacity для всех строк таблицы кроме той, на которую навёл пользователь.
Anonymous Quiz
57%
tbody:hover tr:not(:hover)
16%
tbody:hover:not(:hover)
9%
tbody:not(:hover):hover
18%
tr:not(:hover) tbody:hover