SQL: list all products with a price higher than the average price in their category (table products with fields product_id, category, price).
Data Analyst
// 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) }() } }
When are you ready to start working if all stages are successfully passed? Are there planned vacations?
How were the model hyperparameters selected and how was the quality measured?
What is a list comprehension?
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.
Do you have any questions for the interviewer?
What specifically interested you about the company and this position? What strengths do you highlight in yourself and how will you be useful?
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.
What integrations have you implemented and what exactly did you do? (Kafka, REST, RabbitMQ, synchronous/asynchronous)
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?
Tell me about a specific project you worked on.
Tell about approaches to building DWH: Data Vault 2.0 vs snowflake/star — main entities, advantages, and disadvantages.
What is the complexity of your anagram grouping solution?
-- 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?
Tell me about your experience: what did you do at previous jobs that is relevant to this project?
Are you fully familiar with the ETL process? What are the stages involved?
Are you familiar with relational and non-relational databases? How do they differ?
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?
Why are COUNT and GROUP BY used?