Câu hỏi mỗi nhà phát triển .NET tốt sẽ có thể trả lời? [đóng cửa]


246

Công ty của tôi sắp thuê các nhà phát triển .NET . Chúng tôi làm việc trên nhiều nền tảng .NET: ASP.NET, Compact Framework, Windowsforms, Web Services. Tôi muốn biên soạn một danh sách / danh mục các câu hỏi hay, một loại tiêu chuẩn tối thiểu để xem các ứng viên có kinh nghiệm hay không. Vì vậy, câu hỏi của tôi là:

Những câu hỏi nào bạn nghĩ rằng một lập trình viên .NET tốt có thể trả lời ?

Tôi cũng sẽ xem nó như một danh sách kiểm tra cho chính mình, để xem sự thiếu hụt của chính tôi ở đâu (có rất nhiều ...) .

văn bản thay thế

* CẬP NHẬT: Chúng tôi muốn làm rõ rằng chúng tôi không chỉ kiểm tra kiến ​​thức .NET và khả năng giải quyết vấn đề và kỹ năng lập trình chung thậm chí còn quan trọng hơn đối với chúng tôi.

Câu trả lời:


171

Các câu hỏi cơ bản bao gồm:

Tôi nghĩ việc này thường giúp yêu cầu ứng viên của bạn hoàn thành một bài tập mã hóa đơn giản như:

  • Viết lớp danh sách liên kết của riêng bạn mà không sử dụng các lớp tích hợp.
  • Viết lớp hashtable của riêng bạn mà không cần sử dụng các lớp dựng sẵn.
  • Viết một lớp đại diện cho cây nhị phân. Viết một phương thức đi qua tất cả các nút của cây.
  • Viết phương thức để thực hiện tìm kiếm nhị phân trên một mảng mà không sử dụng các phương thức dựng sẵn.
  • Vẽ một lược đồ cơ sở dữ liệu cho một blog. Mỗi người dùng chỉ có một blog, mỗi blog có nhiều danh mục, mỗi danh mục có nhiều bài đăng và mỗi bài đăng có thể thuộc về nhiều hơn một danh mục. Yêu cầu ứng viên của bạn viết các truy vấn để lấy thông tin cụ thể ra.

Tiếp theo, tìm kiếm bí quyết kỹ thuật cụ thể:

  • (Trình xử lý sự kiện) Tạo một lớp với trình xử lý sự kiện tùy chỉnh, tạo một lớp khác nối vào trình xử lý sự kiện tùy chỉnh.
  • (XML) Tải một tài liệu XML và chọn tất cả các nút có thuộc tính x, y và z.
  • (Lập trình hàm) Tạo một hàm chấp nhận hàm khác làm tham số. Hàm Map hoặc Fold hoạt động thực sự tốt cho việc này.
  • (Reflection) Viết hàm xác định xem một lớp có thuộc tính cụ thể không.
  • (Regex) Viết biểu thức chính quy sẽ loại bỏ tất cả các thẻ khỏi một khối HTML.

Không có câu hỏi nào trong số này là những câu hỏi đặc biệt khó để một lập trình viên C # thành thạo trả lời, và chúng sẽ cho bạn ý tưởng tốt về những điểm mạnh đặc biệt của ứng viên của bạn. Bạn cũng có thể muốn làm việc trong một vài câu hỏi / mẫu mã sử dụng các mẫu thiết kế cụ thể.

[Chỉnh sửa để làm rõ] :

Có vẻ như nhiều người không hiểu tại sao tôi lại hỏi những loại câu hỏi này. Hãy để tôi chạm vào một vài bình luận của mọi người (thay vào đó tôi không trích dẫn trực tiếp, nhưng thay vào đó là diễn giải):


Q: Lần cuối cùng có ai sử dụng chất bay hơi hoặc tài liệu tham khảo yếu?

Trả lời: Khi tôi phỏng vấn kỹ thuật, tôi sẽ xem liệu một người có hiểu các tính năng cấp cao cấp thấp của .NET hay không. Volatiles và tham chiếu yếu là hai tính năng cấp thấp do .NET cung cấp - ngay cả khi các tính năng này không được sử dụng thường xuyên trong thực tế, câu trả lời cho những câu hỏi này cực kỳ tiết lộ:

  • Một sự hiểu biết tốt về các chất bay hơi chứng tỏ rằng một người hiểu cách tối ưu hóa trình biên dịch thay đổi tính chính xác của mã, cách các luồng giữ các bản sao trạng thái chia sẻ cục bộ có thể không đồng bộ tại bất kỳ thời điểm nào và nhận biết tối thiểu một số sự phức tạp của mã đa luồng .

  • Một sự hiểu biết tốt về các tài liệu tham khảo yếu chứng tỏ rằng một người biết về các chi tiết thân mật của người thu gom rác và cách nó quyết định khi nào giải phóng bộ nhớ. Chắc chắn, bạn có thể hỏi các ứng viên "làm thế nào một công cụ thu gom rác hoạt động", nhưng hỏi về các tài liệu tham khảo yếu sẽ nhận được câu trả lời tốt hơn, chu đáo hơn.

.NET là một ngôn ngữ khá trừu tượng, nhưng các nhà phát triển ngôi sao hầu như luôn có hiểu biết sâu sắc về CLR và các chi tiết cấp thấp về thời gian chạy của .NET.


Q: Tại sao bất cứ ai cũng cần phải thực hiện danh sách hashtable hoặc liên kết của riêng họ?

Trả lời: Tôi không ngụ ý rằng lớp Từ điển kém hơn hoặc mọi người nên tự tạo ra hashtable của mình. Đây là một câu hỏi cơ bản để kiểm tra xem một người có hiểu biết tối thiểu về cơ sở dữ liệu hay không . Đó là những gì những câu hỏi kiểm tra cho: sự hiểu biết tối thiểu trần.

Bạn tìm hiểu về các hashtables và danh sách được liên kết này vào ngày đầu tiên của Cấu trúc dữ liệu 101. Nếu ai đó không thể viết một hashtable hoặc danh sách được liên kết từ đầu, thì họ có một khoảng cách lớn về kiến ​​thức kỹ thuật.


Q: Tại sao những câu hỏi này rất định hướng?

Trả lời: Bởi vì tiêu đề của chủ đề này là "câu hỏi mà mọi nhà phát triển .NET giỏi nên biết". Mỗi nhà phát triển .NET bắt đầu sự nghiệp bằng cách viết các ứng dụng thô sơ và 90% tất cả những người phát triển ứng dụng kiếm sống đều quan tâm đến các ứng dụng kinh doanh trực tuyến.

Tôi nghĩ rằng các câu hỏi kiểm tra kiến ​​thức của một người về các ứng dụng kinh doanh phù hợp trong hầu hết các trường hợp, trừ khi bạn đang tìm kiếm các nhà phát triển trong các hốc rất cụ thể, chẳng hạn như phát triển trình biên dịch, phát triển công cụ trò chơi, chứng minh định lý, xử lý hình ảnh, v.v. .


8
Tôi nghĩ rằng danh sách của bạn là một cách tốt để thăm dò điểm mạnh và điểm yếu nhưng nó không phải là kiến ​​thức "cơ bản". Như Greg chỉ ra, tôi đã bị các nhà khai thác "ngắn mạch" vấp phải mặc dù chúng đơn giản và tôi thường sử dụng chúng: tôi đã quên tên. Điều đó sẽ khiến tôi không đủ điều kiện?
Mark Britsham

33
Tương tự, tôi chưa bao giờ khai báo một biến "Dễ bay hơi" và làm rất ít với XML và vì vậy không thể hoàn thành nhiệm vụ lập trình của bạn. Chưa hết - Tôi là một tác giả đã xuất bản, giành chiến thắng trong một cuộc thi lập trình lớn và đã viết 4 sản phẩm thành công đã giành được giải thưởng lớn.
Mark Britsham

24
Do đó, tôi không nhất thiết không đồng ý với danh sách của bạn - Tôi chỉ không đồng ý với việc mô tả đặc điểm của bạn về các mục kiến ​​thức là "Cơ bản". Không có khái niệm khó - nhưng một số chỉ khá cụ thể và sẽ không quen thuộc với một số lượng lớn người nộp đơn. Tuy nhiên - một lần nữa - xin vui lòng chấp nhận lời xin lỗi của tôi.
Mark Britsham

39
Một nửa các mục trong danh sách này là câu hỏi đố. Điều này sẽ không giúp tìm được người tốt, nhưng nó có thể làm phiền một số người trong số họ đủ để bước ra khỏi cuộc phỏng vấn của bạn.
Jason Kester

15
(Regex) Write a regular expression which removes all tags from a block of HTML.- Tôi ngửi TROUBLE
BlueRaja - Danny Pflughoeft

135

Tôi tìm thấy những danh sách này trên blog của Scott Hanselman :

Dưới đây là những gì tôi nghĩ là những câu hỏi quan trọng nhất từ ​​những bài đăng này được chia thành các loại. Tôi chỉnh sửa và sắp xếp lại chúng. May mắn thay cho hầu hết các câu hỏi này đã có câu trả lời tốt về Stack Overflow. Chỉ cần theo các liên kết (tôi sẽ cập nhật tất cả chúng càng sớm càng tốt) .

Câu hỏi .NET độc lập với nền tảng

ASP.NET


8
Tôi biết các nhà phát triển biết tất cả những điều này và vẫn không thể nhìn xa hơn cuốn sách. Open-Minded rất quan trọng, bên cạnh đó, đừng cố nhận quá nhiều câu trả lời chi tiết, chỉ cần đảm bảo rằng họ hiểu khái niệm này.
Saif Khan

Tôi agee, Saif. Nhưng mặt khác, nếu bạn không biết chi tiết, bạn sẽ không thể áp dụng chính xác các "khái niệm".
splattne

2
Một số câu hỏi thực sự ngu ngốc, như sự khác biệt giữa Debug và Release build. Có, Visual Studio đã xác định trước một số cấu hình xây dựng nhưng đây không phải là một câu hỏi độc lập với nền tảng. Một người biên dịch theo dòng lệnh hoặc sử dụng Mono, có thể không biết bạn đang nói về cái gì.
Lubos hasko

3
Bạn có thể mô tả các khái niệm thường mất 2 trang hoặc thậm chí một chương của một cuốn sách, theo cách nói rõ ràng trong một tình huống phỏng vấn. Tôi không thể không luyện tập chúng trước
Chris S

1
Cố gắng không yêu cầu mọi người xác định các điều khoản. Bạn sẽ kết thúc với chuyên ngành CS, những người phải ghi nhớ chúng để kiểm tra, nhưng bỏ lỡ những người thực sự biết cách lập trình. Tôi nhớ đã được hỏi một lần "bảo vệ" là gì. Tôi đã không có manh mối đầu tiên, mặc dù sau đó tôi đã làm điều đó 30 lần.
Jason Kester

94

Đây có thể không phải là những gì bạn muốn nghe, nhưng tôi khuyên bạn không nên tập trung vào các công nghệ hẹp, mà tập trung vào các kỹ năng giải quyết vấn đề và lập trình chung. Các nhà phát triển vững chắc có thể học bất cứ điều gì bạn muốn họ làm một cách nhanh chóng.

Tôi, ví dụ, tôi không phải là một anh chàng Compact Framework, vì vậy tôi có thể thất bại trong cuộc phỏng vấn của bạn nếu bạn đi theo hướng đó. Nhưng nếu tôi cần sử dụng nó, tôi có thể thực hiện một số nghiên cứu và nhảy ngay vào.

Cuốn sách của Joel, Smart and Gets Things Done , có lời khuyên tuyệt vời cho việc thuê các nhà phát triển và có những phần lớn ngon ngọt về các loại câu hỏi để hỏi. Tôi khuyên bạn nên nó.


Có lẽ một phần của quá trình tuyển dụng nên là một vấn đề trong Không gian thẻ hoặc thứ mà họ chưa bao giờ nhìn vào !!
Jennifer

Có thể, nhưng có vấn đề về nghiên cứu, vì vậy tôi nghĩ rằng điều đó có thể không công bằng. Tôi thích thú hơn khi thấy cách họ suy nghĩ thông qua các vấn đề và có thể thấy họ viết mã gì đó trừu tượng để tôi có thể tìm hiểu xem họ có nói mã hay không.
Brian MacKay

Nếu tôi có thể chọn khoảng hai người có cả kỹ năng lập trình và giải quyết vấn đề chung, vì lý do thực tế, tôi phải chọn người có kiến ​​thức và kinh nghiệm .NET tốt hơn.
splattne

Kiến thức .NET chắc chắn, nhưng khi nói đến các công nghệ hẹp hơn tôi nghĩ bạn có thể đi cùng với lập trình viên với các kỹ năng giải quyết vấn đề.
Jennifer

5
Vâng, tất cả chúng ta phải biết hàng tấn "công nghệ hẹp". Nhưng với mỗi người chúng ta biết, có một nhóm mà chúng ta không biết (thường là vì chúng ta không cần chúng). Tôi đang nói rằng bạn không muốn bỏ lỡ một nhà phát triển tuyệt vời vì không biết SharePoint, vì rất nhanh anh ấy có thể là chàng trai SharePoint tốt nhất của bạn.
Brian MacKay

66

Tôi nghĩ rằng nếu tôi đang phỏng vấn ai đó có kinh nghiệm về LINQ, tôi có thể chỉ cần yêu cầu họ giải thích về LINQ. Nếu họ có thể giải thích việc thực thi bị trì hoãn, phát trực tuyến, các giao diện IEnumerable / IEnumerator, foreach, iterator, biểu thức (dù sao cho điểm thưởng) thì có lẽ họ có thể đối phó với phần còn lại. (Phải thừa nhận rằng họ có thể là nhà phát triển "ok" và chưa "hiểu" LINQ - Tôi thực sự nghĩ về trường hợp họ đã tuyên bố biết đủ LINQ để biến nó thành một câu hỏi công bằng.)

Trước đây tôi đã hỏi một số câu hỏi đã được liệt kê và một số câu hỏi khác:

  • Sự khác biệt giữa các loại tham chiếu và giá trị
  • Truyền bằng tham chiếu so với vượt qua theo giá trị
  • IDis Dùng và hoàn thiện
  • Chuỗi, bất biến, mã hóa ký tự
  • Điểm nổi
  • Đại biểu
  • Generics
  • Các loại không thể

1
Vâng, tôi muốn xem loại câu trả lời. Ứng cử viên tốt để được chấp nhận. Có ai tốt hơn không?
splattne

5
@splattne: đừng ngớ ngẩn, đây là câu trả lời của Jon Skeet, vì vậy hãy chấp nhận nó. Nó là không thể tránh khỏi.
Steven A. Lowe

3
Tôi vừa định nói ... wt ... bạn đừng hỏi Skeet!
Saif Khan

1
Đây là một câu trả lời tốt hơn nhiều so với câu trả lời được chấp nhận. Nó giúp bạn hiểu liệu ai đó có kiến ​​thức sâu rộng trong lĩnh vực chuyên môn có mục đích đồng thời tìm hiểu kiến ​​thức về các tính năng ngôn ngữ chạy một giao diện khá rộng.
Mark Britsham

1
Câu trả lời này đã vượt qua 'thiết kế Danh sách liên kết của riêng bạn, "phân tích HTML bằng regrec" hoặc "Bạn biết bao nhiêu về hội, GAC, v.v." bởi vì nó giải quyết các công cụ và khái niệm mà bạn thực sự sử dụng trong quá trình phát triển. Kiến thức sâu sắc về LINQ cũng rất cần thiết. Tôi đã thấy nhiều trường hợp trên trang web này, nơi mọi người đang cố gắng tung ra phiên bản Union Distinc và Concat của riêng họ cho các bộ sưu tập vì họ không hiểu LINQ.
Evan Plaice

42

Tôi cùng với những người đang tìm kiếm khả năng giải quyết vấn đề thay vì những thứ bạn có thể tìm kiếm và ghi nhớ từ '101 cuộc phỏng vấn .NET hàng đầu Qs và As ".

Chỉ để trích dẫn bản thân mình là một ví dụ, tôi có xu hướng 'biết' những thứ tôi cần sử dụng hàng ngày. Tôi có xu hướng quên (và sau đó phải tìm kiếm lại) những thứ mà tôi hiếm khi sử dụng.

Nếu bạn muốn gặp tôi trong một cuộc phỏng vấn, nó sẽ rất dễ dàng.

Tuy nhiên, tôi đã kiến ​​trúc và mã hóa phần lớn cơ sở hạ tầng cho một hệ thống sử dụng các lớp Dữ liệu và Đối tượng Kinh doanh giống hệt nhau cho các phiên bản WinForms và ASP.NET của nó, và cơ sở mã của chúng tôi đủ mạnh và có thể tái sử dụng để chúng tôi có thể hỗ trợ và phát triển hơn 20 các phiên bản được cấu hình khác nhau của trang web, cũng như số lượng ngày càng tăng (hiện là 5) của ứng dụng WinForms ...

... Với đội ngũ phát triển gồm hai người.

Tôi đã từng làm việc trong một nhóm với tư cách là một trưởng nhóm công nghệ, và công việc của tôi liên quan đến khá nhiều công việc tuyển dụng và phỏng vấn. Sai lầm ngoạn mục nhất của tôi là thuê một anh chàng biết nhiều về công nghệ mà chúng tôi đang sử dụng hơn tất cả những người còn lại, kể cả tôi, và tôi tự coi mình là một chuyên gia. Anh biết tất cả mọi thứ ...

... Ngoại trừ cách viết mã đáp ứng các yêu cầu hoặc có thể được hiểu bởi bất kỳ ai ngoại trừ chính anh ta. Cuối cùng khi tôi thuyết phục Thủ tướng không gia hạn hợp đồng của mình, mọi điều anh ấy viết đều phải viết lại.

Cấu trúc các cuộc phỏng vấn của bạn một cách khôn ngoan ...


1
Đó là một quan sát thực sự thú vị. Chúng tôi đã có một tình huống ngược lại: một nhóm nhỏ các nhà phát triển biết ít hơn những người khác nhưng họ đã thuyết phục được quản lý rằng họ biết nhiều hơn. Họ đề xuất một lớp trừu tượng dữ liệu mà tôi lập luận là không thể (tôi bị chỉ trích vì không phải là "người chơi nhóm").
Mark Britsham

-tiếp tục - sau 4 tháng nỗ lực "skunk works", họ đã trình bày cho nhóm .... giấy chuyển nhượng của họ cho một phòng khác - và mã KHÔNG. Phần còn lại của đội phải nhặt các mảnh.
Mark Britsham

1
Tuy nhiên, điểm mấu chốt: Tôi thực sự thích quan sát của bạn rằng kiến ​​thức cụ thể về cấu trúc mã hóa không phải là sự đảm bảo về khả năng tạo ra phần mềm làm việc đáp ứng nhu cầu của khách hàng.
Mark Britsham

34

Jon Skeet là ai?


11
Hoặc tốt hơn: Bạn là Jon Skeet? ;-)
splattne

đây thực sự là một câu hỏi hay cho các vị trí C #. Xem xét rằng Jon Skeet hiện sở hữu các tìm kiếm stackoverflow / google cho C # liên quan. Nếu bây giờ bạn không biết anh ấy là ai, thì bạn là Jon Skeet hoặc bạn không lập trình trong C #.
Lubos hasko

2
Không có ý xúc phạm đến Jon Skeet - nhưng tôi nghĩ Rick Strahl có xu hướng hiển thị với các câu trả lời thường xuyên hơn cho các loại vấn đề tôi gặp phải ..
Andrew Theken

1
@ [Andrew Theken]: Tôi sẽ chơi tỷ lệ phần trăm trên đó ;-) google cho "Rick Strahl" mang lại 38.500 lượt truy cập, "jon skeet" mang lại 144.000. Thêm vào đó, Rick Strahl không đăng bài trên SO AFAIK.
Steven A. Lowe

1
cả hai đều tuyệt vời với những gì họ làm ... lợi ích của chúng tôi.
GR7

33

Những câu hỏi hay tôi đã được hỏi là

  • Bạn nghĩ về .NET?
  • Những gì bạn nghĩ là xấu về NET?

Sẽ rất thú vị khi xem những gì một ứng cử viên sẽ đưa ra và chắc chắn bạn sẽ tìm hiểu khá nhiều về cách anh ấy / cô ấy sử dụng khuôn khổ.


18

Tôi sẽ luôn tự mình tìm kiếm các kỹ năng mềm - không có ý định chơi chữ. Vì vậy, thiết kế OO tốt, phát triển dựa trên thử nghiệm, nền tảng ngôn ngữ đa (lập trình) tốt và tất cả sự thông minh chung chung (và mọi thứ đã được thực hiện - tôi đoán là vậy!).

Một nhà phát triển thông minh không nên gặp khó khăn khi tìm hiểu các công nghệ riêng lẻ mà bạn cần họ biết ngay cả khi họ chưa bao giờ nhìn vào chúng trước đây - vì vậy tôi sẽ không lo lắng quá nhiều về các câu hỏi cụ thể về WCF / khung nhỏ gọn và tương tự.

Tôi sẽ yêu cầu họ viết một số mã - cách tốt nhất để tìm hiểu những gì họ biết và cách họ làm việc. Bất cứ ai cũng có thể ghi nhớ câu trả lời cho 'Sự khác biệt giữa loại tham chiếu và loại giá trị là gì?'


2
Tại chỗ trên. Đặt câu hỏi vẹt là yêu cầu rắc rối. Công ty tôi làm việc để hỏi câu hỏi kỹ thuật viên cũ nhưng chủ yếu là: Tôi có những vấn đề này, đây là một bảng trắng, cho tôi biết bạn sẽ giải quyết chúng như thế nào. Đáng sợ nhưng hiệu quả.
Chris Brooks

4
... nhưng nếu bạn không giải quyết chúng theo cách mà người phỏng vấn mong đợi, bạn sẽ thất bại.
gbjbaanb

1
@gbjbaanb đôi khi. Nhưng nếu đó là trường hợp bạn có thể không muốn làm việc ở đó. Hãy nhớ rằng, bạn cũng đang phỏng vấn công ty. Tôi đã biết một vài công ty thất bại trong cuộc phỏng vấn!
Tony Enni

13

Thành thật?

".NET là gì?"

Nếu họ có thể cho bạn câu trả lời rõ ràng về .NET là gì và không phải là gì, nó được sử dụng như thế nào, nó bao gồm những yếu tố gì, v.v ... Nếu họ có thể thuyết phục bạn thì họ biết nó là gì, thì rất có thể họ biết nó khá tốt

Thực tế của vấn đề là, nhiều người không thực sự biết .NET là gì. Ngay cả những người viết chương trình cho nó.


11

Không, thực sự. Có lẽ có những câu hỏi rất đơn giản mà những người thông minh nhất thế giới không biết câu trả lời. Không phải vì họ khó khăn, mà đơn giản chỉ vì họ không bắt gặp nó. Bạn nên xem xét toàn bộ gói và kỹ năng của nhà phát triển, chứ không phải họ có thể trả lời một câu hỏi tùy ý hay không.

Nếu câu hỏi đủ dễ để được trả lời trong một hoặc hai câu ngắn, thì đủ dễ để chỉ nói với ai đó không biết. Bạn nên tìm kiếm sự hiểu biết của họ về các khái niệm và khả năng suy luận, chứ không phải khả năng trả lời các câu hỏi của họ "mọi nhà phát triển .NET đều có thể trả lời."


10

Biết sự khác biệt giữa các loại tham chiếu và giá trị.

Biết rằng các sự kiện được lưu trữ dưới dạng các tham chiếu cứng (nghĩa là nhớ hủy đăng ký các sự kiện hoặc ứng dụng sẽ rò rỉ bộ nhớ).

Dây là bất biến.



4

Tôi đề nghị tìm hiểu về các blog mà họ đọc thường xuyên và các dự án lập trình cá nhân mà họ đã làm vì điều này sẽ cho thấy sự sẵn sàng học hỏi và đam mê lập trình.


3

Dưới đây là một số Tôi đã sử dụng để lọc các lập trình viên xin việc làm lập trình viên C #:

Sự khác biệt giữa loại tham chiếu và loại giá trị là gì?

Giải thích giao diện IDis Dùng để xây dựng ngôn ngữ C # yêu cầu nó và cách bạn sẽ triển khai nó.

Bạn sẽ ném ngoại lệ nào nếu null được truyền làm đối số cho phương thức có hợp đồng không cho phép null cho tham số đó?


Mã của tôi thường sẽ ném một NullReferenceException.
Joshua

5
@Joshua, ArgumentNullException bạn đã thất bại.
Nicolas Dorier

3

"Cái nào trong số ASP: bất kỳ điều khiển nào bạn từng sử dụng trong sản xuất và tại sao?"

Điều đó sẽ cho bạn biết nhanh chóng liệu đối tượng của bạn đã thực sự xây dựng và duy trì một dự án lớn đủ lâu để bị DataGrids và LinkButtons đốt cháy hay chưa, hay liệu anh ta vẫn còn trong giai đoạn Kéo / Thả "tự dạy mình trong 21 ngày".

(câu trả lời là asp: Repeater, asp: PlaceHolder, asp: Nghĩa đen và asp: Nội dung)



2

Đây là một chút của một câu hỏi thay đổi, và không thực sự là một câu hỏi mà bạn có thể trả lời hoàn toàn ngay bây giờ, nhưng một câu hỏi bạn sẽ có thể trả lời khi thích hợp:

".NET framework cung cấp những gì để hoàn thành nhiệm vụ X?"

Hay cụ thể hơn:

".NET framework có bao gồm một đối tượng không X không?"

Ví dụ, gần đây tôi đã dành vài giờ để phát triển một đối tượng được tối ưu hóa để lưu trữ một mảng Booleans và vận hành trên nó, chẳng hạn như thực hiện một bộ sưu tập KHÔNG, HOẶC, XOR, AND, đặt tất cả các giá trị, v.v. Cho đến sau khi tôi viết xong tất cả các bài kiểm tra đơn vị của mình và điều chỉnh nó để có hiệu suất tốt nhất có thể, tôi mới nhận ra đối tượng "BoolArray" của mình đã tồn tại trong khung .NET dưới tên "BitArray".

Đây có thể là một câu hỏi khó trả lời vì nhiều lần câu trả lời tốt nhất về đối tượng / người trợ giúp sử dụng là đối tượng bạn không biết hoặc không hiểu đầy đủ. Thế giới .NET sẽ tuyệt vời như thế nào nếu mọi người thực sự biết về StringBuilder đơn giản, một công cụ cơ bản có thể tăng hiệu suất đáng kể.


2

Tôi sẽ đề xuất một số câu hỏi tập trung vào việc hiểu các khái niệm lập trình bằng cách sử dụng dotnet như

Sự khác biệt giữa môi trường được quản lý và không được quản lý là gì? Ưu và nhược điểm của JIT Ưu và nhược điểm Nếu chúng ta cần phát triển ứng dụng X, chúng ta có thể sử dụng dotnet không? Tại sao? (điều này sẽ xác định cách anh ta nhìn thấy dotnet)

Tôi cũng đề nghị viết các phương thức nhỏ và yêu cầu anh ta viết lại chúng với hiệu suất tốt hơn bằng cách sử dụng các lớp dotnet tốt hơn hoặc các cách tiêu chuẩn. Cũng viết các phương pháp không chính xác (về bất kỳ) hợp lý hoặc bất cứ điều gì và yêu cầu anh ta sửa chúng.


2

Tôi là một fan hâm mộ của những điều sau đây ngoài một số câu hỏi đã được đề cập:

  • Đại biểu là gì?
  • Tên miền ứng dụng là gì?
  • Khi nào bạn sẽ sử dụng từ khóa khóa?
  • Là thư viện tiêu chuẩn chung các lớp bộ sưu tập chủ đề an toàn?
  • Phương pháp mở rộng là gì?
  • Sự khác biệt giữa XmlDocument và XmlReader là gì?
  • Làm thế nào để bạn đọc trong cài đặt cấu hình từ tệp cấu hình ứng dụng?

2

Điều này thật thú vị, và có nguy cơ bị bỏ phiếu này vì đã đưa ra ý kiến ​​của tôi, khi tôi bị điếc bẩm sinh, được hỏi một câu hỏi như thế sẽ đòi hỏi nhiều nỗ lực hơn trong việc truyền đạt suy nghĩ của tôi về cá nhân tôi.

Nói thẳng ra, tôi thực sự sẽ không đọc quá nhiều câu hỏi điển hình, vì mô hình cơ bản là ' Bạn có thể phát âm suy nghĩ và hiểu biết của mình tốt đến mức nào? ', đó thực sự là những gì người phỏng vấn đang tìm kiếm. Giao tiếp luôn là điểm yếu lớn nhất của tôi do cách tôi và có thể bị thất vọng khá dễ dàng.

Thật là lý tưởng khi có kiến ​​thức và là loại người biết tất cả, nhưng thật không may, có một số điều tôi không biết, nhưng đừng sợ nếu bạn thực sự không biết câu trả lời và thừa nhận nó chứ không phải vô tội vạ qua đó. Nếu một người phỏng vấn hỏi tôi một câu hỏi như một trong những câu hỏi trên, rằng tôi sẽ không chắc chắn hoặc hiểu sai / hiểu sai câu hỏi, tôi sẽ nói thẳng, điều này có thể gây bối rối, nhưng đã học được cách xử lý.

Bạn sẽ ngạc nhiên khi có bao nhiêu người thực sự quấy rối và lướt qua nó vào cuối ngày bị bắt gặp với cách nói 'ẩn quần' của họ một cách ẩn dụ.

2cents của tôi, Trân trọng, Tom.


2

Một chút nữa:

  1. Các lớp học một phần. Và những hạn chế của nó?
  2. Các lớp kín
  3. Làm thế nào nội địa hóa có thể được thực hiện trong .NET?
  4. Kết nối cơ sở dữ liệu
  5. Tập tin cấu hình khác nhau
  6. Đại biểu vs sự kiện
  7. Truy cập dll không được quản lý
  8. Những phản ánh
  9. Các lớp học chung
  10. Nóng nhất trong .NET 3.5
  11. Khung kiểm tra đơn vị bạn đã sử dụng.

2

Tôi không hỏi những câu hỏi "biết điều gì đó từ sách giáo khoa", mà là hỏi một số thứ leng keng như:

  • Vòng lặp foreach làm gì trong đồng bằng C #? (Yêu cầu anh ta viết một vòng lặp.)
  • Một người độc thân là gì?
  • Hãy để anh ấy / cô ấy phân tích Chuỗi thành Ngày (mong muốn anh ấy / cô ấy sử dụng TryPude thay vì thử / bắt)
  • Thực hiện các mẫu đơn, chiến lược và lệnh
  • Hãy để anh ấy / cô ấy tái cấu trúc một đoạn mã để thử nghiệm. Yêu cầu anh ấy / cô ấy trừu tượng hóa các dịch vụ bên ngoài ra khỏi Đơn vị đang thử nghiệm và triển khai thử nghiệm kép của dịch vụ (không cung cấp khung chế tạo)

Những điều này không chắc chắn 100%, tùy thuộc vào người tôi có thể hỏi họ:

  • hãy để anh ấy / cô ấy bảo vệ một phương thức từ đầu vào null (hy vọng anh ấy / cô ấy sử dụng nhiều lợi nhuận để giảm lồng nhau)
  • làm thế nào để một trình khởi tạo đối tượng hoạt động (Yêu cầu anh ấy / cô ấy viết bài tập an toàn luồng)

Ngoài ra, tôi sẽ hỏi anh ấy / cô ấy đã học những thứ của anh ấy / cô ấy và những gì anh ấy / cô ấy đang đọc (những gì blog, sách).


1

Một chút nữa:

Những hạn chế của việc thu gom rác là gì.

Biết về quyết toán và IDis Dùng.

Hãy nhận biết các nhóm chủ đề và khi sử dụng nó.

Nếu bạn đang làm các ứng dụng GUI - hãy lưu ý rằng Windows GUI là một luồng đơn.

Sử dụng foreach (Tôi thấy rất nhiều người đang thực hiện MoveNext, v.v.)


1
Tôi không biết, vì vậy tôi đã tìm ra những hạn chế của việc thu gom rác .
MSpeed

1

Tôi nghĩ đó không chỉ là câu hỏi, tôi biết một vài anh chàng xuất sắc khi bạn phỏng vấn họ nhưng một khi họ nhận ra điều thực tế thì họ quá cầu toàn, tôi sẽ nói rằng họ thất bại trong việc viết mã nhiệm vụ một cách thảm hại.

Tôi đã từng được phỏng vấn một lần và tôi rất thích cách tiếp cận mà nhà tuyển dụng đầu tiên đưa cho tôi một bảng câu hỏi kỹ thuật để điền vào trong 30 phút. Nếu một người thành công thì anh ta sẽ được gọi cho một cuộc phỏng vấn kéo dài 1 giờ bao gồm các phán đoán về tính cách và tìm kiếm nhân vật cộng với các thuật ngữ kỹ thuật.

Sau đó, tôi đã được yêu cầu phát triển một ứng dụng web ba trang trong thời gian 6 giờ. Các ràng buộc áp đặt trong ứng dụng đã bao quát một cách thông minh khía cạnh chính của phát triển ứng dụng như ERD nhỏ, Thiết kế lớp, Tính nhất quán UI, kiểm soát các vấn đề cụ thể như sử dụng các nút Radio trong GridView và Tìm nạp và hiển thị các loại hình ảnh từ DB trên trang web, phát triển thuật toán, bảo mật, mã hóa, băm, biểu diễn và thao tác dữ liệu.

Sau đó, ngày hôm sau họ tiếp tục thảo luận 30 phút về ứng dụng được phát triển bao gồm các khu vực tắc nghẽn hiệu suất và các cải tiến về thiết kế và thuật toán được sử dụng. Và thử nghiệm tùy chọn 1 giờ để cải thiện thuật toán của bạn được phát triển ở bước trước với một điều kiện cụ thể.

Vì vậy, phải mất một khoảng thời gian hợp lý nhưng bằng cách này bạn có thể chắc chắn rằng người bạn đang tuyển dụng biết ít nhất những khái niệm cần thiết cho một nhà phát triển giỏi.


0

Tôi muốn cho anh ta một vấn đề và yêu cầu anh ta giải quyết nó bằng các tính năng của .net mà bạn biết và tại sao bạn nghĩ đó là giải pháp tốt nhất.

Điều này sẽ phá vỡ gần như tất cả các khả năng của một ứng viên về các kỹ năng giải quyết vấn đề kỹ thuật, phân tích và kỹ thuật cùng với phương pháp giải quyết vấn đề của anh ta.

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.