-
[기술면접리뷰]개발자 면접(기술면접, 기술 외 질문)리뷰노트/기술면접 2023. 11. 23. 18:00
기술면접때 들어본 질문들 정리
기술면접
- Spring WebFlux 란?
Spring Framework 5에서 도입된 반응형 프로그래밍을 위한 모듈입니다. 비동기적이고 논블로킹 방식으로 서버 사이드 애플리케이션을 개발할 수 있게 해주며, 더 많은 요청을 더 효율적으로 처리할 수 있도록 설계되었습니다. WebFlux는 Spring의 기존 어노테이션 기반 프로그래밍 모듈과 함수형 스타일의 프로그래밍 모델을 모두 지원합니다.- [꼬리질문]리액티브 프로그래밍이란?
비동기 데이터 흐름과 변경의 전파에 중점을 두는 프로그래밍 패러다임입니다. 이는 데이터 스트림과 그 데이터에 의해 발생하는 변화를 쉽게 표현하고 관리할 수 있도록 합니다. 리액티브 프로그래밍은 시스템이 보다 탄력적이고 반응성이 뛰어나며 유지 관리가 용이하도록 돕습니다. 즉, 데이터의 흐름에 초점을 맞춰서 동작하며 리액티브 프로그래밍을 하면서 데이터를 비동기적으로 처리하고 이벤트 기반 아키텍처를 통해 실시간으로 데이터의 변화에 반응할 수 있게 프로그래밍이 가능합니다.
- [꼬리질문]리액티브 프로그래밍이란?
- 사용해 본 가장 낮은 버전 Java?
- 사용해 본 DB?
- [꼬리질문]RDMS, NoSQL 장단점?
RDMS(관계형 데이터베이스 시스템) 란
관계형 데이터베이스를 생성, 업데이트, 관리하는 시스템입니다. 관계형 데이터베이스는 데이터를 테이블 형식으로 저장하며 이 테이블들은 행과 열로 구성됩니다. 각 행은 고유한 키를 가지며 서로 다른 테이블 간에는 키를 통해 관계를 맺을 수 있습니다.
장점은 정규화된 데이터 구조, 복잡한 쿼리와 트랜잭션 지원, 데이터 무결성 보장이 있고
단점으로는 수평적 확장이 어렵고 대용량 데이터 처리에 한계가 있을 수 있습니다.
NoSQL 란
비관계형 또는 비SQL 데이터베이스를 위한 용어로 관계형 모델을 사용하지 않거나 이와 다른 방식으로 데이터를 저장합니다. NoSQL 데이터베이스는 다양한 데이터 저장 방식을 제공하며 대규모 분산 데이터의 저장과 빠른 쿼리 처리에 적합합니다.
장점은 빠른 읽기,쓰기 성능 그리고 유연한 데이터 모델과 수평적 확장이 용이합니다.
단점으로는 표준화된 쿼리 언어 부재 그리고 일부는 트랜잭션 처리가 제한적입니다.
- [꼬리질문]RDMS, NoSQL 장단점?
- Oracle 의 SELECT 문의 실행 순서?
- FROM 절
먼저, FROM 절이 처리됩니다. 이 단계에서는 쿼리에서 참조하는 테이블이나 뷰가 결정됩니다.
조인이 있는 경우, 여기서 관련된 테이블 간의 조인이 수행됩니다. - WHERE 절
WHERE 절은 FROM 절에서 지정된 테이블의 데이터 중에서 조건에 맞는 행을 필터링합니다. - GROUP BY 절
GROUP BY 절은 WHERE 절을 통과한 데이터를 특정 기준에 따라 그룹화합니다.
이 단계는 집계 함수(Aggregate Functions)와 함께 사용되어 각 그룹에 대한 합계, 평균 등의 집계 결과를 생성합니다. - HAVING 절
GROUP BY를 통해 생성된 그룹에 대해 추가적인 필터링을 수행합니다.
WHERE 절과 비슷하지만, GROUP BY로 생성된 그룹에 대한 조건을 지정하는 데 사용됩니다. - SELECT 절
SELECT 절은 최종적으로 출력할 컬럼을 결정합니다.
이 단계에서는 컬럼 이름이나 출력할 데이터에 대한 계산(예: 컬럼 간의 연산, 문자열 함수 사용 등)이 이루어집니다. - DISTINCT 절
SELECT 절 다음에 오는 DISTINCT 키워드는 중복된 결과를 제거하여 유니크한 결과만을 출력합니다. - ORDER BY 절
ORDER BY 절은 최종 결과 집합의 행을 특정 컬럼을 기준으로 정렬합니다.
이는 쿼리의 마지막 단계에서 수행되며, 출력되는 데이터의 순서를 결정합니다. - OFFSET/FETCH 절
이 부분은 결과 집합에서 특정 범위의 행만을 선택하거나, 행의 수를 제한하는 데 사용됩니다.
주로 페이징 처리에 사용됩니다.
- FROM 절
- DI의 장단점?
장점으로는 객체 간의 의존성이 감소하고 유닛 테스트 용이, 그리고 코드 재사용성 및 유지 보수성 향상이 있습니다.
단점은 오버헤드가 증가하고 디버깅의 복잡성이 증가합니다.
더보기오버헤드 증가란? -> DI를 위한 프레임워크는 런타임에 추가적인 오버헤드를 발생시킬 수 있습니다. 의존성 해결, 객체 생성 및 관리 등이 이에 해당됩니다.
디버깅의 복잡성 증가란? -> 의존성이 외부에서 주입되므로 시스템이 커지고 복잡해질수록 어떤 객체가 어떻게 연결되어 있는지 추적하기 어려워질 수 있습니다. - IOC 와 DI 란?
- IOC(제어의 역전)
제어의 역전(IoC)란 모든 객체에 대한(생성, 라이프사이클 등) 제어권을 개발자가 아닌 IoC 컨테이너에게 넘긴 것을 말합니다. - DI(Dependency Injection)
DI는 의존성 주입의 약자로, 객체들 간의 의존성을 줄이기 위해 사용되는 스프링의 IOC 컨테이너의 구체적 구현 방식을 말합니다.
- IOC(제어의 역전)
- 추상클래스와 인터페이스란
- 추상클래스(Abstract Class)
클래스 내에 추상 메소드가 하나 이상 포함되거나 abstract로 정의된 경우를 말합니다.
상속받는 클래스들의 공통적인 로직을 추상화 시키고 기능 확장을 위해 사용합니다.
다중상속이 불가능하지만 인터페이스는 다중상속이 가능합니다. - 인터페이스(Interface)
모든 메소드가 추상 메소드로만 이루어져 있는 것을 말합니다.
클래스가 인터페이스를 구현하면 인터페이스에 선언된 모든 메소드를 구현해야 합니다.
인터페이스를 통해 클래스 간의 결합도를 낮출 수 있으며, 유연하고 확장 가능한 코드를 작성할 수 있습니다.
- 추상클래스(Abstract Class)
- 사용해 본 프론트 프레임워크?
- tcp, http 차이점?
- TCP(Transmission Control Protocol)
전송 계층의 핵심 프로토콜이며 데이터의 정확한 전송을 보장합니다.
그리고 연결 지향적 프로토콜이며 데이터 패킷 손실 시 재전송합니다. - HTTP(Hypertext Transfer Protocol)
애플리케이션 계층의 프로토콜이며 웹 데이터 교환 표준입니다.
TCP 위에서 작동하며 주로 웹 브라우저와 서버 간 통신에 사용합니다.
- TCP(Transmission Control Protocol)
기술 외 질문
- 지원동기
- 개발자라는 직업을 선택한 계기
- 일하면서 가장 힘들었던 경험
- 자신의 장단점
- Spring WebFlux 란?