loại hiểu biết hoặc câu hỏi nào sẽ dẫn bạn đến việc xác định các kỹ năng OOAD của một người.
loại hiểu biết hoặc câu hỏi nào sẽ dẫn bạn đến việc xác định các kỹ năng OOAD của một người.
Câu trả lời:
Bạn có thể chỉ ra một số thiết kế OO nửa vời về một vấn đề đơn giản và thảo luận về những gì nó làm, những gì tốt và xấu về nó, liệu nó có đủ linh hoạt, những gì có thể được cải thiện và làm thế nào.
Nếu bạn cần làm cho cuộc thảo luận diễn ra, hãy hỏi người đó nghĩ gì về một số khía cạnh của mã, nhưng không phải với một câu hỏi hàng đầu.
Quan trọng là hãy nhớ rằng cuộc thảo luận là quan trọng, không phải là bạn đã biết câu trả lời trước. Bất kỳ nhà phát triển tử tế nào cũng có thể chỉ ra điều gì đó về mã mà bạn thậm chí không nghĩ đến trước đây.
Thảo luận về một vấn đề thiết kế kết thúc mở với người. Xem cách họ tiến hành xây dựng một mô hình của hệ thống, loại câu hỏi nào được hỏi, cách thiết kế thay đổi để đáp ứng với thông tin mới.
Một ví dụ tuyệt vời - được Steve Yegge nhắc đến trong một trong những bài đăng trên blog của ông - là yêu cầu người đó đưa ra một mô hình đối tượng cho XML.
Có kiến thức tốt về tất cả các mẫu thiết kế phổ biến nhất có thể chứng minh ứng viên thực sự tìm kiếm giải pháp cho các vấn đề thiết kế của mình.
Có thể thảo luận về chúng và biết khi nào nên áp dụng chúng hay không là một dấu hiệu tốt cho thấy anh ấy hiểu chúng.
Yêu cầu anh ta ví dụ sử dụng trong kinh nghiệm trong quá khứ của anh ta cũng có thể giúp đỡ.
Đừng đưa ra một bài kiểm tra từ vựng. "Xác định tính kế thừa" hoặc "tên 3 tính năng của thiết kế OO" là những câu hỏi sẽ không cho bạn biết bất cứ điều gì về các kỹ năng của cá nhân, chỉ sau khi anh ấy / cô ấy đọc sách giáo khoa trong bao lâu. Tôi đã gặp một số lập trình viên tuyệt vời sử dụng các kỹ năng này mỗi ngày, nhưng sẽ nghẹt thở nếu được yêu cầu đưa ra định nghĩa chính thức.
Nếu có thể, hãy yêu cầu mã mẫu.
Mặt khác, tìm một số mã thủ tục để sử dụng làm ví dụ (hoặc một số mã OO được thiết kế kém), sau đó hỏi họ cách họ sẽ thiết kế lại, khái quát hóa và cải thiện nó. Hãy chắc chắn rằng chương trình có thêm bối cảnh, để thiết kế lại có thể có ý nghĩa.
Cuối cùng, những gì bạn đang thử nghiệm-- thiết kế-- là chủ quan. Do đó, đánh giá của bạn nên được kết thúc mở để cho phép một số giải pháp tốt có thể, và không chỉ là một giải pháp duy nhất. Sau đó, suy nghĩ về những thay đổi có thể đối với các yêu cầu sẽ buộc thay đổi giao diện: Làm thế nào để họ xử lý nó?
Đọc cuốn sách Head First Design Forms. Tất cả các ví dụ trong cuốn sách bắt đầu với một vấn đề hướng đối tượng và hơn là kết thúc trong mẫu Thiết kế. Họ cũng cho biết tại sao các khái niệm của OOP nhất định sẽ đạt được kết quả hạn chế và tại sao một số khái niệm tốt hơn các khái niệm khác.
Mặc dù cuốn sách Mẫu thiết kế, cuốn sách này chứa đầy những vấn đề của OOP :-)
Bắt đầu đơn giản: những gì OOP tất cả về?
Bạn có thể bắt đầu bằng cách hỏi về các tiền đề cơ bản của OOP: trừu tượng hóa, đa hình, kế thừa và đóng gói. Thực phẩm tốt cho suy nghĩ để làm cho họ ấm lên.
Cung cấp cho họ một vấn đề
Tiếp theo, trình bày chúng với một vấn đề có khả năng liên quan đến các mẫu. Không cần thiết phải đặt tên hoặc sử dụng các mẫu, nhưng cách tiếp cận của họ có thể sẽ mang lại một số nếu họ có kinh nghiệm trong khu vực.
Có lẽ xác thực nhập văn bản động. Bạn muốn có thể xác thực ký tự đầu vào theo ký tự để xem đó có phải là ngày, giờ hoặc ngày và thời gian hợp lệ ở định dạng ISO8601 hay không. Bạn nhận được một bản sao của chuỗi đầu vào mỗi lần nhấn phím và bạn có thể trả về một boolean để cho biết liệu văn bản có còn tốt ở ít nhất một trong các định dạng hay không. Yêu cầu họ nói chuyện và phác thảo một thiết kế bằng các nguyên tắc thiết kế OO.
Khi bạn nói chuyện xong
sau đó bạn sẽ có một ý tưởng khá hay nếu họ hiểu về 3M.
Cung cấp cho họ cùng một vấn đề một lần nữa, nhưng lần này yêu cầu một thiết kế khác
Bây giờ, yêu cầu họ thiết kế lại hệ thống mà không sử dụng mẫu Observer (nếu họ đề cập đến nó) - họ có thể chọn cách tiếp cận Chuỗi trách nhiệm hoặc có lẽ là mẫu Lệnh. Bạn không thực sự quan tâm đến điều đó, bạn biết rằng họ có nắm bắt hợp lý các nguyên tắc liên quan.
Ngay cả khi họ không đi theo cách tiếp cận dựa trên mô hình, chỉ cần lắng nghe cách họ cố gắng giải quyết vấn đề thành chức năng liên quan của nó sẽ mang lại kết quả mà bạn mong muốn.
Tôi có xu hướng chọn một kịch bản trong thế giới thực, một cái gì đó nổi tiếng với bất kỳ ai và yêu cầu họ xác định các thực thể; các diễn viên tham gia; những tương tác nào có giữa chúng; nơi các đặc điểm chung có thể được trừu tượng hóa; những tính chất cần được xem xét.
Có, bạn có thể yêu cầu họ ngồi xuống và vẽ UML, vâng, bạn có thể yêu cầu họ tìm kiếm câu hỏi về một số chi tiết triển khai OOP để xem họ có thể "chạm đất" không.
Nhưng những gì một nhà tuyển dụng thực sự cần trong đội ngũ của họ là một bộ óc hiểu được các khái niệm liên quan và có thể áp dụng chúng cho bất cứ điều gì bật lên. Cụ thể có thể được học một cách nhanh chóng, khi các khái niệm được nhúng.
Làm quen sâu sắc và không có mối liên hệ với trợ giúp về mã: Việc gia đình sử dụng phòng tắm vào buổi sáng; Đang nấu bữa tối; một tuyến xe buýt đi làm; việc lắp ráp một chiếc xe hơi.
Một cái gì đó dường như hoạt động khá tốt, và thực sự chỉ mất vài giây: yêu cầu họ thiết kế một mô hình đối tượng. Nó không quan trọng cho những gì. Nó có thể là hoàn toàn tầm thường. Trong thực tế, nó có lẽ nên tầm thường, để không kéo ra bài kiểm tra không cần thiết.
Nếu điều đầu tiên họ viết là một đối tượng, thì họ đã đi trước 99% so với các đồng nghiệp của họ trong sự hiểu biết về OO. Nếu điều đầu tiên họ viết là một lớp học, vui lòng yêu cầu họ ra ngoài và gửi ứng viên tiếp theo vào, và suy ngẫm về lý do tại sao nó được gọi là OOP chứ không phải COP.