@Rustam-Z⚡️
3.24K 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
What is Docker 🔥.pdf
313.1 KB
🔥6
What is Kubernetes 🤔.pdf
718.1 KB
🔥5
Important HTTP Status Codes

#system_design
1
#system_design

🌐 𝐇𝐨𝐰 𝐭𝐨 𝐚𝐧𝐬𝐰𝐞𝐫 𝐢𝐧 𝐚 𝐒𝐲𝐬𝐭𝐞𝐦 𝐃𝐞𝐬𝐢𝐠𝐧 𝐈𝐧𝐭𝐞𝐫𝐯𝐢𝐞𝐰

1. For a Read-Heavy System - Consider using a Cache.
2. For a Write-Heavy System - Use Message Queues for async processing
3. For a Low Latency Requirement - Consider using a Cache and CDN.
4. Need 𝐀tomicity, 𝐂onsistency, 𝐈solation, 𝐃urability Compliant DB - Go for RDBMS/SQL Database.
5. Have unstructured data - Go for NoSQL Database.
6. Have Complex Data (Videos, Images, Files) - Go for Blob/Object storage.
7. Complex Pre-computation - Use Message Queue & Cache.
8. High-Volume Data Search - Consider search index, tries or search engine.
9. Scaling SQL Database - Implement Database Sharding.
10. High Availability, Performance, & Throughput - Use a Load Balancer.
11. Global Data Delivery - Consider using a CDN.
12. Graph Data (data with nodes, edges, and relationships) - Utilize Graph Database.
13. Scaling Various Components - Implement Horizontal Scaling.
14. High-Performing Database Queries - Use Database Indexes.
15. Bulk Job Processing - Consider Batch Processing & Message Queues.
16. Server Load Management & Preventing DOS Attacks- Use a Rate Limiter.
17. Microservices Architecture - Use an API Gateway.
18. For Single Point of Failure - Implement Redundancy.
19. For Fault-Tolerance and Durability - Implement Data Replication.
20. For User-to-User fast communication - Use Websockets.
21. Failure Detection in Distributed Systems - Implement a Heartbeat.
22. Data Integrity - Use Checksum Algorithm.
23. Efficient Server Scaling - Implement Consistent Hashing.
24. Decentralized Data Transfer - Consider Gossip Protocol.
25. Location-Based Functionality - Use Quadtree, Geohash, etc.
26. Avoid Specific Technology Names - Use generic terms.
27. High Availability and Consistency Trade-Off - Eventual Consistency.
28. For IP resolution & Domain Name Query - Mention DNS (Domain Name System).
29. Handling Large Data in Network Requests - Implement Pagination.
30. Cache Eviction Policy - Preferred is LRU (Least Recently Used) Cache.
👍3🔥1
#system_design

I have lots of things to share with you guys. Regarding System Design, Software Development and Testing, and much more.

So, wait for future news.
And as always, keep learning!

🥂
🔥5👍1🍾1
#advice

Only close people know that I had SWE role interview at Facebook. And Bloomberg interview this year. I went through 2 coding stages at Bloomberg and I needed to pass a systems design interview. But because I had my interviews very late in January, they closed the open positions. I hope this is not the end.

By the way, I go through all these interviews while in Uzbekistan. So, it is possible, to pass an interview at MAANG without leaving Uzbekistan.

So guys always be open to new opportunities!
🔥15
#system_design

Top 6 most commonly used Server Types.

1. Web Server:
Hosts websites and delivers web content to clients over the internet

2. Mail Server:
Handles the sending, receiving, and routing of emails across networks

3. DNS Server:
Translates domain names (like bytebytego. com) into IP addresses, enabling users to access websites by their human-readable names.

4. Proxy Server:
An intermediary server that acts as a gateway between clients and other servers, providing additional security, performance optimization, and anonymity.

5. FTP Server:
Facilitates the transfer of files between clients and servers over a network

6. Origin Server:
Hosts central source of content that is cached and distributed to edge servers for faster delivery to end users.
🔥2👍1
Draw the cloud system architecture in Python code.

Supports the following providers: AWS, Azure, GCP, Kubernetes, etc.

https://github.com/mingrammer/diagrams

#python
Sorting Algorithms_ Efficiency and Performance.pdf
673.6 KB
Topic: Sorting Algorithms

#algorithms
👍1
How to learn new technology, programming language, library or framework?

https://youtube.com/shorts/E1H9AFtwxfE?feature=share3

#advice
Understand what is "Asynchronous Programming" in 1 minute

https://youtu.be/v6sI1tidSw8

#engineering #coding
👍1
Time and space complexities of data structures and sorting algorithms.

#algorithms #data_structures
👍6
Topic: Algorithms Design Techniques

1. Recursive or iterative.

2. Brute force: Looks for all possible solutions, in the end select 1 solution.

3. Divide and Conquer: Divide input, recursively solve sub-problems, combine in the end. Recursive.

4. Dynamic Programming: The goal of DP is to solve the problem by combining solutions to sub-problems, never solving the same sub-problem twice. Types: memorization (top-down) & tabulation (bottom-up). Recursive.

5. Backtracking: Looks for all possible solutions, and as soon as it finds one, it stops searching. Recursive. Takes input, check constraints, if input is invalid undoes the choice (backtrack) and tries other options.

6. Greedy Method: At every step we select local optima, don't think about future.

#algorithms
👍2🔥2
The Last Algorithms Course You'll Need

Some
of you should know him, ThePrimeTime, worked at Netflix. He has an Algo course for FREE!

https://frontendmasters.com/courses/algorithms/introduction/

Notes: https://theprimeagen.github.io/fem-algos

#algorithms
🔥4
🔥3
@Rustam-Z⚡️
Complexities table: https://t.iss.one/crackingmaang/607 #algorithms
Updated my repo's sorting section.

Types:

Bubble Sort - compares two adjacent elements and swaps them until they are in the intended order. Sorted item will be placed in the end.

Selection Sort - finds the smallest element in the unsorted array and swaps it with 1st element of unsorted part.

*Insertion Sort - picks an element and places it in the correct position in the sorted part.

*Merge Sort - divides the array into two halves, sorts them and then merges them. The most important part is merge step.

Quick Sort - divides the array into two parts around a pivot element and then sorts them. Pivot = last element. Pivot + left pointer algorithm.

Counting Sort - counts the number of elements in the array and then places them in the correct order.

Radix Sort - sorts the elements by first grouping the individual digits of the same place value. Then, sort the elements according to their increasing/decreasing order.

Bucket Sort - divides the array into buckets (ranges). Each bucket is then sorted individually either using a different sorting algorithm or by recursively applying the bucket sorting algorithm.

*Heap Sort - uses a heap data structure to sort the elements. Heap is a complete binary tree (nodes placed from left to right).

https://github.com/Rustam-Z/cracking-the-coding-interview/tree/main/sorting

#algorithms
🔥2
Dijkstra’s Shortest Path Algorithm
1. Used to find the shortest path from one node to all other nodes in a weighted graph.
2. Modification of BFS algorithms.

The A* Pathfinding Algorithm
1. Used to find the shortest path from one node to another node in a weighted graph.
2. Similar to Dijkstra's algorithm but uses heuristics (ex: Manhattan distance) to find the path.
3. Used in Google maps, finding the shortest path between two points on a map

*Both of them are greedy algorithms.

More about graphs in my GitHub repo.

#algorithms
22