Sobes.tech

Data Analyst

SQL: list all products with a price higher than the average price in their category (table products with fields product_id, category, price).

139

// When updating an order, we need to send order data to several (possibly thousands) third-party services // We wrote the code, everything was fine at first, but over time our service started consuming a lot of resources func (s *orderService) SendOrder(ctx context.Context, hosts []string, order Order) { for i := 0; i < len(hosts); i++ { go func() { // Imagine this is a long network call response, err := s.httpClient.Send(ctx, hosts[i], order) if err != nil { s.logger.Error(ctx, "failed to send", err) return } s.logger.Info(ctx, "success", response) }() } }

Principal
139

When are you ready to start working if all stages are successfully passed? Are there planned vacations?

138

Where in real life does the normal distribution occur, and where does it not? Provide specific examples with explanations why data is normally distributed or not.

138

Do you have any questions for the interviewer?

138

What specifically interested you about the company and this position? What strengths do you highlight in yourself and how will you be useful?

138

Propose an algorithm to determine the subscriber's birthday using only call and SMS logs: incoming and outgoing numbers, date-time, duration, and event type.

Middle
137

What integrations have you implemented and what exactly did you do? (Kafka, REST, RabbitMQ, synchronous/asynchronous)

Middle
137

We have ClickHouse with a DBT query that runs regularly but takes a long time. What could be the reasons and how would you approach optimization?

137

Tell me about a specific project you worked on.

Middle
137

Tell about approaches to building DWH: Data Vault 2.0 vs snowflake/star — main entities, advantages, and disadvantages.

137

-- Marketers launch promo campaigns in the service application. There are two tables: -- campaigns – list of campaigns -- - campaign – campaign name -- - action_type – campaign type: "push" or "banner" -- communications – backend log of communications sent to users for these campaigns -- - user_id – user identifier -- - campaign – campaign name -- - status – event status: "success" or "error" --------------------------------------------------------------------------- -- 1. Initially, the campaigns table has 4 rows: -- | campaign | action_type | -- |-------------|-------------| -- | promo_dogs | push | <- randomly duplicated -- | promo_cats | banner | -- | promo_cats | banner | <- two rows -- | promo_rats | push | -- It is also known that: -- campaigns promo_dogs and promo_cats were successfully conducted on 100 users each, and each user received one communication, -- while promo_rats is only planned. -- 1.1 What will the query output: SELECT campaign, COUNT(*) as rows, COUNT(DISTINCT co.user_id) AS users FROM campaigns AS ca INNER JOIN communications AS co ON ca.campaign = co.campaign GROUP BY ca.campaign -- 1.2 How will the answer change if the JOIN type is changed to LEFT?

136

Tell me about your experience: what did you do at previous jobs that is relevant to this project?

136

Are you fully familiar with the ETL process? What are the stages involved?

136

Are you familiar with relational and non-relational databases? How do they differ?

136

Tell about a case of the best dashboard you developed: who was the client, what metrics did you look at, how did you measure the usefulness of the tool?

136
/15