Frontend Interview - собеседования по Javascript / Html / Css @frontendinterview Channel on Telegram

Frontend Interview - собеседования по Javascript / Html / Css

@frontendinterview


Канал для подготовки к собеседованиям по фронтенду

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

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

Номер заявления в РКН № 4959045795

Frontend Interview - собеседования по Javascript / Html / Css (Russian)

Если вас интересует карьерный рост в сфере фронтенд-разработки, то канал "Frontend Interview - собеседования по Javascript / Html / Css" идеально подойдет для вас. Здесь вы найдете все необходимые материалы и советы для успешного прохождения собеседований по front-end технологиям.

Администраторы канала готовы помочь вам в подготовке к собеседованиям и ответить на любые вопросы. Для сотрудничества и рекламы вы можете обратиться к администраторам @seniorFrontPromo и @maria_seniorfront. Если вам нужна информация о размещении рекламы, то обратитесь к менеджеру по рекламе @Spiral_Yuri.

Не упустите возможность купить рекламное место на канале "Frontend Interview - собеседования по Javascript / Html / Css" и привлечь внимание целевой аудитории. Поднимите свои навыки фронтенд-разработки на новый уровень с помощью этого информативного и полезного ресурса!

Frontend Interview - собеседования по Javascript / Html / Css

25 Jan, 09:03


В сети поделились гениальным лайфхаком, как превратить свой месячный отпуск в двухмесячный

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

24 Jan, 08:00


Офер в Яндекс для опытных фронтендеров за два дня

15–16 февраля приглашаем фронтендеров с опытом работы от пяти лет получить офер в Яндекс через multitrack за 2 дня. Достаточно пройти несколько технических секций 15 февраля, чтобы уже 16-го получить офер и выбрать три команды, к которым вам было бы интересно присоединиться.

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

Узнать подробности и зарегистрироваться.

Реклама. ООО "Яндекс". ИНН 7736207543

Frontend Interview - собеседования по Javascript / Html / Css

24 Jan, 06:00


📌Есть только 2 способа стать JavaScript Senior:

1. Часами просматривать видео на YouTube, документацию и решать сложные задачи, так и не достигнув ощутимого прогресса.

2. Следить за каналом «JavaScript Senior» и сократить 70% времени на подготовку к собеседованиям и улучшение навыков!

Получай полезные сниппеты, актуальные вопросы с собеседований и будь в курсе последних новинок – подпишись @JavaScriptSenior!

Frontend Interview - собеседования по Javascript / Html / Css

23 Jan, 16:02


Оптимизация React-приложений

Веб-приложения сегодня требуют всё большей интерактивности, отзывчивости и быстродействия. В ответ на это команда React постоянно совершенствует инструментарий, позволяющий нам тонко управлять рендерингом и пользовательским опытом. Если вы работали только с классическими методами оптимизации вроде useMemo, useCallback, мемоизации компонент через React.memo и другими известными приёмами, то вас могут заинтересовать следующие хуки:

useTransition - устанавливает приоритеты рендеринга, разделяя обновления на критические и фоновые.

useDeferredValue - откладывает обновление тяжёлых значений, чтобы интерфейс не фризился при вводе данных.

useOptimistic - помогает реализовать оптимистичные обновления "из коробки".

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

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

22 Jan, 09:02


Дан одномерный массив. Его элементами могут быть значения разных типов, включая: undefined, null, boolean, string, number.

const array = [5, undefined, 0, false, '', null, true, 1]


Массив может быть разрежённым (sparse array), то есть включать незаполненные элементы (empty slots).

Например, добавим к массиву array элемент с индексом 15:
array[15] = 'новый элемент'
console.log(array)
// [ 5, undefined, 0, false, '', null, true, 1, <7 empty items>, 'новый элемент']


Напишите функцию подсчёта незаполненных элементов массива.

В JavaScript массивы — это не отдельный тип данных, а просто объекты. Заполненные слоты массива хранятся под числовыми ключами, а пустые слоты вообще не существуют.

В консоли Chrome Dev Tools пустые слоты отображаются как empty, а в Node.js — empty items. Но это лишь абстрактное представление ситуации, когда поле .length массива не совпадает с ожидаемыми заполненными слотами.

Чтобы проверить наличие значения по ключу, можно использовать оператор in или метод .hasOwnProperty():
const test = new Array(5)
test[2] = 42

2 in test // true
test.hasOwnProperty(2) // true

0 in test // false
test.hasOwnProperty(0) // false


То есть, мы можем пройтись по массиву от 0 до length и проверить отсутвие текущего индекса в качестве ключа. Однако есть способ ещё проще: итератор массива и методы, поверх него, используют только существующие ключи:
const test = new Array(5)
test[2] = 42

test.forEach((value, key) => console.log(`значение по ключу ${key}: ${value}`))
// значение по ключу 2: 42

// консоль вывела значение только один раз


Таким образом, чтобы найти количество пустых слотов, достаточно от длины массива отнять число заполненных значений:
const calcEmpty = items => items.reduce(amount => --amount, items.length)

const test = new Array(5)

test[2] = 42
calcEmpty(test) // 4

test[10] = 2
calcEmpty(test) // 9


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

21 Jan, 15:14


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

20 Jan, 09:02


Зачем нужен ref в React?

ref (сокращение от reference) используется для доступа к DOM-элементам или компонентам напрямую. Он позволяет взаимодействовать с элементами, которые были созданы в процессе рендеринга, предоставляя механизм для манипуляции с ними, получения их размеров, положения или вызова методов у компонент. Это особенно полезно в ситуациях, когда необходимо выполнить операции, которые не могут быть выполнены исключительно через декларативный подход React.

Основные случаи использования ref:

- Доступ к DOM-элементам:
- Использование в сторонних библиотеках:
- Сохранение состояния вне дерева компонентов:

Примеры использования ref:

Установка фокуса на элемент:
import React, { useRef, useEffect } from 'react';

function TextInputWithFocusButton() {
const inputEl = useRef(null);

const onButtonClick = () => {
// Установить фокус на текстовое поле
inputEl.current.focus();
};

return (
<div>
<input ref={inputEl} type="text" />
<button onClick={onButtonClick}>Установить фокус</button>
</div>
);
}

export default TextInputWithFocusButton;


Измерение элемента:
import React, { useRef, useEffect, useState } from 'react';

function MeasureDiv() {
const divRef = useRef(null);
const [dimensions, setDimensions] = useState({ width: 0, height: 0 });

useEffect(() => {
if (divRef.current) {
const { width, height } = divRef.current.getBoundingClientRect();
setDimensions({ width, height });
}
}, []);

return (
<div>
<div ref={divRef} style={{ width: '100px', height: '100px', backgroundColor: 'lightblue' }}>
Измеряемый элемент
</div>
<p>Ширина: {dimensions.width}px, Высота: {dimensions.height}px</p>
</div>
);
}

export default MeasureDiv;


Доступ к методам компонента:
import React, { Component } from 'react';

class CustomComponent extends Component {
customMethod() {
console.log('Метод компонента вызван');
}

render() {
return <div>Custom Component</div>;
}
}

class ParentComponent extends Component {
constructor(props) {
super(props);
this.customComponentRef = React.createRef();
}

handleClick = () => {
this.customComponentRef.current.customMethod();
};

render() {
return (
<div>
<CustomComponent ref={this.customComponentRef} />
<button onClick={this.handleClick}>Вызвать метод компонента</button>
</div>
);
}
}

export default ParentComponent;


Важно помнить

- Прямое управление DOM может нарушить декларативный подход React, поэтому его следует использовать только тогда, когда это действительно необходимо.

- Когда необходимо использовать сторонние библиотеки, которые требуют прямого доступа к DOM-элементам.

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

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

19 Jan, 16:04


Count consonants

Напишите функцию, которая принимает строку англоязычного текста и возвращает количество согласных в строке.

Согласные - это все буквы, используемые для написания английского языка, за исключением гласных a, e, i, o, u.

Пример:
consonantCount('') => 0
consonantCount('aaaaa') => 0
consonantCount('XaeiouX') => 2


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

19 Jan, 10:04


Ум программиста. Как понять и осмыслить любой код

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

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

18 Jan, 16:02


Зачем нужен Webpack?

Webpack — это мощный инструмент сборки модулей для современных JavaScript-приложений. Он используется для упаковки и оптимизации всех ресурсов вашего приложения, таких как JavaScript, CSS, изображения и другие файлы, в один или несколько файлов, которые можно эффективно загрузить в браузер.

Основные функции


1. Сборка модулей (Module Bundling)
Webpack анализирует ваше приложение, начиная с одного или нескольких входных файлов (entry points), и строит граф зависимостей всех модулей, используемых в вашем приложении.
Он объединяет эти модули в один или несколько выходных файлов (bundles), которые можно загрузить в браузер.

2. Обработка ресурсов (Asset Management)
Webpack может обрабатывать различные типы файлов, такие как JavaScript, CSS, изображения и шрифты, используя загрузчики (loaders) и плагины (plugins).
Загрузчики позволяют вам преобразовывать файлы перед включением их в сборку. Например, загрузка CSS, преобразование ES6+ кода в ES5 с использованием Babel, оптимизация изображений и т.д.

3. Оптимизация производительности (Performance Optimization)
Webpack предлагает множество встроенных функций для оптимизации выходных файлов, включая минификацию JavaScript и CSS, разделение кода (code splitting), удаление неиспользуемого кода (tree shaking) и др.

4. Горячая перезагрузка (Hot Module Replacement)
Эта функция позволяет обновлять модули приложения в реальном времени без перезагрузки всей страницы. Это значительно ускоряет процесс разработки и тестирования.

Основные компоненты

1. Входные точки (Entry Points)
Входные точки указывают Webpack, с какого файла или файлов начать построение графа зависимостей.
// webpack.config.js
module.exports = {
entry: './src/index.js',
};


2. Выходные точки (Output)
Выходные точки определяют, где Webpack должен сохранить сгенерированные файлы и как их называть.
// webpack.config.js
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
},
};


3. Загрузчики (Loaders)
Загрузчики используются для обработки различных типов файлов. Они позволяют вам преобразовывать файлы перед их включением в сборку.
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader'],
},
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
},
},
},
],
},
};


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

18 Jan, 09:05


Дешёвую рабочую силу теряет

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

16 Jan, 16:08


Почему джуны путаются в асинхронном коде (и как научиться с ним работать)

Асинхронная модель — одна из самых сложных и одновременно важных тем в современном программировании, особенно в веб‑разработке. Если посмотреть на боль новичков (да и не только новичков), то одна из самых частых жалоб — непонимание, что там происходит под капотом, почему код скачет и не дает предсказуемых результатов, или почему программа не ждет выполнения функции.

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

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

15 Jan, 14:00


Как сделать градиентную границу у кнопки?

В этой статье рассматривается CSS свойство background-clip и его значение border-area, при помощи которого можно создавать уникальные границы блоков.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

14 Jan, 15:00


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

13 Jan, 09:07


Почему лучше не встраивать строки непосредственно в DOM?

Передача строки непосредственно в DOM (Document Object Model) может привести к различным проблемам, связанным с безопасностью и корректностью рендеринга. Рассмотрим более подробно, почему это не рекомендуется.

XSS-атаки (Cross-Site Scripting):
Если строка содержит пользовательский ввод или динамически полученные данные, она может включать вредоносный код. Например, злоумышленник может вставить <script> тег, который будет выполнен браузером и может украсть данные пользователей или выполнить другие вредоносные действия.
const userInput = "<img src='x' onerror='alert(\"XSS Attack\")'>";
document.getElementById('output').innerHTML = userInput;


Неправильный рендеринг HTML:
Строка, содержащая HTML-код, может быть неправильно интерпретирована или отрендерена браузером. Это может привести к некорректному отображению страницы или нарушению её структуры.
const invalidHTML = "<div>Unclosed tag";
document.getElementById('output').innerHTML = invalidHTML;
// Это может привести к неправильному отображению содержимого.


Как безопасно работать с динамическим контентом?

- Вместо передачи строк, рекомендуется использовать методы DOM API, такие как createElement, appendChild, textContent и другие. Эти методы позволяют безопасно добавлять элементы и текст в DOM.
const userInput = "Safe text";
const outputElement = document.getElementById('output');
const textNode = document.createTextNode(userInput);
outputElement.appendChild(textNode);


- Если необходимо вставить HTML-код из строки, можно использовать методы, которые экранируют потенциально опасные символы.
const userInput = "<div>Safe content</div>";
const outputElement = document.getElementById('output');
outputElement.textContent = userInput;
// Использование textContent гарантирует безопасное добавление текста.


Примеры

Добавление текстового контента:
const userInput = "Some user-provided text";
const outputElement = document.getElementById('output');
outputElement.textContent = userInput;


Создание и добавление элементов:
const userInput = "Some user-provided text";
const outputElement = document.getElementById('output');
const paragraph = document.createElement('p');
paragraph.textContent = userInput;
outputElement.appendChild(paragraph);


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

12 Jan, 10:03


Паттерны проектирования jаvascript

Автор дает исчерпывающее представление о паттернах проектирования в современном jаvascript (ES6+) и приводит практические примеры их применения. Сначала вы познакомитесь с порождающими, структурными и поведенческими паттернами проектирования в идиоматическом для jаvascript стиле, а затем переключитесь на архитектурные паттерны и паттерны пользовательского интерфейса. Вы узнаете, как применять паттерны, характерные для таких библиотек, как React, и распространять их на фронтенд и микрофронтенд.

В последней части книги представлены и проиллюстрированы паттерны улучшения производительности и безопасности, включая обмен сообщениями, события и стратегии загрузки ресурсов, а также паттерны высокопроизводительных асинхронных вычислений. В издании приводятся примеры использования React и Next.js, а также jаvascript и Web API. Они помогут выбрать и внедрить проверенные паттерны проектирования в различных веб-экосистемах и изменить ваш подход к разработке.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

12 Jan, 09:04


Find the capitals

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

Пример (вход --> выход):
"CodEWaRs" --> [0,3,4,6]


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

11 Jan, 16:07


Что такое inline стили, и какой они имеют приоритет?

Инлайн-стили — это CSS-правила, прописанные непосредственно в HTML-элементе через атрибут style. Они имеют более высокий приоритет, чем стили из таблиц стилей или встроенные теги <style>, но уступают !important. Использование инлайн-стилей снижает переиспользуемость и усложняет поддержку.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

11 Jan, 09:02


Поднимаем мотивацию

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

09 Jan, 16:06


Интеграция CSS-фреймворков в Angular: советы, которые вы не знали

Вы создали новое Angular‑приложение, подключили популярный CSS‑фреймворк, но вместо ожидаемого вау‑эффекта столкнулись с проблемами: стили выглядят не так, как хотелось, валидация форм работает странно, а некоторые элементы вообще не реагируют на изменения состояния. Знакомо? Это типичная ситуация, когда CSS‑фреймворки интегрируются без учета особенностей Angular.

Эта статья поможет вам разобраться, почему возникают такие трудности, и покажет, как правильно интегрировать CSS‑фреймворки в Angular. Мы рассмотрим ключевые проблемы, разберем их решения и реализуем стильное, реактивное поле ввода с применением лучших практик Angular.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

08 Jan, 09:03


Как добавить стили на каждый элемент страницы?

Чтобы добавить стили на каждый элемент страницы, можно использовать универсальный селектор *. Этот селектор выбирает все элементы в документе.

Пример использования
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}


Пример кода выше сбрасывает отступы (margin) и внутренние отступы (padding) всех элементов на странице до нуля. Это часто делается для того, чтобы избежать неожиданных отступов, которые могут быть заданы по умолчанию браузером. Также устанавливается box-sizing: border-box, что изменяет модель коробки элемента, позволяя лучше контролировать размеры элементов при добавлении отступов и границ.

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

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

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

06 Jan, 14:40


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

06 Jan, 12:40


⚡️ В сети начали массово сливать курсы и книги известных онлайн школ

Вот отсортированная база с тонной материала(постепенно пополняется):

БАЗА (4687 видео/книг):

(363 видео, 87 книги) — Python
(415 видео, 68 книги) — Frontend
(143 видео, 33 книги) — ИБ/Хакинг
(352 видео, 89 книги) — С/С++
(343 видео, 87 книги) — Java
(176 видео, 32 книги) — Git
(293 видео, 63 книги) — C#
(174 видео, 91 книги) — DevOps
(167 видео, 53 книги) — PHP
(227 видео, 83 книги) — SQL/БД
(163 видео, 29 книги) — Linux
(107 видео, 43 книги) — СисАналз
(181 видео, 32 книги) — Go
(167 видео, 43 книги) — Kotlin/Swift
(112 видео, 24 книги) — Flutter
(137 видео, 93 книги) — DS/ML
(113 видео, 82 книги) — GameDev
(183 видео, 37 книги) — UI/UX
(129 видео, 73 книги) — QA
(213 видео, 63 книги) — Rust
(121 видео, 24 книги) — Ruby

Скачивать ничего не нужно — все выложили в Telegram

Frontend Interview - собеседования по Javascript / Html / Css

06 Jan, 09:02


Какое свойство позволяет вам спрятать элемент, но сохранить занимаемое им пространство на странице?

Это свойство называется visibility. Это свойство может принимать несколько значений, но основными для скрытия элемента являются visible и hidden.
.hidden-element {
visibility: hidden;
}


По умолчанию, элементы имеют значение visibility: visible;, что означает, что они видимы на странице.
Когда элементу назначается значение visibility: hidden;, он становится невидимым, но продолжает занимать то же пространство в макете страницы, что и когда он был видимым.

В этом примере, второй <div> с классом hidden-element скрыт, но продолжает занимать место на странице. Третий <div> расположен после него, как если бы скрытый элемент был видимым.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.hidden-element {
visibility: hidden;
}
.visible-element {
background-color: lightblue;
padding: 20px;
}
</style>
</head>
<body>
<div class="visible-element">Этот элемент видим.</div>
<div class="hidden-element">Этот элемент скрыт, но сохраняет место.</div>
<div class="visible-element">Этот элемент тоже видим и расположен после скрытого элемента.</div>
</body>
</html>


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

Альтернативы
display: none;
Это свойство полностью удаляет элемент из документа, как если бы его не было, освобождая занимаемое им место.
opacity: 0;
Это свойство делает элемент полностью прозрачным, но элемент остается интерактивным и занимает место.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

05 Jan, 16:07


Sentence Smash

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

Пример:
['hello', 'world', 'this', 'is', 'great']  =>  'hello world this is great'


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

05 Jan, 10:04


Безопасность веб-приложений. Разведка, защита, нападение, 2 изд.

Три столпа безопасности приложений — разведка, нападение и защита. Во втором издании Эндрю Хоффман рассматривает десятки смежных тем, от новейших типов атак и средств защиты до моделирования угроз, жизненного цикла безопасной разработки ПО (SSDL/SDLC) и архитектуры нулевого доверия. Вы получите подробную информацию об эксплойтах и средствах защиты от атак с использованием GraphQL, облачных технологий и доставки контента (CDN). В главы, посвященные атакам и их предотвращению, добавлены сведения для более продвинутых читателей.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

04 Jan, 16:04


Как мерить скорость работы и отзывчивость сайта?

Web Vitals
Google разработал набор метрик, называемых Web Vitals, которые оценивают ключевые аспекты пользовательского опыта:
Largest Contentful Paint (LCP): Время загрузки основного контента страницы.
First Input Delay (FID): Время от первого взаимодействия пользователя с сайтом до момента, когда браузер начинает обработку этого взаимодействия.
Cumulative Layout Shift (CLS): Стабильность макета страницы (измеряет неожиданные сдвиги контента).

Инструменты для измерения производительности
Google Lighthouse: Инструмент, встроенный в Chrome DevTools, который анализирует страницу и предлагает улучшения.
PageSpeed Insights: Онлайн-сервис от Google, который предоставляет отчеты о производительности сайта на мобильных и десктопных устройствах.
WebPageTest: Позволяет проводить детализированные тесты производительности с разными настройками сети и устройства.

Встроенные инструменты браузера
Chrome DevTools: Включает вкладку "Performance" для записи и анализа производительности загрузки страницы и исполнения скриптов.
Network Panel: Показывает время загрузки различных ресурсов, что помогает найти "узкие места".

Мониторинг в реальном времени
Google Analytics: Предоставляет отчеты о скорости загрузки страниц.
New Relic, Datadog: Платформы для мониторинга производительности приложений и сайтов в реальном времени.

Оптимизация и анализ
Использование CDN (Content Delivery Network): Ускоряет доставку контента пользователям, снижая задержки.
Минимизация и сжатие ресурсов: Уменьшение размеров файлов CSS, JavaScript и изображений.
Кэширование: Хранение копий статических ресурсов для ускорения повторных посещений.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

04 Jan, 09:03


Обычный рабочий день фронтендера

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

02 Jan, 16:02


Как мы мигрируем с JQuery на React

Вокруг все говорят о серверных компонентах реакта, о серверном рендеринге, и разных новшествах в мире фронтенде. Как будто JQuery в один миг взял и исчез. Несмотря ни на что он всё ещё остаётся самой популярной библиотекой .

Сегодня я вам расскажу, как мы постепенно мигрируем с JQuery на React.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

01 Jan, 09:02


Как и зачем писать тесты?

«Тесты — это лишняя работа», «тесты писать необязательно» — такие мнения часто можно услышать в разговорах о тестировании. В этой статье мы постараемся развеять этот миф и рассмотрим плюсы тестирования и минусы его отсутствия.

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

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

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

31 Dec, 16:08


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

30 Dec, 09:02


Что такое шаблонные литералы, и для чего они нужны?

Были введены в ECMAScript 2015 (ES6) и представляют собой улучшение стандартных строк в JavaScript. Они облегчают работу с строками, предоставляя более удобный синтаксис для создания многострочных строк, интерполяции переменных и встроенных выражений.

Примеры использования

Интерполяция переменных и выражений
Шаблонные литералы позволяют встраивать переменные и выражения внутрь строк с помощью синтаксиса ${}.
const name = 'Alice';
const age = 25;

const greeting = `Hello, my name is ${name} and I am ${age} years old.`;

console.log(greeting);
// Вывод: Hello, my name is Alice and I am 25 years old.


Многострочные строки

Шаблонные литералы позволяют создавать многострочные строки без необходимости использования символов переноса строки (\n).
const multiLineString = `This is a string
that spans across
multiple lines.`;

console.log(multiLineString);
// Вывод:
// This is a string
// that spans across
// multiple lines.


Встроенные выражения

Внутри шаблонных литералов можно использовать любые JavaScript-выражения.
const a = 5;
const b = 10;

const result = `The sum of ${a} and ${b} is ${a + b}.`;

console.log(result);
// Вывод: The sum of 5 and 10 is 15.


Вызов функций внутри шаблонных литералов
Можно вызывать функции и методы внутри шаблонных литералов.
function toUpperCase(str) {
return str.toUpperCase();
}

const name = 'Alice';

const loudGreeting = `Hello, ${toUpperCase(name)}!`;

console.log(loudGreeting);
// Вывод: Hello, ALICE!


Тегированные шаблонные литералы

Тегированные шаблонные литералы позволяют обработать строку с помощью функции перед ее окончательной интерпретацией.
function tag(strings, ...values) {
console.log(strings);
console.log(values);
return 'Tagged template';
}

const name = 'Alice';
const age = 25;

const taggedResult = tag`Name: ${name}, Age: ${age}`;

console.log(taggedResult);
// Вывод:
// [ 'Name: ', ', Age: ', '' ]
// [ 'Alice', 25 ]
// Tagged template


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

29 Dec, 16:03


Sort array by string length

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

Пример:
["Telescopes", "Glasses", "Eyes", "Monocles"]  //   ["Eyes", "Glasses", "Monocles", "Telescopes"]


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

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

29 Dec, 10:03


JavaScript для начинающих

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

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

28 Dec, 16:07


В чем отличие между SSR и SPA?

Серверный рендеринг (Server-Side Rendering, SSR) и одностраничные приложения (Single Page Applications, SPA) — это два различных подхода к созданию веб-приложений, каждый из которых имеет свои преимущества и недостатки. Рассмотрим их основные отличия.

Серверный рендеринг (SSR)
- При нем весь HTML-код страницы генерируется на сервере и отправляется в браузер в готовом виде.
- Сервер получает запрос от клиента, обрабатывает его, собирает необходимые данные, рендерит HTML и отправляет его обратно клиенту.

Преимущества:
- Поисковые системы получают полностью отрендеренную HTML-страницу, что облегчает индексацию контента.
- Пользователь видит содержимое страницы быстрее, так как браузер получает готовый HTML.
- Серверный рендеринг не требует от клиента выполнения сложного JavaScript-кода.

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

Одностраничные приложения (SPA)

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

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

Недостатки:
- Поисковые системы могут иметь сложности с индексацией контента, который загружается динамически.
- Первоначальная загрузка может быть медленной, так как необходимо загрузить весь JavaScript-код приложения.
- Требует современных браузеров и может не работать в старых или менее популярных браузерах без полифиллов.

Некоторые современные фреймворки поддерживают гибридный подход, совмещая преимущества SSR и SPA. Например, Next.js для React позволяет рендерить начальную загрузку на сервере для улучшения SEO и времени до первого рендера, а затем переключаться на SPA для интерактивных взаимодействий.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

28 Dec, 09:09


Начальник пытается вытащить тебя на работу в офис в выходные

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

26 Dec, 16:09


Стагнация на мидле: когда работаешь, но остаёшься на месте

Годы идут. Джуниорское прошлое уже позади. Ты вроде бы уже тёртый калач, да и деньги платят хорошие. Не 300к в наносекунду, но на пшеничный смузи с вяленой рыбкой хватает. Но что-то не так. Есть стойкое ощущение пустоты впереди. Будто ты никуда не двигаешься. Стрелка компаса хаотично мечется в разные стороны, непонятно, что учить дальше, куда двигаться и "кем ты хочешь стать, когда вырастешь?".

Остановка в карьерном росте рано или поздно ждёт каждого разработчика. Но это не значит, что ты не сможешь пробить собственный потолок. Давай разберём, почему это происходит и как это можно исправить.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

25 Dec, 09:02


Стилизация чекбоксов и радиокнопок

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

Задача состоит в том, чтобы создать кастомные элементы форм, которые будут:
- соответствовать дизайну сайта или приложения;
- выглядеть одинаково во всех браузерах и операционных системах;
- быть доступными для пользователей с особенностями здоровья;
- поддерживать стандартные функции интерактивного элемента формы (отмечен или не отмечен, фокус, взаимодействие с клавиатуры).

В статье рассмотрим три способа стилизации чекбокса и радиокнопки. У каждого есть преимущества и недостатки.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

23 Dec, 09:02


Что будет если передать функцию по ссылке?

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

Определение функции: Вы создаете функцию и сохраняете ее в переменной или объявляете ее прямо в качестве аргумента.
function greet(name) {
return `Hello, ${name}!`;
}


Передача функции по ссылке: Вы передаете функцию как аргумент другой функции или сохраняете ее в другой переменной.
function executeFunction(fn, arg) {
return fn(arg);
}

const result = executeFunction(greet, 'Alice');
console.log(result); // "Hello, Alice!"


В этом примере функция greet передается по ссылке в функцию executeFunction, которая затем вызывает greet с аргументом Alice.

В чем преимущества и возможности передачи

- Вы можете передавать функции по ссылке и использовать их в разных частях программы, что позволяет избегать дублирования кода.
- Функции, которые принимают другие функции в качестве аргументов или возвращают функции, называются функциями высшего порядка. Это позволяет создавать более абстрактные и гибкие функции.
function add(x) {
return function(y) {
return x + y;
};
}

const addFive = add(5);
console.log(addFive(3)); // 8


- Коллбеки - это функции, которые передаются как аргументы другим функциям и вызываются позже. Это особенно полезно в асинхронных операциях, таких как обработка событий или запросы к серверу.
function fetchData(callback) {
setTimeout(() => {
const data = { name: 'Alice' };
callback(data);
}, 1000);
}

function handleData(data) {
console.log(`Received data: ${data.name}`);
}

fetchData(handleData);


- Многие методы массивов, такие как map, filter, reduce, принимают функции в качестве аргументов для обработки элементов массива.
const numbers = [1, 2, 3, 4, 5];
const squared = numbers.map(num => num * num);
console.log(squared); // [1, 4, 9, 16, 25]


Важные моменты

- При передаче функции по ссылке важно помнить, что контекст выполнения (this) может измениться. Это особенно актуально для методов объектов.
const person = {
name: 'Alice',
greet() {
console.log(`Hello, ${this.name}`);
}
};

const greet = person.greet;
greet(); // undefined, так как контекст потерян

const boundGreet = person.greet.bind(person);
boundGreet(); // Hello, Alice


- Передача функции по ссылке позволяет использовать замыкания, где внутренняя функция имеет доступ к переменным внешней функции, даже после того, как внешняя функция завершила выполнение.
function createCounter() {
let count = 0;
return function() {
count++;
return count;
};
}

const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

22 Dec, 16:08


Replace With Alphabet Position

В этом ката вы должны, получив строку, заменить каждую букву на ее место в алфавите. Если что-то в тексте не является буквой, игнорируйте это и не возвращайте.
"a" = 1, "b" = 2


Например:
Input = "The sunset sets at twelve o' clock."
Output = "20 8 5 19 21 14 19 5 20 19 5 20 19 1 20 20 23 5 12 22 5 15 3 12 15 3 11"


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

22 Dec, 10:03


JavaScript для профессионалов

Книга "JavaScript для профессионалов" - как можно понять из названия, не подойдет совсем начинающим js разработчикам, а скорее более опытным.

В этой книге вы узнаете всё что, нужно знать для профессиональных Web-разработчиков, от недостатков и достоинств языка, до каких то практичных приёмов применения JavaScript.

Frontend Interview - собеседования по Javascript / Html / Css

21 Dec, 16:02


<menu>

С помощью <menu> на странице можно создать меню со списком кнопок и других интерактивных элементов. Чаще всего тег используют для вёрстки панели инструментов (тулбара).

Чтобы преобразовать какой-то список элементов в меню, просто оберните его в тег <menu>.

Пример
Для примера создадим меню из аккаунта пользователя. Для этого сделаем каждый пункт кнопкой, обернём в тег <li> и вложим в тег <menu>:
<menu>
<li>
<button onclick="signIn()">Войти</button>
</li>
<li>
<button onclick="signUp()">Зарегистрироваться</button>
</li>
</menu>


Тег <menu>, как и <ul>, объединяет неупорядоченный список элементов. Разница только в содержимом: внутри <menu> должны быть только интерактивные элементы. Чаще всего это кнопки, по клику на которые вызываются функции. Таким образом, пользователь совершает действие или выполняет команду. В спецификации HTML тег <menu> объясняется как альтернатива тегу <ul>, на данный момент разницы в обработке этих двух тегов браузерами нет.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

21 Dec, 09:04


Все красные флаги на собеседованиях собрали в одном видосе.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

19 Dec, 16:03


Как озвучивать зарплатные ожидания. Избежать ошибок еще до собеседования

Вопрос о зарплатных ожиданиях задается всегда. При этом разные компании задают его на разных этапах воронки рекрутинга.

Если вам не задавали этот вопрос, значит, вы просто не доходили до нужного этапа. Но рано или поздно вам придется на него ответить. И вполне вероятно, что отвечать придется, глядя рекрутеру прямо в глаза. А значит, что малейшее колебание будет замечено и отмечено (нас этому учат), и это не пойдет вам на пользу.

Опыт показывает, что для большинства кандидатов этот вопрос является непростым. Далее статья для тех, кому это актуально.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

17 Dec, 16:00


Как повернуть элементы на странице просто и быстро?

Свойство rotate используют, когда нужно повернуть элемент. Раньше для поворота нужно было использовать свойство transform со значением rotate, что не всегда было удобно. Теперь для этого есть отдельное свойство.

Поворачиваем элемент на 30 градусов вправо:
div {
rotate: 30deg;
}


Угол поворота должен указываться в единицах измерения углов.
Если указано одно значение, то элемент будет вращаться вдоль оси z

К значению величины поворота можно добавить уточнение, по какой из трёх осей (x, y, z) применится значение. Эквивалентно rotateX(), rotateY(), rotateZ():
.element {
rotate: x 90deg;
}


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

Можно указать собственный вектор и угол вращения в формате: 3 числа + угол. Аналогично функции rotate3d().
.element {
rotate: 0 0 1 45deg;
}


Каждое из трёх чисел отвечает за соответсвующую ось (x, y, z). 0 значит, что вращения по этой оси не будет. Всё, что больше нуля, устанавливает точку на этой оси.
В итоге элемент будет повярнут вокруг точки на пересечении всех трёх осей.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

16 Dec, 16:00


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

16 Dec, 09:06


text-align-last

text-align-last управляет выравниванием последней строки в блоке. Также работает для строк, которые заканчиваются принудительным переносом строки (например, перед тегом <br>).

Если это свойство не задано, то выравнивание определяется правилами текущего языка (значение атрибута lang у тега <html>), либо значением свойства direction (ltr — слева направо, rtl — справа налево).

Значения:
auto — выравнивание, как и для остальных строк, кроме случая со значением justify, тогда строка будет выравниваться по тому краю, по которому принято в текущем языке (значение по умолчанию).
start — в ту же сторону, что и весь остальной текст.
end — в противоположную сторону от остального текста.
left — по левому краю.
right — по правому краю.
center — по центру.
justify — по ширине, чтобы заполнить всё пространство.

Подсказки
💡Не влияет на выравнивание остальных строк в блоке. Для этого используйте свойство text-align.
💡 Задаёт выравнивание для всех последних строк в выбранном элементе. Например, если у вас есть контейнер <div> с пятью абзацами в нём, выравнивание будет применяться к последней строке каждого из абзацев. Чтобы выровнять только последнюю строку последнего абзаца, используйте :last-child или :last-of-type.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

15 Dec, 16:02


Find the stray number

Вам дан массив целых чисел нечетной длины , в котором все они одинаковы, за исключением одного единственного числа.

Завершите метод, который принимает такой массив и возвращает это единственное другое число

Пример:
[1, 1, 2] ==> 2
[17, 17, 3, 17, 17, 17, 17] ==> 3


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

15 Dec, 10:03


Practical Web Accessibility

Эта книга дополнена практическими примерами, которые вы можете использовать на своих сайтах, а также совершенно новым подходом к аудиту и улучшению доступности веб-сайтов, а также командным подходом к этому, основанным на инструментах, созданных автором и усовершенствованных на протяжении многих лет. консультант — Структура FAIR и контрольный список ACCESS. С помощью этих инструментов вы можете настроить процессы для себя и своей команды, которые значительно улучшат доступность ваших сайтов и, что немаловажно, сохранят ее такой в ​​будущем.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

14 Dec, 16:04


Как развернуть строку в JS?

Есть несколько способов развернуть строку. Один из наиболее распространенных способов — это преобразование строки в массив, разворот массива и затем преобразование массива обратно в строку.

Использование методов массива split, reverse и join
function reverseString(str) {
return str.split('').reverse().join('');
}

console.log(reverseString('hello')); // 'olleh'


Использование цикла for
function reverseString(str) {
let reversed = '';
for (let i = str.length - 1; i >= 0; i--) {
reversed += str[i];
}
return reversed;
}

console.log(reverseString('hello')); // 'olleh'


Использование рекурсии
function reverseString(str) {
if (str === '') {
return '';
} else {
return reverseString(str.substr(1)) + str[0];
}
}

console.log(reverseString('hello')); // 'olleh'


Использование деструктуризации и метода reduce
function reverseString(str) {
return [...str].reduce((acc, char) => char + acc, '');
}

console.log(reverseString('hello')); // 'olleh'


Использование Array.from и reduceRight
function reverseString(str) {
return Array.from(str).reduceRight((acc, char) => acc + char, '');
}

console.log(reverseString('hello')); // 'olleh'


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

24 Nov, 16:03


Two fighters, one winner.

Создайте функцию, которая возвращает имя победителя в бою между двумя бойцами. Каждый боец по очереди атакует другого, и побеждает тот, кто первым убьет другого. Смерть определяется как health <= 0.

Каждый боец будет объектом/экземпляром Fighter. Смотрите ниже класс Fighter на выбранном вами языке.

health и damagePerAttack за атаку будут целыми числами, большими 0. Вы можете мутировать объекты Fighter.

Ваша функция также получает третий аргумент - строку с именем бойца, который атакует первым. Пример:

declare_winner(Fighter("Lew", 10, 2), Fighter("Harry", 5, 4), "Lew") => "Lew"

Lew attacks Harry; Harry now has 3 health.
Harry attacks Lew; Lew now has 6 health.
Lew attacks Harry; Harry now has 1 health.
Harry attacks Lew; Lew now has 2 health.
Lew attacks Harry: Harry now has -1 health and is dead. Lew wins.


function Fighter(name, health, damagePerAttack) {
this.name = name;
this.health = health;
this.damagePerAttack = damagePerAttack;
this.toString = function() { return this.name; }
}


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

24 Nov, 10:03


Справочник JavaScript. Кратко, быстро, под рукой

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

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

23 Nov, 16:03


prefers-contrast

Это одно из значений директивы @media для проверки пользовательских настроек. Отслеживает выбор настроек контрастности в системе.

Пример
Давайте зададим модальному окну белую рамку, когда контрастность в системе понижена.
@media (prefers-contrast: more) {
.dialog {
border: 2px solid #FFFFFF;
}
}


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

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

23 Nov, 09:03


Как быстро мечты удаленщиков разбиваются об реальность

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

22 Nov, 08:00


В новом выпуске подкаста «Времена НаСтали» руководитель отдела frontend-разработки Олег Рогов и руководитель команды дизайна Анна Труфанова рассказали о low-code решениях в веб-дизайне.
Технология использования платформ позволяет создавать приложения без глубоких знаний в области программирования. Такой подход полезен, если к разработке веб-интерфейсов нужно привлечь бизнес-аналитиков или экспертов из другой нетехнической области.
В подкасте ответили на следующие вопросы.
— Как low-code влияет на процесс дизайна?
— В чем главные преимущества использования этих инструментов по сравнению с традиционными методами разработки?
— Нужно ли иметь базовые знания программирования?
— Каковы текущие тенденции и будущее развитие low-code инструментов в контексте дизайна?

Слушать подкаст на Яндекс.Музыке!

Frontend Interview - собеседования по Javascript / Html / Css

21 Nov, 16:03


Feature-Sliced Design (FSD): Основы и практические примеры архитектуры

Когда я только начинал свою карьеру фронтенд-разработчика, часто сталкивался с проблемами поддержки кода в проектах. Со временем я понял, что структура кода имеет решающее значение. Так я узнал о Feature-Sliced Design. Этот подход помогает разбивать проект на функциональные части, что упрощает работу с кодом и его сопровождение. Давайте разберемся как это работает.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

20 Nov, 13:00


Выразительный React: простые компоненты на сервере

В статье вы познакомитесь с React и создадите первый простой компонент — прямоугольник с собачкой. В этом примере мы не будем запускать код в браузере. Вместо этого напишем простой скрипт, который запустит сервер и отдаст HTML-страницу с компонентом. Эта техника называется рендеринг на стороне сервера (Server-Side Rendering, SSR).

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

20 Nov, 09:00


Открытый урок «Эффективная работа с Next.js и TypeScript»

🗓 25 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Практический курс по TypeScript» от Otus.

На вебинаре:

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

🔗 Ссылка на регистрацию: https://vk.cc/cEXrnX

🎁 Только в "Черную пятницу", скидки на курс до 15%! Подробности у менеджеров.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576 erid 2SDnjeC

Frontend Interview - собеседования по Javascript / Html / Css

18 Nov, 12:02


Приглашаем на вебинар курса Fullstack Developer!

📅 Дата: 20 ноября 2024 года

🕗 Время: 20:00 (мск)

📍 Тема: Базовое использование системы контроля версий Git

## Что будет на вебинаре?

- Введение в систему контроля версий, основные команды и концепции (репозитории, коммиты, ветки).

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

- Рекомендации по эффективному использованию Git и обзор популярных инструментов для удобства работы (например, GitHub, GitLab).

## Что узнают участники?

- Основные команды и концепции Git: как использовать команды git init, git add, git commit, git branch и другие. Эти знания помогут создать и управлять своими проектами, отслеживая изменения в коде и организуя свою работу более эффективно.

- Работа с удалёнными репозиториями: научатся клонировать репозитории, отправлять свои изменения и синхронизировать локальные изменения с удалёнными. Эти навыки будут полезны для совместной работы над проектами в командах и использования платформ, таких как GitHub или GitLab.

- Разрешение конфликтов и управление ветками: как управлять различными ветками в проекте и разрешать конфликты, которые могут возникнуть при слиянии изменений. Эти навыки помогут более уверенно работать в команде, минимизируя риски потери данных и улучшая процесс разработки.

Не упустите возможность улучшить свои навыки и стать более уверенным разработчиком! Присоединяйтесь к нашему вебинару и узнайте все секреты работы с Git.

🔗 Зарегистрироваться на вебинар: https://vk.cc/cEUXOc

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru erid 2SDnjeBbtfm

Frontend Interview - собеседования по Javascript / Html / Css

18 Nov, 09:02


Событие change

Событие change срабатывает, когда пользователь изменяет значение в <input>, <select> или <textarea> и фиксирует свои изменения.

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

Когда использовать
В текстовых полях (<input>, <textarea>), когда нужно получить окончательное значение после завершения ввода.

В выпадающих списках (<select>), если пользователь выбрал новое значение из дропдауна с доступными опциями.

Чекбоксы и радиокнопки (<input type="checkbox">, <input type="radio">), когда состояние переключается между «выбрано» и «не выбрано». Например, при отправке формы или при взаимодействии с выбором нескольких значений (чекбоксы или выпадающие списки).

Пример:
const input = document.querySelector('.input')

input.addEventListener('change', function (event) {
console.log(event.target.value)
})


В этом примере мы выбираем элемент с классом .input с помощью document.querySelector(). Используя метод addEventListener, мы привязываем обработчик события change к элементу. Этот обработчик будет вызываться, когда событие произойдет. Внутри функции мы можем получить новое значение элемента с помощью event.target.value. Это значение будет отображено в консоли после изменения и подтверждения ввода пользователем.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

17 Nov, 16:03


Trash Party

Вы получите trash1 и trash2, которые могут иметь следующие значения:
[], false, '', new Array(), null, NaN, undefined, 0, -0, 0n, -0n, '0'.


Вы должны вернуть булево значение, если они строго равны.

Примечание:

тройное равенство === и строгое неравенство !== не допускаются

Пример:
compareTrash(0, false) => false
compareTrash('', '') => true
compareTrash([], 0) => false


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

17 Nov, 10:03


Agile для всех

AGILE дает реальные и действенные ответы на вопрос, который не дает спокойно спать руководителям: «Как оставаться успешным в быстро меняющемся и непредсказуемом мире?» Эта методология уже завоевала рынок, доказав что является одним из лучших подходов для создания и доставки программного обеспечения. «Agile для всех» адресован практикам, из этой книги вы узнаете как целые организации — от менеджеров по продукту и разработчиков до маркетологов и руководителей — могут использовать «гибкий» подход.

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

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

16 Nov, 16:05


Что такое falsy значения?

"falsy" (ложные) значения — это значения, которые при приведении к логическому типу (Boolean) дают false. Эти значения часто используются в условиях (например, в if выражениях) для проверки истинности или ложности.

Основные значения:

false:
Само значение false является ложным.
  if (false) {
console.log('Это не выполнится');
}



0 и -0:
Нулевые значения считаются ложными.
if (0) {
console.log('Это не выполнится');
}


if (-0) {
console.log('Это тоже не выполнится');
}


"" (пустая строка):
Пустая строка считается ложной.
if ("") {
console.log('Это не выполнится');
}



null:

Значение null также является ложным.
if (null) {
console.log('Это не выполнится');
}



undefined:

Значение undefined является ложным.
if (undefined) {
console.log('Это не выполнится');
}



NaN (Not-a-Number):
Специальное значение NaN, которое обозначает нечисловое значение, считается ложным.
if (NaN) {
console.log('Это не выполнится');
}

Frontend Interview - собеседования по Javascript / Html / Css

16 Nov, 09:02


UX designer - нарисовал
Devs - сделали
QA - протестировали
Пользователь:

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

14 Nov, 16:03


Войти в IT – в 37 и с дипломом филфака

Я нашла свою первую работу тестировщика в 37 лет, с гуманитарным образованием, без коммерческого опыта и без курсов. В этой статье хочу показать все максимально объективно – и успехи, и разочарования на этом пути.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

13 Nov, 09:02


Как опубликовать сайт прямо на GitHub?

Задача
Как опубликовать сайт в виде набора HTML-страниц для тестирования или постоянного размещения прямо на GitHub. Например, такой сайт может стать отличным портфолио. Для него будут бесплатными хостинг и доменное имя третьего уровня.

На GitHub для этого есть специальный инструмент — GitHub Pages. С помощью него публикуют сайты, используя в качестве хостинга сам сервис. Есть два способа использования этого инструмента:

1. Собранный сайт помещается в отдельную папку в выбранной ветке репозитория, GitHub просто отображает эту папку как корневую для сайта. Такой подход используют для показа уже собранного статического сайта в виде набора файлов в форматах, которые отображаются в браузере напрямую.
2. Статический сайт сначала собирается с помощью средств автоматизации GitHub Actions и публикуется также как в первом случае.

Второй способ не будем рассматривать, так как он находится на этапе бета-тестирования. В этом режиме можно выбрать уже готовые решения, например, GitHub Pages Jekyll и Static HTML, а можно настроить свой воркфлоу.

Рассмотрим в статье подробно первый способ.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

12 Nov, 16:00


Всем привет!

Хотите узнавать небанальное об интервью на английском? Получить оффер в валюте на удаленке или даже переехать?

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

Будем очень рады вашей подписке, но еще больше - вашим вопросам и мнениям.

Ваши Аня и Любовь
из @acceleracio

Frontend Interview - собеседования по Javascript / Html / Css

11 Nov, 09:02


Как можно оптимизировать перерисовки ?

Оптимизация перерисовок (или "repaints" и "reflows") в веб-приложениях является важной задачей для обеспечения высокой производительности и плавности интерфейса. Вот несколько методов и стратегий, которые можно использовать для оптимизации перерисовок:

Используйте Document Fragments:
Вместо многократного добавления элементов в DOM, добавляйте их в DocumentFragment, а затем добавьте фрагмент в DOM одним действием.
  const fragment = document.createDocumentFragment();
for (let i = 0; i < 100; i++) {
const div = document.createElement('div');
div.textContent = `Item ${i}`;
fragment.appendChild(div);
}
document.body.appendChild(fragment);






Избегайте синхронных изменений стилей и компоновки:
Вместо изменения нескольких отдельных стилей, измените один класс.
  element.style.width = '100px';
element.style.height = '100px';
element.style.backgroundColor = 'red';


Вместо этого используйте класс:
  .new-style {
width: 100px;
height: 100px;
background-color: red;
}




Избегайте чтения свойств, вызывающих перерисовку:
Чтение некоторых свойств, таких как offsetHeight или offsetWidth, после изменения стилей, заставляет браузер выполнять немедленную перерисовку. Избегайте таких действий.

CSS анимации и трансформации:
Используйте CSS для анимаций и трансформаций, так как они могут выполняться на уровне GPU, что снижает нагрузку на основной поток.
  .animated {
transition: transform 0.3s;
transform: translateX(100px);
}



Debouncing и Throttling:
Используйте дебаунс и троттлинг для событий, которые происходят часто (например, resize или scroll), чтобы уменьшить количество вызовов обработчиков событий.
  function debounce(func, wait) {
let timeout;
return function(...args) {
clearTimeout(timeout);
timeout = setTimeout(() => func.apply(this, args), wait);
};
}

window.addEventListener('resize', debounce(() => {
console.log('Resized!');
}, 200));



Использование библиотек с виртуальным DOM:
Библиотеки, такие как React, используют виртуальный DOM, чтобы минимизировать количество изменений в реальном DOM, что значительно улучшает производительность.

Избегайте использования layout thrashing
Это происходит, когда чередуются операции записи и чтения из DOM, что вызывает множественные перерисовки.
  const height = element.offsetHeight;
element.style.height = out;



Сгруппируйте чтения и записи отдельно:
const height = element.offsetHeight;
element.style.height = ${height + 10}px;


Избегайте глубоких вложенностей в DOM
Старайтесь минимизировать глубину вложенности элементов, так как это может усложнить перерисовку и компоновку.

Уменьшите количество правил и селекторов:
Сложные CSS-селекторы могут замедлить работу браузера. Используйте более простые селекторы и старайтесь избегать вложенных правил.

Использование will-change
Используйте свойство will-change, чтобы заранее сообщить браузеру о планируемых изменениях, что позволяет оптимизировать рендеринг.
.will-change-transform {
will-change: transform;
}


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

10 Nov, 18:07


Find the unique string

Есть массив строк. Все строки содержат одинаковые буквы, кроме одной. Попробуйте найти его!

Пример:
findUniq([ 'Aa', 'aaa', 'aaaaa', 'BbBb', 'Aaaa', 'AaAaAa', 'a' ])  //  => 'BbBb'
findUniq([ 'abc', 'acb', 'bac', 'foo', 'bca', 'cab', 'cba' ]) // => 'foo'


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

Гарантируется, что массив содержит более двух строк

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

10 Nov, 10:02


Шпаргалки для начинающего верстальщика HTML/CSS

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

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

09 Nov, 16:02


Расскажите про приоритет селекторов

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

Как она вычисляется?
Специфичность выражается четырьмя уровнями: A, B, C, D. Чем выше значения, тем более специфичный селектор.

A: Инлайновые стили (например, style="color: red;") имеют самую высокую специфичность.
B: Количество ID-селекторов в селекторе (например, #header).
C: Количество классов, атрибутов и псевдоклассов (например, .class, [type="text"], :hover).
D: Количество тегов и псевдоэлементов (например, div, h1, ::before).

Рассмотрим несколько примеров и определим их специфичность:

1. #main-content — (0, 1, 0, 0)
2. .article p — (0, 0, 1, 1)
3. header h1 span — (0, 0, 0, 3)
4. div#main .content .text — (0, 1, 2, 1)

Чем выше значения специфичности, тем выше приоритет стиля. Если два селектора имеют одинаковую специфичность, то стиль, который объявлен позже, будет применён.

Пример
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Пример специфичности</title>
<style>
p {
color: black; /* (0, 0, 0, 1) */
}
.text {
color: blue; /* (0, 0, 1, 0) */
}
#highlight {
color: red; /* (0, 1, 0, 0) */
}
p#highlight {
color: green; /* (0, 1, 0, 1) */
}
</style>
</head>
<body>
<p class="text" id="highlight">Этот текст будет зелёным.</p>
</body>
</html>


В этом примере на <p> элемент действует несколько селекторов с разной специфичностью:

p имеет специфичность (0, 0, 0, 1)
.text имеет специфичность (0, 0, 1, 0)
#highlight имеет специфичность (0, 1, 0, 0)
p#highlight имеет специфичность (0, 1, 0, 1)

Поскольку p#highlight имеет наивысшую специфичность (0, 1, 0, 1), он применяет стиль цвета зелёный.

Почему это важно?
- Управление конфликтами стилей: Знание специфичности помогает правильно управлять стилями и избегать конфликтов.
- Чтение и поддержка кода: Более специфичные селекторы позволяют писать CSS, который легко поддерживать и расширять.
- Эффективность разработки: Понимание специфичности позволяет создавать более предсказуемый и стабильный код.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

08 Nov, 17:45


pov: ты решил залететь в айти в 2024-м

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

06 Nov, 14:00


А о техническом долге я скажу…

Бывало у вас такое, что приходилось вставлять не самое лучшее решение в код, только чтоб успеть сдать задачу перед условной выставкой? Или идет работа над проектом в течение уже пары месяцев, а документация откладывается на потом, когда все устаканится? Поздравляю, вы “счастливый” обладатель технического долга. Не стоит расстраиваться, это часть жизни, которую следует принять и проработать как на сеансе у психолога для комфортной жизни в будущем.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

06 Nov, 09:02


Как сделать превью проекта на собственном сервере

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

Есть несколько готовых сервисов. Если вы работаете над статическим сайтом, можно использовать GitHub Pages, Netlify или Surge. Но это не всегда удобно по целому ряду причин. А вот если есть свой выделенный сервер, возможности резко увеличиваются. Почему бы и не использовать уже имеющийся у вас ресурс?

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

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

05 Nov, 16:02


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

04 Nov, 12:02


За что отвечает z-index?

Это CSS-свойство, которое определяет порядок расположения элементов по оси z (перпендикулярно экрану). Это свойство используется для управления тем, какие элементы будут отображаться поверх других, когда они перекрываются.

Как он работает?
Контекст наложения (stacking context): Чтобы z-index работал, элемент должен иметь установленное значение position, отличное от static (например, relative, absolute, fixed или sticky). Без этого z-index не будет применяться.
Числовое значение: z-index принимает целые числа, включая отрицательные. Элементы с более высоким значением z-index будут отображаться поверх элементов с более низким значением.

Пример
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Пример z-index</title>
<style>
.box {
position: absolute;
width: 100px;
height: 100px;
}
.box1 {
background-color: red;
z-index: 1;
top: 50px;
left: 50px;
}
.box2 {
background-color: blue;
z-index: 2;
top: 80px;
left: 80px;
}
</style>
</head>
<body>
<div class="box box1"></div>
<div class="box box2"></div>
</body>
</html>


В этом примере у нас есть два элемента, которые перекрываются. Красный квадрат имеет z-index: 1, а синий квадрат — z-index: 2. Поскольку значение z-index у синего квадрата выше, он будет отображаться поверх красного.

Почему это важно?
Управление перекрытиями: Важен для создания сложных интерфейсов, где элементы могут перекрываться. Это часто встречается в модальных окнах, всплывающих подсказках, выпадающих меню и т.д.
Визуальная иерархия: Он позволяет разработчикам управлять визуальной иерархией, гарантируя, что более важные элементы остаются видимыми и доступны пользователям.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

03 Nov, 16:02


Millipede of words

Дан массив из 3-7 слов произвольной длины. Без заглавных букв. Слова объединяются, если последняя буква одного слова и первая буква другого слова одинаковы. Возвращается true, если все слова из набора могут быть объединены в одно слово. Каждое слово может и должно быть использовано только один раз. В противном случае возвращается false.

Пример:
solution(["no", "dog", "on", "good"]) => false
solution(["engine", "endure", "elite"]) => true


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

30 Oct, 20:00


Готовь телегу зимой: какие технологии и фреймворки будут актуальны в IT 2025 году

В ИТ-индустрии всё скоротечно: технологии постоянно совершенствуются, меняются, выходят новые релизы, а мы ежегодно продолжаем бороться с легаси, выкатывать изменения и переезжать на новые версии языков и инструментов. Мы расспросили членов ПК конференции Merge 2024 о том, чего айтишникам ждать в 2025 году. Итак, поехали.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

30 Oct, 16:00


Вы знали, что на передовых предприятиях сотрудники обучаются на VR-тренажёрах, а нейросети уже давно заменяют человеческий труд?

Как ещё цифровые технологии меняют промышленность, вы узнаете в канале РУСАЛ IТ. Подписывайтесь!

Реклама. АО «РУСАЛ Менеджмент», ИНН 7730248430 erid:LjN8KCNcQ

Frontend Interview - собеседования по Javascript / Html / Css

30 Oct, 13:11


Кaк сделать поле с выбором по прокрутке?

Элемент <select> представляет собой довольно простую концепцию: выделите его, чтобы увидеть набор из <option>, которые можно выбрать в качестве входного значения. Это отличная модель, и я не предлагаю ее менять. Тем не менее, мне очень нравится ковыряться во всем, и я нашел интересный способ превратить <select> в своего рода циферблат — где параметры выбираются путем прокрутки их в нужное положение, мало чем отличаясь от кодового замка или средств выбора даты iOS. Любой, кто расширял <select> для выбора страны, знает, насколько болезненно длинными могут быть списки, и это может быть одним из способов предотвратить это.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

30 Oct, 09:11


⚡️ Открытый урок «Создание мощных GraphQL серверов с TypeScript и NestJS»

🗓 6 ноября в 19:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Практический курс по TypeScript» от Otus.

На вебинаре разберем:

✔️ как с нуля построить высокопроизводительный GraphQL сервер, используя TypeScript и фреймворк NestJS;
✔️ как проектировать архитектуру серверной части для обеспечения масштабируемости и безопасности;
✔️ а также, обсудим основные принципы GraphQL, настройку схем, резолверов и интеграцию с базой данных.

🔗 Ссылка на регистрацию: https://vk.cc/cDCpxd

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576 erid 2SDnjdtqneX

Frontend Interview - собеседования по Javascript / Html / Css

29 Oct, 16:02


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

28 Oct, 12:05


В чём отличие хранения данных в local storage от куки ?

Хранение данных в Local Storage и использование куки (cookies) — это два различных способа сохранения информации на стороне клиента в веб-разработке. Каждый из них имеет свои особенности, преимущества и недостатки:

Local Storage
- Объем данных: Предоставляет значительно больше пространства для хранения данных по сравнению с куки — до 5-10 МБ в зависимости от браузера.
- Доступность: Данные, сохраненные нем, доступны только на том же домене и не отправляются на сервер при каждом запросе, в отличие от куки.
- Срок хранения: Данные нем сохраняются бессрочно или до тех пор, пока не будут явно удалены кодом или пользователем через настройки браузера.
- Безопасность: Так как данные из него не отправляются на сервер с каждым запросом, риск перехвата этих данных ниже, чем у куки. Однако, поскольку данные доступны через JavaScript, Local Storage уязвим к XSS-атакам (межсайтовому скриптингу).

Куки (Cookies)
- Объем данных: Ограничены размером, обычно максимум 4 КБ на одно куки.
- Доступность: Отправляются на сервер при каждом HTTP-запросе к домену, который их установил, что может быть полезно для аутентификации или отслеживания сессий пользователя.
- Срок хранения: Срок жизни куки может быть установлен при их создании. Если срок не установлен, куки считается сессионным и удаляется при закрытии браузера.
- Безопасность: Куки могут быть настроены как HttpOnly, что делает их недоступными и уменьшает риск XSS-атак. Также куки могут быть помечены как Secure, что означает их отправку только по защищенным соединениям (HTTPS).

Local Storage лучше подходит для хранения больших объемов данных, которые не требуется отправлять на сервер с каждым запросом. Это хороший выбор для сохранения настроек пользователя или данных форм на стороне клиента.

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

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

27 Oct, 16:02


Which are in?

При задании двух массивов строк a1 и a2 возвращается отсортированный массив r в лексикографическом порядке строк из a1, которые являются подстроками строк из a2.

Пример 1:
a1 = ["arp", "live", "strong"] 

a2 = ["lively", "alive", "harp", "sharp", "armstrong"]

returns ["arp", "live", "strong"]


Пример 2:

a1 = ["tarp", "mice", "bull"] 

a2 = ["lively", "alive", "harp", "sharp", "armstrong"]

return []


Примечания: Массивы записываются в "общей" нотации.
В Shell bash a1 и a2 - это строки. Возврат - это строка, в которой слова разделяются запятыми.
Осторожно: в некоторых языках r должен быть без дубликатов.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

27 Oct, 10:03


JavaScript для профессиональных веб-разработчиков

Самое полное руководство по современному JavaScript.
Как максимально прокачать свои навыки и стать топовым JS-программистом? Четвертое издание «JavaScript для профессиональных веб-разработчиков» идеально подойдет тем, кто уже имеет базовые знания и опыт разработки на JavaScript. Автор сразу переходит к техническим деталям, которые сделают ваш код чистым и переведут вас с уровня рядового кодера на высоту продвинутого разработчика.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

26 Oct, 16:02


Что такое Deno?

Deno - это современная среда выполнения JavaScript/TypeScript, созданная Райаном Далом, первоначальным создателем Node.js, в 2018 году. Она была разработана для решения ряда проблем и ограничений, присутствующих в Node.js. Deno внедряет различные функции и архитектурные решения для улучшения безопасности, опыта разработчиков и производительности.

Подробнее про преимущества и недостатки в статье.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

26 Oct, 09:01


Видео для трудяг с синдромом самозванца

Смотреть каждый день за полчаса до конца работы.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

23 Oct, 19:29


Смена специализации в IT: когда отпуск уже не спасает

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

В IT-индустрии часто переходят на новые позиции: тестировщики становятся автотестировщиками или программистами, бизнес-аналитики — системными аналитиками, разработчики осваивают новые области.

Однако не всем удаётся сменить специальность и не всегда это приводит к положительному результату. Как перейти из одной IT-профессии в другую с минимальными потерями? Опросили экспертов и собрали их мнения.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

23 Oct, 09:16


Фронтенд-разработчик? Поможем начать зарабатывать от 200 000 рублей в месяц 💸

Обучение по React от школы IT Mentor — это первый шаг к успешной карьере в IT. Мы предлагаем глубокое изучение актуальных технологий, кураторство опытных менторов и гарантию трудоустройства — платите только если нашли работу ☄️

Курс подойдет тем, кто:
— только начинает изучать разработку и хочет получить все необходимые знания в одном месте,
— уже имеет практический опыт, но хочет перейти на новый грейд и увеличить доход,
— оканчивал технические ВУЗы или онлайн-курсы, но затрудняется найти работу.

👉🏻 Программа включает в себя изучение HTML, CSS3, React, TypeScript, JavaScript, Redux,
а также работу на реальном проекте и подготовку к собеседованиям.

🙌🏻 Сосредоточьтесь на получении новых навыков, не беспокоясь о финансах и будущей работе — мы поможем прокачать хард- и софт-скиллы для вашего успешного старта на позиции Middle React разработчика уже в следующем году!

Записаться на обучение react и подробнее ознакомиться с программой — https://clck.ru/3E8Jh4

Реклама. ИП Тюльников ИНН 526223159257.

Frontend Interview - собеседования по Javascript / Html / Css

22 Oct, 18:00


Визуальные подсказки для проверки формы

Используя только CSS, вы можете отображать для пользователей визуальные подсказки относительно правильности ввода, введенного в формы. Мы можем использовать псевдоклассы CSS :valid и :invalid к элементам формы, чтобы применять соответствующие стили, когда их содержимое проверяется успешно или нет.


<input
type="text"
pattern="([a-zA-Z0-9]\s?)+"
placeholder="Enter full name"
required
/>
<span></span>


<span> будет использоваться для отображения результатов проверки.
А приведенный ниже CSS стилизует входные данные относительно результата проверки:

input + span {
position: relative;
}

input + span::before {
position: absolute;
right: -20px;
bottom: 0;
}

input:not(:placeholder-shown):invalid {
border: 2px solid red;
}

input:not(:placeholder-shown):invalid + span::before {
content: "✖️";
color: red;
}

input:not(:placeholder-shown):valid + span::before {
content: "✓";
color: green;
}


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

22 Oct, 14:00


Научитесь использовать ключевую особенность Clojure на открытом уроке для опытных разработчиков.

Запускайте программу всего один раз и работайте с ней в реальном времени весь процесс разработки.

Приходите на вебинар «Интерактивная разработка на языке Clojure»!
Записаться на событие: https://vk.cc/cD2yCC

Вы узнаете:
- Как добавлять новые функции и изменять состояние программы
- Как «прощупывать» любые данные и пошагово отлаживать код.
- Как запускать тесты и подключаться к внешним системам.

Занятие пройдёт 24 октября в 19:00 МСК и приурочено к старту курса «Clojure Developer». После урока вы сможете продолжить обучение по специальной цене и даже в рассрочку!

Для бесплатного участия и получения записи регистрируйтесь прямо сейчас: https://vk.cc/cD2yCC

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576 erid 2SDnje9p3bH

Frontend Interview - собеседования по Javascript / Html / Css

22 Oct, 11:00


Мы перестали обращаться друг к другу по имени.

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

В канале Далее каждую неделю выходят полезные посты для эйчаров, айтишников, дизайнеров и менеджеров проектов в IT, а еще подборки крутых вакансий. Подписывайся, чтоб не пропустить!

#реклама
О рекламодателе

Frontend Interview - собеседования по Javascript / Html / Css

22 Oct, 09:04


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

21 Oct, 10:30


Для чего нужен cors ?

CORS (Cross-Origin Resource Sharing) — это механизм безопасности, который позволяет ограничивать или разрешать доступ веб-ресурсов из одного домена к ресурсам на другом домене. Он был введен для решения проблем, связанных с политикой одного источника (Same-Origin Policy), которая предотвращает взаимодействие между ресурсами из разных источников, чтобы защитить данные от межсайтовых атак.

Основные задачи
1. CORS помогает предотвратить атаки, такие как XSS (Cross-Site Scripting) и CSRF (Cross-Site Request Forgery), ограничивая доступ к ресурсам на сервере только с доверенных доменов.

2. CORS позволяет легитимным веб-приложениям запрашивать ресурсы с других доменов. Это важно для современных веб-приложений, которые часто взаимодействуют с API и ресурсами, размещенными на разных серверах.

Как он работает
Добавляет новые HTTP-заголовки, которые позволяют серверу сообщать браузеру, разрешено ли выполнение кросс-доменных запросов.

HTTP-заголовки, используемые для CORS
Access-Control-Allow-Origin: Определяет, какие домены могут обращаться к ресурсам сервера.
Access-Control-Allow-Methods: Определяет, какие HTTP-методы (например, GET, POST, PUT, DELETE) разрешены для кросс-доменных запросов.
Access-Control-Allow-Headers: Определяет, какие заголовки могут быть использованы в кросс-доменных запросах.
Access-Control-Allow-Credentials: Указывает, разрешено ли отправлять куки и авторизационные данные вместе с запросом.
Access-Control-Max-Age: Указывает, как долго результаты проверки могут кэшироваться.

Процесс CORS-запроса

Простой запрос (Simple Request) - Запросы с методами GET, HEAD или POST и с ограниченным набором безопасных заголовков считаются простыми и обрабатываются напрямую.

Предварительный запрос (Preflight Request) - Для методов, отличных от GET, HEAD и POST (или если используются нестандартные заголовки), браузер сначала отправляет "предварительный" запрос с методом OPTIONS. Этот запрос проверяет, разрешен ли кросс-доменный доступ.
Если сервер разрешает запрос, он отвечает с соответствующими заголовками CORS. Только после этого браузер отправляет основной запрос.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

20 Oct, 16:02


Rot13

ROT13 — это простой шифр замены букв, который заменяет букву буквой, находящейся через 13 букв после нее в алфавите. ROT13 — пример шифра Цезаря.

Создайте функцию, которая принимает строку и возвращает строку, зашифрованную с помощью Rot13. Если в строку включены цифры или специальные символы, их следует вернуть в исходном виде. Смещать следует только буквы латинского/английского алфавита, как в оригинальной «реализации» Rot13

Пример:
"test"  //  "grfg"


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

20 Oct, 10:02


Программирование без дураков

Хотите научиться программировать "less wrong"? Тогда эта книга - для вас. Ведь программирование - это во многом коммуникация. Стиль программирования, именование, комментирование, работа с чужим кодом - зачастую соглашения складываются именно там, где строгая регламентация на уровне языка программирования отсутствует.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

19 Oct, 13:35


Для чего нужны альтернативные описания к картинкам и как они влияют на доступность и поисковую оптимизацию?

alt — один из атрибутов тега <img> в HTML. Он передаёт текстовую информацию о картинке, когда она не отображается на сайте. Например, у пользователя нестабильное интернет-соединение или выключено отображение картинок в браузере.

По сути alt — это альтернативное текстовое описание содержания изображения. Отсюда и название атрибута – сокращение от «alternative».

<img
src="dog.png"
alt="Шоколадный лабрадор в соломенной шляпе наслаждается
солнечной погодой на пляже. Рядом лежит кокос с трубочкой
и миска с собачьим кормом."
>

<a>
<img src="link-icon.svg" alt="Инструкция по заполнению профиля">
</a>


Нет ничего плохого в пустом alt, если у изображения нет смыслового значения. Пропустить alt можно в нескольких случаях:

- аватарка — имя пользователя и так у нас уже есть;
- превью к статье — уже есть заголовок, и этого будет достаточно;
- иконки в кнопке — есть видимое или скрытое название кнопки.

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

Отталкивайтесь от остального содержимого страницы, но не повторяйте один текст. Допускаются ключевые слова из <h1> или title страницы, когда они поддерживают описание картинки и смотрятся органично. Следите за количеством ключевых слов и случайно не превратите описание в цепочку из них.

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

Длина текста описания не меньше 3–4 слов и не больше 250 символов с пробелами. Оптимальный вариант – 5-6 слов. Максимальная рекомендуемая длина — 125 символов. Один из самых популярных скринридеров JAWS не любит длинные строки. Он может зачитать их как три картинки, хотя это было всего лишь одна длинная строка.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

19 Oct, 09:35


Идеальная страна в Европе для программистов?

Это та, где за окном океан, ритм жизни расслабленный, климат мягкий и солнечный, а по выходным все ездят на серфинг.
Европейская Калифорния – Португалия🇵🇹

Здесь уже сформировалось отличное русскоязычное комьюнити. А Лиссабон быстро превращается в точку притяжения инноваций и стартапов.

Нашли для вас интересный канал Португалия и мы.
Автор переехал из Петербурга в Лиссабон и рассказывает обо всех тонкостях жизни релокантов в Португалии.

Из интересного:
▫️Пути получения ВНЖ после мая 2024
▫️Подготовка к переезду по шагам
▫️Где жить в Лиссабоне. Обзор районов города

Переходите в @portugal_and_me, здесь много ценной информации из первых рук.

Frontend Interview - собеседования по Javascript / Html / Css

17 Oct, 16:03


Плюшки к зарплате: где место бонусов в ИТ и почему это боль HR

Отрасль ИТ, кажется, лидирует по объему дополнительных плюшек, которые предлагают работодатели, нанимая очередного сениора. ДМС зачастую со стоматологией, программы обновления рабочих мест, компенсации занятий спортом, конференции и корпоративное обучение — все предоставляется за счет работодателя.

Красота, правда? Или ловушка, в которую рынок загнал себя сам?

Талантливые разработчики не прибегают в компанию сами только лишь ради ДМС‑а, а отвечая на опросы, указывают, что место плюшек где‑то в конце их списка приоритетов. Но компании настолько задрали планку ожиданий у кандидатов, что теперь так просто даже неиспользуемые HR‑программы не отменишь.

В этой статье — немного о том, почему плюшки это больно и непонятно. А еще о том, какой путь для себя нашли мы.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

16 Oct, 09:02


Слайдер

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

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

В этом рецепте расскажем, как создать доступный слайдер, в котором подумаем про дизайн и учтём семантику.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

14 Oct, 16:12


👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

14 Oct, 12:05


text-wrap

Свойство text-wrap контролирует то, как текст расположится внутри элемента. Можно применять, например, для более сбалансированного вида заголовков, которые не вмещаются в одну строку.

Возможные значения:
- nowrap — текст не переносится по строкам. Он переполнит родительский элемент и выйдет за его пределы, а не перейдёт на новую строку.

- balance — текст переносится так, чтобы наилучшим образом сбалансировать количество символов в каждой строке, улучшая разборчивость и читаемость. Значение balance помогает сохранять текст визуально привлекательным и разборчивым, независимо от того, просматривает ли пользователь контент на большом мониторе или на маленьком экране мобильного телефона.

- stable — результат аналогичен wrap, но при редактировании текста, строки, идущие выше, остаются неподвижными, в то время как при значении по умолчанию будет перерисовываться всё содержимое. Значение поддерживается только в браузерах Safari и Firefox.

- pretty — результат будет таким же, как и при использовании wrap, за исключением того, что браузер будет использовать более медленный алгоритм, который отдает предпочтение лучшему виду, а не скорости. Предназначается для текста, где хорошая типографика предпочтительнее производительности.

👉 @frontendInterview

Frontend Interview - собеседования по Javascript / Html / Css

13 Oct, 16:02


Нечетный или четный?

Дан массив целых чисел, определите, является ли сумма его элементов нечетной или четной
Дайте ответ в виде строки "odd"или "even".
Если входной массив пуст, рассматривайте его как: [0](массив с нулем).

Пример:
[0]  //  "even"
[0, 1, 4] // "odd"
[0, -1, -5] // "even"


👉 @frontendInterview