Чем отличаются REST и RESTful API?
REST (Representational State Transfer) — это архитектурный стиль, используемый при проектировании распределенных систем. Он был описан в диссертации Роя Филдинга в 2000 году и является основой для создания RESTful API.
RESTful API — это веб-сервис, который использует протокол HTTP для обмена данными. Он предоставляет возможность получать, создавать, обновлять и удалять данные на удаленном сервере, используя стандартные HTTP-методы (GET, POST, PUT, DELETE и т. д.).
RESTful API использует ресурсы (например, товары, пользователи, заказы) и URI (Uniform Resource Identifier) для доступа к этим ресурсам. Клиент отправляет запросы на сервер, указывая URI и метод HTTP, а сервер возвращает ответ, который может содержать данные в различных форматах (например, JSON или XML).
Принципы RESTful API:
- Клиент-серверная архитектура: сервер и клиент независимы друг от друга, что позволяет развивать их независимо.
- Отсутствие состояния (stateless): каждый запрос клиента должен содержать всю необходимую информацию для его обработки, без сохранения состояния на сервере.
- Кэширование: клиенты могут кэшировать ответы сервера, чтобы уменьшить количество запросов.
- Единообразие интерфейса: единообразный интерфейс между клиентом и сервером упрощает взаимодействие и увеличивает его надежность.
- Слои: клиент не должен знать о слоях на сервере, которые обрабатывают запросы.
👉 @frontendInterview
REST (Representational State Transfer) — это архитектурный стиль, используемый при проектировании распределенных систем. Он был описан в диссертации Роя Филдинга в 2000 году и является основой для создания RESTful API.
RESTful API — это веб-сервис, который использует протокол HTTP для обмена данными. Он предоставляет возможность получать, создавать, обновлять и удалять данные на удаленном сервере, используя стандартные HTTP-методы (GET, POST, PUT, DELETE и т. д.).
RESTful API использует ресурсы (например, товары, пользователи, заказы) и URI (Uniform Resource Identifier) для доступа к этим ресурсам. Клиент отправляет запросы на сервер, указывая URI и метод HTTP, а сервер возвращает ответ, который может содержать данные в различных форматах (например, JSON или XML).
Принципы RESTful API:
- Клиент-серверная архитектура: сервер и клиент независимы друг от друга, что позволяет развивать их независимо.
- Отсутствие состояния (stateless): каждый запрос клиента должен содержать всю необходимую информацию для его обработки, без сохранения состояния на сервере.
- Кэширование: клиенты могут кэшировать ответы сервера, чтобы уменьшить количество запросов.
- Единообразие интерфейса: единообразный интерфейс между клиентом и сервером упрощает взаимодействие и увеличивает его надежность.
- Слои: клиент не должен знать о слоях на сервере, которые обрабатывают запросы.
👉 @frontendInterview
👍3
Современный JavaScript для нетерпеливых
Язык JavaScript изначально был предназначен для написания небольших объемов кода внутри браузера, но современный JavaScript радикально отличается от своего прародителя. В наши дни программисты на JavaScript активно осваивают функциональный, объектно-ориентированный и асинхронный стили программирования, оставляя в прошлом архаичные конструкции, чреватые ошибками. Данная книга – полное, но при этом лаконичное руководство по версии JavaScript E6 и выше. Вам не потребуется знаний старых версий языка, а сразу предлагается начать с более мощных современных.
👉 @frontendInterview
Язык JavaScript изначально был предназначен для написания небольших объемов кода внутри браузера, но современный JavaScript радикально отличается от своего прародителя. В наши дни программисты на JavaScript активно осваивают функциональный, объектно-ориентированный и асинхронный стили программирования, оставляя в прошлом архаичные конструкции, чреватые ошибками. Данная книга – полное, но при этом лаконичное руководство по версии JavaScript E6 и выше. Вам не потребуется знаний старых версий языка, а сразу предлагается начать с более мощных современных.
👉 @frontendInterview
❤2
isItLetter
Создайте функцию, которая проверяет, является ли переданный символ буквой.
Примеры:
👉 @frontendInterview
Создайте функцию, которая проверяет, является ли переданный символ буквой.
Примеры:
isItLetter('a') => true, `'a' is a letter`
isItLetter('1') => false, `'1' is not a letter`👉 @frontendInterview
Какие принципы и подходы используются при работе с CSS, чтобы обеспечить масштабируемость и поддерживаемость кода?
1. БЭМ (Блок-Элемент-Модификатор) методология: это позволяет разбить интерфейс на независимые блоки, которые можно переиспользовать в разных частях сайта. Это упрощает поддержку и масштабирование кода.
2. Использование препроцессоров CSS (например, Sass или Less): это позволяет писать более читаемый и удобный для поддержки CSS код. С помощью препроцессоров можно использовать переменные, миксины, наследование и другие функции, которые помогают уменьшить дублирование кода и упростить его поддержку.
3. Использование модульной архитектуры: это позволяет разбить CSS код на модули, которые можно переиспользовать в разных частях сайта. Модульная архитектура помогает уменьшить дублирование кода и упрощает поддержку.
4. Использование семантических классов: это позволяет создавать более читаемый и понятный для других разработчиков CSS код. Использование семантических классов упрощает поддержку и масштабирование кода.
👉 @frontendInterview
1. БЭМ (Блок-Элемент-Модификатор) методология: это позволяет разбить интерфейс на независимые блоки, которые можно переиспользовать в разных частях сайта. Это упрощает поддержку и масштабирование кода.
2. Использование препроцессоров CSS (например, Sass или Less): это позволяет писать более читаемый и удобный для поддержки CSS код. С помощью препроцессоров можно использовать переменные, миксины, наследование и другие функции, которые помогают уменьшить дублирование кода и упростить его поддержку.
3. Использование модульной архитектуры: это позволяет разбить CSS код на модули, которые можно переиспользовать в разных частях сайта. Модульная архитектура помогает уменьшить дублирование кода и упрощает поддержку.
4. Использование семантических классов: это позволяет создавать более читаемый и понятный для других разработчиков CSS код. Использование семантических классов упрощает поддержку и масштабирование кода.
👉 @frontendInterview
👍2
🔥Прими участие в Хакатоне от ИТ–холдинга Т1 в Минске и поборись за призовой фонд 600 000 рублей!
Когда: 14–17 октября
Формат: онлайн + финал на площадке
Участвуй, если ты:
🔹обучаешься на технической или ИТ–специальности;
🔹развиваешься в направлении разработки, аналитики, AI/ML, NLP или DevOps;
🔹сможешь быть в Минске 17 октября.
Выбери свой кейс:
✴️FaaS система биллинга: платите ровно за то, что используете. Создай биллинговую систему для FaaS – точный расчёт с учётом времени, вызовов и памяти.
✴️Smart Support: поддержка нового поколения. Разработай ИИ-ассистента для службы поддержки с real-time подсказками из базы знаний.
Почему стоит участвовать:
🔘Кейс в портфолио и полезная обратная связь от менторов Т1;
🔘Шанс проявить себя, чтобы начать карьеру в одной из крупнейших ИТ-компаний;
🔘Реальный опыт командной работы;
🔘Мерч и атмосфера сильного комьюнити — в Т1 более 5 000 джунов из 580+ вузов России и Беларуси.
Регистрация открыта!
➡️ Успей до 12 октября по ссылке.
#реклама
О рекламодателе
Когда: 14–17 октября
Формат: онлайн + финал на площадке
Участвуй, если ты:
🔹обучаешься на технической или ИТ–специальности;
🔹развиваешься в направлении разработки, аналитики, AI/ML, NLP или DevOps;
🔹сможешь быть в Минске 17 октября.
Выбери свой кейс:
✴️FaaS система биллинга: платите ровно за то, что используете. Создай биллинговую систему для FaaS – точный расчёт с учётом времени, вызовов и памяти.
✴️Smart Support: поддержка нового поколения. Разработай ИИ-ассистента для службы поддержки с real-time подсказками из базы знаний.
Почему стоит участвовать:
🔘Кейс в портфолио и полезная обратная связь от менторов Т1;
🔘Шанс проявить себя, чтобы начать карьеру в одной из крупнейших ИТ-компаний;
🔘Реальный опыт командной работы;
🔘Мерч и атмосфера сильного комьюнити — в Т1 более 5 000 джунов из 580+ вузов России и Беларуси.
Регистрация открыта!
➡️ Успей до 12 октября по ссылке.
#реклама
О рекламодателе
👍6
Какие свойства CSS можно использовать для создания анимаций и плавных переходов?
Некоторые из наиболее распространенных свойств:
1. transition - позволяет задать плавный переход между двумя состояниями элемента, например, изменение цвета фона при наведении мыши.
2. animation - позволяет создавать сложные анимации с помощью ключевых кадров (keyframes), которые задают различные состояния элемента на разных этапах анимации.
3. transform - позволяет изменять форму, размер и положение элемента, включая повороты, масштабирование, смещение и т.д.
4. filter - позволяет применять различные эффекты к элементам, такие как размытие, насыщенность, яркость и т.д.
5. opacity - позволяет изменять прозрачность элемента.
6. scroll-snap - позволяет создавать плавный скроллинг между различными элементами на странице.
👉 @frontendInterview
Некоторые из наиболее распространенных свойств:
1. transition - позволяет задать плавный переход между двумя состояниями элемента, например, изменение цвета фона при наведении мыши.
2. animation - позволяет создавать сложные анимации с помощью ключевых кадров (keyframes), которые задают различные состояния элемента на разных этапах анимации.
3. transform - позволяет изменять форму, размер и положение элемента, включая повороты, масштабирование, смещение и т.д.
4. filter - позволяет применять различные эффекты к элементам, такие как размытие, насыщенность, яркость и т.д.
5. opacity - позволяет изменять прозрачность элемента.
6. scroll-snap - позволяет создавать плавный скроллинг между различными элементами на странице.
👉 @frontendInterview
👍2
Используйте простейшие рабочие решения
Занимаясь проектированием систем ПО, идите самым простым путём из возможных.
Причём эту рекомендацию можно применять на удивление широко. Я искренне верю, что так можно делать всегда. Эта техника подходит для исправления багов, обслуживания имеющихся систем и проектирования новых.
Многие инженеры, продумывая дизайн системы, представляют себе некий её «идеал»: что-то стройное, практически бесконечно масштабируемое, удобно распространяемое и так далее. Я же считаю, что это абсолютно ошибочный подход к проектированию ПО. Напротив, нужно вложить всё это время в глубокий анализ имеющейся системы, а затем реализовать простейшее рабочее решение.
👉 @frontendInterview
Занимаясь проектированием систем ПО, идите самым простым путём из возможных.
Причём эту рекомендацию можно применять на удивление широко. Я искренне верю, что так можно делать всегда. Эта техника подходит для исправления багов, обслуживания имеющихся систем и проектирования новых.
Многие инженеры, продумывая дизайн системы, представляют себе некий её «идеал»: что-то стройное, практически бесконечно масштабируемое, удобно распространяемое и так далее. Я же считаю, что это абсолютно ошибочный подход к проектированию ПО. Напротив, нужно вложить всё это время в глубокий анализ имеющейся системы, а затем реализовать простейшее рабочее решение.
👉 @frontendInterview
Что позволяет делать свойство innerHTML в JavaScript?
Anonymous Quiz
12%
Выполнять JavaScript-код внутри элемента напрямую
83%
Вставлять HTML-код внутрь элемента как строку
2%
Удалять все дочерние элементы без замены
3%
Изменять стили элемента без перезагрузки страницы
👍3
Как реализуется ООП в JavaScript?
JavaScript поддерживает объектно-ориентированное программирование, и многие из его функций и методов основаны на этом принципе. ООП в JavaScript основан на прототипах, а не на классах. Каждый объект имеет прототип, который является ссылкой на другой объект. Когда вы обращаетесь к свойству или методу объекта, JS ищет его в самом объекте, а затем в его прототипе, и так далее, пока не найдет нужный элемент или не достигнет конца цепочки прототипов.
Наследование осуществляется также через прототипы. Когда вы создаете новый объект, вы можете указать его прототип, который будет использоваться для наследования свойств и методов. Вы также можете создавать новые объекты на основе существующих объектов с помощью метода Object.create().
JavaScript также поддерживает конструкторы, которые позволяют создавать объекты с помощью функций-конструкторов. Конструкторы могут использоваться для создания объектов с определенными свойствами и методами.
👉 @frontendInterview
JavaScript поддерживает объектно-ориентированное программирование, и многие из его функций и методов основаны на этом принципе. ООП в JavaScript основан на прототипах, а не на классах. Каждый объект имеет прототип, который является ссылкой на другой объект. Когда вы обращаетесь к свойству или методу объекта, JS ищет его в самом объекте, а затем в его прототипе, и так далее, пока не найдет нужный элемент или не достигнет конца цепочки прототипов.
Наследование осуществляется также через прототипы. Когда вы создаете новый объект, вы можете указать его прототип, который будет использоваться для наследования свойств и методов. Вы также можете создавать новые объекты на основе существующих объектов с помощью метода Object.create().
JavaScript также поддерживает конструкторы, которые позволяют создавать объекты с помощью функций-конструкторов. Конструкторы могут использоваться для создания объектов с определенными свойствами и методами.
👉 @frontendInterview
👍1
Mastering Reactive JavaScript
Эта книга предназначена для опытных JavaScript разработчиков, ищущие новые инструменты и подходы к программированию, и рассказывает про основы реактивного программирования. В двух словах, реактивное программирование - это программирование на асинхронных потоках данных. Вы познакомитесь с основами данного программирования, паттернами и примерами реальных приложений.
👉 @frontendInterview
Эта книга предназначена для опытных JavaScript разработчиков, ищущие новые инструменты и подходы к программированию, и рассказывает про основы реактивного программирования. В двух словах, реактивное программирование - это программирование на асинхронных потоках данных. Вы познакомитесь с основами данного программирования, паттернами и примерами реальных приложений.
👉 @frontendInterview
Loneliest character
Создайте функцию, которая принимает строку из букв и пробелов. Верните букву, справа и слева от которой наибольшее число пробелов.
Примеры:
👉 @frontendInterview
Создайте функцию, которая принимает строку из букв и пробелов. Верните букву, справа и слева от которой наибольшее число пробелов.
Примеры:
"a b c" --> ["b"]
"a bcs d k" --> ["d"]
" a b sc p t k" --> ["p"]
"a b c de" --> ["b", "c"]
" a b c de " --> ["b"]
"abc" --> ["a", "b", "c"]
👉 @frontendInterview
👎1
Как можно создать уникальный ID?
В JavaScript есть несколько способов сгенерировать уникальный идентификатор (ID), в зависимости от требований:
Генерация UUID
UUID (универсально уникальный идентификатор) – это 128-битное число, представленное строкой в формате
Генерация с помощью
Использование библиотеки
Хеш-функции (SHA, MD5)
Если нужно вычислить уникальный идентификатор на основе входных данных (например, строки или объекта), можно использовать хеш-функции.
SHA-256 через
Генерация случайного идентификатора
Если нужна просто случайная строка, можно использовать
Базовая генерация ID
Более безопасный вариант с
Инкрементальные ID
Если нужно просто увеличивающееся число (например, ID для записей в массиве), можно использовать счётчик
Хеширование строки (например, объекта)
Можно создать ID, основываясь на JSON-объекте.
👉 @frontendInterview
В JavaScript есть несколько способов сгенерировать уникальный идентификатор (ID), в зависимости от требований:
Генерация UUID
UUID (универсально уникальный идентификатор) – это 128-битное число, представленное строкой в формате
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx. Генерация с помощью
crypto.randomUUID() (современный способ) const id = crypto.randomUUID();
console.log(id); // Например: "3d593c8e-7a34-45f7-9a14-2f5f5788d4ec"
Использование библиотеки
uuid import { v4 as uuidv4 } from 'uuid';
const id = uuidv4();
console.log(id); // "f47ac10b-58cc-4372-a567-0e02b2c3d479"Хеш-функции (SHA, MD5)
Если нужно вычислить уникальный идентификатор на основе входных данных (например, строки или объекта), можно использовать хеш-функции.
SHA-256 через
crypto.subtle async function generateHash(input) {
const encoder = new TextEncoder();
const data = encoder.encode(input);
const hashBuffer = await crypto.subtle.digest('SHA-256', data);
return [...new Uint8Array(hashBuffer)].map(b => b.toString(16).padStart(2, '0')).join('');
}
generateHash("hello").then(console.log);
// Например: "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"Генерация случайного идентификатора
Если нужна просто случайная строка, можно использовать
Math.random(). Базовая генерация ID
const id = Math.random().toString(36).substring(2, 10);
console.log(id); // Например: "5g7f8a1z"
Более безопасный вариант с
crypto.getRandomValues()function generateRandomId(length = 16) {
const array = new Uint8Array(length);
crypto.getRandomValues(array);
return [...array].map(b => b.toString(16).padStart(2, '0')).join('');
}
console.log(generateRandomId(8)); // Например: "a3f9b8c7"Инкрементальные ID
Если нужно просто увеличивающееся число (например, ID для записей в массиве), можно использовать счётчик
let counter = 0;
function generateIncrementalId() {
return ++counter;
}
console.log(generateIncrementalId()); // 1
console.log(generateIncrementalId()); // 2
console.log(generateIncrementalId()); // 3
Хеширование строки (например, объекта)
Можно создать ID, основываясь на JSON-объекте.
function hashObject(obj) {
return JSON.stringify(obj)
.split("")
.reduce((hash, char) => {
return ((hash << 5) - hash) + char.charCodeAt(0);
}, 0)
.toString(16);
}
console.log(hashObject({ name: "Alice", age: 25 })); // Например: "-3d4e5f"👉 @frontendInterview
❤1👍1
МТС приглашает всех, кто пишет на С++, Go, Python, JS, Java, C# и других языках, на True Tech Champ — всероссийский чемпионат по программированию. Соревнование будет проходить в двух треках.
Трек 1. Алгоритмический. Индивидуальный зачет [призовой фонд 2 750 000 рублей]
Реши задачи, которые помогут прокачаться в работе с алгоритмами и структурами данных. Похожие задания встречаются на собеседованиях в МТС и других крупных компаниях. До 240 лучших участников попадут в финал и сразятся в лайв-кодинге.
Трек 2. Программирование роботов. Командный формат [призовой фонд 7 500 000 рублей]
Проведи робота по виртуальному лабиринту, затем управляй им дистанционно на офлайн-полигоне, а в финале — пройди испытания на реальной площадке и выбей соперников с платформы.
🎁 Организаторы отправят командам финалистов по одному роботу Waveshare Cobra Flex для кастомизации. После соревнований они останутся у участников в качестве подарка.
📍 Зрелищный шоу-финал с ИИ-технологиями, кодерскими челленджами и выступлениями международных и российских спикеров пройдет 21 ноября в МТС Live Холл.
Стоит участвовать, чтобы:
— Освежить знания и прокачать новые навыки.
— Заявить о себе на всю страну, получить карьерный буст и шанс лично пообщаться с HR-специалистами МТС.
⏰ Регистрация участников до 20 октября на сайте.
Трек 1. Алгоритмический. Индивидуальный зачет [призовой фонд 2 750 000 рублей]
Реши задачи, которые помогут прокачаться в работе с алгоритмами и структурами данных. Похожие задания встречаются на собеседованиях в МТС и других крупных компаниях. До 240 лучших участников попадут в финал и сразятся в лайв-кодинге.
Трек 2. Программирование роботов. Командный формат [призовой фонд 7 500 000 рублей]
Проведи робота по виртуальному лабиринту, затем управляй им дистанционно на офлайн-полигоне, а в финале — пройди испытания на реальной площадке и выбей соперников с платформы.
🎁 Организаторы отправят командам финалистов по одному роботу Waveshare Cobra Flex для кастомизации. После соревнований они останутся у участников в качестве подарка.
📍 Зрелищный шоу-финал с ИИ-технологиями, кодерскими челленджами и выступлениями международных и российских спикеров пройдет 21 ноября в МТС Live Холл.
Стоит участвовать, чтобы:
— Освежить знания и прокачать новые навыки.
— Заявить о себе на всю страну, получить карьерный буст и шанс лично пообщаться с HR-специалистами МТС.
⏰ Регистрация участников до 20 октября на сайте.
Поговорим про деньги в IT?
Приглашаем опытных IT-специалистов пройти небольшой опрос про зарплаты и бенефиты в технологических компаниях. Это займёт не более 7 минут — а ваше мнение поможет одному крупному российскому работодателю делать актуальные оферы.
Пройти опрос можно здесь
Приглашаем опытных IT-специалистов пройти небольшой опрос про зарплаты и бенефиты в технологических компаниях. Это займёт не более 7 минут — а ваше мнение поможет одному крупному российскому работодателю делать актуальные оферы.
Пройти опрос можно здесь
❤1
👍2