Làm thế nào để kiểm tra hoặc đánh giá kỹ năng sửa lỗi của một người? [đóng cửa]


48

Loại kỹ năng nào xác định một người có khả năng gỡ lỗi mã dễ dàng? Cách đây một thời gian, bạn tôi đã thực hiện một cuộc phỏng vấn với một lập trình viên tương đối giỏi. Các lập trình viên đã được thuê. Anh ta có thể viết mã tốt, hiểu các khung và các mẫu thiết kế. Thứ anh ta thiếu là - kỹ năng sửa lỗi. Anh ta không thể gỡ lỗi chút nào và việc tìm ra vấn đề với mã của anh ta hoặc người khác là nỗi đau lớn đối với anh ta.

Kể từ đó, chúng tôi đang suy nghĩ về cách chúng tôi có thể đánh giá hoặc ước tính các kỹ năng sửa lỗi của một người.

Vì vậy, câu hỏi đầu tiên là: kỹ năng nào xác định xem một người có thể gỡ lỗi phần mềm một cách hiệu quả không?

Và thứ hai: làm thế nào để kiểm tra những kỹ năng đó trong cuộc phỏng vấn?


14
Tôi thực sự đã được cấp mã để gỡ lỗi, trên máy tính, tại một cuộc phỏng vấn. Họ đã sửa đổi mã nguồn thành tar hoặc gzip hoặc thứ gì đó và muốn xem tôi sẽ gỡ lỗi nó như thế nào.
wkl

4
Cách duy nhất để chắc chắn là để anh ấy hoặc cô ấy làm "sống". Hãy cho anh ấy hoặc cô ấy biết trước môi trường phát triển của bạn là gì và sẽ có một thử nghiệm mã hóa và gỡ lỗi đơn giản.

Nó thậm chí không phải là trực tiếp, @ ThorbjørnRavnAndersen. Tôi đã phỏng vấn ở một vài nơi đưa cho tôi bản in của một chức năng nhỏ, cùng với một đặc điểm kỹ thuật của chức năng đó, và sau đó yêu cầu tôi "tìm lỗi".
tử

@quanticle Tương tự ở đây, công ty của tôi đưa ra một bài kiểm tra lập trình 5 câu hỏi (khoảng một nửa trong số đó là gỡ lỗi) trước khi bạn xem xét phỏng vấn trực tiếp. Rõ ràng nó loại bỏ hầu hết các ứng cử viên ...
Izkata

Cung cấp cho anh ta một dấu vết ngăn xếp để phân tích :-)
JustMe

Câu trả lời:


24

Nếu điều đầu tiên mà người đó muốn làm là xem mã và bước qua nó với trình gỡ lỗi thì người đó không phải là người gỡ rối tuyệt vời.

Nếu bạn chưa có kế hoạch hành động và bạn sẽ đi sâu vào trình gỡ lỗi, về cơ bản bạn là Easter Egging. Điều này đúng cho bất kỳ loại xử lý sự cố.

Trong một tình huống phỏng vấn, một người hỏi cách hệ thống vận hành và hỏi về lịch sử của hệ thống sẽ là một người có thể là người khắc phục sự cố tốt. Một người nghĩ rằng hệ thống đầu tiên và cơ học thứ hai có thể là một người khắc phục sự cố tốt.

Điều này đúng với bất kỳ hệ thống phức tạp nào.


1
+1 cho một viễn cảnh tốt về điều này. Tôi đồng ý nhưng khi họ nghĩ cơ học thứ hai, bây giờ họ tốt hơn làm thế nào để có thể sử dụng các công cụ. Giống như trong xe hơi, một kỹ sư không hiểu hoặc không thể sử dụng các công cụ cơ khí hoàn toàn không phải là một kỹ sư có trình độ.
maple_shaft

16
Câu trả lời này không chừa bất kỳ chỗ nào để gỡ lỗi theo bản năng. Một người nào đó đã làm việc với đủ hệ thống, loại mã hoặc ngôn ngữ, thường sẽ có thể "ngửi" theo cách của họ đối với bất cứ điều gì đang diễn ra sôi nổi. Đôi khi bạn không cần phải biết các hệ thống bên trong để có thể tìm thấy các lỗ hổng của nó.
Jordan

Đầu tiên, không có thứ gọi là "gỡ lỗi theo bản năng". Có những heuristic (còn gọi là "đầu mối gãy") mà các chuyên gia sẽ sử dụng. Chắc chắn. Nếu có sẵn heuristic thì các chuyên gia sẽ sử dụng chúng một cách hiệu quả. Nhưng những heuristic có thể cắn những chuyên gia này vào mông. Hãy đọc lên hàng tấn công việc được thực hiện trên các chuyên gia về tâm lý học nhận thức và bạn sẽ thấy. Vì vậy, một chuyên gia giỏi có thể có những ý tưởng tốt về việc bắt đầu từ đâu nhưng họ không bao giờ nên hoàn toàn dựa vào những cảm xúc ruột thịt đó. Và họ có thể giải thích, ít nhất là ở một mức độ nào đó, những cảm xúc ruột thịt đó.
ElGringoGrande

10
Tôi phải không đồng ý 100% với màu đen và trắng của bạn nếu điều đầu tiên họ nhận xét. Tôi sẽ nói rằng nếu một người nghĩ rằng việc kích hoạt trình gỡ lỗi không phải là một lựa chọn đầu tiên tốt trong một số trường hợp thì người đó cũng không phải là người gỡ rối tốt. Nếu vấn đề là liên lạc bị dừng, điều đầu tiên tôi sẽ làm là kích hoạt trình gỡ lỗi và tìm ra các tiến trình / luồng / tác vụ nào bị chặn hoặc ngừng hoạt động. Một lý do khác để kích hoạt trình gỡ lỗi là để thử và xem liệu vấn đề có lặp lại hay không. Một khi bạn biết cách phá vỡ hệ thống, việc tìm giải pháp trở nên dễ dàng hơn nhiều.
Dunk

5
@ElGringoGrande anh ấy đã gợi ý ngược lại với điều đó, từ những gì tôi đang đọc. Vấn đề là mọi người trở nên tự nhiên hơn trong việc gỡ lỗi khi họ trở nên có kinh nghiệm hơn. Các công cụ hoặc phương pháp không quan trọng bằng hiệu quả của chúng. Đó là lý do tại sao câu trả lời của bạn không đầy đủ. Có nhiều cách hợp lệ để gỡ lỗi, bao gồm kéo ghế lên và chạy qua mã, đặt câu hỏi, et al. Tôi đã gỡ lỗi một cách hiệu quả các chương trình PHP lớn có in. Tôi không thích làm điều đó, nhưng nó thực sự không nhiều về công cụ vì nó là kiến ​​thức về cách các hệ thống thường hoạt động.
Jordan

15

Tôi sẽ lập luận rằng thước đo tốt nhất của một nhà phát triển phần mềm tốt trong một ngôn ngữ hoặc khung cụ thể là khả năng phân tích phê phán các vấn đề phức tạp và có kỹ năng sửa lỗi tốt trong ngôn ngữ hoặc khung. Họ phải có khả năng chứng minh gỡ lỗi cấp thấp cũng như thành thạo gỡ lỗi cấp cao với các công cụ gỡ lỗi phổ biến.

Điều này có nghĩa là tạo ra một kịch bản cho chúng thể hiện khả năng gỡ lỗi cao trong IDE đã chọn của chúng. Bạn nên tìm những thứ như:

  • Chạy ứng dụng hoặc máy chủ hộp cát trong chế độ gỡ lỗi hoặc xây dựng ứng dụng có ký hiệu để gỡ lỗi

  • Cung cấp sẵn và thể hiện các cổng gỡ lỗi từ xa hoặc gỡ lỗi ứng dụng không có hộp cát được xây dựng bằng các ký hiệu (nếu có thể áp dụng cho ngôn ngữ)

  • Chiến lược sử dụng điểm dừng

  • Thuộc tính tùy chỉnh của điểm dừng, biểu thức điều kiện trên điểm dừng (nếu áp dụng cho ngôn ngữ)

  • Sử dụng biểu thức hoặc đồng hồ biến để theo dõi giá trị biến hoặc tham chiếu

  • Sử dụng giá trị biến ad-hoc hoặc tham chiếu hoặc thao tác con trỏ trong thời gian thực

  • Thể hiện khả năng bước vào, vượt và ra khỏi dòng ứng dụng

  • Đánh giá quan trọng của ngăn xếp cuộc gọi

  • Gỡ lỗi các ứng dụng đa luồng và hiểu điều này.

Các chiến lược sửa lỗi khác không có công cụ cũng nên được thể hiện, chẳng hạn như phân tích nhật ký và mã nguồn, cũng như khả năng thực hiện một số gỡ lỗi cấp thấp mà không cần sử dụng IDE.


Danh sách +1 khá hữu ích. Và áp dụng nhiều hơn một.
Dipan Mehta

8
Tôi cho rằng việc gỡ lỗi các ứng dụng đa luồng là một thực tế hoàn toàn khác so với gỡ lỗi các ứng dụng đơn luồng. Khác nhau, và nhiều, khó hơn nhiều.
Bruce Ediger

20
@JarrodRoberson Brian Kernighan và Rob Pike đã viết trong Thực hành lập trình rằng họ vẫn thích các câu lệnh in cho trình gỡ lỗi vì nó ít nhất thời. Nhiều người thích một hệ thống ghi nhật ký tốt cung cấp cho họ cái nhìn chi tiết về đường dẫn mã mà không tạm dừng chương trình giữa chừng. Việc đọc tệp nhật ký cũng dễ dàng hơn sau đó gỡ lỗi kết xuất lõi. Vì vậy, kiểm tra giấy quỳ của bạn có thể từ chối một số lập trình viên giỏi vì không phải ai cũng đồng ý trình gỡ lỗi cũng hữu ích như các phương pháp gỡ lỗi thay thế (nhật ký, kiểm tra đơn vị, xác nhận)
Số liệu

12
Các câu lệnh in gỡ lỗi là tốt và có thể thích hợp hơn với trình gỡ lỗi, đặc biệt là khi có sự tham gia đồng thời. Vấn đề của bạn với họ thực sự có thể là với một trình biên dịch chậm.
Ricky Clarkson

8

Tôi muốn nói chắt lọc một lỗi mà bạn có trong hệ thống của mình với điều gì đó có thể được thảo luận trong bối cảnh của một cuộc phỏng vấn. Bật trình gỡ lỗi và để anh ta vào nó.


7

Đặt câu hỏi cho anh ấy như thế này:

  1. Làm thế nào để bạn giải quyết một vấn đề?

  2. Một trong những dự án phức tạp mà bạn đã làm là gì và làm thế nào bạn đạt được nó?

  3. Bạn đã sử dụng công cụ sửa lỗi nào?

  4. Bạn có bất kỳ ưu tiên cho các công cụ nhất định?

  5. Cho một ví dụ về kịch bản của riêng bạn và hỏi anh ấy anh ấy sẽ giải quyết nó như thế nào?

  6. Làm thế nào bạn đánh giá khả năng của bạn để có được vào mã người khác?

Bạn có thể giải quyết mối quan tâm của bạn bằng cách đặt câu hỏi. Luôn luôn có một rủi ro anh ta có thể hoặc không thể giỏi trong một số kỹ năng nhất định. Nhưng nếu anh ấy là một người học giỏi, điều đó sẽ giúp ích rất nhiều.


6

Nếu bạn muốn xem một lập trình viên có thể gỡ lỗi hay không, hãy cung cấp cho họ mã để sửa. Đó là cách tiếp cận tương tự nếu bạn muốn xem liệu họ có thể viết mã hay không. Cung cấp cho họ một vấn đề và yêu cầu họ viết mã.

Bây giờ, tôi bối rối về lập trình viên này, người không gặp vấn đề gì khi viết mã nhưng thất bại khi bị yêu cầu gỡ lỗi. Có phải người này lấy lại các ví dụ mã hoặc chỉ dính vào các lĩnh vực anh ta có kinh nghiệm như đọc và viết vào cơ sở dữ liệu? Trừ khi họ nhận được mã ngay lần đầu tiên, họ không thể sửa nó?

Có lẽ người đó không thích gỡ lỗi và không nỗ lực? Tôi không giỏi trong việc này nên hãy ngừng yêu cầu tôi làm điều đó - học được sự bất lực.

Làm việc trên một cơ sở mã hiện có đòi hỏi phải xem qua mã, tài liệu và có thể thực hiện một số ghi chú và giải thích của riêng bạn.

Tôi biết chúng tôi nghĩ về việc gỡ lỗi là sửa mã sản xuất đã thất bại, nhưng tôi cần gỡ lỗi mã trong khi tôi đang viết nó. Người này không phải là một lập trình viên giỏi hoặc họ chỉ thích viết mã mới. Đừng tất cả chúng ta.


2
Chúng tôi đều gỡ lỗi chương trình của chúng tôi. Ban đầu thật dễ dàng vì chương trình này nhỏ và thật dễ dàng để có tất cả trong đầu bạn. Nhưng khi nó phát triển và việc gỡ lỗi phức tạp trở nên khó khăn hơn. Và bây giờ - một số người vẫn có thể xử lý và tìm ra lỗi trong khoảng thời gian hợp lý và một số người bị mất. Họ không biết phải tập trung vào đâu và làm thế nào để thu hẹp để tìm thấy nó ...
Michal B.

1
@MichalB.: Tất cả chúng ta đều gỡ lỗi các chương trình của mình, nhưng một số người sẽ thể hiện một cách tiếp cận nguyên tắc trong khi những người khác chỉ điều chỉnh ngẫu nhiên mọi thứ và xem điều gì sẽ xảy ra .
Matthieu M.

Tôi không hiểu tại sao bạn sẽ bối rối. Trở thành một nhà phát triển tốt và một người bảo trì tốt là những bộ kỹ năng rất khác nhau. Tốt nhất là hầu hết mọi người chỉ có kỹ năng trong một trong những điều này hoặc điều kia, nếu họ có kỹ năng ở tất cả (điều không may bao gồm phần lớn các nhà phát triển).
Dunk

3

Cũng giống như cách bạn xác định khả năng mã hóa của ai đó, hãy hỏi họ các câu hỏi về gỡ lỗi.

Hỏi họ "làm thế nào" họ sẽ theo dõi một lỗi trong một tình huống nhất định.

Tiến lên một bước nữa và ngồi xuống trước máy tính và xem chúng gỡ lỗi một vấn đề.


3

Tôi thường đưa ra cho các ứng viên những tình huống giả định ... ví dụ, một hệ thống sản xuất đã ngừng đáp ứng. Bạn làm nghề gì? Họ có thể trả lời "kiểm tra nhật ký" và tôi nói "nhật ký cho thấy không có gì bất thường, ngoại trừ việc không có gì được viết trong đó kể từ khi vấn đề bắt đầu xảy ra". Và cứ thế, cho đến khi tôi hài lòng rằng tôi đã đánh giá khả năng giải quyết vấn đề của thí sinh.


2

Thông thường những người có năng khiếu tốt cũng là người có kỹ năng sửa lỗi tốt.

Trong cuộc phỏng vấn, (tùy thuộc vào thâm niên của họ), bạn có thể giao cho họ một bài tập giống như câu đố như thuật toán nào đó. Đó là cách đơn giản.

Nếu bạn có thể, bạn có thể in mã ra khỏi một số công việc, hãy hỏi người đó nếu có gì đó không đúng ở đây và nếu có cách khắc phục.

Tôi không thích hỏi những câu hỏi phỏng vấn khó hiểu có xu hướng tập trung vào khả năng đọc và sửa lỗi cú pháp của mọi người.


+1 Câu trả lời tuyệt vời! Tôi đồng ý rằng các nhà phát triển phần mềm tốt nhất có kỹ năng sửa lỗi tốt và tôi cũng cảm thấy rằng các lỗi cú pháp phát hiện không thể hiện được nhiều. Hầu hết các IDE và thậm chí một số trình soạn thảo văn bản tốt (Notepad ++) sẽ xác định lỗi cú pháp trong các ngôn ngữ phổ biến. Tuy nhiên, tôi không đồng ý rằng một câu đố thể hiện kỹ năng sửa lỗi. Câu đố thể hiện tư duy phê phán là một kỹ năng khác nhau nhưng có liên quan.
maple_shaft

@maple_shaft cảm ơn vì (chưa +1). Đúng, câu đố không liên quan trực tiếp đến gỡ lỗi . Nhưng nó tốt cho việc đánh giá cách mọi người tiếp cận vấn đề - một điều gián tiếp thực sự.
Dipan Mehta

2
Tôi nhìn vào câu đố và tôi giống như ewwwwwwww. bạn thực sự không có thứ gì tốt hơn thứ "gotcha"? và làm thế nào "thâm niên" đi vào bức tranh? ppl cũ có nghĩa vụ giải quyết các câu đố khó hơn? tất cả các lập trình viên giỏi (hoặc người sửa lỗi) có phải là fan hâm mộ của sudoku không? cuối cùng bạn có thể làm phiền một số lập trình viên thực sự giỏi và nói xấu bạn khắp thị trấn. câu hỏi gotcha là một sự xúc phạm <kỳ> hãy đến với những người đàn ông tốt hơn.
Chani

@Scrooge Tôi chỉ có ý đó là câu đố lập trình - tôi chưa bao giờ chơi sudoku với hàng trăm cuộc phỏng vấn tôi đã thực hiện.
Dipan Mehta

2

Trong một cuộc phỏng vấn, hãy yêu cầu họ nói với bạn về một lỗi mà họ đã sửa trong quá khứ và các bước mà họ đã sử dụng để gỡ lỗi.

Làm cho họ nói với bạn về những gì họ đã làm trong công việc cuối cùng của họ, giao bài tập về nhà, vv Và những gì họ đã trải qua trong việc tìm ra vấn đề.


2

Tôi sẽ chia sẻ kinh nghiệm cùng với quan điểm tuyển dụng về kiểm tra kỹ năng ứng viên trong việc gỡ lỗi. Tôi đã tham gia một cuộc phỏng vấn có ba giai đoạn. Giai đoạn thứ hai là một "trường hợp thực tế". Tôi không biết nhiều hơn vào lúc đó. Trong khi ở đó tôi được thông báo có một hệ thống ngừng hoạt động và họ không biết. Một số lỗi đang nằm phía sau.

Nó được sắp xếp như một máy tính để bàn từ xa đến một môi trường thử nghiệm cũ. Có lẽ là đến một môi trường không được cắm hoặc bị cô lập. Dự án là một vài biểu mẫu web với một số điều khiển ASP.NET và mã tập tin mã liên quan. Codefile đề cập đến một loại lớp nghiệp vụ mà tôi chỉ có một dll, không có mô tả mã nguồn và phương thức. Các Webforms đã thực hiện các chức năng CRUD mà bạn có thể mong đợi. Cũng là một chức năng tìm kiếm nhỏ. Đến lượt, lớp doanh nghiệp đã nói chuyện với Views và SP trong một máy chủ sql.

Họ môi giới một số phần ở các cấp độ khác nhau. Tôi đã nhận được một bài báo với các triệu chứng. "Không thể tìm kiếm" "Trường 'vùng' biến mất sau lần cập nhật trước" và như vậy. Chẳng hạn như bạn có thể nhận được từ người dùng của bạn.

Tôi không nhớ tất cả các chi tiết nhưng ít nhất một trường bảng đã được đổi tên, dẫn đến SP bị hỏng, được sử dụng bởi chức năng tìm kiếm. Điều đó có nghĩa là không có lỗi trong VS và không có mã nguồn BL để theo dõi tên trường. Một tham số CHỌN chống lại Sqlcommand đã bị sai chính tả và khiến một dạng web bị trục trặc. Ngoài ra, một trường đã bị bỏ qua, đó là trường bị thiếu trong GridView (Autogeneratecolumns). Một nút ASP.NET đã được đề cập đến một cái gì đó có nghĩa là một phương pháp trùng lặp, nâng cao, và "quên" để trỏ đến phương thức mới.

Ngoài ra điều nhỏ như vậy bằng cách sử dụng tiêu đề trong thẻ html không cho phép nó. Ngoài ra thẻ ALT đối diện đã bị bỏ qua trong một điều khiển yêu cầu nó. Cũng có một số lỗi với các thẻ html đóng không chính xác nhưng không gặp trục trặc. Không chắc chắn nếu tất cả những thứ đó là một lỗi dự án thuần túy hoặc có lẽ cùng một dự án cho các tuyển dụng khác nhau. Tôi chưa bao giờ hỏi. Mức độ khó tất nhiên phải phù hợp với nhu cầu tuyển dụng.

Thử nghiệm như vậy có lẽ nên được sàng lọc (không theo dõi) để xem, sau khi phỏng vấn, cách gỡ lỗi đã được thực hiện. Đối với bản thân tôi ở giai đoạn đó, tôi thấy bài kiểm tra hơi vô lý, nhưng đó cũng sẽ là điểm lớn. Nếu đó là hoặc không, nên có giá trị rất nhiều ứng cử viên ở đúng nơi.

* Tôi nghĩ rằng bài kiểm tra đã chứng minh các ứng cử viên / kỹ năng của tôi *
* Phân tích hệ thống nước ngoài
* Sử dụng tối thiểu thông tin để tìm lỗi và lỗi
* Trong thời gian căng thẳng và không có ai giúp bạn, mã giả định sửa chữa
* Các mức độ kiến ​​thức khác nhau;
** db sql và các thủ tục được lưu trữ,
** sử dụng dll trong dự án,
** kỹ thuật asp.net,
** kiến ​​trúc phân lớp
** khía cạnh hướng đến vấn đề

Nhưng cũng những điều rõ ràng hơn như xử lý môi trường nhà phát triển, tìm và hiểu công cụ quản lý máy chủ Db. Chắc chắn có những ứng cử viên trông thực sự đẹp trên giấy nhưng, trong thực tế, có thể bị mắc kẹt trong các nhiệm vụ như vậy.


2

Tôi chọn một vấn đề thực tế mà tôi gặp phải liên quan đến vị trí đó và tôi trình bày nó cho ứng viên nhiều như nó đã được trình bày cho tôi. Tất nhiên tôi cung cấp cho họ một số nền tảng chung và một lượng nhỏ tài liệu liên quan như đoạn mã hoặc sơ đồ.

Tôi nói với họ công việc của họ là giải quyết vấn đề và tôi đề nghị trả lời bất kỳ câu hỏi kỹ thuật nào họ có và cho họ biết kết quả của bất kỳ thí nghiệm nào họ muốn thực hiện. Nếu họ nói: "Tôi sẽ đặt một thăm dò phạm vi ở đây", thì tôi sẽ phác thảo cho họ một dấu vết về những gì họ có thể tìm thấy. Nếu họ muốn chèn một printfvòng lặp, tôi sẽ nói với họ rằng nó không bao giờ xuất hiện (!) Hoặc đầu tiên in "7" và sau đó lặp lại "5". Nếu chúng đi quá xa trong đám cỏ dại mà tôi không thể đưa ra câu trả lời có ý nghĩa, tôi sẽ thừa nhận rằng chúng ta đang đi sai đường và quay trở lại nơi khác. Nếu chúng bị kẹt, tôi sẽ hỏi những câu hỏi hàng đầu hoặc đưa ra gợi ý cho đến khi chúng ta có thể tiếp tục.

Những gì tôi muốn thấy là các quá trình suy nghĩ có trật tự, quyết tâm đi đến giải pháp, xem xét tốt các câu hỏi và thí nghiệm, và lý tưởng là xác định thành công vấn đề. Đôi khi tôi chọn những vấn đề quá phức tạp để ai đó có thể gỡ lỗi hoàn toàn trong một cuộc phỏng vấn kéo dài một giờ và cuối cùng tôi cho họ câu trả lời thực sự. Tại thời điểm đó, tôi đang tìm kiếm một phản ứng cho thấy rằng họ đã tham gia vào vấn đề và trải nghiệm khoảnh khắc "aha" và sự hài lòng khi tìm hiểu nguyên nhân. Các ứng cử viên tốt nhất sẽ tự phát đặt câu hỏi tiếp theo vào thời điểm đó, cố gắng liên kết bản đồ tinh thần của họ về vấn đề với những gì đang thực sự xảy ra.


1

Ngồi xuống máy tính với một số ký hiệu nhị phân đơn giản (có gỡ lỗi) phân tách bằng tham chiếu con trỏ null hoặc mã nguồn + gdb như vậy và xem liệu chúng có thể tìm ra nguyên nhân của sự cố không?


2
Tất cả điều này cho bạn biết rằng người đó có thể phân tích mã và nhị phân để tìm một tham chiếu con trỏ null tiềm năng. Nó không thực sự chứng minh sử dụng thành thạo các công cụ sửa lỗi phổ biến.
maple_shaft

1

Nếu bạn yêu cầu ứng viên của mình thực hiện kiểm tra mã sơ bộ, hãy yêu cầu họ sửa đổi mã trong cuộc phỏng vấn để giải quyết lỗi hoặc thêm một tính năng mới hoặc tốt hơn cả hai. Nếu bạn thực hiện các thông số kỹ thuật kiểm tra mã khá mơ hồ, điều đó sẽ giúp việc tạo các trường hợp kiểm thử có "lỗi" dễ dàng hơn sau đó.


1

Tìm "lỗi" trong một đoạn mã nhỏ là một tình huống rất giả tạo. Tôi cho rằng nó có thể hữu ích giống như các câu đố và trêu ghẹo não.

Một cách tiếp cận toàn diện hơn sẽ đặt câu hỏi hành vi về cách ứng viên đã thực hiện gỡ lỗi trong quá khứ trích dẫn các sự cố cụ thể và sau đó theo dõi các câu hỏi.

Một người giỏi xử lý sự cố sẽ có thể nói về nhiều thứ hơn là các phương tiện gỡ lỗi trong IDE. Thế còn ... các công cụ báo cáo lỗi, tương tác của người dùng cuối, tái tạo lỗi, phân tích logfile, xác minh thì sao?

Có NHIỀU HƠN để gỡ lỗi hơn là truy tìm thông qua một khối mã và mọi đánh giá về kỹ năng gỡ lỗi của ai đó sẽ phản ánh điều đó.


Tôi muốn giả định rằng có những lỗi trong phần mềm mà chúng tôi chưa phát hiện ra. Nó giống như tìm kiếm các lỗi địa chấn. Câu hỏi là làm thế nào một người tìm kiếm các dấu hiệu cho biết.
Christopher Mahan

1

Cung cấp cho ai đó một số mã tuyệt vời công ty của bạn chạy trong sản xuất. Yêu cầu họ giới thiệu một lỗi tinh tế. Hỏi họ tại sao họ chọn cái đó. Hỏi họ làm thế nào họ sẽ đi tìm và sửa nó.

Điểm thưởng nếu họ tìm thấy một lỗi trong mã gốc.

Nhân đôi điểm thưởng nếu họ có thể sửa lỗi trong mã gốc.


1

Tôi có xu hướng yêu cầu mọi người mô tả cho tôi lỗi khó khăn nhất họ từng phải theo dõi và sửa chữa và những gì họ đã làm để tìm ra nó và sửa nó. Tôi cũng biết rằng nếu lỗi khó nhất là điều mà bạn chỉ mong đợi người mới bắt đầu gặp khó khăn, thì có khả năng họ không phải là người khắc phục sự cố tốt (trừ khi đây là một cuộc phỏng vấn cho cấp nhập cảnh). Nếu đó là một điều gì đó thực sự khó khăn và họ mô tả quá trình suy nghĩ của họ khi họ cố gắng theo dõi nó, thì tôi có thể cảm nhận được mức độ kỹ năng của họ là gì. Điều làm tôi ngạc nhiên là số lượng người có vẻ ngoài "con nai trong đèn pha" và không thể nghĩ ra một ví dụ duy nhất về việc họ đã làm điều đó rất phức tạp. Xin lỗi, một người để lại những vấn đề khó khăn cho người khác sửa chữa không phải là người mà tôi quan tâm vì bất cứ điều gì ngoại trừ trường học thẳng,


1

Tôi sẽ hỏi một vài câu hỏi bất khả tri về công nghệ như sau:

  • Đưa tôi qua tất cả các bước bạn thực hiện để xác định nguyên nhân gốc và sửa lỗi (lỗi)
  • Bạn sẽ sử dụng Call Stack như thế nào trong khi gỡ lỗi một ứng dụng đa luồng

Điều này hoạt động thực sự đặc biệt tốt trong các cuộc phỏng vấn qua điện thoại vì bạn chỉ cần người đó cung cấp cho bạn một câu trả lời thuyết phục cho thấy cách anh ấy thực sự làm việc trong khi khắc phục sự cố.

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.