/ * Есть два сервера PostgreSQL: * PROD - OLTP сервер, * STATS - сервер для долгих аналитических запросов. На текущем сервер в базе prod есть большая (10Tb) таблица вида: CREATE TABLE profiles( id SERIAL, data JSONB ) В таблице могут быть "дырки", т.е. некоторые `id` могут быть пропущены. Нужно написать программу для копирования таблицы profiles с PROD на STATS. Для работы с базами данных предполагается использовать следующие интерфейсы: type Row []interface{} type Database interface { // реализация интерфейса Database умеет переустанавливать подключения // вызов SaveRows идемпотентен io.Closer GetMaxID(ctx context.Context) (uint64, error) LoadRows(ctx context.Context, minID, maxID uint64) ([]Row, error) // [minID, maxID] SaveRows(ctx context.Context, rows []Row) error } func Connect(ctx context.Context, dbname string) (Database, error) // CopyTable // Если full=false то продолжить переливку данных с места прошлой ошибки // Если full=true - то перелить все данные func CopyTable(fromName string, toName string, full bool) error { // ... your code } Если передана опция `full=false`, то программа должна продолжить переливку данных с места прошлой ошибки. Если `full=true` - то должна перелить все данные. **Базовый уровень**: - последовательная переливка данных в 1 поток - восстановление после сбоев (опция `full=false`) Дополнительная информация: - при необходимости вы можете расширить интерфейс, добавив свои методы - при необходимости вы можете использовать пакет **database/sql** напрямую
Что можешь сказать про операторы в Go, писал ли ты их на работе?
Расскажи про текущую работу в Wildberries — что за платформа, какая команда, чем занимался?
Стоит ли использовать мьютексы при работе с БД?
Есть ли опыт с криптовалютами и блокчейном? Интересна ли эта область?
Как тестировали сервис? Как разворачивали в Kubernetes?
Как атомарно реализовать проверку доступности и создание заказа при выносе логики в сервис?
Что именно ищете в новом месте работы?
Как мы будем возвращать весь заказ и его частично (API дизайн)?
SELECT * c.id, -- выбрать все чаты(c.id,c.name) для всех пользователей по имени ($1) where text > 'abc'
Расскажи про сборщик мусора в Go
Как часто бывают задачи, требующие изменения контрактов?
Задача: Что выведет код? ```go package main import "fmt" func main() { a := []int{1, 2, 3, 4, 5} b := a[:2] b = append(b, 100) fmt.Println(a, b) } ```
Интересовались ли вы когда-нибудь тем, как реализованы брейкпойнты в дебаггере?
С какими базами данных работаешь? Какой был максимальный объём хранимых данных?
В чём отличие senior-разработчика от middle в команде?
На чём работает в конечном итоге сервис? Какие Docker-образы использовали?
Расскажи про основной стек. С чем работаешь?
Какие варианты ещё есть для увеличения скорости работы базы данных, помимо индексов?
На основании чего делали партиционирование в Amazon Athena?