Skip to content

Instantly share code, notes, and snippets.

@Beaglefoot
Last active August 12, 2024 11:24
Show Gist options
  • Save Beaglefoot/b138bb17a4694848f3fed6d637dbec45 to your computer and use it in GitHub Desktop.
Save Beaglefoot/b138bb17a4694848f3fed6d637dbec45 to your computer and use it in GitHub Desktop.
DE вопросы к интервью

Intro

  • Можешь ли выделить 1 или 2 скилла, без которых современному дата инженеру вообще никак? Почему?
  • Как построить озеро данных, чтобы оно не превратилось в болото?
  • Какую самую долгую задачу ты решал?
    • Как планировал?
    • Как удерживал мотивацию?
    • Как преодолевал трудности?

Python

  • ABC
  • Liskov substitution principle
  • Type hints (what? why? when?)
  • What is executed on import time
  • [c for c in 'hello'] --- What happens? How this works?
  • What is GIL?
  • Async/await
  • Can you tell how to get value of env variable by memory?
  • Как понять насколько хороша абстракция у класса или метода?

SQL

  • SortMerge Join (how? when? why?)
  • Effectiveness window functions vs self-joins, etc.
  • Logical query processing order

Tests

  • How to make preparations before test execution?
  • How to clean up after test?

Spark

  • Есть понимание как происходит менеджмент ресурсов для спарка? Standalone/YARN/K8s?
  • Я считал csv, в котором была колонка с timestamp. Но теперь в датафрейме я вижу, что время отличается. Почему?
  • Не знаешь спарк? Как собираешься в нем разобраться?

Clickhouse

  • Как смотришь на то, чтобы строить DWH "звезда" в clickhouse?
  • Что такое гранула?
  • Я поменял тип колонки и загрузка цпу зашкаливает. Что происходит?
  • Знаешь что такое mutation? Как сделать для нее rollback?

Leadership

  • Кто такой тимлид и зачем он нужен команде и бизнесу?
  • Как ревьюить чужой код? Как понять что код плох или хорош?
  • К тебе пришел коллега и пожаловался на то, что товарищ совсем забил на гигиену. Твои действия?
  • Дедлайн на твоем проекте приблизили. Как ты будешь мотивировать команду?
  • Как ты ресечишь перед тем, как проектировать новую систему?
  • Следишь за трендами в отрасли? Можешь рассказать что-нибудь интересное из того, что недавно узнал?
  • У тебя есть сторонние проекты?

Code puzzles

SQL

Есть таблица connections с парами ip - timestamp. Надо вывести минуты, в которых были повторяющиеся подключения с одного ip.

|ip             |ts                     |
|---------------|-----------------------|
|87.223.123.7   |2023-09-20 11:30:04.000|
|177.124.202.211|2023-09-20 11:30:23.124|
|87.223.123.7   |2023-09-20 11:30:49.235|
|201.229.189.94 |2023-09-20 11:31:32.337|
|254.49.247.47  |2023-09-20 10:32:28.937|
|90.221.223.184 |2023-09-20 10:32:31.292|
|74.67.144.146  |2023-09-20 10:33:00.937|

Результат: 2023-09-20 11:30:00.000

Table contents

CREATE TABLE connections (
	ip String,
	ts Timestamp
)
INSERT INTO connections 
VALUES
	('87.223.123.7',    '2023-09-20 11:30:04.000023031'),
	('177.124.202.211', '2023-09-20 11:30:23.124002634'),
	('87.223.123.7',    '2023-09-20 11:30:49.235926293'),
	('201.229.189.94',  '2023-09-20 11:31:32.337261931'),
	('254.49.247.47',   '2023-09-20 11:32:28.937619371'),
	('90.221.223.184',  '2023-09-20 11:32:31.292716731'),
	('74.67.144.146',   '2023-09-20 11:33:00.937619437')

Solution

SELECT
	date_trunc('minute', ts) AS minute,
	count(ip),
	count(DISTINCT ip)
FROM connections
GROUP BY date_trunc('minute', ts)
HAVING count(ip) > 1 AND count(ip) <> count(DISTINCT ip)

Python

Что будет выведено на экран?

def decorate(cls):
    print('decorate')
    return cls

def get_c():
    print('c')
    return 'c'

def get_b():
    print('b')
    return 'b'

@decorate
class A:
    b = get_b()

    def __init__(self, c=get_c()):
        self.c = c

    def get_e(self):
        print('e')
        return 'e'

A()

Что, если закомментировать инициализацию A()?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment