Вопросы по soft skills Вопросы по алгоритмам
- Почему ты решил стать бэкенд-разработчиком, чем тебя привлекает профессия?
- Приходилось писать тесты и на чем?
- Знаком с пирамидой тестирования? Какие виды тестирования знаешь?
- Приходилось профилировать код?
- Какие типы данных в Ruby знаешь?
- Чем тип данных символ отличается от строк?
- Что вернётся в результате сложения
10.5
и10
? - Чем отличаются
proc
отlambda
- Что такое блок? Что такое
yield
? Можно ли передавать блоки в методы? Каким образом? - Как происходит наследование в Ruby?
- Есть ли в Ruby множественное наследование если нет чем можно заменить?
- Модули что такое зачем нужны,
extend
,include
,prepend
- в чем отличие - Какие ORM знаешь и какие использовал? Какие плюсы и минусы можешь выделить?
- Что такое Манкипатчинг? Применял ли?
- Чем PUT от PATCH отличается?
- Что из себя представляет HTTP запрос? Структура? Тело есть у всех HTTP запросов?
- Можешь рассказать, что такое REST? Использовал ли в работе REST?
- В чем разница между
GET
иPOST
?
- Базы данных - какие базы бывают, чем отличаются.
- Индексы в БД что это для чего нужны, какие типы индексов бывают.
- Ассоциации(один к одному, один ко многим, многие ко многоим) как реализовать на уровне БД, как реализовать на уровне Rails-моделей.
- Какие виды JOIN-ов бывают, чем отличаются.
- Есть два приложения между ними шина данных(Kafka, RabbitMQ, gRPC), из одного в другой пришли кривые данные, как будешь дебажить?
- Есть таблица
posts
и таблицаcomments
, связь один ко многим, в таблицеcomments
вторичный ключpost_id
- напиши запрос который вытащит все посты у которых > 3 комментариев и дата создания поста после 20 ноября - Есть новые данные вот такой структуры
json:
[
{
id: 1,
number: 'H1111',
position: [
{
id: 1
name: 'Хлеб'
cost: '59.90'
},
# ......
]
},
#......
]
И им соответствуют модели
class Order < ApplicationRecord
has_many :positions
end
class Position < ApplicationRecord
belongs_to :order
end
Нужно в соответствии с этими данными обновить таблицу Orders
в которой 100_000 записей
- Есть код Контроллер и две модели
class Order < ApplicationRecord
has_many :positions
end
class Position < ApplicationRecord
belongs_to :order
end
class OrdersController < ApplicationController
def index
# solution
end
def show
#solution
end
end
class OrderSerialiser < ActiveModel::Serializer
# solution
end
Нужно дописать экшены в контроллере и сериалайзер, что вернет из экшенов такую структуру
index:
[
{
id: 1,
number: 'H1111',
position: [
{
id: 1
name: 'Хлеб'
cost: '59.90'
},
# ......
]
},
#......
]
show:
{
id: 1,
number: 'H1111',
position: [
{
id: 1
name: 'Хлеб'
cost: '59.90'
},
# ......
]
}
- Достаточно ли валидации в ORM при реализации проверки на уникальность, например, email при регистрации? Раскройте
- Какие последствия возможны при отправке email прямо в контроллере? Как можно решить эти проблемы?
- Как бы вы реализовали смену email на сайте, так чтобы соблюсти баланс между сложностью и безопасностью?
- Можно ли доверять email, который мы получаем по oauth от соц сетей и мержить аккаунты автоматически? Приведите примеры
- Как ограничить отправку email пользователю, который добавил письмо нашего проекта в спам? И почему это стоит делать (или не стоит)?
- Предположим что вы реализуете редакцию журнала, где редактора могут в админке править статьи. Как предотвратить ситуацию, когда два редактора могут начать одновременно редактировать одну статью и перетирать изменения друг друга?
- Каких принципов разработки нужно придерживаться, для обеспечения механизма zero downtime deployment. Как это достигается?
- Что может произойти, если ваша
cron
задача, которая запускается раз в минуту, стала выполняться больше 1 минуты? Как это можно предотвратить? - Если вы пишите тесты, то как вы обходите проблему того, что код который вы тестируете, делает внешние вызовы? Доп условие, говорим о том, что на CI внешние вызовы запрещены (почему так правильно?)
- Предположим что в вашей системе реализована смена емейла. При этом этот емейл хранится еще и во внешней системе, например эквайринге, который шлет пользователю свои письма (но пользователь им напрямую не пользуется). Как бы вы реализовали синхронизацию емейла с внешней системой?
- Как вы узнаете об ошибках, которые происходят на продакшене? От пользователей или это автоматизировано?
- Как обеспечивается изоляция тестов друг от друга если они ходят в базу и меняют ее? Если в вашем фреймворке этого нет, то как вы это делаете или сделали бы?