Interview Question 8

[Interview Question] 선언형과 명령형 프로그래밍의 차이점은?

프로그래밍에는 "무엇을 해야 할지"만 말하는 방식과 "어떻게 해야 할지"까지 지시하는 방식이 있다. 바로 이 차이가 선언형(Declarative)과 명령형(Imperative) 프로그래밍의 차이이다. 선언형 프로그래밍이란?'선언형 프로그래밍' 은 "무엇을 할 것인지(What)"에 집중하는 프로그래밍 방식이다. 즉, "어떻게 처리할지(How)"는 신경 쓰지 않고, 원하는 결과만을 기술한다. 개발자가 결과를 선언하면 구체적인 처리방법은 언어나 라이브러리가 내부적으로 처리한다. 예시 코드List numbers = Arrays.asList(1, 2, 3, 4, 5, 6);List evenNumbers = numbers.stream() .filter(..

Interview Question 2025.06.10

[백엔드 면접 질문 준비] (7) RDB에서 페이징 쿼리의 필요성

페이징 쿼리(Paging Query)란?페이징 쿼리(Paging Query) 는 전체 데이터를 부분적으로 나누어 데이터를 조회하거나 처리할 때 사용됩니다. 데이터를 상대적으로 작은 단위로 나누어 처리하기 때문에 데이터베이스나 애플리케이션의 리소스 사용 효율이 증가하며, 로직 처리 시간을 단축 시킬 수 있습니다. MySQL에서 페이징 쿼리는 일반적으로 LIMIT, OFFSET 구문을 사용하여 작성합니다. 페이징 쿼리를 왜 사용할까?1. 데이터의 물리적 양실제 서비스에서는 수천, 수만, 수십만 개의 데이터가 존재할 수 있습니다.한 번에 모든 데이터 조회시 발생하는 이슈DB에 과부하 발생네트워크 전송량 증가사용자 브라우저에서도 렌더링 부담2. 사용자 경험 측면사용자는 한 번에 모든 상품을 보기 힘듬일반적으로 ..

Interview Question 2025.04.15

[백엔드 면접 질문 준비] (6) JVM이란 무엇인가?

JVM이란?JVM(Java Virtual Machine)은 자바 프로그램을 실행하기 위한 가상 머신(Virtual Machine)입니다. 이름 그대로 물리적인 컴퓨터가 아니라, 프로그램 위에서 동작하는 소프트웨어 기반의 컴퓨터라고 이해할 수 있습니다. 자바로 작성된 코드는 .java 파일로 저장된 뒤, 자바 컴파일러(javac)를 통해 바이트코드(.class)로 변환됩니다. 이 바이트코드는 OS나 하드웨어와 무관한 중간 형태의 코드이며, JVM이 이 바이트코드를 해석하거나 실행합니다. 즉, JVM은 자바 바이트코드를 받아서 실제로 프로그램이 동작하도록 만들어주는 역할을 합니다. 왜 JVM이 필요한가?JVM의 가장 큰 특징은 운영체제(OS)에 독립적이라는 점입니다. 자바는 "한 번 작성하면, 어디서나 실행..

Interview Question 2025.04.05

[백엔드 면접 질문 준비] (5) 프로세스와 스레드의 차이는 무엇인가요?

프로그램 → 프로세스 → 스레드 : 실행 단위의 흐름프로그램 : 아직 실행되지 않은 정적인 파일 (예: .exe, .jar 등)프로세스 : 프로그램이 실행되어 운영체제로부터 자원을 할당받은 단위스레드 : 프로세스가 할당받은 자원을 사용하여 실제로 작업을 수행하는 실행 흐름의 단위코드 덩어리인 프로그램이 실행되면 프로세스가 되고, 그 안에서 작업을 수행하는 흐름이 스레드입니다. 프로세스(Process)란?실행 중인 프로그램으로, OS로부터 독립된 메모리 공간을 할당받음각 프로세스는 Code, Data, Heap, Stack 등의 메모리 공간을 독립적으로 가짐하나의 프로세스는 다른 프로세스에 직접 접근할 수 없음 (보안상 격리됨)예시: 크롬과 카카오톡을 동시에 실행하면 각각 독립적인 프로세스입니다.스레드(T..

Interview Question 2025.04.04

[백엔드 면접 질문 준비] (4) CI/CD란?

1. CI/CD란?- CI: Continuous Integration (지속적인 통합)CI는 여러 개발자들이 각자 개발한 코드를 공통된 저장소에 자주 통합하는 프로세스를 말합니다. 주요 목적은 코드 변경 사항을 빠르게 검증하고, 통합 시 발생할 수 있는 충돌을 최소화하는 것입니다.코드 푸시 시 자동으로 테스트 실행빌드 에러, 문법 오류, 테스트 실패 즉시 확인 가능팀원 간 빠른 피드백과 충돌 방지- CD: Continuous Delivery / Continuous Deployment (지속적인 전달 / 배포)CD는 CI 이후의 단계로, 테스트를 통과한 코드를 실제 운영환경 또는 staging 서버에 자동으로 배포하는 것을 의미합니다.Continuous Delivery: 운영 직전 단계까지 자동화 (운영 ..

Interview Question 2025.04.03

[백엔드 면접 질문 준비] (3) HTTP 상태 코드에 대해 말해보세요.

HTTP 상태 코드(Status Code)란?HTTP 상태 코드는 클라이언트의 요청에 대해 서버가 응답하는 "처리 결과"를 숫자로 알려주는 방식입니다. 총 5가지 범주로 나눌 수 있습니다.1xx (Informational): 정보 제공100 Continue: 요청의 일부를 받았고, 나머지를 계속 보내도 됨2xx (Success): 성공200 OK: 요청이 성공적으로 처리됨201 Created: 리소스가 성공적으로 생성됨 (POST 사용 시 자주 등장)204 No Content: 성공했지만 반환할 데이터가 없음 (DELETE 등)3xx (Redirection): 리다이렉션301 Moved Permanently: 리소스가 영구적으로 다른 위치로 이동함302 Found: 임시로 다른 URL에서 응답함4xx (..

Interview Question 2025.04.02

[백엔드 면접 질문 준비] (2) HTTP METHOD에 대해서 설명해 보세요.

HTTP(HyperText Transfer Protocol)는 클라이언트와 서버 간의 통신을 위한 프로토콜로, HTTP 메서드는 이 통신에서 요청의 '의도'를 표현합니다. 즉, 클라이언트가 서버에 "어떻게 해줘!"라고 요청하는 방식을 정의합니다. 주요 HTTP 메서드 소개- GET기능: 서버에서 리소스를 조회합니다.특징: 안전하고 멱등합니다. (요청을 여러 번 해도 결과가 같음)예시: /users/1 → ID가 1인 사용자 정보 조회- POST기능: 서버에 리소스를 생성합니다.특징: 멱등하지 않음. (같은 요청을 여러 번 보내면 데이터가 중복 생성될 수 있음)예시: /users에 사용자 정보 전달 → 새로운 사용자 생성- PUT기능: 리소스를 "전체" 수정합니다.특징: 멱등함.예시: /users/1에 사..

Interview Question 2025.04.02

[백엔드 면접 질문 준비] (1) DI와 IoC에 대해 설명해보세요.

Dependency Injection (의존성 주입)DI(의존성 주입)는 객체의 의존성을 외부에서 주입받는 기법입니다. 의존관계란? 'A가 B를 의존한다' 라고 했을 때, B가 변하면 A에도 영향을 끼치는 관계를 의미합니다. 특정 기능이나 서비스를 외부에서 받아와서 사용하는 방식인데요. DI를 사용하면 클래스 내부에서 새로운 객체를 직접 생성하는 대신 외부에서 필요한 객체를 받아 사용할 수 있습니다. 이를 통해 모듈 결합도를 낮추고 코드 재사용성과 테스트 용이성을 향상할 수 있습니다. 의존성 주입 방법 - 생성자 주입 방식class Eat { private Fruit fruit; public Eat() { this.fruit = new Fruit(); }}위 코드와 같이 E..

Interview Question 2025.03.31