it-swarm-vi.com

"Mẫu mã" của tôi trông như thế nào?

Tôi vừa có một cuộc phỏng vấn qua điện thoại khá tốt (đối với vị trí liên quan đến CakePHP, không phải là điều đặc biệt quan trọng đối với câu hỏi). Người phỏng vấn dường như rất ấn tượng với lý lịch và tính cách của tôi. Tuy nhiên, cuối cùng, anh ấy đã yêu cầu tôi gửi email cho anh ấy một mẫu mã từ dự án công việc hiện tại của tôi, "để kiểm tra bạn không bí mật là một lập trình viên khủng khiếp, ha ha!"

Tôi cũng không lo lắng rằng mã của tôi không thể tự đứng bằng hai chân, nhưng tôi rất là một lập trình viên trung gian hơn là một chuyên gia . Những cạm bẫy rõ ràng nào tôi nên đảm bảo mẫu mã của mình không rơi vào, trong trường hợp họ loại trừ tôi ngay tại chỗ? Thứ hai, và đây có lẽ là phần khó hơn của câu hỏi để trả lời, những tính năng nào trong một mẫu mã sẽ ấn tượng đến mức chúng sẽ ngay lập tức khiến bạn nghiêng về phía thuận lợi hơn nhiề đối với lập trình viên?

Tất cả các ý tưởng hoặc đề xuất hoan nghênh!

24
thesunneversets

Tôi muốn xem Mã sạch :

Mã sạch : Mã phần mềm được định dạng chính xác và theo cách có tổ chức để một lập trình viên khác có thể dễ dàng đọc hoặc sửa đổi nó.

Điều đó có nghĩa là:

  • Chức năng - Một số bit chức năng đơn giản không tầm thường (một loạt các getters/setters sẽ không hiển thị rằng bạn biết bất cứ điều gì)
  • Kiểu nhất quán, sạch sẽ - Phổ biến hoặc ít nhất là phổ biến kiểu vỏ, thụt lề, khoảng cách và khung
  • Đặt tên tốt - Tên chất lượng - không sử dụng i trừ khi đó là giá trị gia tăng duy nhất. Đừng sử dụng tên biến vô nghĩa.
  • Các thuộc tính khác của Mã sạch - Thực hành tốt về kiểm tra lỗi, điều kiện, vòng lặp, phương thức tiện lợi hoặc phương thức tiện ích và tốt tách -concerns (giữa các phương thức). Và đây là thời điểm tốt để được 100% KHÔ - không lặp lại!

Bạn muốn gửi cho họ một cái gì đó đủ phức tạp để trở thành thú vị nhưng đủ sạch để một nhà phát triển giỏi có thể gần như ngay lập tức hiểu những gì nó đang làm.

Một số ý kiến ​​ở trên có vẻ quan tâm đến việc có thể giả mạo dễ dàng như thế nào. * Nếu bạn muốn bảo vệ chống lại điều này, thì có thể gửi mô tả nhanh về mục đích và lịch sử của mã trong email.


* Ít nhất nếu người phỏng vấn hỏi về các dự án trong quá khứ, thì đã hỏi bạn một mẫu từ dự án này và hỏi bạn cần gì để viết nó hoặc nó phát triển như thế nào, tôi nghĩ quá trình sẽ là bằng chứng khá dối trá. Tôi nghĩ rằng hầu hết các ứng cử viên would nói dối sẽ thể hiện vấn đề trong các lĩnh vực khác, dù sao đi nữa.

17
Nicole

Khi tôi đang tìm việc, tôi đã giải quyết một loạt các câu hỏi của cuộc thi lập trình ACM, bằng nhiều ngôn ngữ khác nhau và sử dụng chúng cho các mẫu mã kể từ đó. Tôi nghĩ rằng họ đã tạo ra các ví dụ mã tốt bởi vì:

  • Họ đã giải quyết những vấn đề thách thức
  • Vấn đề không đòi hỏi một lượng lớn bối cảnh, cộng với việc dễ dàng nhận được các câu hỏi
  • Mã được viết không có bất kỳ rủi ro IP nào liên quan đến nó.
  • Mỗi vấn đề có thể tồn tại một cách hợp lý trong một tệp duy nhất và thường không quá dài, do đó, mọi người nên dễ dàng biên dịch và kiểm tra giải pháp của bạn và có thể sử dụng dữ liệu kiểm tra từ các câu hỏi.
  • Cho thấy bạn có thể chia nhỏ một vấn đề phức tạp thành nhiều phần nhỏ hơn.
  • Nếu bạn được hỏi về bất kỳ khía cạnh nào của giải pháp của bạn hoạt động, nó sẽ cho bạn một cơ hội tuyệt vời để chứng minh bạn biết bạn đang nói về điều gì, đặc biệt là nếu nó nhiều năm tuổi nhưng bạn có thể nhanh chóng giải mã những gì đang diễn ra.

Và sau đó, mã bạn tạo phải rõ ràng, nhất quán, dễ đọc và dễ hiểu.

Và cuối cùng:

  • Thật đáng để giải quyết chúng chỉ để cho vui, và là một thực hành tốt.
9
whatsisname
  • Nó sẽ biên dịch/giải thích lỗi và cảnh báo miễn phí ở mức độ nghiêm ngặt cao nhất.
  • Nó không nên là mã soạn sẵn mà bạn viết mỗi ngày. Làm cho nó độc đáo và thú vị để rõ ràng là bạn đã không sao chép/dán nó.
  • Nó nên có một số quyết định thiết kế thú vị với các bình luận giải thích làm thế nào/tại sao bạn thực hiện chúng.
  • Mục tiêu không quá 2-3 trang được in ra.
  • Nó phải là ngôn ngữ bạn đang áp dụng.
  • Nó không nên làm cho bộ não của tôi bị tổn thương khi tôi đọc nó lần đầu tiên. Có một người bạn xem nó hoặc đăng trên codereview.
6
Karl Bielefeldt

Chà, nếu tôi đang phỏng vấn bạn, tôi muốn xem của bạn mã.

Sạch sẽ là tốt, giải quyết vấn đề là tốt, nhưng mã thật thì tốt hơn. Một lập trình viên giỏi biết khi anh ta/cô ta bị lừa bởi một lập trình viên khác, vì vậy sự tự tin có thể đi xuống.

Đọc mã người khác giống như khiêu vũ quan hệ tình dục: bạn biết khi nào nó là thật, và nếu người kia đang giả vờ, cuối cùng thì một thảm họa sẽ xảy ra. (chỉ nhận ra những người mọt sách thực sự không biết nhảy)

Chỉ cần tin tưởng bản thân và khả năng mã hóa của bạn. Trừ khi bạn thực sự biết người phỏng vấn, bạn không thể lường trước những gì anh ấy mong đợi từ phong cách/kỹ năng mã hóa của bạn.

3
Machado

Ngoài ra, hãy cẩn thận rằng đó KHÔNG phải là mã từ nhà tuyển dụng hiện tại của bạn (Họ sở hữu nó mà bạn không và tôi đảm bảo họ sẽ không thích bạn chia sẻ nó.). Lấy thứ gì đó bạn tự hào và tự mình làm lại để không phải là chủ nhân cụ thể (loại bỏ bất kỳ tham chiếu nào đến bảng cơ sở dữ liệu hoặc tên máy chủ của họ, v.v.). Dù bạn không gửi mã có lỗi hay là một kỹ thuật kém đối với loại mã đó (tôi có thể sẽ từ chối ai đó đã gửi con trỏ khi thao tác dựa trên tập hợp sẽ đơn giản hơn và hoạt động tốt hơn khi xem lại mã SQL. Có những kỹ thuật tương tự cho các ngôn ngữ khác để giải quyết một vấn đề tương đối hiếm gặp có thể được sử dụng cho các vấn đề phổ biến khác nhưng không phải là lựa chọn tốt nhất cho những vấn đề khác. Câu đó có hợp lý không?)

2
HLGEM

Theo ý kiến ​​của một người yêu cầu mẫu mã khi đánh giá ứng viên, có một vài tính năng cấp cao (nội dung của mã) và một vài tính năng cấp thấp (cấu trúc của mã). Các tính năng cấp cao:

  1. Danh tính: Hương vị của mã. Nếu bạn đang tự thanh toán cho mình như một lập trình viên UI/HCI, tôi muốn thấy một cái nhìn/cảm nhận tốt về một cái gì đó trực quan khi tôi chạy nó. Nếu bạn là người xây dựng DB, tôi muốn thấy điều gì đó thú vị với biểu diễn hoặc phân tích dữ liệu. Mẫu phải là thứ bạn đang tự hào of. Nếu bạn không có ít nhất một trong số đó, bạn không có danh tính.
  2. Trưởng thành: Bạn có thay đổi chiến lược cho các vấn đề khác nhau không? Bạn đang giải quyết vấn đề thú vị? Mã hoặc cách tiếp cận sẽ dễ dàng mở rộng cho một vấn đề tương tự? Nói ngược lại, tôi có cảm thấy như mình đang nhìn vào một thành viên của một xã sùng bái hàng hóa không?
  3. Giao tiếp: Mã có dễ dàng giải thích những gì nó đang làm không và tại sao? Điều này không có nghĩa là mã cần phải đơn giản. Trong thực tế, nó là một phần thưởng để làm cho mã phức tạp dễ hiểu.

Các khía cạnh cấp thấp đơn giản hơn:

  1. Phong cách: Mã phải sạch sẽ, nhất quán (tuân theo một số nguyên tắc đã được thiết lập) và được ghi chép đầy đủ.
  2. Đóng gói: Tối thiểu phải có một readme ngắn, một phiên bản có thể chạy được và các bài kiểm tra có thể chạy được. Các readme sẽ cho tôi biết làm thế nào để chạy hai cái sau, cũng như lý do tại sao bạn đang trình diễn mẫu mã cụ thể này.
  3. Ngôn ngữ: Tôi thường nhờ ai đó lấy mẫu bằng ngôn ngữ cho vị trí, cũng như người mà họ cảm thấy mạnh nhất. Đưa ra ý tưởng hay về trần nhà hiện tại của một người.

Đối với một ứng cử viên tốt, tôi hy vọng một mẫu sẽ là: A) Một mẫu nhỏ chống đạn hoặc B) Một phần tốt của một dự án thú vị lớn hơn (ví dụ: một mô-đun từ repo cá nhân Github). Tôi hy vọng chúng là dự án cá nhân hoặc dự án học tập. Nếu họ gửi một từ một dự án phải trả tiền, tôi mong đợi một lưu ý rằng họ đã được cho phép sử dụng nó. Nếu tôi không nhận được ghi chú đó, tôi sẽ cắt họ khỏi các ứng cử viên (ứng cử viên yếu) hoặc hỏi họ về điều đó trong cuộc phỏng vấn (ứng cử viên mạnh). Không có sự cho phép sẽ là một lá cờ đỏ lớn (có thể không thể vượt qua). Đối với một ứng cử viên tiên tiến, tôi mong muốn từ chối lưu ý rằng một số mẫu nguồn tốt nhất của họ không thể được hiển thị vì nó được thực hiện như một phần công việc của họ. Tuy nhiên, sau đó tôi mong đợi một lời chứng thực về lý do tại sao họ tự hào về thiết kế không thể lay chuyển đó và cách họ yêu nó như một đứa trẻ.

Cuối cùng, cũng như nhiều người nói rằng "Ồ, ai đó chỉ có thể lấy một mẫu mã từ internet", lập luận phản đối là hầu hết những người không hiểu mã chất lượng sản xuất tốt cũng không hiểu nó khi họ nhìn thấy nó . Bên cạnh đó, người ta luôn có thể Google một dòng đặc biệt để kiểm tra mã. Ngoài ra, tốt nhất, ăn cắp mã sẽ đưa một ứng viên đến một cuộc phỏng vấn nơi họ lúng túng ("Vậy tại sao bạn lại làm theo cách này ...?").

Như một lưu ý cuối cùng về mã từ việc làm trước: Chỉ cần không. Từ quan điểm nhân sự, yêu cầu mã từ việc làm trước đó là không phù hợp và cờ đỏ về công ty. Cả hai bạn sẽ có trách nhiệm pháp lý (tức là, cả hai bạn có thể bị kiện) và điều đó cho thấy rằng họ không biết họ đang làm gì. Mã được thực hiện cho một chủ nhân trước đó không bao giờ nên được cung cấp trừ khi mã đã có sẵn công khai hoặc bạn có sự cho phép rõ ràng từ chủ lao động đó. Tồi tệ hơn, trong một công ty lớn, ông chủ trực tiếp của bạn có thể không có quyền cho phép bạn, vậy hãy vui vẻ với bộ phận pháp lý trong trường hợp đó? Tôi chắc rằng họ sẽ rất vui mừng khi tiết lộ IP của mình cho một nhân viên xuất cảnh.

0
Namey

Tôi sẽ thứ hai bài đăng từ Renesis về mã sạch, nhưng sẽ thêm vào danh sách cung cấp các bài kiểm tra đơn vị chất lượng và tài liệu tốt cho mã bạn gửi. Một lập trình viên giỏi nên viết bài kiểm tra đơn vị cho mã của họ.

0
Chris Knight