OS

[개발상식] IT 기술면접 준비 - 1(개발 상식)

이손안나 2022. 10. 21. 23:14

Q1. 좋은 코드 란?

- 프로그램 개발은 많은 사람이 협업하는 경우가 많습니다 여러 사람이 읽기 쉬운 가독성이 좋은코드, 코드가 중복되는 부분은 함수화해 둔 코드, 테스트하기 용이한 코드가 좋은 코드라고 생각합니다.

 

Q2. 절차지향 프로그램 vs 객체지향 프로그램 란?

- 절차지향 프로그래밍은 코드가 위에서 아래로 한 줄씩 순차적으로 실행되는 프로그래밍이며 이는 컴퓨터의 처리구조와 유사하여 실행속도가 빠르지만 디버깅이 어렵다는 단점이 있습니다.

- 객체 지향 프로그래밍은 데이터나 절차를 한 덩어리로 처리하는 프로그래밍 기법을 말합니다. 코드를 재사용하기 용이하며 디버깅이 쉽다는 장점이 있습니다. 반면 처리속도가 절차지향에 비하여 느리고 설계가 비교적 어렵다는 특징이 있습니다. 

 

💡 객체 지향 프로그래밍 4가지 특징

  • 추상화로 객체들의 공통점을 뽑아내어 속성과 메서드로 만든다.
  • 캡슐화로 외부로부터 데이터를 감추고 외부와의 상호작용 메서드를 이용한다.
  • 상속은 기존에 작성된 클래스의 속성을 물려받아서 새로운 클래스를 만드는것이다 (기존콛 재활용하기 용이)
  • 다형성으로 같은 코드로 다른 행위를 할 수 있게 한다.

Q3. 오버라이딩 vs 오버로딩 란?

- 오버라이딩은 부모클래스에 정의되어 있는 메서드를 자식클래스에서 재정의하여 사용하는 방법이다. (부모클래스 메서드 무시)

- 오버로딩은 같은 이름의 메서드를 여러 개 정의하되 매개변수의 유형과 개수를 달리하여 호출하는 방식을 말한다.

 

Q4. RESTful 하게 API를 디자인 하는 뜻?

- represental state transfer의 약자로 웹에 있는 자원을 http로 통하여 전달하기 위한 인터페이스이다.

- uri로 표현하는 리소스와 GET = 조회, PUT=수정, PATCH=일부 수정, DELETE=삭제와 같은 행위를 분리한다.

 

Q5. 테스트 주도 개발방법(TDD)  란?

- 테스트가 코드 작성을 주도하는 개발방식으로 새로운 기능을 추가하기 전에 테스트를 먼저 작성하는것이다.

- 장점은 검증된 테스트 코드로 인해 안정성을 높혀 주며 단점으로는 모든 상황에 대한 테스트 코드 작성이 어렵고 생산성의 저하가 따른다.

 

Q6. 함수형 프로그래밍이란?

- 함수형 프로그래밍이란 함수를 이용해서 사이트 이펙트가 없도록 선언적으로 프로그래밍을 하는것이다.

- 동일한 입력에 대하여 동일한 결과를 내는 어떤 결과를 얻는가에 초점을 둔 프로그래밍 기법이다.

 

Q7. MVC 패턴이란?

- mvc 패턴은 model-view-controller의 약자로 디자인 패턴 중 하나이다.

- 비즈니스 로직 영역과 사용자 인터페이스 영역을 구분하므로 서로 영향 없이 개발이 가능하다는 장점이 있다.

 

💡mvc

  • model: 사용자에게 보이지 않는 영역으로 데이터베이스 , 내부 알고리즘 등 백그라운드에서 동작하는 로직
  • view: 사용자에게 보여주는 영역
  • conroller: 모델과 뷰 사이를 연결하는 역할로 사용자의 입력처리와 흐름제어 담당을 한다.

 

Q8. call-by-value vs call-by-reference 란?

- call-by-value란 변수값을 복사하여 함수의 인자로 전달하는 것을 말한다. 인자는 함수 내에서만 사용할 수 있는 지역변수의 특징이 있다.

- call-by-reference란 변수의 주소값을 복사하여 함수의 인자로 전달하는 것을 말한다. 함수 안에서 값이 변경된다면 주소값에 해당하는 변수값도 변경된다.

 

❗️ 배열을 함수의 인자로 넘겨줘야할 때 call-by-value 방식은 배열을 복사하여 함수의 인자로 넘겨주므로 실행속도가 느리지만 call-by-reference방식은 주소값을 넘겨주므로 실행속도가 빠르다.