Cuộc phỏng vấn kỹ thuật 10 phút [đã đóng]


37

Tôi phải đánh giá nhanh hàng chục sinh viên mới rất nhanh. Tôi có 30 phút gặp gỡ với mỗi người trong số họ (trong hai hoặc ba ngày). Tôi muốn sử dụng hầu hết thời gian để thảo luận về các khía cạnh phi kỹ thuật. Vì vậy, tôi có kế hoạch sử dụng 10 phút cho các câu hỏi kỹ thuật. Những câu hỏi tương tự cho tất cả chúng.

Tất cả họ đều đã được tuyển dụng (họ là sinh viên), điều tôi cần biết là mức trung bình để chuẩn bị đào tạo.

Lý tưởng nhất là khó khăn must be progressiveđể thiết lập một cấp độ cho mỗi. Cấp độ I sẽ trung bình và tôi cũng sẽ làm trung bình cho mỗi câu hỏi.

Nếu bạn chỉ có 10 phút và 10 câu hỏi để hỏi ứng viên, top 10 của bạn sẽ là gì?


6
Thêm bối cảnh trong công việc? Đây có phải là vị trí quản trị hệ thống hoặc vị trí lập trình viên và nếu lập trình cấp thấp hay cấp cao? Bất kỳ ngôn ngữ hoặc công nghệ cụ thể trong cửa hàng của bạn? Tất cả sẽ chỉ ra danh sách các câu hỏi của tôi.
Chris

4
Những loại đào tạo? Lập trình? CNTT nói chung?
Adam Lear

3
Tôi sẽ đảo ngược điều đó và dành 10 phút cho những thứ cá nhân và 20 phút cho những thứ kỹ thuật.
Kyralessa

1
Tôi biết, đó là những gì hầu hết mọi người sẽ làm. Nhưng tôi tin vào những cách tiếp cận khác nhau.

3
10 phút cho ứng cử viên là quá ít
Zzz

Câu trả lời:


55

Ba câu hỏi, giải thích kết thúc câu trả lời của Eric Lippert tại đây :

Câu hỏi 1:

Trên thang điểm từ 1 - 10, bạn đánh giá bản thân ở đâu (đặt tên cho kỹ năng ở đây)? Họ trả lời [n], một số từ 1 đến 10.

Câu hỏi 2:

Bạn có thể học được gì từ một người ở cấp [n + 1]?

Câu 3:

Ai đó ở cấp [n-1] có thể học được gì từ bạn?

Yếu tố quan trọng nhất trong quyết định của bạn là xác định nơi một học sinh (thực tế) đặt mình và ba câu hỏi đó sẽ giúp bạn xác định điều đó một cách nhanh chóng. Nó cũng giúp xác định những người có thể bị tổn hại bởi hiệu ứng Dunning-Kruger (ở hai đầu), nhưng đó là một chủ đề khác.

Nếu bất cứ ai có thể tìm thấy tài liệu tham khảo về phương pháp này trên SO và chỉnh sửa bài đăng này để bao gồm một liên kết, tôi thực sự sẽ đánh giá cao nó.

Dù sao, điều đó sẽ rơi tốt dưới mười phút.


5
Ồ Khá bất thường số liệu. Tôi chưa bao giờ nghĩ về bản thân mình theo cách đó. Cảm ơn!
Andrew Андрей Листочкин

Rõ ràng thí sinh trả lời 10 để tránh câu hỏi thứ hai.
đúng

4
@WTP Mười là một lời nói dối.
Tim Post

1
Điều này là tuyệt vời. Nếu một nhà tuyển dụng hỏi tôi điều này, tôi có thể giải thích nhiều hơn về bản thân mình chỉ trong vài phút so với bình thường tôi có cơ hội trong một cuộc phỏng vấn kéo dài 1 giờ.
sợofawhackplanet

28
  1. Một lớp học là gì?
  2. Phương pháp tĩnh là gì?
  3. Thừa kế là gì?
  4. Đa hình là gì?
  5. Khóa chính là gì?
  6. Khóa ngoại là gì?
  7. Sự khác biệt giữa HTTP GET và HTTP POST là gì?
  8. Dịch vụ web là gì?
  9. Kể tên một số cấu trúc dữ liệu.
  10. Mục đích của một Mapper đối tượng / quan hệ là gì?

Hãy đề nghị thay thế, danh sách này có nhiều chỗ để cải thiện.


1
Các phương thức tĩnh có nhiều ngôn ngữ ngoài C ++, không liên quan ở đây. Tôi thực sự thấy đó là một khái niệm khó cho nhiều sinh viên nắm bắt - và hỏi họ nếu họ nắm bắt nó, hoặc hỏi một định nghĩa, là một cách kém để tìm hiểu xem họ có làm hay không.
Kate Gregory

3
Hãy ghi nhớ câu hỏi chỉ định mười câu hỏi trong mười phút. Nếu đã có mười câu hỏi trong ba mươi phút, tôi sẽ muốn nâng mức độ khó và hỏi những câu hỏi mở có ý nghĩa hơn.
Eric Wilson

3
Tôi thực sự thích câu hỏi 1-8 trong danh sách của bạn, mặc dù tôi có thể thay thế câu hỏi 9 hoặc 10 bằng "Tại sao các giao diện quan trọng" và / hoặc "Tại sao một lớp trừu tượng lại quan trọng?" (theo thứ tự đó)
Nicole

7
Điều gì với tất cả các câu hỏi OO?
Đệ quy

3
Eh, đây là tất cả các câu hỏi tính năng ngôn ngữ. Tôi không quá tin rằng họ quan trọng, chống lại những thứ ràng buộc hơn về lý thuyết.
Andres Jaan Tack

20
  1. Giải thích con trỏ!
  2. Đóng cửa là gì?
  3. Những ngôn ngữ nào bạn sử dụng trong thời gian rảnh rỗi và tại sao?
  4. Nói một chút về giao dịch!
  5. Sự khác biệt giữa phiên dịch viên và JIT là gì?
  6. Giải thích những điều cơ bản của một trình biên dịch.
  7. Điều gì xảy ra ở cấp độ bộ nhớ khi bạn thực hiện đệ quy (và có gì khác khi bạn có TCO)
  8. Các khái niệm quan trọng của lập trình OO (và tại sao chúng quan trọng)?
  9. Những thứ mới bạn đang tìm kiếm ở nhà và tại sao nó thú vị?
  10. Giải thích sự khác biệt giữa một quá trình và một chủ đề.

20
Tôi không nghĩ rằng hầu hết đây là những câu hỏi hay cho những người hoàn toàn mới đối với .net (hoặc lập trình) - và ngay cả khi họ biết câu trả lời là 1 phút cho mỗi câu hỏi ...
FinnNk

9
Tôi đồng ý những câu hỏi này có vẻ giống như những câu hỏi "bạn thật táo bạo" hơn là những câu hỏi "bạn biết / đã học được gì" đối với học sinh.
buồn ngủ

5
Tôi sẽ thất bại nặng nề trong bài kiểm tra này, phần lớn là vì tôi chưa bao giờ học CS hoặc đã sử dụng C. Vì vậy, điều này có thể giúp xác định ai đã chú ý trong lớp và ai là người vui chơi, nhưng tôi không biết liệu nó có hữu ích trong bối cảnh của OP.
Eric Wilson

3
Hầu hết mọi người sẽ nhận được hầu hết những sai lầm.
Đệ quy

4
Câu hỏi hay, nhưng một số không thể được trả lời trong một phút.
zvrba

16

Kinh nghiệm của tôi về sinh viên Tôi bắt đầu khá nhiều từ đầu - Tôi đã tìm thấy những gì mọi người học ở Đại học và những gì hữu ích là hai bộ khá riêng biệt.

Nhưng khi bạn có cơ hội nói chuyện với họ, sẽ thật ngớ ngẩn nếu không lấy nó.

Giả định của tôi là có rất ít điểm chung trong nền tảng của họ nên tôi tránh các câu hỏi cụ thể về ngôn ngữ. Một ngoại lệ tôi đã đưa ra cho điều này là một giả định rằng họ đã làm một cái gì đó trên web nhưng câu hỏi này có thể được đặt ra cho một cái gì đó tương đương nếu họ nhúng các chuyên gia hoặc bất cứ điều gì.

Bạn đã yêu cầu họ tiến bộ mà tôi đã cố gắng thực hiện nhưng nếu giả định của tôi về việc không có điểm chung là đúng thì câu hỏi đúng / sai tương đối khó và rất nhiều năng lực của họ sẽ đến từ câu trả lời của họ tốt hơn như thế nào câu hỏi là

Dù sao...

1) Những ngôn ngữ và công nghệ bạn đã tiếp xúc với? Có bao nhiêu trong số này (và những cái nào) bạn đã dành hơn 50 giờ để lập trình thực sự (không bao gồm các bài giảng, thời gian trong phòng thí nghiệm, v.v. nhưng bao gồm các dự án và bài tập mà bạn đã viết mã độc tấu).

2) Mô tả chương trình phức tạp nhất bạn từng viết. Điều gì làm cho nó phức tạp?

3) Bạn đã được dạy gì ở trường đại học (liên quan đến lập trình) mà bạn thực sự không nghĩ rằng mình hiểu đúng? Nếu bạn nghĩ rằng bạn đã hiểu tất cả mọi thứ (kiểm tra điểm của họ tại thời điểm này) thì hãy nói về một ứng dụng hoặc một yếu tố của ứng dụng mà bạn đã thấy rằng bạn sẽ không biết cách viết mã và cách bạn có thể bắt đầu nghĩ về nó.

4) Các nguyên lý cơ bản của lập trình hướng đối tượng là gì?

5) Hãy cho tôi biết càng nhiều về cơ sở dữ liệu quan hệ càng tốt trong 1 phút

6) Đối với một ứng dụng web mô tả một phương pháp để duy trì thông tin về người dùng giữa các trang. Những lợi thế và bất lợi tồn tại cho cơ chế bạn đã mô tả.

7) Chọn một phần chức năng thường được sử dụng trong điện toán và giải thích rất ngắn gọn về cách thức hoạt động của nó ở cấp độ lập trình (ví dụ: mã hóa, nén). Cũng giải thích cách bạn phải sử dụng chức năng đó mà bạn triển khai nó (ở đây tôi đang tìm kiếm một thực tế rằng mặc dù bạn có thể biết cách thức hoạt động của một cái gì đó, nhưng có lẽ tốt hơn là lấy một thư viện cho nó).

EDIT: Tái cấu trúc và thêm một vài câu hỏi thêm để làm cho nó tiến bộ hơn như yêu cầu ban đầu.


6
Tôi thích danh sách này, tôi sẽ thêm một câu hỏi khác: Bạn được dạy gì ở trường đại học mà bạn không thể thấy bất kỳ thế giới thực tế nào sử dụng để làm gì? Điều đó có thể đưa ra một số dấu hiệu hữu ích về cách họ nghĩ.
glenatron

2
Nếu chúng không tốt thì 10 phút sẽ hết sau câu hỏi 2 :-)
Sean Patrick Floyd

Khi bạn hỏi về "nguyên lý" của OOP, bạn có ý đề nghị rằng OOP là một tôn giáo không?
compman

@compman - Rõ ràng là không. nguyên lý có thể áp dụng cho một tôn giáo nhưng không độc quyền với bối cảnh đó và cũng có thể áp dụng cho bất kỳ tổ chức, phong trào hoặc nghề nghiệp nào.
Jon Hopkins

8

Nếu đây là những sinh viên và bạn đang mong muốn có thể đánh giá được họ đang học ở đâu thì thực sự không nên có bất kỳ câu hỏi mẹo hay câu hỏi nào khiến họ phải suy nghĩ nhiều. Lời khuyên của tôi là chỉ tập trung vào những điều cơ bản - không có nhiều điểm trong việc yêu cầu họ giải thích cách phản xạ hoạt động nếu họ vẫn không hoàn toàn theo kịp tốc độ trên các vật thể và sự kế thừa.

Dưới đây là một số câu hỏi mẫu có thể được sử dụng và bạn có thể bắt đầu với thứ gì đó từ danh mục kiến ​​thức cốt lõi và sau đó di chuyển xung quanh dựa trên cách họ trả lời các câu hỏi, giống như cách kiểm tra thích ứng hoạt động.

Nguyên tắc cơ bản

  1. Một số lệnh điều khiển luồng chương trình cơ bản là gì?
  2. Một số hoạt động logic cơ bản là gì?
  3. Sự khác biệt giữa vòng lặp while và for là gì?

Cốt lõi

  1. Giải thích ngắn gọn về lập trình hướng đối tượng.
  2. Giải thích ngắn gọn về khái niệm thừa kế.
  3. Giải thích ngắn gọn về cách thức hoạt động của cơ sở dữ liệu.
  4. Là gì enumtừ khóa được sử dụng để và khi bạn sẽ sử dụng nó?

Nâng cao

  1. Bạn có thể cho tôi biết gì về mẫu C # generic hoặc mẫu C ++?
  2. Bạn có thể cho tôi biết gì về quá tải nhà điều hành?
  3. Sự khác biệt giữa một lớp và một cấu trúc là gì?
  4. Bạn có thể cho tôi biết gì về sự phản chiếu trong .NET?

6

Không có câu trả lời cho nhận xét của tôi ở trên, đây là những điều mà tôi thường nói nhưng tôi không chắc mình sẽ xem xét những kỹ thuật này.

  • Bạn đã sử dụng loại kiểm soát phiên bản nào?
  • Bạn có quen thuộc với các phương pháp phát triển phần mềm như nhanh nhẹn, thác nước, tdd không?
  • Mục đích của tài liệu trong phần mềm là gì?
  • Sự khác biệt giữa các ngôn ngữ gõ tĩnh và động?

5
"Tại sao phong cách mã hóa spaghetti hữu ích?" - người cuối cùng
mlvljr

Haha đây là để thử và lừa họ?
billy.bob

@ m.edmondson Bây giờ xin vui lòng cho một ví dụ về trường hợp khi không thể phá vỡ sự trừu tượng;)
mlvljr

Hmm, tôi không tin có bất kỳ trường hợp nào không thể tránh khỏi ;-)
billy.bob

4

Tôi nhận ra rằng bạn đang cố gắng xây dựng chương trình đào tạo dựa trên những gì họ không biết và bạn dự định sẽ có một số "nhóm" đào tạo cho các nhóm sinh viên khác nhau. Vì bạn chỉ có mười phút được phân bổ, tại sao không lập danh sách những điều bạn đang nghĩ đến trong khóa đào tạo và hỏi những câu hỏi cụ thể đó. Vì vậy, bạn có kế hoạch để dạy họ C #. Hỏi xem họ có biết rõ không. Hỏi xem họ đã sử dụng bất kỳ tính năng nào gần đây chưa (LINQ, loại không thể, tổng quát, ...). Nếu có nội dung cơ sở dữ liệu trong đào tạo của bạn, hãy hỏi một số câu hỏi về điều đó. Cuối cùng, bạn có thể thấy rằng một trong những chủ đề bạn đã lên kế hoạch là không cần thiết, bởi vì tất cả họ đều biết nó, và một số chủ đề khác là cần thiết cho mọi người, v.v. Điều đó thực tế hơn là cố gắng đưa ra những câu hỏi không liên quan đến những gì bạn '


+1 - Đây là những gì tôi muốn nói. Chỉ cần hỏi họ những gì họ cần được đưa vào một khóa đào tạo dành cho họ.
mouviciel

4

Hỏi họ câu hỏi FizzBuzz

Họ có biết cách mã hóa nó không? Họ đã sử dụng ngôn ngữ nào? Tại sao họ viết mã theo cách họ đã làm? Họ đã sử dụng đệ quy? Vòng lặp? Phương pháp / Chức năng khác? Con trỏ?

Bạn cũng có thể sử dụng câu hỏi làm cơ sở cho các câu hỏi khác (ví dụ: Tại sao bạn không / không sử dụng Recursion? Bạn sẽ viết câu hỏi này bằng cách sử dụng con trỏ như thế nào?)

Nó không bao gồm tất cả mọi thứ, nhưng nó có thể cho bạn ý tưởng về các kỹ năng mã hóa của họ


1
Ồ vâng, tôi đã hứa với ai đó trong cộng đồng rằng tôi sẽ hỏi câu hỏi đó. Sẽ là câu hỏi cuối cùng và tôi sẽ chia sẻ kết quả với mọi người.

1
@Pierre 303: Tôi từng yêu cầu mọi người viết một hàm có thể xác nhận mã bưu chính. Tôi đảm bảo với bạn rằng nó cũng khai sáng như FizzBuzz.
Scott Whitlock

1
Bạn cho tôi cơ hội để đưa ra một số kết quả tôi nhận được từ việc hỏi câu hỏi đó. Trên 6 hoặc 7 cuộc phỏng vấn, không ai có thể trả lời nó. Hầu hết trong số họ là sinh viên mới, nhưng một người có 8 năm kinh nghiệm! Vì vậy, tôi có một chút bối rối ...

4

Mười câu hỏi:

  1. Hiển thị một vòng lặp for tính tổng các giá trị của một mảng. Hỏi sau đó những gì các mã làm. [Họ có thể đọc một vòng lặp cơ bản không?]

  2. Yêu cầu họ viết một vòng lặp for in ra các số từ 1 đến 10, cách nhau bằng dấu phẩy. [Ngoài "họ có thể làm điều này?" bạn có thể đánh giá mức độ lặp đi lặp lại của mã của họ.]

  3. Hiển thị một đoạn mã với hai tham chiếu ab, trỏ đến hai đối tượng khác nhau với trường số nguyên xđược đặt thành, nói 75. Sau đó gán lại : a = b;, b.z = 9;và sau đó yêu cầu giá trị của a.z. [Họ có hiểu tài liệu tham khảo không?]

  4. Hiển thị hai vòng lặp lồng nhau (sử dụng chỉ mục ij), tích lũy các giá trị từ một số biểu thức. Trong vòng lặp trong cùng, có hai tính toán: double x = Math.pow(2.0, i)double y = x * j. Yêu cầu họ làm cho mã hiệu quả hơn. [Họ có biết về sự phụ thuộc vòng lặp đơn giản không?]

  5. Hỏi họ có gì sai trong mẫu mã A. (Xem bên dưới.) [Họ có thể suy nghĩ logic không?]

  6. Hỏi họ những gì sai trong mẫu mã B. (Xem bên dưới.) [Cũng về tư duy logic.]

  7. Yêu cầu họ đảo ngược tình trạng này: (s != null && s.Length != 0)không sử dụng !. [Họ có biết Luật DeMorgan không?]

  8. Hiển thị một đoạn mã tương tự như các quảng cáo Lint cũ trên các tạp chí: Yêu cầu họ tìm lỗi. Ví dụ, quá tải equalsthay vì ghi đè nó. [Họ có phải là luật sư ngôn ngữ tốt? Những loại câu hỏi này chủ yếu là kiểm tra kinh nghiệm: bạn đã từng thấy câu hỏi này chưa?]

  9. Họ có thể mô tả làm thế nào để thực hiện tìm kiếm nhị phân thông qua một mảng được sắp xếp?

  10. Họ có thể mô tả làm thế nào một phương pháp sắp xếp có thể được thực hiện?

Những điều này có vẻ "quá ngắn", nhưng tôi tin rằng để đánh giá sinh viên bạn có thể thấy mười phút là khá chặt chẽ. Bạn thực sự muốn thấy họ làm một số mã hóa. (Có vẻ như bạn sẽ làm FizzBuzz, dựa trên một nhận xét.)

Nếu bạn có thể giả sử một học sinh mạnh hơn, thì bạn cũng sẽ muốn hỏi một số tác phẩm kinh điển, chẳng hạn như đệ quy, đảo ngược danh sách được liên kết và có thể là một thẻ hoang dã nâng cao như giải thích danh sách XOR hoặc trực giác mà họ có thể có tại sao việc sắp xếp một tập hợp các số làm cho nó dễ nén hơn chưa được sắp xếp.

Mã mẫu A:

if (m != null)
    a = m;
else
    a = null;

Mã mẫu B:

if (x != 0 || x != 1) {
    ...
}

3

Chắc chắn bạn đang đi về điều này sai cách. Xác định các nhóm mà bạn muốn đặt từng sinh viên vào

ví dụ

No previous programming experience
Familiar with procedural constructs like variables, loops, branching
familiar with basic object orientated constructs like classes, interfaces, events, inheritance
familiar with using Generics/Templates
familiar with creating Generics/Templates

vân vân Khi bạn đã xác định các nhóm phù hợp sẽ phụ thuộc vào tài liệu khóa học, việc tìm ra những câu hỏi để hỏi sẽ là tầm thường.


3

Các sinh viên đã được tuyển dụng và bạn muốn thiết lập một chương trình đào tạo, vì vậy một phần của thỏa thuận là tìm hiểu xem họ có thể học nhanh như thế nào (và / hoặc những gì họ biết: ai quan tâm cái nào?). Tại sao không chọn một số câu hỏi dễ, trung bình và khó và đưa chúng cho họ trước. Tại sao phục kích họ bằng những câu hỏi mà họ có thể không biết, nếu họ có thể dễ dàng học được (bởi một số)?

Bạn sẽ thấy, trái với những gì hầu hết mọi người tưởng tượng, rằng nhiều sinh viên sẽ không làm tốt lắm ngay cả với những câu hỏi trong tay. Bằng cách này, bạn sẽ tìm hiểu về học sinh, kiến ​​thức và khả năng học hỏi.


2

Tạo 5 cấu trúc sơ đồ đơn giản và một danh sách các câu trả lời riêng biệt. Yêu cầu họ ghép hình ảnh với cụm từ.

Vẽ như sau:

  1. Nếu xây dựng
  2. Nếu khác xây dựng
  3. Làm vòng lặp trong khi
  4. Làm cho đến khi vòng lặp
  5. Báo cáo tình huống

Yêu cầu họ giải thích sự khác biệt giữa 1 và 2.
Yêu cầu họ giải thích sự khác biệt giữa 3 và 4.
Yêu cầu họ cho một ví dụ về thời điểm Xây dựng Tuyên bố trường hợp sẽ được áp dụng.


1

Tôi không chắc chắn rằng có thể làm điều này trong 10 câu hỏi trong 10 phút. Có thể cho họ 5 phút để cho bạn biết những gì họ biết về .net. Sau đó, có một danh sách được chuẩn bị có thể là 20 chủ đề và chọn 2 hoặc 3 từ những điều họ đã đề cập và 2 hoặc 3 từ những điều họ chưa có.

Ví dụ: bạn có thể bắt đầu:

Nói ngắn gọn cho tôi (bạn có 5 phút) về cách bạn sẽ tạo một dự án C # đơn giản trong Visual Studio từ việc tạo nó để chạy nó.

Sau tất cả:

OK, cho tôi biết thêm một chút về những điều sau đây. Sẽ nhanh chóng, 1 phút cho mỗi câu trả lời, vì vậy đừng cố gắng quá chi tiết Tôi chỉ muốn cảm nhận về những gì bạn quen thuộc.

Sau đó hỏi 5 câu hỏi như vậy từ tài liệu sau:

  • Giải thích một lớp học là gì.
  • Sự khác biệt giữa một lớp trừu tượng và một giao diện là gì?
  • Giải thích ngắn gọn về cách thức hoạt động của bộ sưu tập rác trong .Net

    ....

  • Làm thế nào để bạn gỡ lỗi một cái gì đó nếu bạn có một vấn đề?

  • Yadda-yadda - Tôi chắc chắn bạn sẽ có thể chọn một danh sách dài để chọn từ các câu trả lời khác

1

Tôi tin vào "tự đánh giá"! Nếu bạn giải thích cho người đó tình huống chính xác anh ta sẽ tự tìm thấy, ví dụ: "bạn sẽ phải mã SQL ... với cơ sở dữ liệu gồm hơn 100 bảng và bản ghi 500K +, phải chạy trong 4 giây ...". Và nếu bạn hỏi anh ta: "Bạn có nghĩ rằng bạn có thể làm được không?" - bạn sẽ nhận được một câu trả lời đúng.

Tôi sẽ dành 5 câu hỏi về sự mong đợi của các sinh viên và 5 kỹ thuật nữa:

  1. Bạn mong đợi gì từ khóa đào tạo này?
  2. Cấp độ của bạn là gì (đây phải là tên miền cụ thể)?
  3. Bạn muốn thấy / học gì trong khóa đào tạo này (chỉ ra 3 điểm quan trọng nhất)?
  4. Nếu chúng tôi tập thể dục, bạn sẽ thấy gì hữu ích hơn cho bạn? (hội thảo, trắc nghiệm)?
  5. Bạn mong đợi gì từ giáo viên?

Hơn bạn có thể đi với một số câu hỏi kỹ thuật như (điều này nên theo chủ đề). ví dụ cho OOP:

  1. Đóng gói là gì?
  2. Giao diện là gì?
  3. Đa hình?
  4. Gõ phụ?
  5. Liên kết động?

1

Tôi đang tìm cách giải quyết vấn đề, thói quen học tập mạnh mẽ, phát triển chuyên môn và kiến ​​thức rộng về các phương pháp tiếp cận.

  1. Tôi có thể xem danh mục đầu tư của bạn?
  2. 3 cuốn sách kỹ thuật cuối cùng bạn đã đọc là gì? Tại sao?
  3. Văn bản lập trình nào đã thay đổi cách bạn nghĩ nhiều nhất? Tại sao?
  4. Làm thế nào bạn sẽ xác định một chickennhư là một đối tượng? Làm thế nào nó liên quan đến khác birds? Làm thế nào về mammalsanimals?
  5. Bạn có thể giải thích bất kỳ một trong số (REST, Đa hình, đại số quan hệ, thiết kế trình phân tích cú pháp, MVC) theo thuật ngữ của giáo dân không?
  6. Phần mềm thú vị nhất (hoặc tốt nhất) mà bạn tự xây dựng là gì?
  7. Bạn có thể mô tả các ngôn ngữ bạn thành thạo từ yêu thích đến ít yêu thích nhất? Điều gì làm bạn thất vọng về ngôn ngữ yêu thích nhất của bạn?

Tôi hy vọng các nhà phát triển sẽ:

  • Hãy tháo vát và nhanh chóng
  • Nắm bắt các khái niệm cơ bản đúng cách
  • Tìm hiểu các khái niệm nâng cao
  • Theo dõi thành công và thất bại (học hỏi từ nó)
  • Học hỏi không ngừng, chu đáo
  • Truyền đạt các vấn đề phức tạp
  • Thể hiện sự cân bằng và logic khi thảo luận về các vấn đề giáo điều thường gặp

1
Tôi hiếm khi đọc sách lập trình cover-to-cover. Họ làm tài liệu tham khảo và làm rõ tốt hơn.
Andres Jaan Tack

Bạn nói đúng: có một số văn bản bạn không thể đọc bìa để che (tài liệu tham khảo), nhưng có một số lượng đáng kinh ngạc sẽ thay đổi cách bạn nghĩ. Ví dụ: Giải thích trực quan của Tufte, hoặc Nghịch lý của sự lựa chọn, hoặc Ngôn ngữ lập trình thực dụng (hoặc bất cứ điều gì của Hofstadter).
Bruce Alderson

"Có một số lượng đáng kinh ngạc sẽ thay đổi cách bạn nghĩ" không bị giới hạn trong sách kỹ thuật / lập trình. Ngoài ra, tôi không có danh mục đầu tư, tất cả các công việc của tôi đều là hệ thống an toàn, tôi sẽ bị lừa.
NimChimpsky

Đóng góp một số thời gian cho một dự án mở hoặc phi lợi nhuận. Điều quan trọng là phải xem công việc thực sự trước khi thuê ai đó (cuối cùng bạn sẽ hiển thị công việc thực sự của mình). Một danh mục đầu tư cũng quan trọng như một CV được chăm sóc tốt.
Bruce Alderson

1

Phân loại của Bloom rất hữu ích ở đây. Bạn muốn đạt được nhiều cấp độ kiến ​​thức khác nhau, từ ghi nhớ vẹt đến phân tích. Điều này cung cấp cho bạn một cơ hội để tìm hiểu mức độ kỹ năng của họ nằm ở đâu. Vì OP đang tìm kiếm câu hỏi để hỏi sinh viên, nên danh sách dưới đây không cho rằng có nhiều kiến ​​thức hơn sinh viên năm thứ 3 hoặc thứ 4 (tôi hy vọng) sẽ sở hữu.

Khái niệm

  1. Một ngăn xếp ngăn xếp là gì?
  2. Sự khác biệt giữa một đối tượng và một lớp là gì?
  3. Sự khác biệt giữa hàm và phương thức là gì?
  4. Xác định một số điểm mạnh và điểm yếu của Quicksort và Sắp xếp chèn.
  5. Mô tả cách một chương trình bạn đã viết sẽ hiển thị tất cả các giá trị được lưu trữ trong cây nhị phân.

Thực hành

  1. Bạn đã sử dụng một hệ thống kiểm soát phiên bản? Những cách nào cho phép các thành viên trong nhóm cộng tác hiệu quả hơn?
  2. Trình biên dịch của bạn nói "biểu tượng không xác định." Điều đó nghĩa là gì?
  3. "Vi phạm phân khúc" là gì?
  4. Đặt tên cho một số cấu trúc dữ liệu được cung cấp bởi cú pháp (chèn ngôn ngữ ở đây) hoặc thư viện chuẩn.
  5. Làm thế nào bạn sẽ tìm và hiển thị tất cả các địa chỉ email trong 10.000 tệp?

1

Vì họ đã được tuyển dụng, để đánh giá nhanh tôi nghĩ người ta nên (cùng với câu hỏi lập trình), người ta nên hỏi họ về

  1. Cấu hình hệ thống bạn đã làm việc là gì (cấu hình phần cứng PC).
  2. Bạn đã thử kiểm tra mã của bạn (dự án nếu làm việc trong thời gian học đại học) trên các hệ điều hành khác nhau.
  3. Bạn có thích mã hóa trong windows hoặc Linux không (nếu chúng đã hoạt động trên các hệ điều hành khác sau đó là windows)
  4. mã hóa nhanh hơn / chậm hơn / tốt hơn phụ thuộc vào hệ thống? (hệ thống cao hơn = cảm thấy yếu tố tốt để mã hóa khi các hệ thống chậm mất khả năng biên dịch và tất cả)
  5. Ngoài ra, nếu hỏi họ có biết ít nhất là định dạng ổ đĩa hoặc cài đặt HĐH trong trường hợp nó bị sập / không thể khởi động được nhờ vào anh chàng IT để được giúp đỡ (điều này là để biết liệu họ có thể xử lý một số tình huống HĐH đúng cách không)

Những câu hỏi này chỉ để tìm hiểu nhận thức của họ về hệ thống họ sử dụng trong khi lập trình,


0

Bắt đầu từ các cấp thấp nhất của ngăn xếp phần mềm trở lên.

  1. BIOS là gì?
  2. Vai trò của hệ điều hành là gì?
  3. Đa tác vụ là gì? Liên kết động là gì?
  4. Mô tả cách mã nguồn được chuyển đổi thành chương trình làm việc cho ngôn ngữ lựa chọn của sinh viên (ví dụ câu trả lời cho C: tiền xử lý -> trình biên dịch -> một loạt các tệp đối tượng -> trình liên kết -> thực thi)
  5. Bộ nhớ cache là gì? Ước tính thời gian truy cập tương đối vào bộ đệm L1, bộ đệm L2, RAM, đĩa quay (tức là không phải SSD).
  6. Liệt kê các cấu trúc dữ liệu mà bạn có thể thực hiện mà không cần tra cứu chi tiết trong tài liệu.
  7. Chương trình phức tạp nhất bạn đã viết là gì? Điều gì làm cho nó phức tạp?
  8. Giải thích đệ quy trên một ví dụ về sự lựa chọn của riêng mình.
  9. Tại sao các chương trình sụp đổ?
  10. Giải thích phần quan trọng là gì và đưa ra một ví dụ về nơi nó sẽ được sử dụng.

4
Hầu hết những câu hỏi này dường như đến từ một cuốn sách về hệ điều hành và thực sự không liên quan gì đến lập trình. Thành thật mà nói, bạn không cần phải biết bất kỳ điều này cho các công việc lập trình MOST nếu có.
Bryan Harrington

1
Hơi phóng đại một chút, nhưng: Nếu bạn không biết vai trò của HĐH là gì, việc nói về quyền bảo mật và quyền truy cập là vô nghĩa, ở cấp độ hệ điều hành hoặc cơ sở dữ liệu. Nếu bạn không biết về quy trình biên dịch, bạn không thể gỡ lỗi quy trình xây dựng của mình từ A đến Z. Nếu bạn không biết về độ trễ của bộ đệm, bạn sẽ kết thúc bằng mã đẩy mọi thứ trong DBMS trong đó phẳng tập tin sẽ có hiệu lực. Nếu bạn không biết về mutexes, bạn sẽ không biết về lập trình song song. Phần còn lại nên có liên kết rõ ràng để lập trình.
zvrba

1
(Và nếu bạn không biết BIOS là gì, có lẽ bạn hầu như không biết gì về lập trình phần cứng PC.)
zvrba

4
Bắt đầu với một sự hiểu biết cơ bản về điện. Cào đó: bắt đầu với vật lý nguyên tử. THEN làm việc theo cách của bạn lên BIOS.
Dan Rosenstark

Mặc dù đây là những câu hỏi rất quan trọng và cơ bản, và mọi lập trình viên nên biết câu trả lời, tôi cảm thấy rằng nửa đầu của danh sách sẽ lãng phí thời gian của bạn, vì đó là điều mà các kỹ thuật viên PC cũng cần biết. Họ sẽ không cung cấp cho bạn ý tưởng hay về việc người bạn tuyển dụng có biết gì về lập trình hay không .
Ken Bloom

0
  1. Là một chuỗi có thể thay đổi hoặc bất biến?
  2. Sự khác biệt giữa một lớp và một lớp tĩnh là gì?
  3. Một con trỏ là gì?
  4. Mô tả độ phức tạp.
  5. Sự khác biệt giữa Mảng và Danh sách liên kết là gì.
  6. Sự khác biệt giữa Sắp xếp hợp nhất và Sắp xếp nhanh là gì?
  7. Đưa ra một bảng tính với các cột Tên, Địa chỉ, Mã Zip và Số điện thoại mô tả cách bạn sẽ chuyển đổi bảng tính sang cơ sở dữ liệu được chuẩn hóa.
  8. Mô tả sự khác biệt giữa các phương pháp không đồng bộ và đồng bộ và các cách chúng cần được xử lý.
  9. Làm thế nào bạn có thể chuyển thông tin từ ứng dụng phía máy chủ sang ứng dụng web?
  10. Ngôn ngữ ưa thích của bạn là gì? Một số lý do bạn sẽ sử dụng ngôn ngữ đó trên X là gì? (ví dụ: tại sao bạn muốn sử dụng Java trên C # và một số khác biệt cơ bản là gì?)
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.