Этот репозиторий содержит решения C++ и Python для интервью Гейл Лаакманн Макдауэлл «Cracking the Coding Interview, 6th Edition» . Следует признать, что существуют и другие репозитории GitHub с решениями для этой книги. Но как узнать, что их код на самом деле правильный? Если это не проверено, то нет!
В этом проекте каждое решение C++ имеет модульные тесты с использованием платформы C++ Catch, а каждое решение Python имеет модульные тесты с использованием платформы Unittest Python. Мы автоматически обеспечиваем корректность тестов с помощью серверов непрерывной интеграции, гарантируя, что решения состоят из живого кода, который выполняется и тестируется при каждом коммите. Насколько мне известно, это единственный в Интернете репозиторий решений с таким уровнем строгости тестирования: более 90 % покрытия автоматическими тестами означает, что вы можете с уверенностью ссылаться на решения и предлагать их.
9 / 9
завершено.8 / 8
завершено.4 / 6
завершено.11 / 12
завершено.7 / 8
завершено.0 / 10
завершена.0 / 12
завершено.8 / 14
завершено.0 / 8
завершено.10 / 11
завершено.0 / 6
завершено.10 / 11
0 / 7
завершено.0 / 4
завершено.11 / 26
.1 / 26
завершена.2
полных. C++ Всего: завершено 81
решение.
9 / 9
завершено.8 / 8
завершено.6 / 6
завершено.11 / 12
завершено.7 / 8
завершено.0 / 10
завершена.0 / 12
завершено.11 / 14
завершено.0 / 8
завершено.1 / 11
завершена.0 / 6
завершено.0 / 7
завершено.2 / 26
завершено.3 / 26
завершена. Всего Python: выполнено 58
решений.
139
уникальных решений.Для использования Mac требуется установка менеджеров пакетов Homebrew и Pip, что делается за вас в Makefile:
git clone https://github.com/alexhagiopol/cracking-the-coding-interview.git ctci
cd ctci
make configure-mac
git clone https://github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
make configure-ubuntu
Пользователям Windows я рекомендую разработать этот проект с использованием функции подсистемы Windows для Linux (WSL) в Windows 10, а затем следовать инструкциям по сборке и тестированию Ubuntu внутри WSL. Эта рекомендация обусловлена использованием систем сборки и выполнения на основе Ubuntu, CMake и makefile на серверах, которые автоматически проверяют изменения в коде. Дополнительную информацию о разработке для Windows см. в разделе Appendix
в конце этой страницы.
Тестирование — самая важная часть этого проекта: только модульные тесты определяют решаемую проблему. В корневом каталоге выполните следующую команду, чтобы запустить все тесты на Python и C++:
make test
make test
— это команда, которую я использую чаще всего при разработке этого проекта. Мой рабочий процесс следующий:
make test
, чтобы увидеть, где проект не соответствует модульным тестам.make test
не завершится успешно.Это покажет, какие именно строки не охвачены тестами в каждом исходном файле Python:
pip install coverage
make test_coverage
Цель этого проекта — написать протестированное решение на Python и C++ для каждой задачи в 6-м издании учебника. Мне определенно нужна помощь, поэтому пиар приветствуются. Предстоит многое сделать, поскольку для тестирования каждому решению необходим собственный небольшой набор данных и инфраструктура. Вот несколько способов, которыми вы можете помочь:
Если у вас есть какой-либо вклад, пожалуйста, сделайте PR в master
ветке. Не стесняйтесь писать мне для разъяснений по любому из вышеперечисленных пунктов.
На своей машине под управлением Windows я разрабатываю код с использованием CLion, работающего в Windows, и тестирую код с помощью команды make test
в окне терминала WSL. Для пользователей, которые не хотят использовать WSL, я разработал приведенную ниже методологию сборки и тестирования:
Проект можно разработать исключительно в Windows без WSL, используя Visual Studio 2017. Сначала клонируйте код:
git clone https://github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
git submodule update --init
Затем установите Python3 и numpy, используя выбранный вами метод. Я предпочитаю устанавливать Python3 и pip3 с официального сайта, а затем устанавливать numpy через pip:
pip install numpy
Затем откройте проект в Visual Studio 2017, поддерживающем CMake. Я обнаружил, что лучше всего использовать Visual Studio для редактирования кода и использования функций отладки. Перед созданием кода необходимо следовать этим инструкциям, чтобы указать Visual Studio загружать необходимые PDB-файлы. Кроме того, если вам интересно, в этой статье более подробно описывается поддержка Visual Studio CMake. Файл CMakeSettings.json в корневом каталоге проекта устанавливает расположение папки сборки Visual Studio внутри корневой папки проекта.
Запускать тесты и просматривать их результаты лучше всего из окна PowerShell, поскольку VisualStudio в режиме CMake не позволяет консольным выводам tests.exe
tests.py
оставаться видимыми даже при нажатии CTRL + F5, как описано в этом сообщении, которое применяется к «нормальному» использованию Visual Studio. Я слежу за ситуацией с Visual Studio, и когда найду лучшие решения, я их реализую или опубликую. Если вы знаете что-то лучшее, пожалуйста, свяжитесь со мной.
Тем временем из корневого каталога проекта вы можете запускать тесты Python, используя...
python tests.py
... и вы можете запускать тесты C++, используя...
.buildx64-Debugtests.exe