소프트웨어 엔지니어링 면접 질문 및 답변 [신입생 및 경험자 대상]

게시 됨: 2020-11-18

소프트웨어 엔지니어링은 오늘날 가장 인기 있는 직업 선택 중 하나입니다. 이 경쟁적인 분야에서 성공적인 전문가들은 게임에서 앞서 나가기 위해 기술, 비즈니스 및 개인 기술의 균형을 유지해야 합니다.

또한 기술 발전은 산업을 가속화하고 파괴하고 있습니다. 따라서 기본 개념을 숙지하는 것이 중요합니다. 이 기사를 통해 최고의 소프트웨어 엔지니어링 면접 질문과 답변 을 다루어 준비에 도움이 될 것입니다.

Q&A로 이동하기 전에 먼저 이 영역에서 수행할 수 있는 몇 가지 직무 지정을 살펴보겠습니다.

  • 소프트웨어 디자이너
  • 풀스택 개발자
  • 소프트웨어 프로그래머
  • IT 프로젝트 관리자
  • 정보 시스템 관리자
  • 데이터 과학자
  • 기계 학습 엔지니어
  • 클라우드 엔지니어
  • 사이버 보안 엔지니어

위의 위치 중 하나에 대해 인터뷰할 때 장래의 고용주는 귀하의 개념적 지식과 기술을 테스트할 것입니다. 따라서 야심 찬 소프트웨어 엔지니어는 실습 프로젝트 또는 인턴십을 통해 학위와 실제 경험을 결합하여 이점을 얻을 수 있습니다.

게다가, 당신의 커뮤니케이션 능력과 팀 지향성은 당신을 경쟁자와 차별화하는 데 중요한 역할을 할 수 있습니다. 따라서 채용 주기를 준비할 때 이러한 사항을 염두에 두십시오.

세계 최고의 대학에서 온라인 소프트웨어 과정배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

이제 소프트웨어 엔지니어링 면접에서 가장 많이 받는 질문에 대해 알아볼 차례입니다.

읽기: 소프트웨어 개발 경력

소프트웨어 공학 면접 질문 및 답변

1. 다양한 유형의 소프트웨어를 나열하십시오.

컴퓨터 소프트웨어는 다음 범주로 분류할 수 있습니다.

  • 시스템 소프트웨어
  • 응용 소프트웨어
  • 웹 애플리케이션
  • 임베디드 소프트웨어
  • AI 소프트웨어
  • 과학 소프트웨어

2. 컴퓨터 프로그램과 컴퓨터 소프트웨어를 구별하십시오.

컴퓨터 프로그램은 실행 시 잘 정의된 작업을 수행할 수 있는 프로그래밍 코드를 포함합니다. 반대로, 컴퓨터 소프트웨어에는 프로그래밍 코드 외에 파일(문서 및 사용자 가이드)이 포함됩니다. 따라서 프로그램과 소프트웨어 모두 일련의 명령을 포함하지만 소프트웨어의 범위는 프로그램에 비해 더 넓습니다.

3. SDLC의 주요 단계를 설명합니다.

SDLC는 소프트웨어 개발 수명 주기의 짧은 형식입니다. 다음을 포함한 많은 단계로 구성됩니다.

  • 계획: 소프트웨어 평가 및 프로젝트 계획의 기타 측면
  • 타당성 분석: 요구사항 분석, 소프트웨어 사양 나열
  • 소프트웨어 디자인: 디자인 패턴 결정, 프로토타입 개발
  • 소프트웨어 개발: 요구 사항을 작업 코드로 변환
  • 테스트: 명시된 요구 사항, 품질, 보안 개발 관행 등에 대한 코드 확인
  • 배포: 소프트웨어를 구현하고 다른 시스템과 통합하여 완전한 기능의 제품을 생성합니다.
  • 프로젝트 문서화: 리소스를 수집하고 코드, 문서 및 라이선스를 포함하여 소프트웨어 파일을 구성합니다.
  • 교육 및 지원: 새로운 기술의 사용, 기능 및 가능성을 알리고 효과적인 지식 이전을 촉진합니다.
  • 운영 및 유지 관리: 문제 보고 및 제품 개선

4. 몇 가지 기본적인 SDLC 모델과 방법론을 나열하십시오. 당신에 따르면, 어느 것이 최고입니까?

Waterfall, V-Model, Iterative, Spiral, Big-bag 및 Agile은 가장 인기 있는 SDLC 모델 중 일부입니다.

최고의 방법론은 소프트웨어 개발 프로세스의 필요성에 따라 솔루션이 달라지기 때문에 정답은 없습니다. 예를 들어, 폭포 모델은 유연성이 선호되는 장기 프로젝트에 적합합니다. V자형 모델은 알려지지 않은 요구 사항이 있을 때 잘 작동합니다. Spiral 모델은 고도로 맞춤화된 프로젝트 등에 이상적입니다.

5. 소프트웨어 리엔지니어링이란 무엇을 의미합니까?

소프트웨어 리엔지니어링은 소프트웨어 시스템을 개선하는 것을 목표로 합니다. 현재 기능을 방해하지 않고 소프트웨어를 업데이트하는 프로세스입니다. 여기에는 소프트웨어 제품을 보다 효율적이고 사용자 친화적으로 만들기 위해 새로운 기능을 추가하는 것과 같은 유지 관리 작업이 포함될 수 있습니다.

6. 소프트웨어 개발의 맥락에서 다음을 정의하십시오. (i) 검증 (ii) 검증 (iii) 디버깅

(i) 검증에는 소프트웨어가 특정 기능을 구현할 수 있는지 확인하기 위한 일련의 활동 수행이 포함됩니다.

(ii) 검증은 소프트웨어가 클라이언트의 요구를 충족하는지 확인하는 것입니다.

(iii) 디버깅은 오류 제거를 포함하여 테스트 프로세스의 일부입니다.

7. 귀하의 코드가 빠르고 안전하다는 것을 어떻게 보장하시겠습니까?

코드 실행이 느리면 프로그램의 시간 복잡도를 계산합니다. 명령문이 실행되는 횟수를 말하며 다른 요인 중에서 프로그래밍 언어, 운영 체제 및 처리 능력에 따라 다릅니다.

또한 사용하는 프로그래밍 언어에 관계없이 코드를 보호하는 몇 가지 방법이 있습니다. 여기에서 보안 코딩 관행에 대한 지식이 필수적입니다. 예를 들어, 무료 도구로 코드를 스캔하면 GitHub의 오픈 소스 패키지에서 취약점을 감지하는 데 도움이 될 수 있습니다.

8. 기능 및 비기능 소프트웨어 요구 사항은 무엇입니까?

요구 사항은 소프트웨어 시스템, 원하는 기능 및 대상 기능에 대한 설명입니다. 기능적 요구사항과 비기능적 요구사항으로 나눌 수 있습니다.

기능적 요구사항은 사용자가 제안된 제품에서 기대하는 것이고 비기능적 요구사항은 모양, 성능, 보안 및 사용자 인터페이스와 같은 측면과 관련됩니다.

9. 소프트웨어 요구 사항을 어떻게 추적합니까?

시장에는 소프트웨어 요구 사항을 수집하고 관리하는 데 사용할 수 있는 다양한 도구가 있습니다. Modern Requirements, ReQtest, Jama Connect 및 Orcanos는 오늘날 실무자들 사이에서 가장 많이 찾는 RM 소프트웨어입니다. 선택은 방법론과 목표를 기반으로 하며 프로젝트마다 다릅니다. 그럼에도 불구하고 추적 프로세스의 첫 번째 단계는 요구 사항을 나열하고 유형, 종속성, 우선 순위 등과 같은 세부 정보가 포함된 Excel 시트를 만드는 것입니다.

10. 모듈화와 응집력에 대해 무엇을 알고 있습니까?

모듈화는 소프트웨어 시스템을 개별 모듈로 나눕니다. 여기에서 모든 모듈은 지정된 작업을 독립적으로 수행해야 합니다. 응집력은 모듈의 서로 다른 요소 간의 상호 의존성을 측정하고 정의합니다.

11. 소프트웨어 프로젝트 관리자는 어떤 일을 합니까?

프로젝트 관리자는 프로젝트 계획, 진행 상황 모니터링 및 커뮤니케이션과 같은 책임을 맡습니다. 소프트웨어 개발 프로세스에서 프로젝트 관리자의 주요 임무는 리소스를 관리하고 위험의 균형을 맞추며 시간, 비용 및 품질 제약을 준수하여 의도한 제품을 제공하는 것입니다.

12. 소프트웨어 범위란 무엇입니까?

소프트웨어 범위에는 소프트웨어 제품을 제공하는 데 필요한 모든 활동이 포함됩니다. 개발 프로세스를 간소화하기 위해 다음 측면을 정의합니다.

  • 제품이 할 일
  • 프로젝트의 일부가 아닌 것
  • 프로젝트 추정(컨설턴트, 전문가 또는 공식의 도움으로)

13. 프로젝트의 타당성을 어떻게 결정할 것인가?

타당성 조사는 소프트웨어 개발 프로젝트가 조직에 가져올 수 있는 실질적인 이점을 측정하는 데 도움이 됩니다. 소프트웨어 분석가는 최종 보고서를 준비하기 전에 세 가지 주요 요소를 고려합니다. 아래에서 자세히 설명했습니다.

  • 경제성: 추가 기능 및 도구 비용, 교육 비용, 최종 프로젝트의 전체 비용 편익 분석
  • 기술: 사용 가능한 기술 지원 및 인적 자원으로 제안된 시스템을 개발할 가능성을 포함하여 기계 및 운영 소프트웨어의 적합성
  • 운영: 조정을 수행하고 예상 비용으로 프로젝트의 가치와 수요를 따라갈 수 있는 능력.

14. 몇 가지 소프트웨어 분석 및 설계 도구를 언급하십시오.

소프트웨어 분석 및 설계 절차는 요구 사항 사양을 구현으로 변환하는 데 도움이 됩니다. 다음은 몇 가지 표준 도구입니다.

  • 데이터 흐름 다이어그램
  • 데이터 사전
  • 구조화된 차트
  • HIPO(계층적 입력 프로세스 출력) 차트
  • 엔티티 관계 또는 ER 다이어그램
  • 의사결정 테이블

15. 구조화된 영어와 유사 코드의 차이점은 무엇입니까?

프로그램 모듈의 구조를 작성하는 데 사용되는 모국어를 Structured English라고 합니다. 여기에는 프로그래밍 언어 키워드가 포함됩니다.

대조적으로, 의사 코드 방법론은 프로그래밍 언어와 매우 유사하지만 특정 구문이 없습니다.

더 읽어보기: 소프트웨어 개발 프로젝트 아이디어

16. 소프트웨어 제품의 크기는 어떻게 알 수 있습니까?

전달된 코드의 줄이나 기능 포인트를 계산하여 소프트웨어 크기를 계산할 수 있습니다. 기능 포인트는 소프트웨어 제품에서 제공하는 기능을 나타내므로 관련 측정으로 간주됩니다.

17. 소프트웨어 메트릭이란 무엇입니까?

소프트웨어 메트릭은 요구 사항과 제품 자체의 측정치를 나타냅니다.

  • 요구 사항 메트릭에는 길이 및 완전성과 같은 측면이 포함됩니다.
  • 제품 메트릭은 코딩 라인 수, 디자인, 테스트 메트릭, 객체 지향 메트릭 등과 관련됩니다.

18. 유용한 프로젝트 추정 기법은 무엇입니까?

프로젝트 추정은 건전한 소프트웨어 프로젝트 계획의 필수적인 부분입니다. 다음은 널리 사용되는 몇 가지 방법입니다.

  • 분해(소프트웨어 크기 조정, 문제 기반 및 프로세스 기반 기술)
  • 경험적(회귀 분석, 건설적 비용 모델 및 소프트웨어 방정식)

19. 프로젝트 실행을 어떻게 측정하시겠습니까?

소프트웨어 구현 검토에는 활동 모니터링, 이정표 체크리스트 및 상태 보고서가 수반됩니다.

프로젝트 관리 도구는 진행 상황을 확인하는 편안한 방법을 제공합니다. Gantt 차트, Pert 차트 및 리소스 히스토그램이 몇 가지 다른 예입니다.

20. 소프트웨어 구성 관리를 정의합니다.

구성 관리는 소프트웨어 프로젝트의 변경 사항을 추적하고 제어하는 ​​것입니다. 조직의 규칙 및 규정에 따라 소프트웨어 시스템의 일관성을 유지하는 것이 중요합니다.

21. 품질 보증과 품질 관리의 차이점은 무엇입니까?

품질 보증 검사는 적절한 개발 프로세스를 따랐는지 여부를 확인하기 위해 수행됩니다. 반면에 품질 관리는 최종 제품의 품질을 유지하는 것과 관련이 있습니다.

22. 인터페이스 지향, 객체 지향 및 측면 지향 프로그래밍을 비교하십시오.

인터페이스 프로그래밍은 구성 요소 수준에서 모듈식 설계를 달성하기 위해 적용되는 계약 기반 아키텍처 패턴입니다.

객체 지향 프로그래밍은 단일 목적을 가진 세분화된 객체 작성을 다룹니다.

Aspect 지향 프로그래밍은 코드를 분리하여 여러 개체가 주요 작업을 수행하고 독립 개체가 보조 작업을 수행하도록 하는 것을 목표로 합니다.

23. 클래스를 추상으로 선언할 때?

선언에 추상 키워드를 포함하는 클래스는 인스턴스화할 수 없습니다. 아래에 언급된 상황에서는 클래스를 추상으로 선언하는 것이 가장 좋습니다.

  • 클래스의 메서드 중 하나 이상이 추상으로 선언된 경우.
  • 추상 클래스에서 상속된 클래스에 여전히 추상 메서드가 포함되어 있는 경우.

24. 다음의 주요 차이점을 언급하십시오. (i) 스택 대 큐 (ii) 객체 지향 대 구성 요소 지향 설계 (iii) 스레드 대 프로세스 (iv) EXE 대 DLL (v) 태그 및 분기

(i) 스택은 LIFO(Last In, First Out) 원칙을 따릅니다. 반면 대기열은 항상 FIFO, 즉 선입선출입니다.

(ii) 객체지향 설계는 컴포넌트 기반 설계에 어느 정도 통합될 수 있다. 그러나 그 반대는 불가능합니다.

(iii) '프로세스'는 실행 중인 컴퓨터 프로그램의 인스턴스를 말합니다. 더 무겁고 더 많은 컨텍스트 전환이 필요합니다. '스레드'는 스케줄러가 독립적으로 관리하는 가벼운 프로세스입니다. 단일 프로그램은 둘 이상의 스레드를 가질 수 있습니다.

(iv) EXE와 DLL은 모두 실행을 위해 저장 공간이 필요한 프로그램입니다. EXE는 기본 실행 프로그램이지만 DLL은 더 동적입니다. 로드하고 실행할 수 있는 외부 코드 리포지토리이므로 공간을 덜 차지합니다.

(v) 태그는 코드의 특정 버전에 남아 있으며 일반적으로 변경되지 않습니다. 버전 관리 릴리스를 위한 임시 보관 장소 역할을 합니다. 분기는 항상 개발 라인의 맨 위를 가리킵니다. 따라서 새 커밋이 푸시되거나 변경 사항이 트렁크에 병합되면 삭제됩니다.

25. catch(예외)를 사용하는 것이 좋은 생각입니까?

예외 유형을 알고 있는 경우 catch(예외)를 사용해야 합니다. 변수가 정의되지 않은 경우 예외를 읽을 수 없으므로 나쁜 생각입니다.

26. 강한 형식과 약한 형식 중 어느 것이 더 낫습니까?

강력한 타이핑은 컴파일 타임에 변수를 확인하기 때문에 약한 타이핑을 1업(one-up)해야 합니다. 또한 시스템 버그를 상당히 최소화할 수 있습니다. 약한 형식의 언어는 런타임에만 변환을 수행하며 예측할 수 없는 결과를 생성할 수 있습니다.

27. 구조화된 디자인이란 무엇입니까?

구조적 설계는 '분할 및 정복' 전략에 따라 문제를 개념화합니다. 이 체계적인 접근 방식은 문제를 하위 요소로 분해하고 이러한 작은 문제를 개별적으로 처리하는 것을 수반합니다. 이 전술로 인해 솔루션 설계 방법이라고도 합니다.

28. 함수형 프로그래밍을 설명합니다.

함수형 프로그래밍 방법에는 수학적 개념의 적용이 포함됩니다. 수학 함수를 계산하는 방법을 제공하므로 프로그램 상태에 관계없이 결과를 생성합니다.

29. 요구 사항의 우선 순위를 어떻게 정합니까?

무엇보다 먼저 데이터 구조를 평가해야 합니다. 그런 다음 이를 지원하는 코드 구조를 공식화해야 합니다.

30. CASE 도구에 대해 무엇을 알고 있습니까?

CASE는 Computer-Aided Software Engineering의 약어입니다. SDLC 활동을 지원하는 자동화된 소프트웨어 애플리케이션 세트로 구성됩니다. CASE 도구는 다음 서비스를 제공하여 소프트웨어 프로젝트를 강화하고 강화할 수 있습니다.

  • 요구사항 분석
  • 구조해석
  • 코드 생성
  • 테스트 케이스 생성
  • 문서 제작
  • 리버스 엔지니어링

테이크아웃

노동 통계국(미국)은 소프트웨어 개발자에 대한 수요가 향후 10년 동안 22% 성장할 것으로 예상합니다. 그리고 인도도 동일한 수요 급증에 직면할 것입니다.

LinkedIn의 'Workforce Report for India'에 따르면 LinkedIn 플랫폼의 소프트웨어 엔지니어링 구인 공고는 2018년 상반기 여러 산업 분야에서 가장 높았습니다. 앞으로 나아가면서 교육, 법률 및 디자인과 같은 저명한 분야의 기회는 계속 상승. 인도의 소프트웨어 개발자 급여에 대해 읽어보십시오.

위에 나열된 질문을 통해 알 수 있듯이 이 직업에 진입하려는 사람은 광범위한 상호 관련된 역량이 필요합니다. 다음은 파악해야 하는 어려운 기술의 스냅샷입니다.

  • C++, C#, 자바
  • HTML, CSS 자바스크립트
  • SQL, 파이썬, 부트스트랩
  • 객체 지향 설계
  • 디버깅 및 테스트 소프트웨어
  • 현대 언어로 코딩(Ruby, Go, R 등)
  • 인공지능 프로젝트 지식 등

이러한 기술적 능력 외에도 멀티태스킹, 커뮤니케이션, 시간 관리, 세부 사항에 대한 관심, 팀워크의 기술을 마스터해야 합니다.

교육 자격의 경우 컴퓨터 과학 또는 관련 분야의 학사 학위는 일반적으로 초급 직업에 대한 최소 자격 기준을 다룹니다. 그러나 모든 사람의 진로는 조금씩 다릅니다. 일부는 자습, 온라인 과정 또는 코딩 부트캠프를 통해 직장에 입사했을 수 있습니다. 다른 사람들은 몇 년 동안 IT에서 일한 후 고급 학위를 추구했을 수 있습니다.

대학원 수준의 자격 증명을 보유하면 경력을 시작하고 탐내는 직업 승진을 얻는 데 도움이 될 수 있습니다. 리버풀 존 무어스 대학에서 인증한 upGrad의 컴퓨터 공학 석사를 확인하십시오. 고도로 상호 작용하는 교육학을 통해 산업 관련 기술을 갖추는 것을 목표로 합니다.

또한 관심과 경력 포부에 따라 소프트웨어 개발의 Executive PG 프로그램 – IIIT-B의 전체 스택 개발 전문화 또는 전문 PG 인증을 받을 수 있습니다. 이러한 수료증은 석사 및 디플로마 과정에 비해 소요 시간이 짧습니다. 이를 통해 백엔드 개발, 프론트엔드 개발, 사이버 보안, DevOps, 빅 데이터 및 클라우드 컴퓨팅과 같은 특정 영역에서 기술을 입증할 수 있습니다.

이것으로 우리는 최고의 소프트웨어 엔지니어링 인터뷰 질문과 답변 을 다뤘습니다 . 우리는 일반적인 주제와 기술적인 주제를 포함하려고 했습니다. 또한, 우리는 잠재적인 직업 선택에 대해 언급하고 IT 산업의 동향과 전망에 대한 개요를 제공했습니다. 이 정보를 학습 여정의 이정표로 사용하고 준비 전략을 간소화하십시오!

당신의 꿈의 직업에 착륙

컴퓨터 공학 석사 지원