Golang
Домашнее задание №2: Спроектировать REST API для социальной сети ВКонтакте со следующими операциями: • добавление и удаление друзей; • просмотр друзей пользователя; • просмотр анкеты пользователя; • публикация поста в ленту; • загрузка медиа файлов для постов; • просмотр ленты постов (домашней и пользователей); • просмотр диалогов и чатов пользователя; • отправка и чтение сообщений в диалогах и чатах. addFriend(post) POST /users/{id}/friends deleteFriend(delete) DELETE /users/{id}/friends/{friends_id} getUserFriends(get) GET /users/{id}/friends getUserForm(get) GET /users/{id}/profile createPost(post) POST /posts uploadMediaFile(post) POST /media getFeed(home/user) GET /feed GET /users/{id}/feed getDialogues(get) GET /dialogs sendMessage(post) POST /dialogs/{id}/messages getMessage(get) GET /dialogs/{id}/messages
/* Есть приложение с микросервисной архитектурой. Микросервис можно абстрагировать с помощью интерфейса Backend. Для доступа к одному экземпляру микросервиса можно использовать тип BackendImpl, который уже реализован. Для каждого микросервиса есть несколько десятков запущенных экземпляров, каждый из которых доступен по своему адресу addr. Однако отдельные экземпляры микросервиса ненадежны: они могут падать, быть недоступными либо перегруженными. Поэтому вам нужно реализовать тип Balancer, который также реализует интерфейс Backend и осуществляет client-side балансировку нагрузки между экземплярами микросервиса, выбирая каждый раз **наименее нагруженный** экземпляр. */ type Request interface{} type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr содержит ip:port конкретного экземпляра func NewBackend(addr string) *BackendImpl type Balancer struct { //TODO } var _ Backend = &Balancer{} // addrs содержат адреса всех балансируемых экземпляров func NewBalancer(addrs []string) *Balancer { //TODO }
Какие виды JOIN ты знаешь и в чём их отличие?
Сколько лет занимаешься разработкой на Go?
Насколько готов к релокации на Кипр? Как изучал вопрос жизни там?
Ты сейчас работаешь в [компания] — насколько это актуально и что побудило рассмотреть новое предложение?
В чём разница между SQL и документно-ориентированными базами данных? Когда что использовать?
Какую позицию сейчас рассматриваешь для себя, что будет интересно?
Активно ли рассматриваете предложения? Есть ли финальные этапы?
Сейчас в Москве работаешь?
Где хранится память в горутинах?
1 Оцените правильность высказывания: существует единое общепринятое определение «Интеллектуальная система» 2 Оцените правильность высказывания: В искусственном интеллекте выделяется нисходящий подход, т.е. биологический — изучение нейронных сетей и эволюционных вычислений, моделирующих интеллектуальное поведение на основе более мелких «неинтеллектуальных» элементов. 3 Оцените правильность высказывания: нисходящий (англ. TopDown AI), семиотический подход в ИИ — создание экспертных систем, баз знаний и систем логического вывода, имитирующие высокоуровневые психические процессы: мышление, рассуждение, речь, эмоции, творчество и т. д. 4 Оцените правильность высказывания: восходящий (англ. BottomUp AI), биологический подход — изучение нейронных сетей и эволюционных вычислений, моделирующих интеллектуальное поведение на основе более мелких «неинтеллектуальных» элементов. 5 Оцените правильность высказывания: Продукционные модели ориентированы на описание ситуаций 6 Оцените правильность высказывания: Продукционные модели не ориентированы на модификацию и расширение 7 Оцените правильность высказывания: Ядром продукционного правила является система слотов и терминалов 8 Оцените правильность высказывания: Продукционные системы не могут содержать конфликтов: 9 Выберите правильное высказывание: Машина логического вывода (интерпретатор) ЭС работает в рамках: прямой стратегии решения задачи обратной стратегии решения задачи итераций «действие-идентификация» 10 Оцените правильность высказывания: Полным комплексов вопросов реализации ЭС занимается научное направление «Инженерия знаний» 11 Оцените правильность высказывания: Система искусственного интеллекта в «узком смысле» этого понятия должна полностью имитировать деятельность человеческого мозга
Сколько планируешь искать новую работу? Есть ли временные рамки?
Что такое семафор?
Покрывал ли сам тестами свой код?
От какой суммы готовы рассматривать предложение?
Какие архитектурные паттерны позволяют избавиться от атомарности между микросервисами? Работала с паттерном Saga? Какие два вида Saga существуют и в чем разница?
Можем ли мы реализовать те же REST-эндпоинты, убрав из пути слово с названием ресурса (например, 'news')?
Как сравнивать элементы в map? Как проверить, что два map совпадают?
Почему триггеры в основном используются для Legacy-систем?