Помочь с подготовкой к интервью (темы не простые)
Цена договорная
Нужен ментор, опытный разработчик, которой сможет подготовить меня к решению подобных задач для прохождения предстоящих интервью.
Подобрать какую-нибудь задачу на Code Review.
Нужен какой нибудь пример задачи (кода) в которой требуется найти и исправить максимальном число ошибок и сделать
решение тестируемым. Суть в том чтобы обьяснить и показать разные способы и практики решения подобных задач. Вносить правки в представленный код можно через онлайн редактор, например: https://code.yandex-team.ru/
Нужно чтобы для решения подобной задачи потребовалось:
1. Знать реализации базовых структур данных таких как List<T>, Dictionary<K,V>
a. Знать стоимость операций: Add(), Remove(), Get() в нотации O (big O)
b. Уметь строить составной ключ и знать требования для ключей в Dictionary<K,V>
2. Уметь работать с примитивами синхронизации например: Monitor, SemaphoreSlim, ReaderWriterLockSlim
a. Уметь реализовать паттерн Singleton with double check locking
b. Детектировать Dead locks в представленном коде
3. Уметь работать с потокобезопасными структурами данных (ns:System.Collections.Concurrent)
4. Уметь писать юнит тесты с Mock зависимостей
5. Применять SOLID на практике
a. Уметь реализовывать паттерн Adapter
Так же подобрать что-нибудь на Product Design
Какая нибудь задача на дизайн реальной системы, где нет однозначно правильного решения.
Где нужно начать с дизайна уровня базы данных, уточнив на этом этапе определения всех базовых сущностей. Помочь нарисовать UML диаграммы в онлайн редакторе, например: http://draw.io/
Потом обьяснить и помочь реализовать один из спроектированных методов в любимой IDE.
Необходимо чтобы для решения задачи потребовалось:
1. Уметь проектировать базу данных в 3 нормальной форме (3NF)
a. Реализовать отношения One-To-One, One-To-Many, Many-To-Many
b. Быть внимательным при создании Primary Keys (Guid vs Int), Foreign Keys
c. На этапе проектирования добавить необходимые индексы (составной, уникальный фильтрованный, ...)
d. Реализовать логическое удаление с проверкой целостности на уровне базы
2. Обьяснить и помочь спроектировать архитектуру Solution в соответствии с N-Layer Architecture
a. При проектировании необходимо каждый слой реализовать в виде отдельной сборки с указанием зависимостей
3. Спроектировать API в соответствии с парадигмой REST
a. Корректно использовать HTTP Verbs и HTTP Status Codes в своем решении
b. Спроектировать GET метод получения данных с Paging
c. Рассмотреть сценарии обработки Transient Faults
d. Спроектировать идемпотентный метод создания ресурса POST
У меня осталась небольшая задача на разработку WebAPI, на ее основе можно пройтись по всем выше перечисленным пунктам. В случае, если данная задача не подойдет, то ментор может предложить свой вариант задачи.
Желательно чтобы ментор использовал и был знаком со следующей литературой:
1. Адаптивный код: гибкое кодирование с помощью паттернов проектирования и принципов SOLID | Холл Гэри Маклин
2. Совершенный код | Макконнелл Стив
3. CLR via C# | Рихтер Джеффри
Подобрать какую-нибудь задачу на Code Review.
Нужен какой нибудь пример задачи (кода) в которой требуется найти и исправить максимальном число ошибок и сделать
решение тестируемым. Суть в том чтобы обьяснить и показать разные способы и практики решения подобных задач. Вносить правки в представленный код можно через онлайн редактор, например: https://code.yandex-team.ru/
Нужно чтобы для решения подобной задачи потребовалось:
1. Знать реализации базовых структур данных таких как List<T>, Dictionary<K,V>
a. Знать стоимость операций: Add(), Remove(), Get() в нотации O (big O)
b. Уметь строить составной ключ и знать требования для ключей в Dictionary<K,V>
2. Уметь работать с примитивами синхронизации например: Monitor, SemaphoreSlim, ReaderWriterLockSlim
a. Уметь реализовать паттерн Singleton with double check locking
b. Детектировать Dead locks в представленном коде
3. Уметь работать с потокобезопасными структурами данных (ns:System.Collections.Concurrent)
4. Уметь писать юнит тесты с Mock зависимостей
5. Применять SOLID на практике
a. Уметь реализовывать паттерн Adapter
Так же подобрать что-нибудь на Product Design
Какая нибудь задача на дизайн реальной системы, где нет однозначно правильного решения.
Где нужно начать с дизайна уровня базы данных, уточнив на этом этапе определения всех базовых сущностей. Помочь нарисовать UML диаграммы в онлайн редакторе, например: http://draw.io/
Потом обьяснить и помочь реализовать один из спроектированных методов в любимой IDE.
Необходимо чтобы для решения задачи потребовалось:
1. Уметь проектировать базу данных в 3 нормальной форме (3NF)
a. Реализовать отношения One-To-One, One-To-Many, Many-To-Many
b. Быть внимательным при создании Primary Keys (Guid vs Int), Foreign Keys
c. На этапе проектирования добавить необходимые индексы (составной, уникальный фильтрованный, ...)
d. Реализовать логическое удаление с проверкой целостности на уровне базы
2. Обьяснить и помочь спроектировать архитектуру Solution в соответствии с N-Layer Architecture
a. При проектировании необходимо каждый слой реализовать в виде отдельной сборки с указанием зависимостей
3. Спроектировать API в соответствии с парадигмой REST
a. Корректно использовать HTTP Verbs и HTTP Status Codes в своем решении
b. Спроектировать GET метод получения данных с Paging
c. Рассмотреть сценарии обработки Transient Faults
d. Спроектировать идемпотентный метод создания ресурса POST
У меня осталась небольшая задача на разработку WebAPI, на ее основе можно пройтись по всем выше перечисленным пунктам. В случае, если данная задача не подойдет, то ментор может предложить свой вариант задачи.
Желательно чтобы ментор использовал и был знаком со следующей литературой:
1. Адаптивный код: гибкое кодирование с помощью паттернов проектирования и принципов SOLID | Холл Гэри Маклин
2. Совершенный код | Макконнелл Стив
3. CLR via C# | Рихтер Джеффри
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.