Работа мечты: различия между версиями
Перейти к навигации
Перейти к поиску
Artem (обсуждение | вклад) (→PHP) |
Artem (обсуждение | вклад) |
||
Строка 35: | Строка 35: | ||
* https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/ | * https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/ | ||
* https://careers.google.com/stories/apm-preparation-materials/ | * https://careers.google.com/stories/apm-preparation-materials/ | ||
== ООП == | |||
* Инкапсуляция (разделение доступа) | |||
* Наследование | |||
* Полиморфизм (полиморфные методы для каждого типа свой метод) | |||
== SOLID == | |||
* https://levelup.gitconnected.com/solid-principles-simplified-php-examples-based-dc6b4f8861f6 | |||
* S - Принцип единственной ответственности (The Single Responsibility Principle) | |||
* O - Принцип открытости/закрытости (The Open Closed Principle) | |||
* L - Принцип подстановки Барбары Лисков (The Liskov Substitution Principle) | |||
* I - Принцип разделения интерфейса (The Interface Segregation Principle) | |||
* D - Принцип инверсии зависимостей (The Dependency Inversion Principle) | |||
== Паттерны проектирования == | |||
* https://designpatternsphp.readthedocs.io/ru/latest/README.html | |||
* https://www.kobzarev.com/wp-content/uploads/books/php/PHPbook.pdf | |||
* https://refactoring.guru/ru/design-patterns | |||
* Порождающие паттерны | |||
** Абстрактная фабрика | |||
** Одиночка | |||
** Прототип | |||
** Строитель | |||
** Фабричный метод | |||
* Структурные паттерны | |||
** Адаптер | |||
** Декоратор | |||
** Заместитель | |||
** Компоновщик | |||
** Мост | |||
** Приспособленец | |||
** Фасад | |||
* Паттерны поведения | |||
** Интерпретатор | |||
** Итератор | |||
** Команда | |||
** Наблюдатель | |||
** Посетитель | |||
** Посредник | |||
** Состояние | |||
** Стратегия | |||
** Хранитель | |||
** Цепочка обязанностей | |||
** Шаблонный метод | |||
== Алгоритмы == | == Алгоритмы == |
Версия от 14:51, 10 февраля 2023
- Amazon
- Apple
- Netflix
- Microsoft
Мотивация
Compensations
- https://www.levels.fyi/
- http://www.tax-rates.org/income-tax-calculator/?ref=nav_income - налоговый калькулятор США
Jobs Websites
- https://linkedin.com
- https://indeed.com
- https://glassdoor.com/
- https://www.toptal.com/
- https://www.crunchbase.com/
Подготовка
- Cracking the coding interview
- Алгоритмы. Построение и анализ | Кормен Томас Х., Лейзерсон Чарльз И.
- https://www.topcoder.com/
- https://www.learneroo.com/subjects/8
- https://www.careercup.com/
- https://www.interviewbit.com/
- https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/
- https://careers.google.com/stories/apm-preparation-materials/
ООП
- Инкапсуляция (разделение доступа)
- Наследование
- Полиморфизм (полиморфные методы для каждого типа свой метод)
SOLID
- S - Принцип единственной ответственности (The Single Responsibility Principle)
- O - Принцип открытости/закрытости (The Open Closed Principle)
- L - Принцип подстановки Барбары Лисков (The Liskov Substitution Principle)
- I - Принцип разделения интерфейса (The Interface Segregation Principle)
- D - Принцип инверсии зависимостей (The Dependency Inversion Principle)
Паттерны проектирования
- https://designpatternsphp.readthedocs.io/ru/latest/README.html
- https://www.kobzarev.com/wp-content/uploads/books/php/PHPbook.pdf
- https://refactoring.guru/ru/design-patterns
- Порождающие паттерны
- Абстрактная фабрика
- Одиночка
- Прототип
- Строитель
- Фабричный метод
- Структурные паттерны
- Адаптер
- Декоратор
- Заместитель
- Компоновщик
- Мост
- Приспособленец
- Фасад
- Паттерны поведения
- Интерпретатор
- Итератор
- Команда
- Наблюдатель
- Посетитель
- Посредник
- Состояние
- Стратегия
- Хранитель
- Цепочка обязанностей
- Шаблонный метод
Алгоритмы
- Не забываем про рекурсию
PHP
- https://designpatternsphp.readthedocs.io/en/latest/README.html
- https://refactoring.guru/ru/design-patterns
Python
Golang
JavaScript
TypeScript
Angular
SQL
Поведенческие вопросы
Решение задач
- https://www.leetcode.com/
- https://www.hackerrank.com/
- https://www.interviewbit.com/
- https://www.careercup.com/
- https://www.algoexpert.io/
- https://www.educative.io/
- https://www.pluralsight.com/
- https://www.learneroo.com/
- https://coderbyte.com/
Дизайн систем
- https://github.com/donnemartin/system-design-primer
- https://docs.google.com/document/d/1w3qb6SS1Hycyce5Fg5mVMdzkGYXTRskSf57IoD98ZQw/edit
- https://www.hiredintech.com/app#system-design
- Educative - https://www.educative.io/path/scalability-system-design
- YouTube Playlist - https://www.youtube.com/playlist?list=PLMCXHnjXnTnvo6alSjVkgxV-VH6EPyvoX
Время отклика систем
Latency Comparison Numbers -------------------------- L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns 14x L1 cache Mutex lock/unlock 25 ns Main memory reference 100 ns 20x L2 cache, 200x L1 cache Compress 1K bytes with Zippy 10,000 ns 10 us Send 1 KB bytes over 1 Gbps network 10,000 ns 10 us Read 4 KB randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD Read 1 MB sequentially from memory 250,000 ns 250 us Round trip within same datacenter 500,000 ns 500 us Read 1 MB sequentially from SSD* 1,000,000 ns 1,000 us 1 ms ~1GB/sec SSD, 4X memory HDD seek 10,000,000 ns 10,000 us 10 ms 20x datacenter roundtrip Read 1 MB sequentially from 1 Gbps 10,000,000 ns 10,000 us 10 ms 40x memory, 10X SSD Read 1 MB sequentially from HDD 30,000,000 ns 30,000 us 30 ms 120x memory, 30X SSD Send packet CA->Netherlands->CA 150,000,000 ns 150,000 us 150 ms Notes ----- 1 ns = 10^-9 seconds 1 us = 10^-6 seconds = 1,000 ns 1 ms = 10^-3 seconds = 1,000 us = 1,000,000 ns
- https://ping-admin.ru/free_ping/
- До МСК
- Европа < 50
- До Урала < 50
- Владивосток 100
- США-Канада 150-250
- Южная Америка 200-300
- Азия 200-300
- Австралия 300
Расположение датацентров в мире
Не функциональные характеристики систем
Availability / Доступность
Доступность % | Недоступность в год | Недоступность в месяц | Недоступность в неделю |
---|---|---|---|
90% (1 девяток) | 36.5 дней | 72 часов | 16.8 часов |
99% (2 девяток) | 3.65 дней | 7.20 часов | 1.68 часов |
99.5% (2 девяток) | 1.83 дней | 3.60 часов | 50.4 минут |
99.9% (3 девяток) | 8.76 часов | 43.8 минут | 10.1 минут |
99.99% (4 девяток) | 52.56 минут | 4.32 минут | 1.01 минут |
99.999% (5 девяток) | 5.26 минут | 25.9 секунд | 6.05 секунд |
99.9999% (6 девяток) | 31.5 секунд | 2.59 секунд | 0.605 секунд |
99.99999% (7 девяток) | 3.15 секунд | 0.259 секунд | 0.0605 секунд |
Reliability / Надежность
Среднее время между отказами (MTBF)
Среднее время отказа (MTTF)
Среднее время восстановления(MTTR)
Scalability / Масштабируемость
- Вертикальное масштабирование - увеличение мощности узлов (CPU(Frequency, # of cores), MEM(Volume, Frequency), HDD->SSD->NVMe)
- Горизонтальное масштабирование - увеличение количества узлов
Maintainability / Поддерживаемость
- Главный параметр - MTTR
- Легкость кода и прозрачность разработки
Fault Tolerance / Устойчивость к сбоям
- Отказоустойчивость - способность системы обслуживать запросы даже при отказе ее частей.
- Можно достичь шардингом и репликацией
Сколько нужно серверов?
Блоки систем
- DNS
- Load balancers - Балансировщики
- Databases - Базы данных
- KV Storage - Хранилища Ключ Значение
- CDN - Сеть доставки контента
- Sequencer - генератор идентификаторов
- Мониторинг
- Распределенный кэш
- Распределенная очередь сообщений
- Издатель-подписчик
- Ограничитель нагрузки
- Файловое хранилище
- Распределенный поиск
- Распределенное логгирование
- Распределенное задачи по расписанию
- Шардированные счетчики.
Mock интервью
Interview tools
Проходить собеседования - отдельный навык
Не обольщайтесь - вопросы на собеседовании не говорят о том, что под капотом.