반응형

java 28

Java 백엔드 실무 면접 질문 & 모범 답변 정리

안녕하세요, 오늘은 Java 백엔드 실무 면접을 준비하시는 분들을 위해 제가 실제 경험한 면접 질문들과 그에 대한 모범 답변을 정리해보려고 합니다. 저도 면접을 준비하면서 블로그나 깃허브 등을 많이 참고했었는데, 실제로 실무에서 많이 나오는 질문과 그 의도를 이해하는 게 무엇보다 중요하더라고요. 이 글이 여러분의 면접 준비에 작은 도움이 되길 바라며, Java, Spring Boot, JPA, REST API, Redis, JWT 인증 같은 키워드 중심으로 정리해볼게요.1. Java 백엔드 실무 면접에서 자주 나오는 질문들Q1. Java에서 HashMap과 ConcurrentHashMap의 차이점은?의도: 멀티스레드 환경에 대한 이해도를 보려는 질문이에요.모범 답변:HashMap은 쓰레드에 안전하지 않아..

ETC 2025.07.28

개발자가 ChatGPT를 활용해서 업무 시간 줄이는 법

개발자라면 누구나 한 번쯤은 이런 생각을 해봤을 거예요."오늘 이거… 내가 안 해도 될 수는 없을까?"요즘은 진짜로, 내가 안 해도 될 일들이 점점 많아지고 있어요. 바로 ChatGPT 덕분이죠. 처음엔 그저 코딩 도우미 정도로만 생각했는데, 어느새 하루 업무의 절반 이상을 이 친구에게 맡기고 있는 나를 발견하게 됐습니다. 이 글에서는 제가 실제로 ChatGPT를 활용해 업무 시간을 줄인 방법을 공유해보려고 해요. 단순히 코드 짜주는 걸 넘어서, 문서화, 테스트, 커뮤니케이션까지 확장된 활용법들을 소개해볼게요.1. 반복적인 업무? ChatGPT에게 넘기자개발 일을 하다 보면 반복적인 업무가 정말 많죠. 예를 들면:API 명세서에 맞는 컨트롤러 메서드 작성서비스/레포지토리 템플릿 반복 생성공통 예외 처리 ..

AI 2025.07.25

공간 복잡도 쉽게 이해하기

문제 상황개발을 하다 보면, 시간 복잡도에만 신경 쓰는 경우가 많다.나도 예전에 알고리즘 문제를 풀 때 항상 실행 시간이 얼마나 걸리는지만 봤지, 메모리를 얼마나 쓰는지는 잘 생각하지 않았다.근데 한 번은 프로덕션 서버에서 대용량 데이터를 처리하는 로직을 짜다가, 아무리 성능이 빨라도 메모리 사용량이 터져서 OOM(Out Of Memory) 이 나버린 적이 있었다.그때 느꼈다.아무리 시간이 빨라도, 메모리를 무지막지하게 쓰면 서비스가 뻗어버린다는 걸.그래서 오늘은 공간 복잡도가 무엇인지, 왜 중요한지, 어떻게 계산하는지 얘기해 보려고 한다.내가 처음 공부할 때 이해하기 어려웠던 부분을 최대한 풀어 써볼게.내가 시도한 방법처음에 공간 복잡도를 배우려고 했을 때, 정의만 보면 좀 딱딱했다."공간 복잡도(Sp..

알고리즘 2025.07.13

시간복잡도, 내가 이해한 만큼 풀어쓴 이야기

문제 상황내가 개발을 시작하고 어느 정도 코드를 짜기 시작했을 때, 종종 이런 말을 들었다.“그 코드의 시간복잡도는 어떻게 돼?”솔직히 말하면, 처음에는 이 말이 너무 어렵게 느껴졌다.시간복잡도가 뭔데? 그냥 코드가 빠르면 빠른 거고 느리면 느린 거 아닌가?그러다가 어느 순간부터, “왜 내 프로그램은 데이터가 많아지면 급격하게 느려질까?” 하는 의문이 들었다.그때부터 조금씩 시간복잡도의 필요성을 깨닫게 됐다.시간복잡도는 프로그램이 처리해야 하는 데이터의 양이 커질수록, 걸리는 시간이 얼마나 늘어나는지를 설명해주는 개념이다.예를 들어, 내가 좋아하는 마트에 줄을 선다고 해보자.줄이 2명일 땐 금방 계산대에 간다.근데 줄이 200명이 되면?줄이 길어질수록 대기 시간도 비례해서 늘어나게 된다.이 늘어나는 속도..

알고리즘 2025.07.09

커서(Cursor)를 써보고 나서, 진심으로 감탄했다

최근 새롭게 배정받은 프로젝트에서 신규 기능을 개발하게 되었다. 간단한 CRUD 작업이었지만, 이번엔 예전처럼 일일이 파일을 만들고 코드를 타이핑하는 방식이 아닌, 새로운 도구를 사용해보기로 마음먹었다. 그 도구가 바로 "커서(Cursor)"였다.문제 상황 : 반복적인 파일 생성과 코드 작성에 지친 나회사에서 작업하는 대부분의 서비스는 Spring Boot 기반이고, 구조도 뻔하다. Controller - Service - Repository로 이어지는 전형적인 구조. 기능 하나 만들자고 매번 이 세 가지 파일을 만들고, 인터페이스부터 구현체까지 반복해서 타이핑하자니 슬슬 피로가 쌓이기 시작했다. "이런 건 자동화할 수 없을까?"라는 생각을 하던 차에, 커서(Cursor)에 대한 이야기를 듣게 되었다.내..

ETC 2025.06.26

실무에서 자주 사용하는 인텔리제이 단축키 정리

개발하면서 매번 단축키를 검색하거나 메뉴를 뒤적이는 게 번거롭다고 느낀 적 있으신가요?저 역시 그랬습니다. 그래서 실무에서 자주 사용하는 인텔리제이 단축키만 모아서 한 눈에 정리해봤습니다.저처럼 Java와 Spring Boot 기반의 백엔드 개발을 하시는 분이라면, 이 단축키들만 알아도 개발 속도가 꽤 빨라질 거예요.특히 파일 이동, 북마크, 에디터 탐색, 디버깅까지 커버되니 꼭 한 번 정리해두고 손에 익혀보시길 추천합니다.📁 파일 변경 및 탭 제어 관련 단축키단축키 설명F5파일 복사F6파일 이동Shift + F6파일 이름 변경Ctrl + F4현재 탭 닫기Ctrl + E최근 사용한 파일 목록 조회💡 Tip: Ctrl + E는 여러 파일을 동시에 작업할 때 정말 유용합니다. 직전에 편집하던 파일을 빠르..

ETC 2025.06.16

Kotlin의 Sequence는 무엇이고, 왜 써야 할까요?

코틀린으로 개발을 하다 보면 Sequence라는 타입을 종종 만나게 됩니다.처음에는 익숙한 List나 Stream만 써도 충분한데, 갑자기 등장한 이 친구는 도대체 어떤 역할을 할까요? 그리고 왜 사용하는 걸까요?이 글에서는 Sequence의 개념부터, Stream과의 차이점, 실제로 왜 속도가 빨라지는지도 함께 정리해보겠습니다.Sequence란?간단히 말하면 Sequence는 "지연 계산(Lazy Evaluation)을 지원하는 컬렉션 처리 방식"입니다. 일반적인 리스트 연산은 **즉시 계산(Eager Evaluation)**을 하는 반면, Sequence는 계산을 나중으로 미루는 특성이 있습니다.val list = listOf(1, 2, 3, 4, 5)val result = list .map {..

kotlin 2025.05.28

[TDD] TDD는 단순 테스트 코드가 아니었다

최근에 TDD를 다시 보게 되면서, 혼자 끄적이던 생각과 고민이 조금씩 정리가 되었습니다.사실 처음에는 TDD를 그냥 '테스트 코드 먼저 작성하는 방식' 정도로만 알고 있었는데요,이번에 프로젝트를 진행하면서 "테스트가 코드의 방향을 결정할 수도 있다"는 걸 체감하게 되었습니다.TDD는 단순히 테스트를 먼저 짜는 게 아니더라구요보통은 기능을 먼저 구현하고 테스트 코드를 나중에 붙이는 경우가 많잖아요? 그런데 TDD는 반대입니다.테스트 코드를 먼저 작성하고, 그 테스트를 통과할 수 있는 최소한의 코드를 작성한 뒤, 마지막에 리팩토링을 진행합니다.이게 단순히 순서만 바뀌는 게 아니라, "어떻게 코드를 짤 것인가" 자체가 달라집니다. 단계 설명Red실패하는 테스트를 먼저 작성합니다Green테스트를 통과시키기 위..

ETC 2025.04.17

[spring webFlux] reactor.netty.http.client.PrematureCloseException: Connection prematurely closed BEFORE response

프로젝트 구조Java 21gradleSpring boot 3.XSpring Webfluxkotlin에러발생java, spring boot, gradle 등 프로젝트 주요 라이브러리의 버전업 후, 프로젝트 boot시에 에러가 발생하는 것을 발견reactor.netty.http.client.PrematureCloseException: Connection prematurely closed BEFORE responsejava.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonTypeInfo$Value ...ETC```e2e 테스트를 통해서 request를 보냈을 떄,,, controller로 인입되지 않는 것을 확인오류를 구글링 해봤을 때, M1 ..

개발 Error 2025.03.20

[SLF4J] LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation() 에러 해결

프로젝트 구조Java 21gradleSpring boot 3.XSpring Webfluxkotlin에러 발생- java, spring boot, gradle 등 프로젝트 주요 라이브러리의 버전업 후, 프로젝트 boot시에 에러가 발생하는 것을 발견Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.helpers.NOPLoggerFactory loaded from file:/Users..

개발 Error 2025.03.20
반응형