소프트웨어 엔지니어를 채용하는 것은 신중함이 필요한 절차입니다. 유능한 소프트웨어 엔지니어는 비즈니스 성장에 기여하지만, 필요한 기술이나 강한 직업 윤리가 부족한 사람은 진행 상황을 지연하고 방해합니다.
소프트웨어 엔지니어를 효과적으로 채용하려면 채용 과정 중에 질문해야 할 최고의 질문을 알아야 합니다.
다음은 잠재적 후보자의 기술과 지식에 대해 질문할 가장 인기 있는 소프트웨어 엔지니어 면접 질문 70개로, 원활한 채용 과정을 보장합니다. 후보자는 또한 이 가이드를 잠재적 직업 기회를 찾기 위한 시작점으로 사용할 수 있습니다.
50개 이상의 인기 있는 소프트웨어 엔지니어링 면접 질문 및 답변
1. Baseline의 정의는 무엇입니까?
Baseline은 일반적으로 프로젝트 리더가 정의한 프로젝트 마일스톤입니다. Baseline은 프로젝트 진행 상황을 추적하고 프로젝트의 전체 상태를 정기적으로 평가하는 데 사용됩니다.
2. 블랙박스 테스트란 무엇입니까?
블랙박스 테스트는 내부 구조와 코드 구현을 알지 못한 채 애플리케이션을 테스트하는 것입니다. 블랙박스 테스트에서 테스터는 데이터 흐름 및 백엔드 코드 실행이 아닌 소프트웨어 기능에 관심을 갖습니다.
3. 화이트박스 테스트란 무엇입니까?
화이트박스 테스트는 내부 구조 또는 코드 구현을 알지 못한 채 애플리케이션을 테스트하는 것입니다. 대부분의 경우 이 테스트는 코드를 작성한 개발자가 단위 테스트에서 수행합니다.
4. 가장 중요한 소프트웨어 카테고리는 무엇입니까?
- 응용 소프트웨어
- 시스템 소프트웨어
- 웹 소프트웨어
- 임베디드 애플리케이션
- AI 소프트웨어
- 과학 소프트웨어
5. 소프트웨어 재엔지니어링의 정의는 무엇입니까?
소프트웨어 시스템의 유지보수성을 향상시키는 소프트웨어 개발 프로세스입니다.
6. 컴퓨터 프로그램과 컴퓨터 소프트웨어의 차이는 무엇입니까?
컴퓨터 프로그램은 컴퓨터에서 실행되는 프로그래밍 코드의 일부입니다. 특정 작업을 수행합니다. 한편, 소프트웨어는 프로그래밍 코드, 문서 및 소프트웨어 사용에 대한 사용자 가이드를 포함합니다.
7. 현재 사용 가능한 SDLC 모델은 무엇입니까?
나선형 모델, 폭포수 모델, V 모델, 반복형 모델 및 빅뱅 모델은 현재 사용 가능한 가장 인기 있는 SDLC 모델 중 일부입니다.
8. 소프트웨어 개발 프로세스란 무엇입니까?
소프트웨어 개발 생명 주기는 다음 8단계로 구성됩니다.
- 요구사항 분석
- 사양
- 소프트웨어 아키텍처 구축
- 응용
- 검사
- 문서화
- 교육 및 지원
- 유지보수
9. 소프트웨어 개발 프로세스에서 디버깅은 무엇을 의미합니까?
디버깅은 프로그램에서 오류를 제거하는 절차입니다. 성공적인 테스트의 중요한 요소입니다.
10. 검증(Verification)과 유효성 확인(Validation)의 정의
검증: 이 개념은 소프트웨어가 특정 기능을 수행함을 보장하는 일련의 단계를 나타냅니다.
유효성 확인: 소프트웨어가 고객의 요구사항을 충족하도록 구축되었음을 보장하는 활동을 뜻합니다.
11. 스텁과 모크의 차이는 무엇입니까?
스텁은 일반적으로 하드코딩된 데이터를 반환하는 인터페이스의 간단한 구현이며, 모크는 기대값에 대해 출력을 확인합니다. 테스트는 이러한 기대값을 설정합니다.
12. 스크립트가 안전하면서도 빠른지 어떻게 보장합니까?
개발 보안은 항상 소프트웨어 개발에서 우선순위가 되어 왔습니다. 프로그램 실행이 느린 경우 시간 복잡도를 살펴봐서 이유를 파악하려고 합니다. 이 정보를 통해 스크립트를 더 효율적으로 실행하도록 수정할 수 있습니다.
13. 소프트웨어 요구사항 기록을 유지하는 2가지 방법은 무엇입니까?
요구사항을 추적하는 많은 방법이 있습니다.
다음은 2가지 예입니다.
- 모든 요구사항 목록을 포함하는 전제조건 사양 문서를 만듭니다.
- 요구사항, 유형, 종속성, 우선순위 등을 나열하는 Excel 시트를 만듭니다.
14. 어느 프로그래밍 언어로 알고리즘을 작성하기를 선호합니까?
답변은 코딩 기술에 따라 달라집니다. 다음은 샘플 답변입니다. 개인적으로는 높은 동적성 때문에 C와 C++을 선호합니다.
15. SRS의 정의는 무엇입니까?
SRS는 소프트웨어 요구사항 사양(SRS) 문서를 의미합니다. 제품의 기능 및 비기능 요구사항을 캡처하는 문서입니다. 모든 SDLC 모델이 SRS 문서를 준수해야 하는 것은 아닙니다. 일부 모델은 사용자 스토리 형태로 요구사항을 캡처하고, 다른 모델은 Excel 시트 등의 형태로 캡처합니다.
16. 어느 SDLC 모델이 최고라고 생각하십니까?
SDLC 모델은 개발 프로세스의 요구사항에 따라 사용되므로 그러한 순위는 없습니다. 소프트웨어마다 다를 수 있습니다.
17. 컴퓨터 소프트웨어의 정의는 무엇입니까?
컴퓨터 소프트웨어 패키지는 소프트웨어 프로그램, 문서 및 소프트웨어 사용에 대한 지침 매뉴얼로 구성됩니다.
18. 소프트웨어 범위의 정의는 무엇입니까?
소프트웨어 범위는 소프트웨어의 일부로 제공되는 모든 기능, 산출물 및 성과로 알려져 있습니다. 소프트웨어 제품을 만들고 생산하기 위해 수행되는 모든 활동을 포함합니다.
소프트웨어 범위를 가지면 소프트웨어 제품의 다양한 측면을 추정하는 데 도움이 됩니다. 이 추정치는 전문가를 인터뷰하고 관찰하거나 사전 정의된 공식을 사용하여 결정할 수 있습니다.
소프트웨어 범위를 작성하려면 명확한 목표와 철저한 리소스 계획이 필요합니다.
19. 소프트웨어 프로젝트 관리자는 정확히 누구이며 그들의 역할은 무엇입니까?
이 사람은 소프트웨어 개발 프로젝트 감독을 담당합니다. 프로젝트 관리자는 프로젝트 계획, 진행 모니터링 및 커뮤니케이션도 담당합니다. 또한 위험과 리소스를 관리하여 프로젝트가 정시에, 예산 내에서 높은 품질로 완료되도록 보장합니다.
20. 소프트웨어 제품의 크기를 어떻게 결정합니까?
소프트웨어 제품의 크기를 계산하기 위해 2가지 방법을 사용할 수 있습니다.
- 제공된 코드 라인을 계산합니다
- 제공된 함수 포인트를 계산합니다
21. 함수 포인트란 무엇입니까?
소프트웨어 제품이 제공하는 기능을 함수 포인트라고 합니다. 소프트웨어 크기에 대한 가장 중요한 평가로 간주됩니다.
22. 프로젝트 실행을 어떻게 측정합니까?
활동 모니터링, 상태 보고서 및 마일스톤 체크리스트를 사용하여 프로젝트 실행을 평가할 수 있습니다.
23. 소프트웨어 프로젝트를 추정하는 방법은 무엇입니까?
가장 일반적으로 사용되는 추정 기법은 다음과 같습니다.
- 분해 기법
- 경험적 방법
24. 소프트웨어 구성 관리의 정의는 무엇입니까?
소프트웨어 변경 사항을 추적하고 제어하는 프로세스입니다.
변경 제어는 소프트웨어 시스템에 대한 모든 변경 사항이 일관성이 있으며 조직 정책 및 절차에 따라 생성되도록 하는 기능입니다.
25. V 모델이란 무엇이며 어떻게 작동합니까?
V 모델은 순차 모델로서 이전 단계가 완료된 후에만 다음 단계가 시작됩니다. 예를 들어 테스트 단계는 개발 단계가 완료된 후에만 시작되고, 유지보수 단계는 테스트 단계가 완료된 후에만 시작됩니다.
V 모델은 검증(Verification) 및 유효성 확인(Validation) 모델의 약자입니다. V 모델은 폭포수 모델을 보완하며, 순차 모델이기도 합니다.
V 모델의 각 개발 단계는 해당 테스트 단계와 연결됩니다.
아래 이미지는 V 모델의 다양한 단계를 보여줍니다.
소프트웨어 개발 생명 주기는 모델의 왼쪽에 있고, 소프트웨어 테스트 생명 주기는 오른쪽에 있습니다. 단계가 문자 ‘V’를 형성하기 때문에 이 모델을 V 모델이라고 합니다.
SDLC는 V 모델 내에서 위에서 아래로 해석해야 하고, STLC는 아래에서 위로 해석해야 합니다. 처음에는 클라이언트의 사양에 따라 개발될 시스템을 문서화하기 위해 요구사항을 수집합니다. 요구사항을 기반으로 테스트 팀은 시스템 테스트 계획을 만듭니다.
높은 수준 및 상세 수준 설계 단계가 뒤따르며, 이 단계에서 시스템 아키텍처가 준비됩니다. 이러한 단계에서 테스트 팀은 통합 테스트 계획을 개발합니다. SDLC 코딩이 완료되면 STLC는 단위 테스트, 통합 테스트 및 시스템 테스트로 시작됩니다.
26. 소프트웨어 요구사항의 정의는 무엇입니까?
소프트웨어 요구사항에는 제안된 소프트웨어 시스템의 기능 설명이 포함됩니다. 대상 시스템과 그 기능 및 특징을 설명합니다.
27. 기능 및 비기능 요구사항의 정의는 무엇입니까?
기능 요구사항은 제시된 소프트웨어 제품에서 사용자가 기대하는 실질적인 기능입니다.
비기능 요구사항은 보안, 성능 및 사용자 인터페이스의 모양과 느낌에 관합니다.
28. 타당성 조사의 정의는 무엇입니까?
소프트웨어 프로젝트 개발이 조직에 얼마나 유익한지 판단하기 위한 메트릭입니다. 소프트웨어 분석가는 프로젝트의 경제적, 기술적 및 운영상 타당성을 연구합니다.
- 경제적: 여기에는 교육, 추가 도구 및 프로젝트 비용과 이점의 전반적인 추정값 가격이 포함됩니다.
- 기술적: 기술적 측면을 평가합니다. 이 시스템을 만들 수 있습니까? 소프트웨어가 실행될 컴퓨터 및 운영 체제의 적합성, 소프트웨어 개발 지식 및 해당 프로젝트에 사용 가능한 도구를 평가합니다.
- 운영: 분석가는 조직이 프로젝트의 요구 사항에 따라 변경에 원활하게 적응할 수 있는지 평가해야 합니다. 예상 비용으로 문제를 해결할 가치가 있습니까?
29. 프로젝트 관리 도구는 무엇입니까?
소프트웨어 프로젝트의 요구사항에 따라 많은 관리 도구를 사용할 수 있습니다. 예시로는 PERT 차트, Gantt 차트, 리소스 히스토그램, 상태 보고서 등이 있습니다.
30. 모듈화의 정의는 무엇입니까?
모듈화는 소프트웨어 시스템을 개별 모듈로 분리하는 기법입니다. 각 모듈은 독립적으로 자신의 작업을 수행하도록 설계됩니다.
31. 소프트웨어 메트릭의 정의는 무엇입니까?
소프트웨어 메트릭은 소프트웨어 프로세스의 다양한 측면에 대한 측정값을 제공하며, 다음과 같이 분류됩니다.
- 요구사항 메트릭에는 요구사항 길이 및 완전성이 포함됩니다
- 제품 메트릭에는 객체 지향 메트릭, 테스트 및 설계 메트릭 및 코딩 라인 수가 포함됩니다.
32. 응집도의 정의는 무엇입니까?
응집도는 모듈 요소의 상호 종속성을 정의하는 메트릭입니다.
33. 레벨 0 데이터 흐름 다이어그램은 정확히 무엇입니까?
DFD의 가장 높은 추상화 수준을 레벨 0이라고 합니다. 컨텍스트 수준 DFD로도 알려져 있습니다. 전체 데이터 시스템을 단일 다이어그램으로 나타냅니다.
34. 소프트웨어 설계 및 분석 도구는 무엇입니까?
다음은 기본 소프트웨어 설계 및 분석 도구 중 일부입니다.
- 구조화된 차트
- 데이터 흐름 다이어그램
- 데이터 사전
- 구조화된 영어
- 계층적 입력 프로세스 출력 다이어그램
- 엔티티 관계 다이어그램 및 의사 결정 테이블
35. 구조화된 설계의 정의는 무엇입니까?
문제의 개념화입니다. ‘분할 정복’ 전략을 기반으로 하는 솔루션 설계로도 알려져 있습니다.
36. 의사 코드와 구조화된 영어의 주요 차이는 무엇입니까?
구조화된 영어는 기본 영어입니다. 프로그램 모듈의 프레임워크 생성에 채택됩니다. 프로그래밍 언어의 키워드를 사용합니다. 한편, 의사 코드는 특정 구문이 없는 프로그래밍 언어와 유사합니다.
37. CASE 도구를 정의합니다.
CASE는 Computer Aided Software Engineering의 약자입니다. SDLC 활동을 지원, 향상 및 강화하는 자동화된 소프트웨어 애플리케이션 프로그램의 집합입니다.
38. 함수형 프로그래밍을 정의합니다.
이 프로그래밍 방법은 수학적 함수 개념을 사용합니다. 수학적 함수 형태로 계산 방법을 제공하며 프로그램 상태와 관계없이 결과를 생성합니다.
39. 품질 보증과 품질 제어의 차이는 무엇입니까?
품질 보증은 소프트웨어 개발 시 적절한 프로세스를 따르도록 보장하는 반면, 품질 제어는 소프트웨어 제품의 품질 유지에 관심을 갖습니다.
40. 어느 프로세스 모델이 소프트웨어의 문제가 발생하기 전에 결함을 제거합니까?
클린룸 소프트웨어 엔지니어링 방법은 어려움 없이 이를 수행할 수 있습니다.
41. EXE와 DLL의 차이는 무엇입니까?
EXE는 실행 가능한 프로그램이지만, DLL은 프로그램에 의해 동적으로 로드되고 실행될 수 있는 파일입니다. 프로그램의 외부 코드 저장소입니다. 다른 프로그램이기 때문에 파일에 코드를 소유하는 것이 아니라 동일한 DLL을 공유해야 합니다. 또한 필요한 저장 공간의 양을 줄입니다.
42. 프로세스와 스레드의 차이는 무엇입니까?
프로세스는 컴퓨터 프로그램의 유형입니다. 단일 프로그램에 하나 이상의 스레드가 있을 수 있습니다.
43. 인터페이스 지향, 객체 지향 및 측면 지향 프로그래밍의 차이는 무엇입니까?
- 인터페이스 지향 프로그래밍은 계약을 기반으로 합니다.
- 객체 지향 프로그래밍은 단일 목적을 가진 세분화된 객체를 생성하는 방법입니다.
- 측면 지향 프로그래밍의 목표는 다양한 객체가 주요 작업을 수행하고 독립적인 객체가 보조 작업을 수행하도록 코드를 분리하는 것입니다.
44. 강한 타이핑과 약한 타이핑의 차이는 무엇입니까? 어느 것이 더 좋습니까? 왜?
강한 타이핑은 컴파일 시간에 변수 타입을 확인합니다. 약한 타이핑은 런타임에 시스템 타입을 확인합니다. 강한 타이핑이 항상 선호되는 이유는 버그를 줄이기 때문입니다.
45. 요구사항을 어떻게 정리합니까?
먼저 데이터 구조를 분석하여 시스템을 만들어야 합니다. 그런 다음 이를 지원하기 위해 필요한 코드 구조를 고려해야 합니다.
46. catch(exception)를 사용하는 것이 항상 나쁜 이유는 무엇입니까?
변수가 정의되지 않아서 예외를 볼 수 없기 때문에 나쁜 생각입니다.
47. HTTP 헤더를 통해 어떤 종류의 데이터가 전달됩니까?
메타데이터와 스크립트는 HTTP 헤더를 통해 전달될 수 있습니다.
48. 구성 요소 기반 설계와 객체 지향 설계의 차이는 무엇입니까?
구성 요소 기반 설계는 객체 지향 설계를 쉽게 캡슐화할 수 있습니다.
49. 스택과 큐의 차이는 무엇입니까?
– 큐에서 선입선출이 항상 규칙입니다.
– 스택은 항상 후입선출입니다.
50. 다형성은 언제 사용해야 합니까?
다형성은 클래스를 상속할 때 재정의 기능이 필요한 경우에 사용됩니다. 모든 것이 공유 클래스 및 공유 계약에 귀결됩니다.
51. 분기와 태그의 차이는 무엇입니까?
태그는 릴리스 버전 관리에 사용되며 임시 저장소 위치 역할을 하며 삭제되지 않습니다. 그러나 변경 사항이 트렁크에 병합되면 분기가 삭제됩니다.
52. 소프트웨어 유지보수가 비싸다고 생각하십니까?
소프트웨어 유지보수는 수행해야 할 서비스와 시스템이 얼마나 많은 복구가 필요한지에 크게 달려 있습니다. 따라서 소프트웨어가 처음부터 올바르게 개발되었다면 유지보수 비용이 생각보다 실질적으로 낮을 것입니다.
53. 코드 품질을 테스트하는 데 필요한 것은 무엇입니까?
단위 테스트 프레임워크는 코드 품질을 테스트하는 데 중요합니다.
54. 보호된 클래스 수준 변수는 어디에서 찾을 수 있습니까?
기본 클래스에서 파생된 모든 서브클래스는 보호된 클래스 수준 변수에 액세스할 수 있습니다.
55. 클래스를 추상으로 표시해야 하는 경우는 언제입니까?
다음의 경우 추상 클래스를 선언할 수 있습니다:
1. 클래스가 추상 클래스에서 상속되지만 모든 추상 메서드가 오버라이드되지 않은 경우
2. 클래스에서 최소 하나의 메서드가 추상으로 선언된 경우
56. 여러 catch 블록이 단일 try 명령문에 응답하여 실행될 수 있습니까?
예. 단일 try 명령문의 경우 여러 catch 블록을 실행할 수 있습니다.
57. 커플링이란 무엇입니까?
모듈 간의 상호 의존도는 커플링으로 정의됩니다. 커플링 수준은 일반적으로 좋은 소프트웨어에서 낮습니다.
결론
이 기사가 소프트웨어 개발을 위한 인터뷰 질문을 완료하는 데 도움이 되기를 바랍니다. 소프트웨어 엔지니어 면접에서 면접관이 질문할 수 있는 소프트웨어 엔지니어 면접 질문의 종류에 대한 정해진 규칙은 없습니다. 조직과 면접을 보고 있는 직책에 따라 다릅니다.
따라서 면접 전에 충분히 조사하고, 당일에는 가장 자신감 있는 모습을 보여 주시기 바랍니다. 소프트웨어 엔지니어 면접에 행운을 빕니다! 그리고 새로운 인재를 채용하려는 채용 담당자들에게 행운을 빕니다!









