@Rustam-Z⚡️
3.22K subscribers
207 photos
15 videos
16 files
194 links
Software Engineer, Google

Book 30-minute 1:1 session: rustamz.com/calendar

🇺🇿 Universitetni O‘zbekistonda bitirib Google’ga ishga kirdim.

I talk about IT, career, MAANG jobs & interviews, money & investment.

www.rustamz.com

@rustamzokirov
Download Telegram
#resources

Требования к Junior, Middle, and Senior разработчикам в США

RU: https://youtu.be/s-O7sY1_W-M

Summary:
1. Intern
• Вы тот, кого компания хочет нанять на полный рабочий день?
• Вы любопытный и хотите учиться?
• Вы хорошо воспринимаете обратную связь?
• Вы хороший товарищ по команде?
2. Junior (Less than 1 year of experience)
• Оказывает влияние на небольшой кусок проекта/ фичи
• Несет ответственность за код всей фичи
• Пишет чистый, хорошо протестированный код. Не всегда оптимальное решение.
• Делает PR
• Принимает фидбэк
Требования:
• Работа с одним фреймворком
• Решение задач на Leetcode средней сложности
• Наличие pet-проекта или CS диплома
3. Middle (Min. 2 years of experience)
• Оказывает влияние на уровне проекта
• Контролирует качество и сроки реализации проекта, проверяет работу джунов и других мидлов.
Требования:
• Решение задач разной сложности на скорость
• Знания нюансов фреймворка или языка
• Четкое описание решения под конкретные требования
4. Senior (5 years of experience)
• Завершенный проект под вашим руководством
• Экспертиза во фреймворке или обширные знания в нескольких
• Глубокие знания нюансов фреймворка и языка
• Оказывает влияние на командном уровне
• Работает над более приоритетными
задачами команды
• Ведет команду к техническому росту
• Знает технические и бизнес аспекты проекта
• Общается с продакт менеджерами
Требования:
• Решение задач любой сложности
• Способность выяснить требования
• Четкое описание решения
• Оговорить ограничения
• Перечислить альтернативы
• Все продумать
#algorithms ⭐️⭐️⭐️

How to approach solving the algorithm? Updated version.

Constraints, Ideas, Complexities, Code, and Tests

1. Read the problem. Don’t immediately jump into coding!
2. Understand inputs & outputs. Draw some examples on paper.
3. Ask questions, and find constraints. Find edge cases. Example questions: is it ASCII or Unicode? what is the Max value? is there a difference between capital letters and small letters?
4. Thinking about the solution in mind. Divide problems into sub-problems.
5. Evaluate the complexity
6. Think better alternative solution
7. Write code on paper
8. Debug your code on paper, and test with new corner case inputs
9. Write code and write tests
👍2
#algorithms ⭐️⭐️⭐️

Find learning resources here: https://github.com/Rustam-Z/CTCI

Big-O = how quickly the runtime grows relative to the input as the input gets arbitrarily large.

Strings

- ASCII, Unicode
- How are strings implemented in your programming language (for example, is there a maximum length)?
- Search for substrings (for example, the Rabin-Karp algorithm).
- RegEx

Arrays

Details of implementation in your programming language. For example, for C++ you need to know the implementation using pointers, and vectors. For vectors, you also need to know, for example, that it periodically does resize, and other similar details.

Sorting algorithms

Especially make sure you know heap sort, merge sort and quick sort.

Searching algorithms


Linked lists

- Singly linked list
- Doubly linked list

Stacks and Queues


Trees

- DFS, BFS
- Adding and removing elements
- Less common tree types (e.g., red black trees, B-trees) - what are they, how they differ from the binary trees, basic complexities, and how they are used. No need to know all the rotations in the RB-tree, for example.
- Tries

Heaps

- Heap sort
- Using heaps for tracking top-K
- Allocating elements on a heap vs on a stack - what does it mean?

Graphs

- DFS, BFS
- Topological search
- Shortest path

Hash

- Hash functions
- Universal hash

Algorithms

- More about searching algorithms: Binary search. Searching in linked lists, arrays, trees, graphs, dictionaries.
- Dynamic programming = problems, which are problems where the solution is composed of solutions to the same problem with smaller inputs.
- Recursion
- Bottom-up
- Top-down
- Backtracking = Backtracking is an algorithmic technique for solving problems recursively by trying to build a solution incrementally, one piece at a time.
- Greedy algorithms
👍1
@Rustam-Z⚡️ pinned Deleted message
👍2
#system_design ⭐️⭐️⭐️

Asking a lot of questions, disambiguating the problem statement, and defending your answer are important in a System Design interview.

Today I was thinking about structuring the interview flow and came up with this:

Topics to discuss:
Clarify functional requirements and non-functional requirements:
1. Frontend (functionality, components) — Web, Mobile (native, cross-platform, PWA=progressive web app)
2. Backend (micro-services, REST & GraphQL API, database (NoSQL, SQL, special types), message queue=polling & streaming, caching, rate limiting) — Redis, RabbitMQ, Celery, Kafka
3. Infrastructure (regions, no. of users, latency, throughput, availability=redundancy, scalability & elasticity, workers, load balancing, database replication & sharding) — AWS
4. Monitoring and logging — metrics, can be used to decide when to scale out and down the system

Other topics to discuss:
1. CI/CD — Testing (functional and non-functional), K8s, Cloud (IaaC), feature flags, deployment strategies
2. System risks

I believe, based on these topics, you can come up with new questions during the interview.
#system_design System Design Example

Cracking the System Design Interview - Azimjon Pulatov

UZ: https://youtu.be/A3AIaWhxb4s
#system_design System Design Example

Amazon System Design Preparation

EN: https://youtu.be/gf8R7sgme6o
@Rustam-Z⚡️ pinned «#system_design ⭐️⭐️⭐️ Asking a lot of questions, disambiguating the problem statement, and defending your answer are important in a System Design interview. Today I was thinking about structuring the interview flow and came up with this: Topics to discuss:…»
#system_design ByteByteGo - Alex Xu

I started reading the "System Design Interview" book today, after finishing SystemsExpert from AlgoExpert.

ByteByteGo has a nice blog and YouTube channel. I watched some videos, they are coooool.

The book has two editions. The second edition is not available as pdf.
#system_design

Availability, Resilience & Reliability, and Consistency.

Availability = uptime, ability to respond to requests. Availability refers to the ability of a system or service to be operational and accessible when needed. In other words, it is the measure of how often a system is available for use.

Resilience/reliability = ability to handle failures and continue to function. Refers to the ability of a system to perform its intended functions under specified conditions for a specified period of time. A reliable system is one that can be counted on to work consistently and dependably, without failing or producing errors. Reliability is the outcome and resilience is the way you achieve the outcome.

Consistency = ability to maintain the same level of performance or behavior over time, refers to the ability of a system or service to provide the same results every time it is used, under the same conditions. In other words, it is the measure of how predictable a system is.
#advices

There are a lot of resources on the Internet, believe me, you can’t master everything and you can't finish all of them 🥲, choose some you like and just focus on them!
Finished reading the "System Design Interview" book! Watching SystemsExpert really helped me finish this book faster.

Moreover, thanks to ChatGPT for answering all my obscure and stupid questions.

Now I feel like I don't know anything. Even simple concepts that I thought I knew are sometimes unclear to me. Yes, there is much to learn, much, much. I want to learn how things really work, and why.

I only focused on coding my pet projects in my language. But now I really feel that coding is nothing. Creating a service/product through programming that solves some problems is much more important.

So I think it's a great moment to start again as a junior but with a cooool team, with really experienced guys who are always ready to share their knowledge and answer all your questions.
👍11🔥1
Interview Tip

ABC rule, which doesn't mean "always be coding" but "always be chatting". 😅
👍2
👍2