Перейти к содержимому

MTS / МТС (Cloud)

  • Найти проблемы в коде: go/puzzles
type OrderService struct {
BookingService BookingService
UserService UserService
}
type UserService interface {
LockUser(User) error
UnlockUser(User) error
}
type User struct {
ID string
}
type Receipt struct {
ID string
BookingCode string
BookedAt string
}
type BookingService interface {
BookFlight() (string, *BookingServiceError)
}
type BookingServiceError struct {
error
TryAgain bool
}
func (s *OrderService) HandleBookingOrder(user User) *Receipt {
receipt := Receipt{ID: uuid.New().String()}
if err := s.UserService.LockUser(user); err != nil {
log.Logger.Err(err)
return nil
}
for {
bookingCode, err := s.BookingService.BookFlight()
switch {
case err == nil:
receipt.BookedAt = time.Now().Format(time.RFC3339)
receipt.BookingCode = bookingCode
return &receipt
case err.TryAgain:
default:
log.Logger.Err(err)
break
}
}
if err := s.UserService.UnlockUser(user); err != nil {
log.Logger.Err(err)
return nil
}
return &receipt
}
  • Написать метод (класс и импорты не нужны) на вход которого приходит список слов. На выходе надо вернуть список слов, где каждый подписок содержит слова анаграммы (одинаковые слова слева направо и справа налево). algorithms/general
// ["set "] ->[["set "]]
// ["set ", "get "] ->[["set "], ["get "]]
// ["set ", "get ", "teg "] ->[["get ", "teg "], ["set "]]
func groupAnagrams(words []string) [][]string {
}
  • Оценить сложность, если в каждом слове до k символов. algorithms/complexity
  • Найти проблемы в коде: go/puzzles
var c int
type Trace struct {
// some fields
}
type Sender interface {
Send(Trace)
}
func Do(sender Sender, tr Trace) {
c++
if c == 100 {
sender.Send(tr)
c = 0
}
}
  • У «типичного» CRUD сервиса - в какой-то момент некоторые методы стали работать медленно и сервис начал таймаутить. Сервис состоит из: architecture/system-design
  • Application Load Balancer (L7) - прием входящих запросов и терминирование tls network/dns-tls
  • Backend (REST, Java/Kotlin или Go) - обработка входящих запросов и бизнес логика network/http
  • Database (postgres) - хранение и обработка sql запросов sql/general

Как правильно действовать чтобы понять причину проблем и выработать решения для улучшения ситуации?

  • На вход подается строка s, содержащая только символы «(», «)», «{», «}», «[» и «]». «<»’>’«a»«я» Определите, является ли входная строка валидной. go/strings-runes
  • Все открытые скобки закрыты скобками того же типа. algorithms/data-structures
  • Скобки должны закрываться в правильном порядке. algorithms/data-structures
  • Каждой закрывающей скобке соответствует открытая скобка того же типа. algorithms/data-structures
func isValid(s string) bool {
}
  • Напишите SQL-запрос, который вернет имя и сумму бонуса каждого сотрудника с бонусом менее 1000. sql/general
Таблица: Employee
+-------------+---------+
|Column Name |Type|
+-------------+---------+
|empId |int |
|name |varchar |
|supervisor |int |
|salary |int |
+-------------+---------+

Задача: empId - это столбец с уникальными значениями для этой таблицы. В каждой строке этой таблицы указаны имя и идентификатор сотрудника, а также его зарплата и идентификатор его руководителя. sql/general

Заголовок раздела «Задача: empId - это столбец с уникальными значениями для этой таблицы. В каждой строке этой таблицы указаны имя и идентификатор сотрудника, а также его зарплата и идентификатор его руководителя. sql/general»
Таблица: Bonus
+-------------+------+
|Column Name |Type|
+-------------+------+
|empId |int |
|bonus |int |
+-------------+------+

empId - столбец уникальных значений для этой таблицы. empId - это внешний ключ (справочный столбец) для empId из таблицы «Employee». Каждая строка этой таблицы содержит идентификатор сотрудника и соответствующий бонус.

  • Еще были вопросы про кубер и контейнерицазию на уровне ОС, но очень поверхностные