dailyrium
/find

[카테고리:] 자바 · 스프링

· 14 min read

Java & Spring Boot 면접 빈출 질문 정리

Java & Spring Boot 면접 빈출 질문 정리 📦 PART 1. Java 핵심 1. JVM 구조와 동작 원리 질문: JVM의 구조를 설명하고, 자바 코드가 실행되는 과정을 말해주세요. JVM은 크게 Class Loader, Runtime Data Area, Execution Engine 세 부분으로 구성된다. ① Class Loader.java → 컴파일 → .class(바이트코드) → Class Loader가 JVM 메모리에 로드한다.로딩 → 링킹(검증/준비/해석) → 초기화 순서로 진행된다. ② […]

· 8 min read

Gradle 명령어 모음: build, clean, test, bootRun 사용법

Gradlew 자주 쓰는 명령어 총정리: Spring Boot 빌드·실행·테스트·오류 해결까지 Gradle을 사용하는 Java 백엔드 개발자라면 ./gradlew build 정도는 익숙할 것입니다. 그런데 테스트 하나만 실행하고 싶을 때, 의존성이 제대로 내려받아지지 않을 때, Jenkins 빌드가 실패했을 때는 어떤 명령어를 사용해야 할까요? Gradle 명령어를 전부 외울 필요는 없습니다. 자주 사용하는 명령어와 상황별 해결 명령어만 알아도 개발 중 발생하는 문제를 훨씬 빠르게 해결할 […]

· 8 min read

Java 블록체인 구현 가이드 – 해시부터 채굴까지 단계별 코드로 배우기

블록체인이라는 단어는 들어봤지만, 실제로 어떻게 동작하는지 코드로 확인해본 적 있으신가요? Java 블록체인 구현은 암호화 기초부터 분산 원장의 핵심 원리까지 직접 손으로 짚어볼 수 있는 최고의 실습입니다. 이론만으로는 느껴지지 않던 블록체인의 구조가, 코드 한 줄 한 줄을 작성하는 순간 명확하게 눈에 들어옵니다. 이 글에서는 자바만 있으면 누구나 따라 만들 수 있는 미니 블록체인을 단계별로 함께 구현해봅니다. […]

· 17 min read

Spring AOP – 관점 지향 프로그래밍 개념부터 실전 활용까지

Spring AOP, 개념은 들어봤는데 막상 “AOP가 무엇인가요?”라는 면접 질문 앞에서 말문이 막히는 분들이 많습니다. 트랜잭션 처리에 쓰이는 @Transactional이 사실 AOP의 대표 활용 사례라는 걸 알고 나면 “아, 이미 쓰고 있었구나” 하고 놀라는 분들도 많습니다. AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 로깅, 트랜잭션, 보안, 성능 측정처럼 여러 계층에 반복해서 등장하는 공통 처리 코드를 비즈니스 로직에서 완전히 분리하는 강력한 […]

· 13 min read

Spring Boot 자동 설정 원리 – @EnableAutoConfiguration 동작 방식

Spring Boot 자동 설정 원리, “어노테이션 하나 붙였을 뿐인데 왜 DB 연결이 되고, 톰캣이 뜨고, 시큐리티가 걸리는 거지?”라는 의문을 한 번쯤 품어보셨다면 이 글이 그 답을 드립니다. @SpringBootApplication 안에 조용히 앉아있는 @EnableAutoConfiguration, 이것이 Spring Boot 마법의 진짜 열쇠입니다. 개념만 알고 지나치면 자동 설정이 예상대로 동작하지 않을 때, 혹은 커스텀 설정이 자동 설정과 충돌할 때 속수무책이 됩니다. 이 글에서는 […]

· 14 min read

Spring Filter vs Interceptor 차이점 완벽 정리 – 동작 원리와 실전 활용법

Spring 필터 인터셉터 차이, 면접에서 단골로 등장하는 질문이고 실무에서도 “이건 필터로 해야 하나, 인터셉터로 해야 하나” 고민하는 순간이 반드시 옵니다. 둘 다 요청과 응답을 가로채서 공통 처리를 할 수 있다는 점은 같지만, 동작하는 위치와 시점, 접근할 수 있는 자원이 근본적으로 다릅니다. 이 차이를 모르고 선택하면 Spring 빈에 접근해야 하는데 필터를 쓰거나, 멀티파트 처리가 필요한데 인터셉터를 […]

· 14 min read

자바 클래스와 객체의 차이 – 붕어빵 틀과 붕어빵으로 이해하기

자바 클래스와 객체 차이, Java를 배우기 시작하면 가장 먼저 마주치는 개념인데 막상 설명하려면 말문이 막히는 분들이 많습니다. “클래스는 설계도고 객체는 실체”라는 말, 들어는 봤는데 코드로 보면 왜 이렇게 헷갈릴까요? 사실 이 두 개념만 제대로 이해하면 객체지향 프로그래밍(OOP)의 절반은 이해한 것입니다. 이 글에서는 붕어빵 틀과 붕어빵이라는 친숙한 비유부터 시작하여, 메모리에서 실제로 어떤 일이 벌어지는지, 면접에서 어떻게 […]

· 13 min read

왜 실무에서는 private를 기본으로 사용할까 – 캡슐화와 설계 원칙 완벽 정리

실무에서 private를 기본으로 사용하는 이유, 처음 코드 리뷰를 받을 때 “왜 이 필드가 public이에요?”라는 피드백을 받고 당황했던 경험 있으신가요? 학교나 강의에서는 public으로 빠르게 돌아가는 예제를 많이 접하다 보니, 실제 현업에 들어와서 private가 기본값처럼 쓰이는 문화가 낯설게 느껴질 수 있습니다. 하지만 이건 단순한 코딩 스타일 취향이 아닙니다. 수십 년간 소프트웨어 공학이 쌓아온 설계 원칙과 수많은 실패에서 비롯된 규칙입니다. […]

· 11 min read

@SpringBootApplication 내부 구조 완벽 분석 – 세 가지 핵심 어노테이션 파헤치기

@SpringBootApplication 내부 구조, 한 번이라도 직접 열어본 적 있으신가요? Spring Boot 프로젝트를 시작하면 메인 클래스에 항상 붙어 있는 이 어노테이션, 그냥 “있어야 하는 것”으로만 알고 넘어간 분들이 많습니다. 하지만 면접관이 “이 어노테이션 안에 뭐가 있는지 아세요?”라고 물었을 때, 혹은 자동 설정이 예상대로 동작하지 않아 디버깅해야 할 때, 내부를 모르면 속수무책이 됩니다. 이 글에서는 @SpringBootApplication 하나를 완전히 해부하여 […]

· 10 min read

IoC와 DI 개념 완벽 정리 – 제어의 역전과 의존성 주입이란 무엇인가

IoC와 DI, Spring을 공부하다 보면 반드시 마주치는 두 개념입니다. 분명히 강의에서 들었는데 막상 누군가에게 설명하려고 하면 말문이 막히는 경험, 한 번쯤 있으시죠? “IoC는 제어의 역전이고 DI는 의존성 주입이에요”라고만 외우면 면접에서도, 실무에서도 금방 한계가 옵니다. 이 글에서는 코드가 어떻게 달라지는지 직접 보여드리면서, 왜 이 개념이 탄생했는지부터 Spring에서 어떻게 동작하는지까지 단계별로 설명합니다. 끝까지 읽고 나면 IoC와 DI를 […]

· 9 min read

Spring Framework와 Spring Boot 차이 – 무엇을 선택해야 할까

Spring Framework와 Spring Boot 차이, 한 번쯤은 헷갈려 보신 적 있지 않으신가요? “Spring 배운다”고 했는데 팀에서는 Spring Boot를 쓰고, 강의에서는 둘 다 나오고, 도대체 무엇이 다른 건지 감이 잡히지 않는 분들이 많습니다. Spring Boot는 Spring Framework를 대체하는 기술이 아닙니다. 오히려 Spring Framework 위에서 동작하며 개발자의 불편함을 해결하기 위해 탄생했습니다. 이 글에서는 두 기술의 탄생 배경부터 […]

· 7 min read

Spring MVC 요청 처리 흐름 완전 정복 – DispatcherServlet부터 View까지

Spring MVC 요청 처리 흐름, 공부하다 보면 “도대체 요청이 어디서 어디로 가는 걸까?” 헷갈린 적 있으신가요? Spring MVC를 처음 접하는 분들도, 면접을 앞두고 다시 정리하고 싶은 분들도 이 글 하나면 충분합니다. DispatcherServlet이 요청을 받아서 View가 화면에 응답을 돌려주기까지, 각 단계를 그림 그리듯 차근차근 설명해 드립니다. 목차 1. Spring MVC란 무엇인가 – 기초 개념 정리 Spring […]

· 10 min read

Spring 애플리케이션 성능 최적화 방법 총정리 — DB·캐싱·JVM·비동기·모니터링 실전 가이드

처음에는 잘 돌아가던 Spring Boot 서비스가 트래픽이 늘면서 응답 시간이 늘어지고, 피크 타임마다 타임아웃 에러가 쏟아지기 시작합니다. 서버 사양을 올려도 근본적으로 나아지지 않는 경우가 많습니다. Spring 성능 최적화는 단순히 코드 몇 줄을 바꾸는 것이 아니라, 어디서 병목이 생기는지를 먼저 파악하고 그 원인에 맞는 방법을 정확히 적용하는 체계적 프로세스입니다. 이 글에서는 실무에서 가장 자주 발생하는 성능 병목과 […]

· 9 min read

JVM·JRE·JDK 차이 — Java 동작 원리·면접 답변 공식까지

Java를 처음 설치할 때 “JDK를 받으세요”라는 말을 들었지만, JVM이나 JRE와 무슨 관계인지 모른 채 그냥 설치한 경험이 있으신가요? 면접에서 “JVM이 뭔지 설명해 보세요”라는 질문을 받으면 막막한 경우가 많습니다. JVM JRE JDK 차이를 명확하게 이해하는 것은 단순히 용어를 외우는 것이 아니라, Java가 “한 번 작성하면 어디서든 실행된다(Write Once, Run Anywhere)”는 철학이 어떻게 구현되는지를 이해하는 일입니다. 이 글에서는 […]

· 14 min read

자바 객체지향 4대 원칙 – 캡슐화·상속·다형성·추상화 실전 예제

“객체지향이 뭔가요?”라는 면접 질문 앞에서 머릿속이 하얘진 경험이 있으신가요? 자바 객체지향 4대 원칙은 단순히 외워야 하는 개념이 아닙니다. 왜 코드를 클래스로 나누는지, 왜 private을 쓰는지, 왜 인터페이스가 필요한지처럼 실제 코드 설계의 모든 판단 뒤에 이 네 가지 원칙이 자리하고 있습니다. 캡슐화·상속·다형성·추상화 각각의 의미와 동작 원리를 실전 코드와 함께 처음부터 끝까지 완벽하게 정리합니다. 목차 1. 객체지향 프로그래밍이란 무엇인가: […]

· 16 min read

자바 final : 사용 이유·변수·메서드·주의점

final이라는 단어는 “마지막”, “변경 불가”라는 의미를 담고 있습니다. 그런데 자바에서 자바 final 키워드는 붙는 위치에 따라 완전히 다른 세 가지 의미로 작동합니다. 변수에 붙이면 재할당을 막고, 메서드에 붙이면 오버라이딩을 차단하고, 클래스에 붙이면 상속 자체를 금지합니다. 단순히 “변경 못 하게 하는 키워드”로만 알고 있다면 불변 객체 설계, 람다에서의 effectively final, String이 왜 final 클래스인지 같은 핵심 개념에서 막히게 […]

· 15 min read

자바 static 이란? 변수·메서드·블록·클래스 실전 예제

public static void main(String[] args) — 자바를 처음 배우는 날부터 매일 쓰지만, 왜 static이 붙어야 하는지 제대로 설명하는 사람은 생각보다 많지 않습니다. 자바 static 키워드는 단순히 “객체 없이 호출하는 것”이 아닙니다. 클래스가 JVM에 로딩되는 순간부터 메모리에 올라가 모든 인스턴스가 공유하는, 자바의 메모리 관리 핵심 메커니즘입니다. 이 글에서는 static이 JVM 메모리 어느 영역에 자리 잡는지부터 변수·메서드·블록·내부 클래스까지 각 쓰임새별 동작 […]

· 11 min read

Checked Exception vs Unchecked Exception – 자바 예외 처리 핵심 차이

자바 개발을 하다 보면 IOException은 반드시 try-catch로 감싸야 하는데, NullPointerException은 왜 그냥 내버려 둬도 컴파일이 될까요? 이 차이의 뿌리에 Checked Exception과 Unchecked Exception의 차이가 있습니다. 이 개념은 단순한 문법 지식을 넘어, 예외를 어떻게 설계하고 어디서 처리해야 하는지를 결정하는 자바 개발의 핵심 철학입니다. 이 글에서는 계층 구조, 컴파일 시점 동작, 실전 코드, 스프링 적용 사례, 커스텀 예외 설계 원칙까지 […]

· 8 min read

직렬화와 역직렬화란? 자바 개발자가 꼭 알아야 할 개념 정리

데이터를 저장하거나 네트워크로 전송할 때, 직렬화와 역직렬화라는 단어를 반드시 마주치게 됩니다. 처음 들으면 낯설지만, 사실 우리가 매일 사용하는 로그인 세션 유지·API 통신·파일 저장 모두 이 원리 위에서 작동합니다. 이 글에서는 개념의 본질부터 자바 코드 예제, 보안 주의사항, 실전 포맷 선택 기준까지 한 번에 정리합니다. 목차 1. 직렬화와 역직렬화란 무엇인가? 프로그래밍에서 **직렬화(Serialization)**란 메모리에 살아 있는 객체(Object)를, […]

· 17 min read

오버로딩 오버라이딩 차이 – Java 다형성 핵심 개념과 실무 활용 가이드

오버로딩 오버라이딩 차이를 정확히 설명하지 못하면, Java 면접에서 “둘 다 메서드 이름이 같은 거 아닌가요?”라는 애매한 답변을 하거나, @Override 어노테이션을 왜 붙이는지 모른 채 복사붙여넣기로 개발하다가 부모 메서드가 조용히 그냥 실행되는 버그를 만들게 됩니다. 오버로딩과 오버라이딩은 이름이 비슷하지만 동작하는 시점도, 목적도, 규칙도 근본적으로 다릅니다. 오버로딩은 컴파일 타임에 결정되는 정적 다형성, 오버라이딩은 런타임에 결정되는 동적 다형성입니다. […]