사람의 디버깅 기술을 확인하거나 평가하는 방법은 무엇입니까? [닫은] 없었으며 자신이나 다른 사람의

코드를 쉽게 디버깅 할 수있는 사람을 결정하는 기술은 무엇입니까? 얼마 전 내 친구는 비교적 좋은 프로그래머와 인터뷰를했습니다. 프로그래머가 고용되었습니다. 그는 좋은 코드를 작성하고 프레임 워크와 디자인 패턴을 이해할 수있었습니다. 그가 빠진 것은 디버깅 기술이었습니다. 그는 전혀 디버깅 할 수 없었으며 자신이나 다른 사람의 코드에서 문제를 발견하는 것이 그에게 큰 고통이었습니다.

그 이후로 우리는 사람의 디버깅 기술을 평가하거나 추정 할 수있는 방법에 대해 생각하고 있습니다.

첫 번째 질문은 사람이 소프트웨어를 효과적으로 디버깅 할 수 있는지 여부를 결정하는 기술은 무엇입니까?

그리고 두 번째 : 인터뷰 중에 이러한 기술을 테스트하는 방법은 무엇입니까?



답변

사람이 가장 먼저하고 싶은 일은 코드를보고 디버거로 코드를 단계별로 실행하는 것입니다.

아직 행동 계획이없고 디버거 블라인드에 뛰어 든다면 기본적으로 부활절 달걀입니다. 이것은 모든 종류의 문제 해결에 해당됩니다.

인터뷰 상황에서 시스템 작동 방식을 묻고 시스템 기록에 대해 묻는 사람은 문제 해결에 도움 있습니다. 시스템을 먼저 생각하고 역학을 먼저 생각하는 사람은 좋은 문제 해결 방법이 될 수 있습니다.

이것은 복잡한 시스템에서도 마찬가지입니다.


답변

특정 언어 또는 프레임 워크에서 우수한 소프트웨어 개발자의 최선의 방법은 복잡한 문제를 비판적으로 분석하고 언어 또는 프레임 워크에서 우수한 디버깅 기술을 보유하는 능력이라고 주장합니다. 이들은 일반적인 디버깅 도구를 사용하여 높은 수준의 디버깅 능력뿐만 아니라 낮은 수준의 디버깅을 보여줄 수 있어야합니다.

이는 선택한 IDE에서 높은 수준의 디버깅 도구를 보여주는 시나리오를 만드는 것을 의미합니다. 다음과 같은 것을 찾아야합니다.

  • 디버그 모드에서 샌드 박스 응용 프로그램 또는 서버 실행 또는 디버깅을위한 심볼이있는 응용 프로그램 빌드

  • 원격 디버깅 포트 사용 가능 및 시연 또는 심볼로 작성된 샌드 박스가 아닌 응용 프로그램의 디버깅 (언어에 적용 가능한 경우)

  • 중단 점의 전략적 사용

  • 중단 점의 사용자 정의 특성, 중단 점의 조건식 (언어에 적용 가능한 경우)

  • 변수 값 또는 참조를 모니터링하기 위해 표현식 또는 변수 시계 사용

  • 임시 변수 값 또는 참조 또는 포인터 조작을 실시간으로 사용

  • 응용 프로그램 흐름을 시작, 종료 및 종료 할 수있는 능력을 보여줍니다.

  • 콜 스택의 중요 평가

  • 멀티 스레드 응용 프로그램을 디버깅하고 이해합니다.

로그 및 소스 코드 분석, IDE를 사용하지 않고 저수준 디버깅을 수행하는 기능과 같은 도구가없는 다른 디버깅 전략도 시연해야합니다.


답변

나는 당신이 당신의 시스템에있는 버그를 인터뷰의 맥락에서 논의 할 수있는 것으로 증류 해 내고 싶다. 디버거를 시작하고 그를 보자.


답변

그에게 다음과 같은 질문을하십시오.

  1. 문제를 어떻게 해결합니까?

  2. 복잡한 프로젝트 중 하나는 무엇이며 어떻게 달성 했습니까?

  3. 어떤 디버깅 도구를 사용 했습니까?

  4. 특정 도구를 선호합니까?

  5. 자신의 시나리오의 예를 제시하고 어떻게 대처할 것인지 물어보십시오.

  6. 다른 사람의 코드를 작성하는 능력을 어떻게 평가 하시겠습니까?

질문을하여 문제를 해결할 수 있습니다. 그가 특정 기술에 능숙하거나 좋지 않을 위험이 항상 있습니다. 그러나 그가 좋은 학습자라면 많은 도움이 될 것입니다.


답변

프로그래머가 디버깅 할 수 있는지 확인하려면 수정할 코드를 제공하십시오. 코드를 작성할 수 있는지 확인하려는 경우에도 동일한 방법입니다. 그들에게 문제를주고 코드를 작성하도록하십시오.

이제 코드 작성에 문제는 없지만 디버깅을 요청할 때 실패하는 프로그래머에 대해 혼란스러워합니다. 이 사람은 코드 예제를 취소하거나 데이터베이스에서 읽고 쓰는 것과 같은 경험이있는 영역을 고수합니까? 그들이 코드를 처음으로 얻지 않으면 고칠 수 없습니까?

아마도 사람은 디버깅을 좋아하지 않고 노력하지 않습니까? 나는 이것에 능숙하지 않기 때문에 나에게 그것을 요구하지 말아라. 무력을 배웠다.

기존 코드 기반으로 작업하려면 코드를 살펴보고 문서를 작성하고 메모를 작성해야합니다.

디버깅이 실패한 프로덕션 코드를 수정하는 것으로 생각하지만 코드를 작성하는 동안 디버깅해야합니다. 이 사람은 아주 좋은 프로그래머가 아니거나 새로운 코드를 작성하는 것을 선호합니다. 우리 모두하지 마십시오.


답변

다른 사람의 코딩 능력을 결정하는 것과 같은 방식으로 디버깅에 관해 질문하십시오.

주어진 상황에서 버그를 어떻게 추적 할 것인지 “어떻게”물어보십시오.

한 걸음 더 나아가 컴퓨터 앞에 앉아 문제를 디버그하는 것을 지켜보십시오.


답변

나는 종종 후보자들에게 가상의 상황을 주었다. 너 뭐하니? “로그 확인”이라고 대답 할 수 있으며 “문제가 발생한 이후 로그에 기록 된 내용이 없다는 것을 제외하고는 로그에 비정상적인 것이 표시되지 않습니다”라고 말합니다. 그리고 문제 해결 능력을 평가 한 것에 만족할 때까지 계속됩니다.