此存储库包含 Gayle Laakmann McDowell 的Cracking the Coding Interview 第 6 版的C++ 和 Python 解决方案。诚然,还有其他 GitHub 存储库提供了本书的解决方案。但你怎么知道他们的代码实际上是正确的呢?如果它未经测试,那么你就不会!
在此项目中,每个 C++ 解决方案都具有使用 C++ Catch 框架的单元测试,每个 Python 解决方案都具有使用 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 10 的 Windows Subsystem for Linux (WSL) 功能来开发此项目,然后按照 WSL 中的 Ubuntu 构建和测试说明进行操作。此建议是由于在自动测试代码更改的服务器上使用了基于 Ubuntu、CMake 和 makefile 的构建和执行系统。有关 Windows 开发的更多信息,请参阅本页末尾的Appendix
部分。
测试是该项目最重要的部分:只有单元测试才能定义要解决的问题。在根目录中,执行以下命令以运行 Python 和 C++ 中的所有测试:
make test
make test
是我在开发这个项目时最常用的命令。我的工作流程如下:
make test
来查看项目在哪里无法满足单元测试。make test
成功。这将准确显示每个 Python 源文件中的测试未覆盖哪些行:
pip install coverage
make test_coverage
该项目的目标是为第六版教科书中的每个问题编写经过测试的 Python 和 C++ 解决方案。我确实需要帮助,所以欢迎 PR。有很多工作要做,因为每个解决方案都需要自己的小型数据集和基础设施才能进行测试。以下是您可以提供帮助的一些方法:
如果您有任何贡献,请向master
分支进行 PR。请随时给我发消息以澄清上述任何事项。
在我自己的 Windows 计算机上,我使用在 Windows 中本机运行的 CLion 进行开发,并在 WSL 终端窗口中使用make test
测试代码。对于不想使用 WSL 的用户,我开发了以下构建和测试方法:
该项目可以使用 Visual Studio 2017 在没有 WSL 的情况下纯粹在 Windows 上开发。首先克隆代码:
git clone https://github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
git submodule update --init
然后,使用您选择的方法安装 Python3 和 numpy。我更喜欢从官方网站安装 Python3 和 pip3,然后通过 pip 安装 numpy:
pip install numpy
然后,在支持 CMake 的 Visual Studio 2017 中打开该项目。我发现最好的工作流程是使用 Visual Studio 编辑代码并使用调试功能。在构建代码之前,您必须按照这些说明告诉 Visual Studio 下载它所需的 PDB。此外,如果您感兴趣,本文还更详细地介绍了 Visual Studio CMake 支持。根项目目录中的 CMakeSettings.json 文件将 Visual Studio 生成文件夹的位置设置为项目的根文件夹内。
运行测试并查看其输出最好从 PowerShell 窗口完成,因为 CMake 模式下的 VisualStudio不允许tests.exe
和tests.py
文件的控制台输出保持可见,即使按 CTRL + F5 也是如此,如本文所述适用于“正常”Visual Studio 使用。我正在监视有关 Visual Studio 的情况,当我找到更好的解决方案时,我将实施它们或发布它们。如果您知道更好的,请与我联系。
同时,您可以从项目根目录运行 Python 测试...
python tests.py
...您可以使用...运行 C++ 测试
.buildx64-Debugtests.exe