개발자 기술 면접 질문, 답 20가지
1. 오버로딩과 오버라이딩이 무엇인가?
- 오버로딩(Overloading): 하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것을 의미한다.
- 오버라이딩(Overriding): 조상 클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 재정의 하는 것을 의미한다.
2. 객체지향 프로그래밍이란?
- 객체지행 프로그래밍이란 컴퓨터 프로그래밍 방식 중 하나로, 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
3. 운영체제란?
- 시스템의 자원과 동작을 관리하는 소프트웨어 (프로세스, 저장장치, 네트워킹, 사용자, 하드웨어 관리)
4. 가상 메모리란?
- 모든 프로세스에게 메모리를 할당하기에는 메모리의 크기에 한계가 있기 때무에 사용하는 방법이다. 프로세스에서 사용하는 부분만 메모리에 올리고, 나머지는 디스크에 보관하는 기법을 말한다.
5. 함수형 프로그래밍
- 함수형 프로그래밍의 가장 큰 특징은 immutable data와 first class citizen으로서의 함수이다.
함수형 프로그램밍은 부수효과가 없는 순수 함수를 이용하여 프로그램을 만드는 것이다. 부수효과 없는 순수 함수란 데이터의 값을 변경시키지 않으며, 객체의 필드를 성정하는 등의 작업을 하지 않는 함수를 의미한다.
6. 절차지향과 객체지향의 차이점
- 절차지향은 수행되어야 할 연속적인 계산과 과정을 포함하고 있는 프로그래밍
- 객체지향은 강한 응집력과 약한 결합력을 위한 현실세계의 객체라는 개념을 이용한 프로그래밍
7. OOP(객체지향 프로그래밍)의 4가지 원칙
- 캡슐화: 실제 구현 부분을 외부에 드러나지 않는 접근 제어자/인터페이스를 의미한다.
- 상속: 이미 정의된 클래스의 모든 속성과 연산을 하위 클래스가 물려 받는 것을 의미한다.
- 추상화: 인터페이스로 클래스들의 공통적인 특성들을 묶어 표현하는 것을 의미한다.
- 다형성: 하나의 참조 변수로 여러 타입의 객체를 참조할 수 있는 것을 의미한다.
8. OOP(객체지향 프로그래밍)의 5가지 원칙[SOLID]
- SRP(단일 책임 원칙): 한 클래스는 하나의 책임만 가져야 한다.
- OCP(개방-패소 원칙): 소프트웨어 요소는 확장에는 열려 있으나, 변경에는 닫혀 있어야 한다.
- LSP(리스코프 치환 원칙) : 프로그램의 정확성을 깨뜨리지 않음면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
- ISP(인터페이스 분리 원칙): 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 나음을 의미한다.
- DIP(의존관계 역전 원칙): 클라이언트 코드가 구현클래스가 아닌 인터페이스만 바라봐야 한다.
9. 프레임워크와 라이브러리 차이
- 라이브러리: 사용자가 흐름에 대한 제어를 하며 필요한 상황에 가져다가 쓸 수 있다.
- 프레임워크: 전체적인 흐름을 자체적으로 제어한다.
10. 메세지 큐(Message Queue)란?
- 메세지 큐(Message Queue)란 Queue 자료구조를 이용하여 데이터(메세지)를 관리하는 시스템으로, 비동기 통신 프로토콜을 제공하여 메세지를 빠르게 주고 받을 수 있게 해준다. 메세지 큐에서는 Producer(생산자)가 Message를 Queue에 넣어두면, Consumer가 Message를 가져와 처리하게 된다. 메세지 큐에는 Kafka, Rabbit, MQ, AMPQ등이 있다.
11. Parameter와 Argument의 차이
- Parameter: 함수를 선언할 때 사용된 변수
- Agument: 함수가 호출되었을 때 함수의 파라미터로 전달되는 실제 값
12. RESTful API
- REST(REpresentational State Transfer)ful API는 HTTP 통신에서 어떤 자원에 대한 CRUD요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식이다.
13. 프로토콜이란?
- 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다.
14. IP란?
Internet Protocol의 약자로 인터넥 망을 통해 패킷을 전달하는 프로토콜이다.
15. Optional란?
- 값이 있을 수도, 없을 수도 있는 것을 나타낸다.
16. 추상 클래스와 인터페이스란?
- 추상클래스를 부분적으로 완성된 '미완성 설계도'라고 한다면 인터페이스는 구현된 것은 아무것도 없고 '밑드림만 그려진 기본 설계도'라고 할 수 있다.
17. 스레드란?
- 스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미한다.
18. 해시 란?
- 해시는에 매핑하여 데이터를 저장하는 자료구조이다. Key는 hash function을 통해 hash로 변경된 다으멩 value와 매핑되어 bucket에 저장되게 된다.
19. MVC란?
- M(Model): 내부 비즈니스 로직에 해당한다.
- V(View): 사용자 인터페이스(UI)를 의미한다.
- C(Controller): Model과 View사이에서 중계자 역할을 수행한다.
20. TCP, UDP
- TCP는 신뢰성 있는 통신을 위해 사용하는 프로토콜로 높은 신뢰성을 보장하지만, UDP보다 속다가 느립니다.
- UDP는 비연결형 프로토콜로 손상된 데이터에 대해서 재전송하지 않는다. 신뢰성이 낮지만, TCP보다 속도가 빨라 스트리밍 같은 서비스에서 주로 사용한다.