| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 알고리즘
- 파이썬
- 코딩테스트
- 예외처리
- 알고리즘공부
- 멀티스레드
- 클린코드
- HashMap
- 자바기초
- 자바
- 가비지컬렉션
- 코딩인터뷰
- 백준
- 프로그래밍기초
- JVM
- 메모리관리
- 개발공부
- 코딩공부
- 자바개발
- 자바프로그래밍
- 프로그래머스
- 정렬
- Java
- 자료구조
- 개발자팁
- 개발자취업
- 코딩테스트준비
- 코딩테스트팁
- 객체지향
- 자바공부
- Today
- Total
목록분류 전체보기 (103)
코드 한 줄의 기록
자바 개발을 하다 보면 Maven을 꼭 마주하게 됩니다. 특히 회사에서 여러 프로젝트를 관리하거나 복잡한 의존성을 다룰 때 Maven의 필요성을 절실하게 느끼게 되죠. 저도 처음에 Maven을 접했을 때는 pom.xml이라는 파일에 XML이 잔뜩 들어있는 게 정말 복잡해 보였습니다. 하지만 몇 달간 사용해보니 Maven의 핵심 개념 세 가지만 제대로 이해하면 얼마나 강력한 도구인지 깨닫게 되었습니다. 오늘은 제가 배우면서 정리한 Maven의 기본 개념들을 여러분과 함께 정리해보려고 합니다.Maven이란 무엇인가?Maven은 자바 프로젝트의 빌드, 컴파일, 패키징, 배포를 자동화하는 빌드 관리 도구입니다. 저는 Maven을 처음 접했을 때 단순히 의존성(라이브러리)을 다운받아주는 도구 정도로만 생각했는데,..
안녕하세요. 오늘은 JUnit 5와 단언(Assertions)에 대해 깊이 있게 정리해보겠습니다. 처음에는 단순히 테스트를 작성하는 것이 목표였지만, 프로젝트가 진행되면서 더 나은 테스트 코드를 어떻게 작성할 수 있을지에 대해 고민하게 되었어요. 이 글에서는 제가 공부하면서 배운 내용과 실제 프로젝트에 적용한 경험을 바탕으로, 여러분도 효과적인 유닛 테스트를 작성할 수 있도록 최대한 상세히 설명하겠습니다.유닛 테스트가 정말 필요한가?코드를 작성할 때마다 느끼는 것이지만, 유닛 테스트는 선택이 아닌 필수입니다. 특히 팀 프로젝트나 장기간 유지보수되는 프로덕션 코드라면 더욱 그렇습니다. 유닛 테스트의 가장 큰 장점은 다음과 같습니다. 첫째, 버그를 조기에 발견할 수 있습니다. 코드를 작성한 직후 바로 테스트..
안녕하세요! 오늘은 저처럼 이직을 준비하거나 코딩 테스트(이하 코테)라는 거대한 산 앞에 서 계신 분들을 위해, 가장 까다롭지만 절대 피할 수 없는 주제인 '동적 계획법(Dynamic Programming, DP)'에 대해 이야기해보려 합니다. 사실 저도 12년 차 개발자이지만, 실무에서 PHP로 백엔드를 구축하고 최근 Java로 넘어오면서 가장 힘들었던 부분이 바로 이 '알고리즘'이었습니다. 실무 경험이 아무리 많아도, 코딩 테스트에서 만나는 DP 문제는 마치 외계어를 해석하는 기분이었거든요. "아니, 그냥 반복문 돌리면 되는 거 아니야?" 하다가 시간 초과(Time Limit Exceeded)를 맞고 좌절했던 경험, 다들 한 번쯤 있으시죠? 그래서 준비했습니다. 제가 공부하면서 "아, 이건 꼭 알아야..
지난 몇 년간 Java 생태계에서 가장 큰 변화 중 하나가 바로 Gradle의 대중화입니다. 저도 처음 Gradle을 접했을 때는 설정 파일에 뭐가 들어있는지, 왜 이렇게 복잡한지 정말 답답했습니다. 하지만 지금은 Gradle 없이는 개발을 상상할 수 없을 정도로 자연스럽게 사용하고 있습니다. 이 글은 Java 경험을 바탕으로, Gradle의 핵심 개념들을 정리한 것입니다. 특히 처음 Java나 Gradle을 배우는 개발자들이 자주 헷갈려하는 부분들에 초점을 맞춰서 작성했습니다.Gradle이란 무엇인가? 그리고 왜 필요한가?Gradle은 간단하게 말하면 빌드 자동화 도구(Build Automation Tool)입니다. 우리가 작성한 Java 소스 코드를 컴파일하고, 테스트를 실행하고, JAR나 WAR 같..
안녕하세요! 오늘은 최근 제가 Java로 전향하면서 가장 재미있으면서도, 처음에 꽤나 헷갈렸던 테스트(Test) 관련 이야기를 해보려 합니다. PHP를 다루다가 Java, 특히 Spring Boot 환경으로 넘어오니 JUnit과 Mockito라는 조합이 거의 공식처럼 쓰이더군요. "그냥 가짜 객체 만들어서 돌리면 되는 거 아니야?"라고 가볍게 생각했다가, Stub, Mock, Spy, Dummy... 쏟아지는 용어들 때문에 머리가 지끈거렸던 경험, 다들 있으시죠? 오늘은 제가 공부하며 정리한 Test Double(테스트 더블) 의 개념과, 자바 진영의 De-facto(사실상의 표준) 라이브러리인 Mockito의 핵심 사용법을 아주 상세하게 파헤쳐 보려 합니다. 저처럼 "도대체 Mock이랑 Stub이 뭐가..
코딩테스트를 준비하면서 가장 중요한 부분 중 하나가 정렬 알고리즘입니다. 사실 저도 처음에는 "그냥 sort() 함수를 쓰면 되지 않나?"라고 생각했는데, 여러 회사의 기술면접을 겪으면서 정렬 알고리즘의 개념과 구현을 직접 할 수 있어야 한다는 것을 깨달았습니다. 이 글에서는 코딩테스트와 면접에서 꼭 알아야 하는 정렬 알고리즘들을 실제로 구현하는 방법부터, 각 알고리즘의 장단점, 그리고 어떤 상황에서 어떤 알고리즘을 써야 하는지까지 실전 팁을 정리했습니다. 저도 공부하면서 정리한 내용이라 실무에서도 자주 쓰이는 실용적인 정보들을 담았습니다.정렬 알고리즘의 기초: 왜 배워야 할까?코딩테스트에서 정렬은 거의 모든 문제에서 나타나는 개념입니다. 특히 백준이나 프로그래머스의 많은 문제들이 "데이터를 정렬한 후 ..
이 글을 쓰게 된 이유는 최근 제가 Java로 복잡한 비즈니스 로직을 테스트할 때 많은 문제에 부딪혔기 때문입니다. 처음에는 테스트 코드를 무작정 작성했는데, 시간이 지나면서 테스트 코드 자체가 유지보수하기 어려운 "레거시"가 되어버리는 경험을 했습니다. 특히 테스트 데이터를 어떻게 준비할 것인지, 테스트 코드를 어떻게 구조화할 것인지에 대한 명확한 기준이 없었습니다.그래서 이 글에서는 제가 학습하고 적용해본 Given-When-Then 패턴과 효과적인 픽스처 관리 전략을 공유하려고 합니다. 이 두 가지는 테스트 코드를 훨씬 읽기 쉽고, 유지보수하기 좋고, 의도가 명확한 코드로 만들어줍니다.테스트 코드는 왜 중요한가?본론으로 들어가기 전에, 왜 우리가 테스트 코드를 제대로 작성해야 하는지 간단히 생각해보..
코딩테스트를 준비하면서 나는 처음에 모든 문제를 한 가지 방법으로만 풀려고 했다. 어떤 풀이가 정답인지 찾으면 거기서 끝이라고 생각했다. 하지만 실제로는 같은 문제를 여러 각도에서 해석하고 풀어보는 과정 속에서 내 실력이 부쩍 늘었다. 특히 면접 때 "다른 방식은 생각해봤나?"라는 질문을 받을 때 자신감 있게 답할 수 있었던 것도 이 습관 덕분이었다. 이번 글에서는 실제 코딩테스트에 자주 나오는 패턴의 문제를 예시로 들면서, 같은 문제를 어떻게 다양한 방식으로 접근할 수 있는지 그리고 왜 이렇게 공부하는 것이 효율적인지 공유하려고 한다. 나처럼 코딩테스트를 준비 중인 개발자들이 이 글을 읽고 자기만의 풀이 방법들을 만들어 나갈 수 있으면 좋겠다.같은 문제, 왜 여러 번 풀어야 할까?코딩테스트 준비를 할 ..
지난해 팀 프로젝트를 맡게 되면서 처음으로 코드 커버리지(Code Coverage)라는 개념을 제대로 마주쳤다. SonarQube 대시보드에 커다란 빨간 숫자 35%가 표시되어 있었고, 리더는 "최소한 80%까지는 올려야 한다"고 말했다. 나는 자연스럽게 이것이 진리인 줄 알고 테스트를 쓰기 시작했다. 하지만 일 년이 지난 지금, 나는 깨달았다. 커버리지 숫자를 맹목적으로 따라가는 것만큼 위험한 일이 없다는 것을 말이다.Java 개발자라면 누구나 JaCoCo(Java Code Coverage)를 들어봤을 것이다. 프로젝트에 플러그인 몇 줄을 추가하면 어느 코드가 테스트되고 어느 코드가 테스트되지 않았는지를 색깔로 표현해주는 마법 같은 도구다. 그런데 정말 그 숫자가 우리 코드의 품질을 보장할까? 80% ..
입사를 위한 코딩테스트를 준비하면서 가장 답답했던 부분이 뭘까요? 바로 "이 문제는 어떤 알고리즘을 써야 하지?"라는 고민입니다. 특히 완전탐색, 그리디, 백트래킹은 직관적으로 비슷해 보이면서도 완전히 다른 접근 방식을 가지고 있어서, 많은 사람들이 헷갈려 합니다. 저도 처음 이 세 가지를 공부할 때 계속 섞어서 생각했거든요. "다 모든 경우를 다 확인하는 거 아닌가?" 이런 식으로요. 하지만 실제로는 각각의 알고리즘이 문제를 푸는 방식이 완전히 다르고, 효율성 측면에서도 큰 차이가 있습니다. 이 글은 제가 코딩테스트를 준비하면서 깨달은 것들과 실제로 문제를 풀면서 적용한 경험을 바탕으로 작성했습니다. 함께 이 세 가지 알고리즘의 차이를 명확히 하고, 언제 어떤 것을 사용해야 하는지 정확히 알아봅시다.세..