#frontend #полезно
Когда я проходил собесы на Frontend React dev, я старался по памяти сразу после созвона записывать вопросы в заметки. После моего первого тех. собеса (вопросы с него будут ниже) я почему то успешно забил на эту идею. Ответил я где то на процентов 50-60. Естественно, мне тогда отказали из за слабо рассказанной легенды (рассказ о себе - то, что продает вас как специалиста, крайне важно отточить ее) и теории. Летом, когда выйду на рынок в поисках жирных офферов, обязательно буду фиксировать вопросы в заметках и заливать в этот блог.
Как можно заметить, почти все вопросы здесь из общеизвестных списков по типу "топ-100", так оно по факту и есть, на тех. собесах интервьюеры в основном спрашивают общие вещи (так сказать, базу), но, зачастую уходя вглубь определенной темы, которая их интересует больше всего.
Собственно, вот сам список вопросов (для погружения в суть каждого вопроса, вкратце расписал ответы с помощью ChatGPT, советую все таки глубже проработать материал и сделать шпаргалку):
Вопрос 1: Что такое CORS?
Ответ: CORS (Cross-Origin Resource Sharing) — механизм безопасности веб-браузеров, позволяющий веб-страницам выполнять запросы к другим доменам, чем тот, который предоставил саму веб-страницу.
Вопрос 2: Для чего нужен CORS?
Ответ: CORS (Cross-Origin Resource Sharing) необходим для обеспечения безопасности веб-браузеров и разрешает веб-страницам выполнять запросы к другим доменам, отличным от того, который предоставил саму веб-страницу. Этот механизм предотвращает потенциальные угрозы безопасности, связанные с запросами между различными доменами.
Вопрос 3: Что такое контекст?
Ответ: Контекст в JavaScript обозначает окружение, в котором выполняется код. В контексте React, например, он предоставляет способ передачи данных через дерево компонентов.
Вопрос 4: Как вызвать функцию с заданным this?
Ответ: Функцию можно вызвать с заданным this, используя методы call(), apply() или bind(). Эти методы позволяют явно установить значение this при вызове функции.
Вопрос 5: Что такое асинхронность и как работает в JavaScript?
Ответ: Асинхронность в JavaScript позволяет выполнению кода продолжаться без блокировки, даже если некоторые операции занимают время. Это реализуется через колбэки, промисы и асинхронные функции.
Вопрос 6: Что такое Promise и как им пользоваться?
Ответ: Promise — объект, представляющий успешное выполнение или ошибку асинхронной операции. Позволяет обрабатывать результаты асинхронных операций с использованием методов then(), catch() и finally().
Вопрос 7: Что такое ООП и его принципы?
Ответ: ООП (Объектно-Ориентированное Программирование) — парадигма программирования, основанная на использовании объектов, включая классы и экземпляры. Принципы ООП включают инкапсуляцию, наследование и полиморфизм.
Вопрос 8: Что такое SOLID? объяснить каждую букву
Ответ: SOLID — это набор принципов объектно-ориентированного программирования:
S (Принцип единственной ответственности): Класс должен иметь только одну причину для изменения.
O (Принцип открытости/закрытости): Сущности должны быть открыты для расширения, но закрыты для изменения.
L (Принцип подстановки Барбары Лисков): Объекты базового и производного классов должны быть взаимозаменяемы.
I (Принцип разделения интерфейса): Клиенты не должны зависеть от интерфейсов, которые они не используют.
D (Принцип инверсии зависимости): Зависимость на абстракции, а не на деталях.
Вопрос 9: Что такое замыкание?
Ответ: Замыкание в JavaScript — это функция, внутри которой есть доступ к переменным из внешней (родительской) функции, даже после завершения выполнения родительской функции.
Вопрос 10: Что такое EventLoop?
Ответ: EventLoop (Цикл событий) — механизм выполнения асинхронного кода в JavaScript, который обеспечивает непрерывное выполнение кода, обработку событий и запросов.
Вопрос 11: Как сделать привязку контекста?
Ответ: Привязку контекста можно сделать с использованием методов call(), apply() или bind() при вызове функции.
Когда я проходил собесы на Frontend React dev, я старался по памяти сразу после созвона записывать вопросы в заметки. После моего первого тех. собеса (вопросы с него будут ниже) я почему то успешно забил на эту идею. Ответил я где то на процентов 50-60. Естественно, мне тогда отказали из за слабо рассказанной легенды (рассказ о себе - то, что продает вас как специалиста, крайне важно отточить ее) и теории. Летом, когда выйду на рынок в поисках жирных офферов, обязательно буду фиксировать вопросы в заметках и заливать в этот блог.
Как можно заметить, почти все вопросы здесь из общеизвестных списков по типу "топ-100", так оно по факту и есть, на тех. собесах интервьюеры в основном спрашивают общие вещи (так сказать, базу), но, зачастую уходя вглубь определенной темы, которая их интересует больше всего.
Собственно, вот сам список вопросов (для погружения в суть каждого вопроса, вкратце расписал ответы с помощью ChatGPT, советую все таки глубже проработать материал и сделать шпаргалку):
Вопрос 1: Что такое CORS?
Ответ: CORS (Cross-Origin Resource Sharing) — механизм безопасности веб-браузеров, позволяющий веб-страницам выполнять запросы к другим доменам, чем тот, который предоставил саму веб-страницу.
Вопрос 2: Для чего нужен CORS?
Ответ: CORS (Cross-Origin Resource Sharing) необходим для обеспечения безопасности веб-браузеров и разрешает веб-страницам выполнять запросы к другим доменам, отличным от того, который предоставил саму веб-страницу. Этот механизм предотвращает потенциальные угрозы безопасности, связанные с запросами между различными доменами.
Вопрос 3: Что такое контекст?
Ответ: Контекст в JavaScript обозначает окружение, в котором выполняется код. В контексте React, например, он предоставляет способ передачи данных через дерево компонентов.
Вопрос 4: Как вызвать функцию с заданным this?
Ответ: Функцию можно вызвать с заданным this, используя методы call(), apply() или bind(). Эти методы позволяют явно установить значение this при вызове функции.
Вопрос 5: Что такое асинхронность и как работает в JavaScript?
Ответ: Асинхронность в JavaScript позволяет выполнению кода продолжаться без блокировки, даже если некоторые операции занимают время. Это реализуется через колбэки, промисы и асинхронные функции.
Вопрос 6: Что такое Promise и как им пользоваться?
Ответ: Promise — объект, представляющий успешное выполнение или ошибку асинхронной операции. Позволяет обрабатывать результаты асинхронных операций с использованием методов then(), catch() и finally().
Вопрос 7: Что такое ООП и его принципы?
Ответ: ООП (Объектно-Ориентированное Программирование) — парадигма программирования, основанная на использовании объектов, включая классы и экземпляры. Принципы ООП включают инкапсуляцию, наследование и полиморфизм.
Вопрос 8: Что такое SOLID? объяснить каждую букву
Ответ: SOLID — это набор принципов объектно-ориентированного программирования:
S (Принцип единственной ответственности): Класс должен иметь только одну причину для изменения.
O (Принцип открытости/закрытости): Сущности должны быть открыты для расширения, но закрыты для изменения.
L (Принцип подстановки Барбары Лисков): Объекты базового и производного классов должны быть взаимозаменяемы.
I (Принцип разделения интерфейса): Клиенты не должны зависеть от интерфейсов, которые они не используют.
D (Принцип инверсии зависимости): Зависимость на абстракции, а не на деталях.
Вопрос 9: Что такое замыкание?
Ответ: Замыкание в JavaScript — это функция, внутри которой есть доступ к переменным из внешней (родительской) функции, даже после завершения выполнения родительской функции.
Вопрос 10: Что такое EventLoop?
Ответ: EventLoop (Цикл событий) — механизм выполнения асинхронного кода в JavaScript, который обеспечивает непрерывное выполнение кода, обработку событий и запросов.
Вопрос 11: Как сделать привязку контекста?
Ответ: Привязку контекста можно сделать с использованием методов call(), apply() или bind() при вызове функции.
🔥7
Вопрос 12: Что такое и чем отличается Cookie, localStorage и sessionStorage?
Ответ: Cookie, localStorage и sessionStorage — это механизмы хранения данных на стороне клиента. Cookie используется для хранения небольших данных и отправляется с каждым запросом. localStorage и sessionStorage предоставляют более крупное хранилище, и их данные остаются в браузере, но sessionStorage удаляется после закрытия вкладки.
Вопрос 13: Наследование классов в JS
Ответ: Наследование в JavaScript реализуется через ключевое слово class. Классы могут наследовать от других классов с использованием ключевого слова extends, что позволяет создавать цепочки наследования.
Вопрос 14: Есть ли в JS инкапсуляция?
Ответ: В JavaScript инкапсуляция реализуется через замыкания и области видимости переменных. В отличие от некоторых языков, JavaScript не имеет ключевых слов для явного указания уровня доступа.
Вопрос 15: Как можно поменять контекст какой-то функции?
Ответ: Контекст функции можно изменить с использованием методов call(), apply() или bind(), либо с использованием стрелочных функций, которые не имеют собственного this.
Вопрос 16: Что такое WebSocket?
Ответ: WebSocket — это протокол связи, обеспечивающий полнодуплексное соединение между клиентом и сервером через один сокет. Это позволяет в реальном времени обмениваться данными.
Вопрос 17: Что такое JWT токен и из чего он состоит?
Ответ: JWT (JSON Web Token) — это стандартизированный формат токена, представляющий собой строку в формате JSON, которая содержит информацию о пользователе. Он состоит из заголовка, полезной нагрузки и подписи.
Вопрос 18: Где хранится JWT токен?
Ответ: JWT токен обычно хранится в заголовке запроса (Authorization), cookie или внутри тела запроса, в зависимости от конфигурации приложения.
Вопрос 19: Какие бывают JWT токены?
Ответ: Существуют три типа JWT токенов: JWT с подписью (JWS), JWT с шифрованием (JWE) и комбинированный токен, который содержит и подпись, и шифрование.
Вопрос 20: Чем отличается авторизация от аутентификации?
Ответ: Аутентификация — это процесс проверки подлинности пользователя, тогда как авторизация определяет разрешения доступа пользователя к определенным ресурсам.
Вопрос 21: Этапы жизненного цикла компонента React
Ответ: Этапы жизненного цикла компонента React можно разделить на три основных категории: Mounting (создание), Updating (обновление) и Unmounting (удаление).
Mounting: Этот этап начинается с создания компонента и включает в себя следующие методы:
constructor: Вызывается при создании экземпляра компонента.
render: Отвечает за отображение компонента в виртуальном DOM.
componentDidMount: Вызывается после того, как компонент был вставлен в DOM.
Updating: Этот этап возникает при обновлении состояния или пропсов и включает методы:
shouldComponentUpdate: Определяет, следует ли компоненту обновиться.
render: Опять же, вызывается для отображения обновленного состояния.
componentDidUpdate: Вызывается после обновления компонента.
Unmounting: На этом этапе компонент удаляется из DOM, и используется метод:
componentWillUnmount: Вызывается перед удалением компонента.
Вопрос 22: Какие есть в классах React этапы жизненного цикла и на каких этапах есть какие методы?
Ответ: В классах React существует несколько методов для обработки различных этапов жизненного цикла:
constructor: Этот метод вызывается при создании экземпляра компонента и используется для инициализации состояния и привязки методов.
render: Метод, отвечающий за отображение компонента в виртуальном DOM.
componentDidMount: Вызывается после того, как компонент был вставлен в DOM. Используется для выполнения действий, которые требуют присутствия компонента в DOM (например, загрузка данных).
shouldComponentUpdate: Определяет, следует ли компоненту обновиться. Позволяет оптимизировать производительность.
componentDidUpdate: Вызывается после обновления компонента и предоставляет возможность выполнить дополнительные действия.
componentWillUnmount: Вызывается перед удалением компонента из DOM. Используется для очистки ресурсов, остановки таймеров и т.д.
Ответ: Cookie, localStorage и sessionStorage — это механизмы хранения данных на стороне клиента. Cookie используется для хранения небольших данных и отправляется с каждым запросом. localStorage и sessionStorage предоставляют более крупное хранилище, и их данные остаются в браузере, но sessionStorage удаляется после закрытия вкладки.
Вопрос 13: Наследование классов в JS
Ответ: Наследование в JavaScript реализуется через ключевое слово class. Классы могут наследовать от других классов с использованием ключевого слова extends, что позволяет создавать цепочки наследования.
Вопрос 14: Есть ли в JS инкапсуляция?
Ответ: В JavaScript инкапсуляция реализуется через замыкания и области видимости переменных. В отличие от некоторых языков, JavaScript не имеет ключевых слов для явного указания уровня доступа.
Вопрос 15: Как можно поменять контекст какой-то функции?
Ответ: Контекст функции можно изменить с использованием методов call(), apply() или bind(), либо с использованием стрелочных функций, которые не имеют собственного this.
Вопрос 16: Что такое WebSocket?
Ответ: WebSocket — это протокол связи, обеспечивающий полнодуплексное соединение между клиентом и сервером через один сокет. Это позволяет в реальном времени обмениваться данными.
Вопрос 17: Что такое JWT токен и из чего он состоит?
Ответ: JWT (JSON Web Token) — это стандартизированный формат токена, представляющий собой строку в формате JSON, которая содержит информацию о пользователе. Он состоит из заголовка, полезной нагрузки и подписи.
Вопрос 18: Где хранится JWT токен?
Ответ: JWT токен обычно хранится в заголовке запроса (Authorization), cookie или внутри тела запроса, в зависимости от конфигурации приложения.
Вопрос 19: Какие бывают JWT токены?
Ответ: Существуют три типа JWT токенов: JWT с подписью (JWS), JWT с шифрованием (JWE) и комбинированный токен, который содержит и подпись, и шифрование.
Вопрос 20: Чем отличается авторизация от аутентификации?
Ответ: Аутентификация — это процесс проверки подлинности пользователя, тогда как авторизация определяет разрешения доступа пользователя к определенным ресурсам.
Вопрос 21: Этапы жизненного цикла компонента React
Ответ: Этапы жизненного цикла компонента React можно разделить на три основных категории: Mounting (создание), Updating (обновление) и Unmounting (удаление).
Mounting: Этот этап начинается с создания компонента и включает в себя следующие методы:
constructor: Вызывается при создании экземпляра компонента.
render: Отвечает за отображение компонента в виртуальном DOM.
componentDidMount: Вызывается после того, как компонент был вставлен в DOM.
Updating: Этот этап возникает при обновлении состояния или пропсов и включает методы:
shouldComponentUpdate: Определяет, следует ли компоненту обновиться.
render: Опять же, вызывается для отображения обновленного состояния.
componentDidUpdate: Вызывается после обновления компонента.
Unmounting: На этом этапе компонент удаляется из DOM, и используется метод:
componentWillUnmount: Вызывается перед удалением компонента.
Вопрос 22: Какие есть в классах React этапы жизненного цикла и на каких этапах есть какие методы?
Ответ: В классах React существует несколько методов для обработки различных этапов жизненного цикла:
constructor: Этот метод вызывается при создании экземпляра компонента и используется для инициализации состояния и привязки методов.
render: Метод, отвечающий за отображение компонента в виртуальном DOM.
componentDidMount: Вызывается после того, как компонент был вставлен в DOM. Используется для выполнения действий, которые требуют присутствия компонента в DOM (например, загрузка данных).
shouldComponentUpdate: Определяет, следует ли компоненту обновиться. Позволяет оптимизировать производительность.
componentDidUpdate: Вызывается после обновления компонента и предоставляет возможность выполнить дополнительные действия.
componentWillUnmount: Вызывается перед удалением компонента из DOM. Используется для очистки ресурсов, остановки таймеров и т.д.
🔥8
Вопрос 23:
Какие есть в функциональных компонентах этапы жизненного цикла и какие есть для них методы?
Ответ: В функциональных компонентах React используются хуки, такие как useEffect, чтобы реализовать функциональность, аналогичную методам жизненного цикла.
Вопрос 24: Что такое и как работает хук useCallback?
Ответ: Хук useCallback в React используется для мемоизации колбэк-функций, предотвращая их лишнее создание при каждом рендере.
Вопрос 25: Чем отличаются e2e тесты от unit?
Ответ: e2e (end-to-end) тесты проверяют взаимодействие множества компонентов приложения, в то время как unit тесты сосредотачиваются на изоляции и тестировании отдельных модулей или функций. e2e тесты более интегрированы и могут выявлять проблемы взаимодействия между компонентами.
Присоединяйтесь к нашему общему чату и Discord серверу :)
Какие есть в функциональных компонентах этапы жизненного цикла и какие есть для них методы?
Ответ: В функциональных компонентах React используются хуки, такие как useEffect, чтобы реализовать функциональность, аналогичную методам жизненного цикла.
Вопрос 24: Что такое и как работает хук useCallback?
Ответ: Хук useCallback в React используется для мемоизации колбэк-функций, предотвращая их лишнее создание при каждом рендере.
Вопрос 25: Чем отличаются e2e тесты от unit?
Ответ: e2e (end-to-end) тесты проверяют взаимодействие множества компонентов приложения, в то время как unit тесты сосредотачиваются на изоляции и тестировании отдельных модулей или функций. e2e тесты более интегрированы и могут выявлять проблемы взаимодействия между компонентами.
Присоединяйтесь к нашему общему чату и Discord серверу :)
🔥7
#backend #полезно
Вот несколько задач по sql, которые были на собесе middle backend node.js разраба🧐
1. Задачка на рассуждение. Дан следующий запрос, необходимо рассказать как бы ты его оптимизировал:
Краткое пояснение запроса: выборка всех учеников (Students), которые учатся в (School), расположенных в конкретном городе (City = 'Moscow')
2. Даны 2 таблички:
- Orders (заказы): OrderID, OrderDate, CustomerID, Amount ;
- Products (товары): ProductID, ProductName, Price
Необходимо написать запрос для получения суммарной стоимости заказов по каждому клиенту за определённый период, включая только те заказы, где было куплено более одного продукта.
Присоединяйтесь к нашему общему чату и Discord серверу :)
Вот несколько задач по sql, которые были на собесе middle backend node.js разраба🧐
1. Задачка на рассуждение. Дан следующий запрос, необходимо рассказать как бы ты его оптимизировал:
SELECT * FROM Students WHERE PassportId IN (SELECT PassportId FROM School WHERE City = 'Moscow')
Краткое пояснение запроса: выборка всех учеников (Students), которые учатся в (School), расположенных в конкретном городе (City = 'Moscow')
2. Даны 2 таблички:
- Orders (заказы): OrderID, OrderDate, CustomerID, Amount ;
- Products (товары): ProductID, ProductName, Price
Необходимо написать запрос для получения суммарной стоимости заказов по каждому клиенту за определённый период, включая только те заказы, где было куплено более одного продукта.
Присоединяйтесь к нашему общему чату и Discord серверу :)
🔥10❤1👍1
#any #полезно
Был созвон с HR по итогам 5 месяцев работы в компании, обсуждали мои ощущения от работы и взаимодействия с командой в целом, зашла речь про то, что софт-скиллы зачастую играют решающую роль при найме, позже я поинтересовался, что во мне нашла компания, чтобы сделать мне оффер. Ответ в обложке поста).
Присоединяйтесь к нашему общему чату и Discord серверу :)
Был созвон с HR по итогам 5 месяцев работы в компании, обсуждали мои ощущения от работы и взаимодействия с командой в целом, зашла речь про то, что софт-скиллы зачастую играют решающую роль при найме, позже я поинтересовался, что во мне нашла компания, чтобы сделать мне оффер. Ответ в обложке поста).
Присоединяйтесь к нашему общему чату и Discord серверу :)
🔥5
#any #полезно
🫂 Полезная статья про то, что не стоит переживать за свой уровень английского или акцента при работе в международных компаниях.
🌍 Все таки на то они и международные, чтобы людям со всего мира было комфортно работать друг с другом и не испытывать языкового барьера.
Присоединяйтесь к нашему общему чату и Discord серверу :)
🫂 Полезная статья про то, что не стоит переживать за свой уровень английского или акцента при работе в международных компаниях.
🌍 Все таки на то они и международные, чтобы людям со всего мира было комфортно работать друг с другом и не испытывать языкового барьера.
Присоединяйтесь к нашему общему чату и Discord серверу :)
🔥5
#shortfact
✍ Не бойтесь задавать вопросы коллегам / лидам.
От вас ждут, что вы активно будете спрашивать детали задачи. Лучше декомпозировать таску на 100%, чем зарываться в собственном эго и пытаться все сделать в соло и потом просто не успеть в срок. Даже если вы все равно опаздываете, лучше предупредить заранее и предложить возможные пути решения. В глазах менеджеров вы будете смотреться гораздо лучше с точки зрения софт-скиллов.
🚩 У меня на работе даже был похожий кейс. Думая, что вот-вот разберусь, как и что должно работать, просидел целую неделю, так и не поняв, что от меня требовали). В итоге созвонился с участниками команды почти от каждого стека и мы за 30 (!) минут решили мой вопрос, с которым я бился на протяжении половины спринта.
💯 В итоге, я все таки сдал задачу в срок.
Присоединяйтесь к нашему общему чату и Discord серверу :)
✍ Не бойтесь задавать вопросы коллегам / лидам.
От вас ждут, что вы активно будете спрашивать детали задачи. Лучше декомпозировать таску на 100%, чем зарываться в собственном эго и пытаться все сделать в соло и потом просто не успеть в срок. Даже если вы все равно опаздываете, лучше предупредить заранее и предложить возможные пути решения. В глазах менеджеров вы будете смотреться гораздо лучше с точки зрения софт-скиллов.
🚩 У меня на работе даже был похожий кейс. Думая, что вот-вот разберусь, как и что должно работать, просидел целую неделю, так и не поняв, что от меня требовали). В итоге созвонился с участниками команды почти от каждого стека и мы за 30 (!) минут решили мой вопрос, с которым я бился на протяжении половины спринта.
💯 В итоге, я все таки сдал задачу в срок.
Присоединяйтесь к нашему общему чату и Discord серверу :)
🔥4
#backend #полезное
Вопросы с недавнего собеседования на позицию middle backend node.js разработчика🧐
1. Расскажите о способах улучшения производительности Node.js приложения, использующего Express.js
2. Что такое профилирование и какие инструменты или методы можно использовать для профилирования?
3. Что такое EventLoop в Node.js и как он связан с производительностью backend части?
4. Расскажите о плюсах и минусах индексов в БД
Присоединяйтесь к нашему общему чату и Discord серверу :)
Вопросы с недавнего собеседования на позицию middle backend node.js разработчика🧐
1. Расскажите о способах улучшения производительности Node.js приложения, использующего Express.js
2. Что такое профилирование и какие инструменты или методы можно использовать для профилирования?
3. Что такое EventLoop в Node.js и как он связан с производительностью backend части?
4. Расскажите о плюсах и минусах индексов в БД
Присоединяйтесь к нашему общему чату и Discord серверу :)
🔥6
#backend #полезно
Небольшое дополнение к предыдущему посту🧐
1. Расскажите, что такое индексы, какие бывают и как работают изнутри
2. Масштабирование: горизонтальное и вертикальное. Что это такое и в чём отличия?
3. Сборщик мусора в js: примеры работы
4. Глобальные объекты в js
5. Преимущества nest над express
6. worker's node.js
7. С какими БД работал. Отличия nosql/sql баз данных
8. Транзакции в БД, их отличия в нереляционных БД. Примеры использования
Присоединяйтесь к нашему общему чату и Discord серверу :)
Небольшое дополнение к предыдущему посту🧐
1. Расскажите, что такое индексы, какие бывают и как работают изнутри
2. Масштабирование: горизонтальное и вертикальное. Что это такое и в чём отличия?
3. Сборщик мусора в js: примеры работы
4. Глобальные объекты в js
5. Преимущества nest над express
6. worker's node.js
7. С какими БД работал. Отличия nosql/sql баз данных
8. Транзакции в БД, их отличия в нереляционных БД. Примеры использования
Присоединяйтесь к нашему общему чату и Discord серверу :)
🔥5👍1
#backend #полезное
Задачка с последнего собеса подписчика на позицию middle backend node.js🧐
В каком порядке будет вывод?
Правильный ответ 🤨:
// start 0.1
// start 0.2
// start 0.3
// finish 0.3
// finish 0.3
// finish 0.3
Присоединяйтесь к нашему общему чату и Discord серверу :)
Задачка с последнего собеса подписчика на позицию middle backend node.js🧐
В каком порядке будет вывод?
(async () => {
const testFunction = async function() {
this.traceId = Math.random() // 0.1
console.log('start', this.traceId); //
await new Promise(r => setTimeout(r))(r => setTimeout(r))
console.log('finish', this.traceId);
}
testFunction();
testFunction();
testFunction();
})()Правильный ответ 🤨:
// start 0.2
// start 0.3
// finish 0.3
// finish 0.3
// finish 0.3
Присоединяйтесь к нашему общему чату и Discord серверу :)
🔥6
#any #полезно
👉 Мы возвращаемся.
Разгребли жизненные ситуации и врываемся писать контент для вас), ждите постов на тематику тегов в закрепленном сообщении.
Присоединяйтесь к нашему общему чату и Discord серверу :)
👉 Мы возвращаемся.
Разгребли жизненные ситуации и врываемся писать контент для вас), ждите постов на тематику тегов в закрепленном сообщении.
Присоединяйтесь к нашему общему чату и Discord серверу :)
Telegram
BlissCodeChat
🤖 Основной канал:
- https://t.me/blisscodehub
- https://t.me/blisscodehub
❤9
#backend #полезно
Разберем интересный вопрос с собеса на backend node.js (middle позиция) разработчика -
1. Для сложных структур данных и запросов автогенерированные запросы иногда могут быть неэффективны по сравнению с ручным написанием SQL. В пример приведём ситуацию, когда ORM может вызвать проблему с производительностью при выполнении сложных операций, таких как n+1 запросы - то есть, при извлечении связанных сущностей делается несколько отдельных запросов, вместо одного(можно отнести сюда TypeORM).
Как это лечить?
- Использование JOIN в запросах для извлечения связанных данных за один раз вместо множественных запросов для каждого объекта
- ORM Prisma поддерживают пакетную загрузку, объединяя несколько однотипных запросов в один
2. ORM стремится абстрагировать работу с БДшкой, но это не всегда возможно. Разрабу всё равно приходится юзать SQL, так как абстракция ORM не всегда успешно охватывает всю сложность взаимодействия. Например, когда речь идёт о сложных операциях - агрегациях данных, составных запросах или использовании специфичных для БД функций (окна PostgreSQL)
3. Проблема с несрабатывающим уникальным индексом в TypeORM - возникает, если в таблице уже присутствуют дубликаты, что нарушает работу механизма уникальности. Лечить можно ручной корректировкой миграций или удалением дубликатов до выполнения миграции
4. TypeORM может некорректно сгенерировать SQL-запрос для блокировки строки с помощью FOR UPDATE или других методов. Если блокировка реализована неправильно, может возникнуть ситуация, когда строки не блокируются, что приведет к несогласованности данных, когда два запроса параллельно обновляют одно и то же значение.
Присоединяйтесь к нашему общему чату и Discord серверу :)
Разберем интересный вопрос с собеса на backend node.js (middle позиция) разработчика -
Расскажите о минусах ORM🧐 1. Для сложных структур данных и запросов автогенерированные запросы иногда могут быть неэффективны по сравнению с ручным написанием SQL. В пример приведём ситуацию, когда ORM может вызвать проблему с производительностью при выполнении сложных операций, таких как n+1 запросы - то есть, при извлечении связанных сущностей делается несколько отдельных запросов, вместо одного(можно отнести сюда TypeORM).
Как это лечить?
- Использование JOIN в запросах для извлечения связанных данных за один раз вместо множественных запросов для каждого объекта
- ORM Prisma поддерживают пакетную загрузку, объединяя несколько однотипных запросов в один
2. ORM стремится абстрагировать работу с БДшкой, но это не всегда возможно. Разрабу всё равно приходится юзать SQL, так как абстракция ORM не всегда успешно охватывает всю сложность взаимодействия. Например, когда речь идёт о сложных операциях - агрегациях данных, составных запросах или использовании специфичных для БД функций (окна PostgreSQL)
3. Проблема с несрабатывающим уникальным индексом в TypeORM - возникает, если в таблице уже присутствуют дубликаты, что нарушает работу механизма уникальности. Лечить можно ручной корректировкой миграций или удалением дубликатов до выполнения миграции
4. TypeORM может некорректно сгенерировать SQL-запрос для блокировки строки с помощью FOR UPDATE или других методов. Если блокировка реализована неправильно, может возникнуть ситуация, когда строки не блокируются, что приведет к несогласованности данных, когда два запроса параллельно обновляют одно и то же значение.
Присоединяйтесь к нашему общему чату и Discord серверу :)
🔥8❤🔥1❤1
#frontend #полезно
Делюсь найденными ютуб-каналами с записями hr и тех-собесов на позицию frontend-разработчика с указанием зарплатных вилок.
Очень полезный материал, который отражает весь процесс найма. Стоит отметить, что из года в год особо ничего не меняется :) Как спрашивали топ-100 вопросов с щипоткой личных экспериментов в виде лайвкодинга так и спрашивают.
Будет полезно не только для фронтендеров. Можно подчерпнуть для себя общую инфу - как кандидат рассказывает о себе и обязанностях, которые были на него возложены на предыдущем месте работы.
1) https://www.youtube.com/@daniil_maximum/videos
2) https://www.youtube.com/@frontend-m0ney/videos
3) https://www.youtube.com/@brave_interviews/videos
4) https://www.youtube.com/@sanya-it/videos
5) https://www.youtube.com/@coder-interviews/videos
Присоединяйтесь к нашему общему чату и Discord серверу :)
Делюсь найденными ютуб-каналами с записями hr и тех-собесов на позицию frontend-разработчика с указанием зарплатных вилок.
Очень полезный материал, который отражает весь процесс найма. Стоит отметить, что из года в год особо ничего не меняется :) Как спрашивали топ-100 вопросов с щипоткой личных экспериментов в виде лайвкодинга так и спрашивают.
Будет полезно не только для фронтендеров. Можно подчерпнуть для себя общую инфу - как кандидат рассказывает о себе и обязанностях, которые были на него возложены на предыдущем месте работы.
1) https://www.youtube.com/@daniil_maximum/videos
2) https://www.youtube.com/@frontend-m0ney/videos
3) https://www.youtube.com/@brave_interviews/videos
4) https://www.youtube.com/@sanya-it/videos
5) https://www.youtube.com/@coder-interviews/videos
Присоединяйтесь к нашему общему чату и Discord серверу :)
YouTube
Даниил Maximum
🎯 Даниил Maximum — канал про Frontend, собеседования в IT и мою жизнь как разработчика.
Я — Senior Frontend (React) из Сибири. Помогаю другим заходить в IT на достойные деньги — от 250К с нуля.
📈 Что я прошёл:
• Получил оффер на 350К
• Прошёл все этапы собеса…
Я — Senior Frontend (React) из Сибири. Помогаю другим заходить в IT на достойные деньги — от 250К с нуля.
📈 Что я прошёл:
• Получил оффер на 350К
• Прошёл все этапы собеса…
❤8👍1🔥1