Có một quy tắc như sau 20 phút bạn nên bắt đầu viết mã không có vấn đề gì?
Không, nhưng nếu bạn dành 20 phút để phân tích vấn đề trước khi bắt đầu kinh doanh, có lẽ bạn đã gặp rắc rối. Một nhà tuyển dụng hỏi bạn một câu hỏi giống như câu hỏi mà bạn đã trích dẫn chủ yếu quan tâm đến cách bạn tiếp cận vấn đề, nhưng nếu họ hỏi đó là vấn đề mã hóa, họ cũng sẽ muốn xem một số mã. Nói với họ thông qua quá trình suy nghĩ của bạn ...
Vâng, cách tiếp cận rõ ràng ở đây là vũ phu. Nếu tôi có cách nhận ra một tam giác vuông cho ba đỉnh, tôi có thể chạy qua tất cả các kết hợp của hai điểm và gốc tọa độ để tìm tam giác vuông. Điều đó không khó - tôi có thể viết một hàm sử dụng Định lý Pythagore để xác định các tam giác vuông. Để dễ dàng hơn, tôi cũng sẽ viết một hàm xác định khoảng cách giữa hai điểm bằng công thức khoảng cách ...
Viết các chức năng đó sẽ mất khoảng ba phút. Bây giờ, chỉ sau vài phút cho câu hỏi, bạn đã cho thấy rằng bạn nhớ hình học cơ bản và bạn thực sự biết cách viết mã. Nó cũng cung cấp cho bạn một cái gì đó để nói về:
Vì vậy, rõ ràng chúng ta có thể đặt isRightTriangle(p1, p2, p3)
hàm ở giữa bốn for
vòng và lặp qua tất cả các lựa chọn có thể cho mỗi trong hai điểm biến. Hãy xem ... vấn đề yêu cầu số lượng tam giác vuông bao gồm gốc tọa độ trên lưới 50x50, vì vậy sử dụng phương pháp vũ lực khiến chúng ta kiểm tra 50 khả năng cho mỗi tọa độ của mỗi điểm. Đó là 50 ^ 4 kiểm tra ... Tôi chắc chắn chúng ta có thể làm tốt hơn, nhưng mã là rõ ràng, vì vậy hãy để tôi viết nó xuống ...
Vì vậy, bây giờ bạn viết một hàm sử dụng các for
vòng lặp lồng nhau và isRightTriangle()
hàm mà bạn vừa viết. Bạn đã giải quyết vấn đề, nhưng bạn cũng cho người phỏng vấn biết bạn đang đi đâu. Nếu mục tiêu của họ chỉ là thấy bạn có thể viết mã, họ có thể bảo bạn dừng lại. Nhiều khả năng, họ rất vui khi được nói chuyện với một người biết họ đang làm gì và họ sẽ muốn xem bạn mất bao xa. Vì vậy, bạn tiếp tục ...
Nó xảy ra với tôi khi tôi đang viết rằng chúng ta có thể tận dụng sự đối xứng. Chúng ta có thể phản ánh bất kỳ tam giác vuông đã cho nào xung quanh đường 45 °, vì vậy nếu chúng ta chọn kiểm tra một trong những điểm chỉ ở một bên của đường thẳng đó, chúng ta có thể đếm bất kỳ tam giác vuông nào chúng ta tìm thấy hai lần ... một lần cho tam giác và một lần cho sự phản ánh của nó. Điều đó làm giảm một nửa số kiểm tra. Ngoài ra, nhìn vào nó bây giờ, chúng ta đang lấy một căn bậc hai để tìm khoảng cách giữa hai điểm, nhưng sau đó chúng ta chỉ vuông lại một lần nữa trong isRightTriangle()
...
Và như thế. Một lần nữa, họ thường không muốn thấy một giải pháp hoàn hảo, họ muốn xem cách bạn tìm đến một giải pháp. Quá trình suy nghĩ của bạn không phải là bất cứ điều gì giống như ở trên - chỉ cần có sự tự tin để suy nghĩ thành tiếng sẽ rất nhiều. Đừng đổ mồ hôi nếu bạn mắc lỗi - chỉ cần nói "hmmm, tôi nghĩ rằng tôi đã đi ra khỏi đường ray ở đây - hãy để tôi quay lại một bước ..."