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방식은 주소값을 넘겨주므로 실행속도가 빠르다.
'OS' 카테고리의 다른 글
[개발상식] 안드로이드 기술면접 준비 - 1 (0) | 2022.11.06 |
---|---|
[개발상식] IT 기술면접 준비 - 4 (데이터 베이스) (0) | 2022.10.25 |
[개발상식] IT 기술면접 준비 - 3 (컴퓨터 구조) (0) | 2022.10.24 |
[개발상식] IT 기술면접 준비 - 3(운영체제) (0) | 2022.10.23 |
[개발상식] IT 기술면접 준비 - 2 (컴퓨터 네트워크) (0) | 2022.10.22 |