Những kỹ thuật nào bạn sử dụng khi phỏng vấn các nhà phát triển? [đóng cửa]


28

Tôi nhận ra rằng đã có rất nhiều cuộc thảo luận về loại điều này và họ thường xuyên đi sâu vào giáo điều xung quanh việc bạn hỏi loại câu hỏi "100 tên cướp biển logic" hay liệu bạn có khiến họ viết "fizz buzz" không.

Tôi quan tâm đến những kỹ thuật và câu hỏi nào có hiệu quả với bạn khi phỏng vấn các nhà phát triển tiềm năng cho công việc.

Một kỹ thuật cho mỗi câu trả lời để chúng tôi có thể bỏ phiếu cho họ, xin vui lòng.

Câu trả lời:


21

Bên cạnh các câu hỏi kỹ thuật thực sự, và thông thường vào cuối cuộc phỏng vấn, tôi cố gắng nắm bắt mức độ quan tâm của họ trong ngành và đó là văn hóa với các câu hỏi như:

  • Bạn đã thấy bất cứ điều gì gần đây liên quan đến lập trình mà bạn thấy thú vị và muốn giới thiệu cho các lập trình viên khác? Một ngôn ngữ mới, công cụ, nền tảng, kỹ thuật, trang web?

  • Bạn có thể kể tên bất kỳ người nổi tiếng nào trong ngành của chúng tôi có công việc bạn thích hoặc tìm cảm hứng và tại sao không? (nhà phát triển, người sáng lập trang web, tác giả, diễn giả, v.v.)

  • Bạn đang đọc gì bây giờ hoặc cuốn sách liên quan đến phần mềm cuối cùng bạn đọc là gì?

  • Những trang web liên quan đến lập trình nào bạn thường xuyên?

Mặc dù không trả lời được những câu hỏi này (đáng buồn là nó xảy ra rất thường xuyên) không có nghĩa là 'không thuê' đối với tôi, họ nói rất nhiều về cách một người tiếp cận với nghề phát triển phần mềm.


4
Có lẽ tôi đã đi xa để nói rằng đây là điều quan trọng nhất để đánh giá trong bất kỳ cuộc phỏng vấn phần mềm nào. Bạn có thể lập luận rằng viết mã là quan trọng hơn, nhưng những người bao gồm một cái gì đó tương tự gần đây hoặc ở trường đại học có thể đoán được cách của họ thông qua nó, trong khi đó rất khó để giả mạo lợi ích thật, thật.
Mike B

5
Tôi không ngạc nhiên rằng đây là một câu trả lời phổ biến trên trang web này. Đối tượng ở đây là theo định nghĩa một giá trị "văn hóa lập trình viên". (Tôi đồng ý với câu trả lời, nhưng đã gặp một số lập trình viên xuất sắc, người sẽ trượt bài kiểm tra này, đặc biệt là những người trong hơn 40 người)
AShelly

2
@AShelly: Vâng, tôi đồng ý. Đó là lý do tại sao tôi không coi câu hỏi này là cần thiết để từ chối hoặc chấp nhận một lập trình viên. Nó chỉ là một kỹ thuật khác mà bạn có thể sử dụng trong khi phỏng vấn.
Sergio Acosta

16

Làm cho họ viết mã, mã thực.

Người phỏng vấn có thể cho phép bạn chọn ngôn ngữ lập trình mà bạn cảm thấy thoải mái nhất, có thể là C ++, Java, C # hoặc bất cứ điều gì và yêu cầu bạn giải quyết một vấn đề đơn giản, ví dụ như thực hiện một số công việc với một chuỗi hoặc danh sách liên kết đôi hoặc bất cứ điều gì. Nếu bạn gặp khó khăn trong việc sử dụng ngôn ngữ tốt nhất của bạn để giải quyết một vấn đề đơn giản thì có một vấn đề. Vui lòng xem bài đăng trên blog của Steve Yegge và đặc biệt là phần "Chuẩn bị tinh thần".


6
Có, nhưng không quá nhiều.
Damovisa

Viết mã thực sẽ giúp bạn tham gia vào các công ty phần mềm ưu tú (Google, Amazon, Microsoft, ...) và thoải mái chọn phần còn lại.
Grokus

3
Hãy giải thích về câu trả lời của bạn. Bạn có ý nghĩa gì bởi mã "thực"? Mã nào không "thật"?
MAK

+1 @MAK: Đồng ý, mã thực sự là gì? Nếu đó là mã mà bạn dự định sử dụng trong phần mềm sản xuất của mình ...
Steven Evers

1
Tôi sẽ xem xét 'mã thực' giống như yêu cầu người được phỏng vấn viết hàm 'strdup ()'. Nó có công dụng thực sự và phơi bày kinh nghiệm và thái độ của họ đối với những thứ như quản lý bộ nhớ và xử lý lỗi.
JBRWilkinson

11

Có một vài người trong nhóm của bạn phỏng vấn họ một cách độc lập. Chia sẻ suy nghĩ của bạn sau, đừng nói chuyện giữa trước khi phỏng vấn họ. Nói ở giữa sẽ làm thay đổi phán đoán của bạn và bạn sẽ không có những khẳng định độc lập.

Đối với những người kỹ thuật phỏng vấn họ làm cho họ viết mã. Đối với phi kỹ thuật, đừng cố hỏi những điều bạn chưa có kinh nghiệm. Hãy chắc chắn rằng bạn có ít nhất một số người kỹ thuật phỏng vấn mặc dù.

Các cuộc phỏng vấn không nên chỉ được thực hiện bởi các nhà quản lý, nó sẽ cực kỳ quan trọng đối với mọi người lao động mà họ sẽ làm việc trong tương lai.


2
+1 cho "các cuộc phỏng vấn không nên chỉ được thực hiện bởi các nhà quản lý". Nếu người thuê mới không thể cắt mã cũng như các đồng nghiệp của họ, sẽ có tình trạng bất ổn trong nhóm.
JBRWilkinson

7

Tôi muốn có một người được phỏng vấn giải thích các dự án trước đây của họ và những gì họ đã làm. Từ câu trả lời này, tôi có thể có các câu hỏi tiếp theo: tại sao họ làm mọi thứ theo một cách nhất định, họ đã giải quyết một vấn đề cụ thể như thế nào nếu họ đề cập đến vấn đề đó, nhưng quan trọng nhất là mục đích của dự án là gì và vấn đề kinh doanh này đã giải quyết.

Tôi làm điều này để xem liệu họ có thể nói rõ theo cách khiến tôi hiểu họ đang làm gì không, và xem họ có hiểu những gì họ đang làm không.

Thật đáng ngạc nhiên khi câu hỏi cuối cùng về mục đích của dự án và vấn đề kinh doanh đã giải quyết được rất nhiều người gặp phải. Họ không biết TẠI SAO dự án họ đang thực hiện đang được thực hiện. Nếu bạn không biết tại sao dự án của bạn tồn tại ở nơi đầu tiên, điều đó khiến tôi tự hỏi liệu bạn có đang đóng góp giải pháp hay chỉ làm như bạn được nói.

. quan tâm đến :)


6

Yêu cầu họ đưa ra một quyết định kiến ​​trúc quan trọng

Ví dụ. Đây là chương trình x chạy y số lượng nhiệm vụ đồng thời. Mà bạn sẽ chọn, một cấu trúc đa quy trình hoặc luồng.

Lợi ích / bất lợi của cả hai là gì. Chúng hoạt động tốt như thế nào và làm thế nào chúng có thể được sử dụng để tận dụng một nền tảng đa lõi, đa bộ xử lý, sở thích cá nhân của bạn là gì? Những thành kiến ​​cá nhân có thể giúp xác định liệu họ đã từng thực sự phải áp dụng kiến ​​thức và cho họ một điểm nhảy để chia sẻ kinh nghiệm của họ chưa?

Có rất nhiều câu hỏi mà một người phỏng vấn có thể đưa ra như thế này:

  • TCP hay UDP?
  • Ngôn ngữ động hay gõ tĩnh?
  • Ứng dụng nguyên khối hay nhiều ứng dụng nhỏ hơn?
  • Bạn sẽ sử dụng gì cho Giao tiếp liên tiến trình?
  • Thủ tục lưu trữ hoặc ORM?

Hầu hết các chủ đề này là các loại liên quan đến kiến ​​thức sâu sắc về cách thức / lý do tại sao một hệ thống máy tính hoạt động theo cách nó hoạt động. Tất cả đều là những vấn đề / giải pháp cho những vấn đề không có câu trả lời chắc chắn, vì vậy họ cho cảm giác người đó có khả năng thích nghi hoặc vượt qua những thách thức trong tầm tay như thế nào. Không phải là loại khái niệm có thể dễ dàng chọn mà không có kinh nghiệm thực tế.

Lưu ý: Yêu cầu người nộp đơn viết một số mã pesudo là điều bắt buộc nhưng câu trả lời đó đã được thực hiện.


Một lưu ý tôi muốn thêm vào điều này là đảm bảo câu hỏi không dành riêng cho công ty thực hiện phỏng vấn.
JBRWilkinson

1

Chỉ cần cung cấp cho họ một số mã cơ bản để làm trên bảng trắng - ví dụ: thực hiện danh sách được liên kết, sắp xếp hoặc một cái gì đó tương tự.

Bạn có thể đánh giá mức độ thoải mái của chúng với ngôn ngữ của chúng mà không cần sự trợ giúp của trình biên dịch và bạn có thể đánh giá quá trình suy nghĩ của chúng (đặc biệt là nếu chúng chưa bao giờ thực hiện điều đó - hầu hết các lập trình viên "mới" chưa từng làm).


8
Tôi không đồng ý. Danh sách liên kết và sắp xếp là cả hai vấn đề đóng hộp khá nổi tiếng cho một vấn đề phổ biến. Bất cứ ai đã viết đều biết cách họ làm việc nhưng hầu hết mọi người không bận tâm đến việc viết riêng vì hầu hết các ngôn ngữ đều làm tốt công việc này.
Evan Plaice

Tôi đồng ý với Evan. Trong thực tế, thường đủ để nhận thức được hiệu suất của các thuật toán sắp xếp / tìm kiếm khác nhau và các cấu trúc dữ liệu cơ bản. Biết cách thực hiện chúng là gọn gàng, nhưng cuối cùng là vô dụng. Ngoài ra, trong hầu hết các công việc lập trình, điều quan trọng hơn là phải biết cách chọn khung / thư viện phù hợp cho nhiệm vụ hơn là cách triển khai QuickSort trong ba dòng.
Alan Plum

0

Có một cuộc trò chuyện, để cho nó trôi dạt và uốn khúc dọc theo con đường kỹ thuật và chuyên nghiệp và tìm kiếm những bình luận sâu sắc hoặc ngu ngốc trên đường đi. Điều này mang lại cho bạn 3/4 những gì bạn cần từ một cuộc phỏng vấn, đánh giá về: kỹ năng và tính cách con người, trí thông minh chung và đánh giá sơ bộ về kỹ năng kỹ thuật.

Sử dụng "câu hỏi" phỏng vấn của bạn làm người bắt đầu chủ đề và để giữ cho cuộc trò chuyện được chuyển sang các chủ đề kỹ thuật - bạn có thể cần phải đặt lại cuộc hội thoại theo thời gian (chẳng hạn như thực hiện mã hóa) để thăm dò đầy đủ các lĩnh vực quan tâm / quan tâm.

Bí quyết thực sự cho kỹ thuật này là đảm bảo họ thực hiện tất cả các cuộc nói chuyện, nếu không bạn sẽ gặp rủi ro khi đánh giá thuận lợi vì họ khiến bạn cảm thấy thông minh bằng cách lắng nghe / đồng ý với mọi điều bạn nói.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.