Frontend Interview - собеседования по Javascript / Html / Css
11.9K subscribers
2.06K photos
110 videos
311 files
507 links
Канал для подготовки к собеседованиям по фронтенду

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

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

Канал в реестре РКН:
https://rknn.link/su
Download Telegram
Что выведется в консоль?
Anonymous Quiz
21%
5
57%
10
16%
undefined
6%
error
👍7
This media is not supported in your browser
VIEW IN TELEGRAM
Как сделать ссылку на верх веб-страницы?

Ссылка «наверх» позволяет быстро перейти к верхней части веб-страницы, где обычно располагается логотип, навигация по сайту и другие типовые элементы сайта.

Для создания такой ссылки, в её адресе достаточно указать #top. Все современные браузеры понимают такой адрес и при щелчке по этой ссылке переходят к верхней части текущей веб-страницы.
<a href="#top">Наверх</a>


Вместо ссылки можно использовать кнопку, а переход по ссылке реализовать через JavaScript. Для этого к <button> добавляем событие onclick, внутри которого пишем window.location.href со значением #top
<button onclick="window.location.href='#top'">Наверх</button>


👉 @frontendInterview
👍105
Что делать, когда клиент просит какую-то «дичь»

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

В фрилансерских кругах есть любители поржать на эту тему. Я тоже когда-то таким был. До тех пор, пока не осознал две вещи.

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

Вторая. И тут-то и заключается проблема. Фрилансер, получив странный комментарий к результату своей работы, сразу представляет, как ему придётся тратить время на внесение правок, испытывает от этого дискофморт и его первая реакция (которая очень легко и неприязненно считывается собеседником) — резко возразить.

Как уменьшить количество «дичи» от клиента, да ещё и повысить его удовлетворённость от процесса работы и результата? Ответ в статье.

👉 @frontendInterview
2👍1
Какой метод используется для увеличения элемента при наведении без сдвигания соседних элементов?
Anonymous Quiz
1%
Изменение width или height
1%
Использование padding
91%
Использование transform: scale()
1%
Использование margin
5%
Использование position: absolute
This media is not supported in your browser
VIEW IN TELEGRAM
Стажер: денег не предложили, зато коллектив дружный

👉 @frontendInterview
🤔4👍3
Что такое useСontext в React ?

Это один из встроенных хуков, который позволяет компонентам подписываться на контекст и получать доступ к данным контекста. Используется для передачи данных через дерево компонентов без необходимости передавать пропсы на каждом уровне. Это особенно полезно для глобальных данных, таких как текущий авторизованный пользователь, тема (светлая/темная) или настройки локализации.

Как он работает?

- Создание контекста
Для создания контекста используется функция createContext. Она возвращает объект контекста, который содержит два компонента: Provider и Consumer.
   import React, { createContext, useState } from 'react';

const MyContext = createContext();



- Provider

Компонент Provider используется для предоставления значения контекста всем дочерним компонентам. Все компоненты внутри Provider могут получить доступ к значениям, переданным в value.
    const MyProvider = ({ children }) => {
const [state, setState] = useState('Hello World');

return (
<MyContext.Provider value={{ state, setState }}>
{children}
</MyContext.Provider>
);
};


- useContext

Используется для подписки на контекст в функциональных компонентах. Он принимает объект контекста, возвращаемый из createContext, и возвращает текущее значение контекста.
import React, { useContext } from 'react';

const MyComponent = () => {
const { state, setState } = useContext(MyContext);

return (
<div>
<p>{state}</p>
<button onClick={() => setState('New Value')}>Change Value</button>
</div>
);
};


👉 @frontendInterview
👍72
Алгоритмы: разработка и применение

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

👉 @frontendInterview
2
List Filtering

Вам дан массив, состоящий из чисел и строк. Создайте функцию, которая отфильтрует все строки и вернет массив с числами.

Примеры:
filter_list([1,2,'a','b']) == [1,2]
filter_list([1,'a','b',0,15]) == [1,0,15]
filter_list([1,2,'aasf','1','123',123]) == [1,2,123]


👉 @frontendInterview
Какие минусы у React?

Несмотря на множество преимуществ, у React есть и недостатки, которые могут повлиять на выбор этой библиотеки для проекта. Вот основные из них:

Крутая кривая обучения
Для новых разработчиков React может показаться сложным из-за концепций, таких как JSX, компоненты, хуки и управление состоянием. Требуется время и усилия для освоения всех особенностей и возможностей библиотеки.

Быстрая эволюция
React и его экосистема развиваются очень быстро, часто выходят новые версии и дополнительные библиотеки. Разработчикам нужно постоянно следить за обновлениями и адаптироваться к изменениям, что может быть трудоемким.

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

Ограниченные возможности для SEO
Приложения на чистом React рендерятся на стороне клиента, что может ухудшить индексацию страниц поисковыми системами. Требуется дополнительная настройка, например, использование серверного рендеринга (Next.js), для улучшения SEO.

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

Производительность при большом количестве компонентов
При большом количестве компонентов и частых обновлениях состояния могут возникнуть проблемы с производительностью.Требуется оптимизация кода и использование таких инструментов, как мемоизация (React.iss.onemo, хуки useMemo и useCallback), чтобы избежать ненужных перерисовок.

Пример проблемы с производительностью:

import React, { useState, useMemo } from 'react';

function ExpensiveComponent({ num }) {
const computedValue = useMemo(() => {
let sum = 0;
for (let i = 0; i < num * 1000; i++) {
sum += i;
}
return sum;
}, [num]);

return <div>Computed Value: {computedValue}</div>;
}

function App() {
const [num, setNum] = useState(1);

return (
<div>
<button onClick={() => setNum(num + 1)}>Increase</button>
<ExpensiveComponent num={num} />
</div>
);
}

export default App;


В этом примере показана оптимизация вычислений с использованием useMemo.

👉 @frontendInterview
👍2
Каково значение свойства line-height у элемента section?
Anonymous Quiz
7%
60px
15%
40px
5%
120px
20%
80px
52%
20px
👍8
Как отобразить теги на веб-странице?

Любые теги (вроде <p>) никак не показываются в браузере, поскольку воспринимаются браузером как команды для вставки элементов и изменения их свойств. Но иногда требуется на веб-странице вывести теги, например, для демонстрации HTML-кода. В этом случае используйте спецсимволы &lt; и &gt; для замены угловых скобок < и >. При этом <p> будет выглядеть как &lt;p&gt;

👉 @frontendInterview
5👎1
Ваши git и там и тут передают: как синхронизировать репозитории на мастере и репликах

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

Автор - ведущий ИТ‑инженер в отделе RnD и готовых решений Управления развития продукта. В статье расскажет о том, как они синхронизируют Git‑репозитории на двух узлах, какие существуют альтернативы и зачем это вообще нужно.

👉 @frontendInterview
👍1
Что такое PWA?

PWA — это сокращение от словосочетания Progressive Web Applications, которое переводится на русский язык как «прогрессивные веб-приложения».
Есть 3 подхода к определению прогрессивных веб-приложений.

Обывательское
Это определение можно использовать, когда нужно объяснить, что такое прогрессивные веб-приложения, человеку, который не является веб-разработчиком.
PWA — это такие сайты, которые можно добавить в виде иконки на главный экран или рабочий стол, и при запуске их с этой иконки они будут выглядеть и работать неотличимо от нативных приложений, то есть запускаться в автономном режиме (standalone mode), в котором нет адресной строки и других элементов интерфейса браузера, работать без доступа к интернету, получать push-уведомления и т. д.

Официальное
PWA — это веб-приложения, которые применяют стратегию прогрессивного улучшения (progressive enhancement), то есть проверяют, поддерживает ли браузер те или иные Web API, и если да, то могут их использовать, чтобы обеспечить опыт взаимодействия (user experience) наравне с нативными приложениями. Отсюда и название — прогрессивные веб-приложения.

Техническое
PWA — это сайты, формально удовлетворяющие определённым техническим критериям.

Критерии у каждого браузера на каждой платформе могут быть различны и меняться со временем.

У браузеров на основе Chromium это:

- использование защищённого соединения HTTPS или локального хоста;
- наличие манифеста веб-приложения (JSON-файла, в котором указаны название приложения, описание приложения, ссылка хотя бы на одну растровую иконку с разрешением не ниже 512 x 512 px или векторную иконку в формате SVG).

Ранее браузеры на основе Chromium требовали также наличия Service Worker (JavaScript-кода, который работает в фоновом режиме независимо от веб-страницы, даже если вкладка или браузер закрыты). Service Worker позволяет получать push-уведомлений, синхронизировать данные в фоне, перехватывать и обрабатывать сетевые запросы, что позволяет реализовать кеширование и работу без доступа к интернету, и выполнять другие задачи.

Если сайт удовлетворяет этим критериям, то при его открытии в браузерах на основе Chromium появится предложение установить этот сайт как приложение

👉 @frontendInterview
Html, Css & Javascript in easy steps Special Edition

Книга в простых шагах инструктируют читателя по каждому из трех аспектов веб разработки, которые используются для создания современных веб-страниц:
- Теги языка разметки гипертекста (HTML)
- Правила каскадных таблиц стилей (CSS)
- Функции JavaScript

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

👉 @frontendInterview
3👍3
Last

Найдите последний элемент из данных аргументов Если передан один аргумент, который представляет собой список/массив или строку, верните его последний элемент. Гарантируется, что будет хотя бы один аргумент и что массивы/списки/строки с одним аргументом не будут пустыми.

Примеры:
last(5)               ==> 5
last([1, 2, 3, 4]) ==> 4
last("xyz") ==> "z"
last(1, 2, 3, 4) ==> 4
last([1, 2], [3, 4]) ==> [3, 4]
last([[1, 2], [3, 4]]) ==> [3, 4]


👉 @frontendInterview
Какие есть примеры микрозадач ?

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

1. Промисы используют механизм таких задач для своих колбэков then, catch, и finally. Когда промис переходит в состояние выполнено (fulfilled) или отклонено (rejected), соответствующие колбэки планируются как микрозадачи. Это означает, что они будут выполнены сразу после текущего стека вызовов, но до того, как движок возьмется за выполнение следующей макрозадачи, например, обработку событий или таймеров.
console.log('Начало');

Promise.resolve().then(() => {
console.log('Обработан промис');
});

console.log('Конец');


Вывод будет следующим:
Начало
Конец
Обработан промис



Сначала выполняется синхронный код (Начало и Конец), и только после его завершения, но до того как браузер перейдет к другим задачам, выполняются микрозадачи, связанные с промисами (Обработан промис).

2. Функция queueMicrotask позволяет явно добавить микрозадачу в очередь микрозадач. Это может быть полезно для разделения вычислений на более мелкие асинхронные операции, не блокируя поток выполнения и интерфейс.
console.log('Перед queueMicrotask');

queueMicrotask(() => {
console.log('Выполнено в микрозадаче');
});

console.log('После queueMicrotask');


Вывод будет аналогичным:
Перед queueMicrotask
После queueMicrotask
Выполнено в микрозадаче



Сначала выполняется основной поток кода, затем микрозадача, добавленная через queueMicrotask.

👉 @frontendInterview
4