Bản repo này chứa các giải pháp C++ và Python cho Phiên bản thứ 6 của Gayle Laakmann McDowell's Cracking the Coding Interview. Phải thừa nhận rằng có các kho lưu trữ GitHub khác có giải pháp cho cuốn sách này. Nhưng làm thế nào để bạn biết rằng mã của họ thực sự chính xác?
Trong dự án này, mọi giải pháp C++ đều có các bài kiểm tra đơn vị bằng cách sử dụng khung C++ Catch và mọi giải pháp Python đều có các bài kiểm tra đơn vị bằng cách sử dụng khung unittest của Python. Chúng tôi tự động thực thi tính chính xác của kiểm tra bằng cách sử dụng các máy chủ tích hợp liên tục để đảm bảo rằng các giải pháp được tạo ra từ mã sống được thực thi và kiểm tra trên mỗi lần xác nhận. Theo hiểu biết của tôi, đây là kho lưu trữ giải pháp duy nhất trên Internet với mức độ kiểm tra nghiêm ngặt này. >90% phạm vi kiểm tra tự động có nghĩa là bạn có thể tự tin tham khảo và đóng góp các giải pháp
Mục lục
Giải pháp C++
- Bài kiểm tra đơn vị C++
- Chương 1 - Mảng và Chuỗi.
9 / 9
hoàn thành - Chương 2 - Danh sách liên kết.
8 / 8
hoàn thành - Chương 3 - Ngăn xếp và hàng đợi.
0 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 4 - Cây và Đồ thị.
1 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 5 - Thao tác bit.
2 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 6 - Toán học và Logic.
3 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 7 - Thiết kế hướng đối tượng.
4 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 8 - Lập trình đệ quy và động.
5 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 9 - Thiết kế hệ thống và khả năng mở rộng.
6 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 10 - Sắp xếp và tìm kiếm.
7 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 11 - Thử nghiệm.
8 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 12 - C và C++.
7git clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 13 - Java. không áp dụng
- Chương 14 - Cơ sở dữ liệu.
0 hoàn thànhmake test
- Chương 15 - Chỉ và Khóa.
1 hoàn thànhmake test
- Chương 16 - Vừa phải.
2 hoàn thànhmake test
- Chương 17 - Khó Khăn.
3 hoàn thànhmake test
- Bài tập linh tinh.
4 hoàn thànhmake test
Tổng cộng C++.
make test
5 giải pháp hoàn thànhGiải pháp Python
- Bài kiểm tra đơn vị Python
- Chương 1 - Mảng và Chuỗi.
9 / 9
hoàn thành - Chương 2 - Danh sách liên kết.
8 / 8
hoàn thành - Chương 3 - Ngăn xếp và hàng đợi.
8 hoàn thànhmake test
- Chương 4 - Cây và Đồ thị.
1 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 5 - Thao tác bit.
2 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 6 - Toán học và Logic.
3 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 7 - Thiết kế hướng đối tượng.
4 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 8 - Lập trình đệ quy và động.
3 hoàn thànhpip install coverage make test_coverage
- Chương 9 - Thiết kế hệ thống và khả năng mở rộng.
6 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 10 - Sắp xếp và tìm kiếm.
5 hoàn thànhpip install coverage make test_coverage
- Chương 11 - Thử nghiệm.
8 hoàn thànhgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci make configure-ubuntu
- Chương 12 - C và C++. không áp dụng
- Chương 13 - Java. không áp dụng
- Chương 14 - Cơ sở dữ liệu.
0 hoàn thànhmake test
- Chương 15 - Chỉ và Khóa. không áp dụng
- Chương 16 - Vừa phải.
8 hoàn thànhpip install coverage make test_coverage
- Chương 17 - Khó Khăn.
9 hoàn thànhpip install coverage make test_coverage
Tổng Python.
git clone //github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
git submodule update --init
0 giải pháp hoàn thànhTổng cộng. git clone //github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
git submodule update --init
Hoàn thành 1 giải pháp độc đáoXây dựng
Mac
Việc sử dụng máy Mac yêu cầu cài đặt trình quản lý gói Homebrew và Pip được thực hiện cho bạn trong Makefile
git clone //github.com/alexhagiopol/cracking-the-coding-interview.git ctci
cd ctci
make configure-mac
Ubuntu
git clone //github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
make configure-ubuntu
các cửa sổ
Đối với người dùng Windows, tôi khuyên bạn nên phát triển dự án này bằng tính năng Hệ thống con Windows cho Linux [WSL] của Windows 10, sau đó làm theo hướng dẫn xây dựng và thử nghiệm Ubuntu bên trong WSL. Đề xuất này là do việc sử dụng các hệ thống thực thi và xây dựng dựa trên Ubuntu, CMake và makefile trên các máy chủ tự động kiểm tra các thay đổi đối với mã. Để biết thêm về quá trình phát triển Windows, hãy xem phần
git clone //github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
git submodule update --init
2 ở cuối trang nàythử nghiệm
Thử nghiệm là phần quan trọng nhất của dự án này. chỉ các bài kiểm tra đơn vị xác định vấn đề đang được giải quyết. Trong thư mục gốc, hãy thực hiện thao tác sau để chạy tất cả các bài kiểm tra bằng Python và C++
make test
git clone //github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
git submodule update --init
3 là lệnh tôi sử dụng nhiều nhất khi phát triển dự án này. quy trình làm việc của tôi sau- Tôi đọc một vấn đề và mã hóa định nghĩa vấn đề bằng cách thực hiện các bài kiểm tra đơn vị của nó
- Tôi thực hiện
3 để xem nơi dự án không đáp ứng các bài kiểm tra đơn vịgit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci git submodule update --init
- Tôi thêm vào việc triển khai giải pháp cho đến khi
3 thành cônggit clone //github.com/alexhagiopol/cracking-the-coding-interview.git cd ctci git submodule update --init
Không bắt buộc. Tạo báo cáo % phạm vi kiểm tra cục bộ [chỉ hỗ trợ Python]
Điều này sẽ hiển thị chính xác những dòng nào không được kiểm tra trong mỗi tệp nguồn Python
pip install coverage
make test_coverage
Đóng góp
Mục tiêu của dự án này là viết một giải pháp Python và C++ đã được thử nghiệm cho mọi vấn đề trong ấn bản thứ 6 của sách giáo khoa. Tôi chắc chắn cần sự giúp đỡ, vì vậy PR được chào đón. Còn nhiều việc phải làm vì mỗi giải pháp cần cơ sở hạ tầng và tập dữ liệu nhỏ của riêng mình để được kiểm tra. Dưới đây là một số cách bạn có thể giúp
- Sửa lỗi🐛
- Giải quyết hoặc cải thiện các giải pháp cho các vấn đề bằng một trong hai ngôn ngữ [xem tiến độ hoàn thành trong mục lục]
- Thêm nhiều bài kiểm tra đơn vị để tăng phạm vi kiểm tra%
- Triển khai phép đo phạm vi thử nghiệm C++ tự động bằng gcov
- Tích hợp báo cáo % phạm vi thử nghiệm tự động cho cả Python và C++ thông qua Coveralls
- Thêm mô tả giải pháp văn xuôi cho các vấn đề không có chúng
Nếu bạn có bất kỳ đóng góp nào, vui lòng PR cho chi nhánh
git clone //github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
git submodule update --init
6. Vui lòng nhắn tin cho tôi để làm rõ về bất kỳ mục nào ở trênruột thừa. Phát triển Windows
Trên máy Windows của riêng tôi, tôi phát triển bằng cách sử dụng CLion chạy nguyên bản trong Windows và kiểm tra mã bằng cách sử dụng
git clone //github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
git submodule update --init
3 trong cửa sổ đầu cuối WSL. Đối với những người dùng không muốn sử dụng WSL, tôi đã phát triển phương pháp xây dựng và thử nghiệm bên dướiXây dựng
Dự án có thể được phát triển hoàn toàn trên Windows mà không cần WSL bằng cách sử dụng Visual Studio 2017. Đầu tiên sao chép mã
git clone //github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
git submodule update --init
Sau đó, cài đặt Python3 và numpy bằng phương pháp bạn chọn. Tôi thích cài đặt Python3 và pip3 từ trang web chính thức hơn là cài đặt numpy qua pip
pip install numpy
Sau đó, mở dự án trong Visual Studio 2017 có hỗ trợ CMake. Tôi thấy rằng quy trình làm việc tốt nhất là sử dụng Visual Studio để chỉnh sửa mã và sử dụng chức năng sửa lỗi. Trước khi xây dựng mã, bạn phải làm theo các hướng dẫn này để yêu cầu Visual Studio tải xuống PDB mà nó cần. Ngoài ra, bài viết này mô tả hỗ trợ Visual Studio CMake chi tiết hơn nếu bạn quan tâm. Một CMakeSettings. json trong thư mục gốc của dự án đặt vị trí của thư mục bản dựng Visual Studio nằm trong thư mục gốc của dự án
thử nghiệm
Chạy thử nghiệm và xem đầu ra của chúng được thực hiện tốt nhất từ cửa sổ PowerShell vì VisualStudio ở chế độ CMake không cho phép đầu ra bảng điều khiển của các tệp
git clone //github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
git submodule update --init
8 và git clone //github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
git submodule update --init
9 vẫn hiển thị ngay cả khi nhấn CTRL + F5 như được mô tả trong bài đăng này áp dụng cho "bình thường . Tôi đang theo dõi tình hình lại. Visual Studio và khi tôi tìm thấy giải pháp tốt hơn, tôi sẽ triển khai hoặc đăng chúng. Nếu bạn biết một cái gì đó tốt hơn, xin vui lòng liên hệ với tôi