Матрица пользователя : p.bakhvalov
- Заполненных тем 19
- Заполненных навыков 50
- social Сеть Frontend Владение языками CSS Arrays Мягкие навыки PHP Auth Data
- 1332
- 2025-01-11 11:43:42
Hard skills
Пет проекты и сервисы
Объе́ктно ориенти́рованное программи́рование (сокр. ООП) — методология или стиль программирования на основе описания типов/моделей предметной области и их взаимодействия, представленных порождением из прототипов или как экземпляры классов, которые образуют иерархию наследования.
При создании программных систем использование принципов SOLID способствует созданию такой системы, которую будет легко поддерживать и расширять в течение долгого времени. Принципы SOLID — это руководства, которые также могут применяться во время работы над существующим программным обеспечением для его улучшения, например, для удаления «дурно пахнущего кода».
-
Понятия ООП
- Знаю: Может рассказать и объяснить все термины
- Понимаю: На лайвкодинге может написать код используя термины.
Термины:
- Класс
- Объект
- Интерфейс
- Поля данных/Своиства
- Методы
- Контроль доступа
-
Принципы ООП
- Джун: Может объяснить базовые принципы.
- Мидл: Разбирается в принципах ООП.
- Синьор: Может на лафкодинге показать пример принципов ООП.
Принципы:
- Абстракция
- Инкапсуляция
- Наследование (Делегация, Композиция, Агрегация)
- Полиморфизм
Знания на сеньора:
- Динамическое связывание методов
- Динамическое создание и уничтожение объектов
- Значительная глубина абстракции
- Наследование «размывает» код
- Инкапсуляция снижает скорость доступа к данным
https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование
https://habr.com/ru/companies/dataart/articles/262817/
https://gist.github.com/zmts/802dc9c3510d79fd40f9dc38a12bccfc?permalink_comment_id=4823694
-
Cookie/Session
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
-
OpenAuth
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
software development process or software development life cycle (SDLC)
https://ru.wikipedia.org/wiki/Процесс_разработки_программного_обеспечения
Design Patterns, описанные в книге "Банды четырех"
Шаблоны используемы в построении архитектуры
todo
https://ru.wikipedia.org/wiki/%D0%90%D0%BD%D1%82%D0%B8%D0%BF%D0%B0%D1%82%D1%82%D0%B5%D1%80%D0%BD
https://ru.wikipedia.org/wiki/%D0%90%D0%BD%D1%82%D0%B8%D0%BF%D0%B0%D1%82%D1%82%D0%B5%D1%80%D0%BD
https://ru.wikipedia.org/wiki/%D0%90%D0%BD%D1%82%D0%B8%D0%BF%D0%B0%D1%82%D1%82%D0%B5%D1%80%D0%BD
https://proglib.io/tests/proydi-test-na-znanie-algoritmov-i-struktur-dannyh
https://education.yandex.ru/handbook/algorithms https://apptractor.ru/info/articles/6-algoritmov-kotorye-dolzhen-znat-kazhdyy-razrabotchik.html https://codechick.io/tutorials/dsa/dsa-algorithm
-
Массивы (Arrays)
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
Массивы – это простейшая структура данных, представляющая собой набор элементов одного типа, расположенных последовательно в памяти. Хранит набор значений (элементов массива), идентифицируемых по индексу или набору индексов, принимающих целые (или приводимые к целым) значения из некоторого заданного непрерывного диапазона.
Преимущества:
Быстрый доступ к элементам по индексу Непрерывная область памяти
Недостатки:
Фиксированный размер Неэффективное добавление/удаление элементов
Применение: Массивы подходят для хранения набора данных с фиксированным размером, где операции вставки и удаления элементов не требуются.
-
Сортировка пузырьком / Bubble sort
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
Или сортировка простыми обменами. Обходим массив от начала до конца, попутно меняя местами неотсортированные соседние элементы. В результате первого прохода на последнее место «всплывёт» максимальный элемент. Теперь снова обходим неотсортированную часть массива (от первого элемента до предпоследнего) и меняем по пути неотсортированных соседей. Второй по величине элемент окажется на предпоследнем месте. Если за проход не произошло ни одного обмена, то массив отсортирован. Продолжая в том же духе, будем обходить всё уменьшающуюся неотсортированную часть массива, запихивая найденные максимумы в конец. Очевидно, не более чем после n итераций массив будет отсортирован.
-
Сортировка вставками / Insertion sort
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
Элементы входной последовательности просматриваются по одному, и каждый новый поступивший элемент размещается в подходящее место среди ранее упорядоченных элементов.
-
Сортировка выбором / Selection sort
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
На очередной итерации будем находить минимум в массиве после текущего элемента и менять его с ним, если надо. Таким образом, после i-ой итерации первые i элементов будут стоять на своих местах. Нужно отметить, что эту сортировку можно реализовать двумя способами – сохраняя минимум и его индекс или просто переставляя текущий элемент с рассматриваемым, если они стоят в неправильном порядке.
-
Быстрая сортировка / Quicksort
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
Выбрать из массива элемент, называемый опорным(pivot). Это может быть любой из элементов массива. От выбора опорного элемента не зависит корректность алгоритма, но в отдельных случаях может сильно зависеть его эффективность. В ранних реализациях, как правило, опорным выбирался первый элемент, что снижало производительность на отсортированных массивах. Для улучшения эффективности может выбираться средний, случайный элемент или (для больших массивов) медиана первого, среднего и последнего элементов. Медиана всей последовательности является оптимальным опорным элементом, но её вычисление слишком трудоёмко для использования в сортировке. Сравнить все остальные элементы с опорным и переставить их в массиве так, чтобы разбить массив на три непрерывных отрезка, следующих друг за другом: «элементы меньшие опорного», «равные» и «большие». На практике массив обычно делят не на три, а на две части: например, «меньшие опорного» и «равные и большие»; такой подход в общем случае эффективнее, так как упрощает алгоритм разделения Для отрезков «меньших» и «больших» значений выполнить рекурсивно ту же последовательность операций, если длина отрезка больше единицы.
-
Сортировка слиянием / Merge sort
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
Сортировка, основанная на парадигме «разделяй и властвуй». Разделим массив пополам, рекурсивно отсортируем части, после чего выполним процедуру слияния: поддерживаем два указателя, один на текущий элемент первой части, второй – на текущий элемент второй части. Из этих двух элементов выбираем минимальный, вставляем в ответ и сдвигаем указатель, соответствующий минимуму. Слияние работает за O(n), уровней всего logn, поэтому асимптотика O(n logn). Эффективно заранее создать временный массив и передать его в качестве аргумента функции. Эта сортировка рекурсивна, как и быстрая, а потому возможен переход на квадратичную при небольшом числе элементов.
-
Сортировка кучей
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
ßКуча (heap) — это не что иное, как двоичное дерево с некоторыми дополнительными правилами, которым оно должно следовать: во-первых, оно всегда должно иметь структуру кучи, где все уровни двоичного дерева заполняются слева направо, и, во-вторых, оно должно быть упорядочено в виде max-кучи или min-кучи. В качестве примера я буду использовать min-кучу.
Алгоритм пирамидальной сортировки — это метод сортировки, который полагается на такие структуры данных как двоичные кучи. Поскольку мы знаем, что кучи всегда должны соответствовать определенным требованиям, мы можем использовать это для поиска элемента с наименьшим значением, последовательно сортируя элементы, выбирая корневой узел кучи и добавляя его в конец массива.
Работает в худшем, в среднем и в лучшем случае (то есть гарантированно) за O(n*log n) операций при сортировке n элементов. Количество применяемой служебной памяти не зависит от размера массива O(1). Может рассматриваться как усовершенствованная сортировка пузырьком, в которой элемент всплывает/тонет по многим путям.
https://backendinterview.ru/algostruct/graph.html https://backendinterview.ru/algostruct/index.html
https://habr.com/ru/companies/otus/articles/770248/ https://habr.com/ru/companies/otus/articles/782064/ https://habr.com/ru/companies/ruvds/articles/732648/
Криптогра́фия — наука о методах обеспечения конфиденциальности (невозможности прочтения информации посторонним), целостности данных (невозможности незаметного изменения информации), аутентификации (проверки подлинности авторства или иных свойств объекта), а также невозможности отказа от авторства.
https://habr.com/ru/articles/549054/ https://habr.com/ru/articles/587620/ https://xbsoftware.ru/blog/metodologii-testirovaniya-po-kakuyu-vybrat/
Технологии используемые в разработке для развертывания и деплоя
-
Консольные команды
- Джун: Начальные/Поверхностные знания.
- Мидл: Средние знания. Можете объяснить суть и есть опыт применения..
- Сеньор: Продвинутые знания. Можете показать на примере, знаете нюансы и можете научить.
run, exec, ps, kill, stop, rm, rmi, volume, images, pull, compose, logs
-
Docker-compose
- Джун: Начальные/Поверхностные знания.
- Мидл: Средние знания. Можете объяснить суть и есть опыт применения..
- Сеньор: Продвинутые знания. Можете показать на примере, знаете нюансы и можете научить.
- Команды
- Настройка docker-compose.yml
- Принципы работы с сетью
https://habr.com/ru/companies/ruvds/articles/450312/ https://docs.docker.com/compose/
https://habr.com/ru/articles/258443/ https://kubernetes.io/ru/docs/concepts/overview/what-is-kubernetes/
- Сервисы метрик и логирования
-
Git
- Джун: Начальные/Поверхностные знания.
- Мидл: Средние знания. Можете объяснить суть и есть опыт применения..
- Сеньор: Продвинутые знания. Можете показать на примере, знаете нюансы и можете научить.
Git — распределённая система управления версиями.
Базы данны SQL, NoSQL и сервисы очередей
Транзакционные базы данных (базы, работающие через транзакции) выполняют требования ACID, которые обеспечивают безопасность данных.
https://habr.com/ru/articles/537594/ https://ru.wikipedia.org/wiki/Транзакция_(информатика)
-
Типы индексов
- Джун: Начальные/Поверхностные знания.
- Мидл: Средние знания. Можете объяснить суть и есть опыт применения..
- Сеньор: Продвинутые знания. Можете показать на примере, знаете нюансы и можете научить.
-
R-Tree (Пространственный индекс) https://ru.wikipedia.org/wiki/R-дерево_(структура_данных)
-
Hash index
-
Inverted index
-
Уникальный индекс (Unique Index)
-
Полнотекстовый индекс (Full-Text Index)
-
Составной индекс
-
Кластеризованные
-
некластеризованные
https://timeweb.cloud/tutorials/sql/indeksy-v-sql-sozdanie-vidy-i-kak-rabotayut https://www.mysql.ru/docs/man/MySQL_indexes.html https://habr.com/ru/articles/556440/
https://habr.com/ru/companies/tensor/articles/779698/ https://habr.com/ru/articles/340460/
-
Индексы
- Джун: Начальные/Поверхностные знания.
- Мидл: Средние знания. Можете объяснить суть и есть опыт применения..
- Сеньор: Продвинутые знания. Можете показать на примере, знаете нюансы и можете научить.
https://habr.com/ru/companies/postgrespro/articles/330544/ https://habr.com/ru/companies/quadcode/articles/696498/
Знания языка программирования PHP
-
Типы данных PHP
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
- Атомарные
- Составные
- Пересечение
- Объединение
- Псевдонимы
https://www.php.net/manual/ru/language.types.type-system.php
-
Static/Self/parent
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
https://www.php.net/manual/ru/language.oop5.late-static-bindings.php https://www.php.net/manual/ru/language.oop5.static.php
- Стрелочные функции
PHP vendors
Навыки связанные с client-side разработкой
-
Форматы изображений
- Знакомо: Имею общее представление о большинстве форматах
- Знаю: Знаю плюсы и минусы основных форматов jpg, png, gif, svg, ico
- Понимаю: Понимаю и могу объяснить как устроены алгоритмы сжатия в различных форматах.
Растровые и векторные форматы изображений (jpg, png, gif, svg, ico, tiff, avif, apng, hiec, webp, bmp, raw и т.д.).
Оптимизация и особенности применения.
-
SVG
- Знаю: Базовый синтаксис и принцип работы
- Понимаю и применяю: Могу поменять текст, сформировать новое изображение с нуля, анимировать графику
-
Оптимизация загрузки ресурсов
- Джун: Начальные/Поверхностные знания.
- Мидл: Средние знания. Можете объяснить суть и есть опыт применения..
- Сеньор: Продвинутые знания. Можете показать на примере, знаете нюансы и можете научить.
способы подключения ресурсов (async/defer, prefetch/preload)
Preload, prefetch и другие теги https://habr.com/ru/articles/445264/
Разница между async и defer у тега script https://wp-kama.ru/id_12151/raznitsa-async-defer.html
Как быстрее DOM построить: парсинг, async, defer и preload https://habr.com/ru/articles/338840/
https://learn.javascript.ru/first-steps https://habr.com/ru/companies/ruvds/articles/416375/
-
cookie, sessionStorage и localStorage
- Джун: Начальные/Поверхностные знания.
- Мидл: Средние знания. Можете объяснить суть и есть опыт применения..
- Сеньор: Продвинутые знания. Можете показать на примере, знаете нюансы и можете научить.
Разница и ограничения cookie, sessionStorage и localStorage.
https://learn.javascript.ru/localstorage?ysclid=m4f9fptrr1171420958
-
let, var и const
- Знаю: Знаю что это, читал/изучал.
Разница между let, var и const
https://habr.com/ru/companies/piter/articles/820027/ https://habr.com/ru/companies/macloud/articles/559902/
https://itanddigital.ru/bloghrconsulting/tpost/o9gce6b1b1-50-osnovnih-voprosov-i-otvetov-na-sobese
Webpack — это модульный сборщик (bundler) с открытым исходным кодом, написанный на JavaScript.
Он берёт несколько скриптов JavaScript с их зависимостями и объединяет в файл, который используется браузером.
Преимущества Webpack:
ускоряет разработку, убирая необходимость постоянно перезагружать веб-страницу при изменениях в JS-файлах;
обеспечивает разделение кода на отдельные модули, которые можно переиспользовать внутри веб-приложения;
позволяет избежать проблем с перезаписью глобальных переменных;
поддерживает минификацию, то есть сокращение объёма кода без изменения его функциональности;
умеет работать с разными спецификациями модулей.
-
Семантическая верстка
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
-
Псевдо-классы
- Знаю: Знаю что это, читал/изучал.
псевдо-классы
-
Нормализаця стилей
- Знаю: Знаю что это, читал/изучал.
нормализаця стилей
-
Медиазапросы
- Знаю: Знаю что это, читал/изучал.
Медиазапросы
-
animation,transition,transform
- Знаю: Знаю что это, читал/изучал.
animation,transition,transform
-
Псевдо-элементы
- Знаю: Знаю что это, читал/изучал.
Псевдо-элементы
::after, ::before
-
Селекторы и приоритеты стилей
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
CSS фреймворки
-
SASS
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
SASS
-
Bootstrap
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
Bootstrap
Навыки по разработке приложений для Android
Навыки по разработке приложений на iOS, для iPhone , iMac
https://help.ubuntu.com/kubuntu/desktopguide/ru/linux-basics.html https://habr.com/ru/articles/655275/
Сетевые протоколы (IP, Transport, etc)
-
TCP/IP
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
TCP/IP
-
HTTP/HTTPS
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
HTTP/HTTPS
-
SSH
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
SSH
-
DNS
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
DNS
-
Сетевая безопасность
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
- DDOS
- XSS
-
Сетевая модель OSI
- Джун: Начальные/Поверхностные знания.
- Мидл: Средние знания. Можете объяснить суть и есть опыт применения..
- Сеньор: Продвинутые знания. Можете показать на примере, знаете нюансы и можете научить.
Сетевая модель OSI (The Open Systems Interconnection model) — сетевая модель стека (магазина) сетевых протоколов OSI/ISO. Посредством данной модели различные сетевые устройства могут взаимодействовать друг с другом. Модель определяет различные уровни взаимодействия систем. Каждый уровень выполняет определённые функции при таком взаимодействии.
Soft skills
-
Таим менеджмент
- Базовые понятия: Умеете планировать свою жизнь и дела на 1-2 дня, есть абстрактные цели.
- Применяете методики: Знаете что такое VUCA, BANI или другой метод и используете его. Планируете свои дела на каждую неделю. Ставите цели минимум на 1 год. Переодический проводите ретроспективу и корректировку долгосрочных планов.
- Управляете временем: Время работает на вас. Вы наставник или можете быть им.
https://practicum.yandex.ru/blog/taym-menedzhment-kak-upravlyat-vremenem/
https://trends.rbc.ru/trends/education/606335659a7947a191c4b092
-
Самостоятельность
- Джун: Проактивно предупреждает о потенциальных проблемах, запрашивает помощь и так далее. Способен предоставлять отчет по задаче, когда спрашивают
- Мидл: Способен самостоятельно ставить себе задачи на протяжении длительного времени, занимаясь только согласованием видения с "архитекторами" и "владельцами продукта"
- Синьор: Имеет четкое понимание приоритетов задач с точки зрения разработки. Прислушивается к приоритетам с точки зрения бизнеса, способен обеспечить "героические" усилия (деливери в ограниченные сроки) не путем сверхусилий команды, а путем совместного упрощения задач и т.п.
https://blog.karpachoff.com/kommunikativnye-navyki-kak-ih-razvit-i-uluchshit
-
Инициатор
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
Иницирует коммуникации по мере возникновения проблем в текущих задачахи и в рамках действующих регламентов (стэндапы, ретроспективы и т.д.)
-
Аргументирование
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
Способен оппонировать другим разработчикам, в том числе и вышестоящим, если уверен в своих аргументах. Отслеживает результаты коммуникаций в контексте конкретных действий
-
Эффективность
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
Применяет инженерный подход в общении - коммуникации используются как эффективный инструмент достижения целей. В рабочих процессах полностью отсутсвуют коммуникации, которые не способствуют достижению конкретных целей
-
Эмоциональный интеллект
- Начальный уровень: Знаете все понемногу.
- Средний: У вас полностью прокачен навык "Самосознание".
- Высокий: Высокий уровень навыка "Самоконтроль" и "Эмпатия"
- Продвинутый: В полной мере владеете всеми навыками.
Это обширный навык который включает себя несколько других навыков:
- Самосознание: Восприятие эмоций. Способность осознавать и анализировать собственные эмоции, а также знание своих слабых и сильных сторон.
- Самоконтроль: Умение управлять своими эмоциями и сохранять эмоциональный баланс даже в критических ситуациях.
- Эмпатия: Понимание эмоций окружающих и способность общаться с другими с учетом их внутреннего состояния.
- Навыки отношений: Умение взаимодействовать с людьми, управлять их эмоциями, улаживать конфликты, работать в команде или возглавлять ее.
https://presium.pro/blog/what-is-emotional-intelligence https://journal.tinkoff.ru/emotional-intelligence/
-
Коммуникации
- Начальный уровень: Способность эффективно слушать и понимать других участников коммуникации, ясное и понятное выражение своих мыслей и идей, умение задавать вопросы и запрашивать уточнения для полного понимания задач и требований.
- Средний уровень: Грамотное и уверенное выступление перед аудиторией различного уровня сложности, адаптация к различным коммуникационным стилям и предпочтениям участников коммуникации, навыки убеждения и влияния на принятие решений и согласование с разными заинтересованными сторонами, способность конструктивно обрабатывать фидбэк и критику.
- Высокий уровень: Эффективное управление конфликтами и разрешение спорных ситуаций в коммуникации, умение адаптировать свой стиль коммуникации к разным культурным контекстам и международным командам, умение вести эффективные совещания и встречи, учитывая потребности и цели всех участников.
Устная, письменна, и чтение.
- Английский
- Немецкий
Методы достижения целей
Бизнес-анализ
-
Оформление ТЗ.
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
Способен выполнить полный цикл бизнес-анализа, включая адекватное управление требованиями
-
Планирование
- Знаю: Знаю что это, читал/изучал.
- Понимаю: Понимаю (знаю достоинства и недостатки) и был опыт применения.
Планирование