| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 자바개발
- 자바공부
- 프로그래밍기초
- 코딩테스트준비
- Java
- 알고리즘공부
- 알고리즘
- 백준
- 가비지컬렉션
- 자바
- 코딩공부
- 프로그래머스
- 자바프로그래밍
- 개발자취업
- 멀티스레드
- JVM
- 자바기초
- HashMap
- 예외처리
- 개발자팁
- 코딩테스트팁
- 코딩인터뷰
- 코딩테스트
- 클린코드
- 파이썬
- 객체지향
- 자료구조
- 정렬
- 개발공부
- 메모리관리
- Today
- Total
목록2025/11 (23)
코드 한 줄의 기록
코딩테스트 준비를 시작할 때 가장 먼저 드는 생각은 뭘까? 아마 대부분 "어떤 강의를 들어야 할까?", "어떤 책을 사야 할까?" 이 두 가지일 거다. 나도 지난 몇 개월간 입사를 준비하면서 이 고민을 했고, 직접 여러 강의와 교재를 경험해보면서 정말 쓸만한 것들을 찾아낼 수 있었다. 이번 글에서는 내가 겪었던 경험을 바탕으로, 정말로 도움이 되었던 온라인 강의와 교재들을 추천해보려고 한다. 특히 한국 IT 기업의 채용 기준에 맞는 자료들을 엄선했으니 참고하길 바란다.온라인 강의 선택의 중요성솔직히 얘기하면, 온라인 강의를 선택하는 것은 코딩테스트 준비의 첫 번째 관문이다. 요즘 인프런, 패스트캠퍼스, 유데미 같은 플랫폼에는 수천 개의 강의가 있고, 그 중에서 진짜 도움이 되는 것을 고르는 것은 정말 어..
어느 날 갑자기 손가락이 움직이질 않는다. 어제도 풀던 그 문제인데 오늘은 도대체 왜 이렇게 어려울까. 모니터를 들었다 놨다를 반복하고, 결국 휴대폰을 집어든다. 시간만 흐른다. 1시간, 2시간, 3시간. 이 상태가 며칠, 아니 몇 주간 계속된다면? 그건 단순한 피로가 아니라 진짜 슬럼프다. 코딩테스트 준비하는 거의 모든 사람이 이 길을 지나간다. 나도 겪었고, 주변에서도 봤다. 하지만 여기가 끝이 아니다. 이 글에서는 실제로 슬럼프를 극복했던 방법들을 공유한다. 혼자만의 경험이 아니라, 많은 개발자들이 써먹은 실전 팁들이 담겨있다. 준비하면서 내가 직접 도움 받았던 전략들과 주변 사람들이 성공한 방법들까지 모두 모아서 정리했다.코딩테스트 준비 중 슬럼프, 왜 생길까?슬럼프가 갑자기 닥친다는 건 누구나 ..
안녕하세요. 오늘은 Java의 동시성(Concurrency) 관련해서 많은 개발자들이 헷갈려하는 Executors, Future, Callable에 대해 자세히 설명하려고 합니다. 저도 처음 이 주제를 공부할 때는 복잡해 보였지만, 개념을 제대로 이해하고 실제 코드로 작성하다 보니 생각보다 간단하고 매력적인 주제라는 걸 알게 되었습니다. 이 글을 읽으시는 여러분과 함께 차근차근 배워보겠습니다.먼저, 비동기 프로그래밍이 왜 필요한가?프로그램을 작성하면서 가장 기본적인 방식은 동기식 처리입니다. 작업 A가 끝나고 나서 작업 B가 시작되는 식입니다. 예를 들어 데이터베이스 조회에 3초가 걸린다면, 그동안 프로그램은 그 자리에서 가만히 기다려야 합니다. 사용자는 답답함을 느끼고, CPU는 할 일이 없어서 낭비됩..
코딩테스트를 준비하면서 가장 먼저 마주치는 선택지가 하나 있습니다. "어디서 공부할 것인가?"라는 질문이죠. 저도 처음에는 이 질문 앞에서 한참을 고민했습니다. 백준이 좋다더니, 프로그래머스는 기출이 풍부하다더니, LeetCode는 해외 기업을 준비할 때 필수라더니... 정보들이 너무 많았거든요.이 글에서는 제가 실제로 각 플랫폼을 경험하면서 느꼈던 장단점과, 각각을 어떻게 활용하면 가장 효율적으로 코딩테스트를 준비할 수 있을지에 대해 함께 이야기해보겠습니다. 혹시 모르니 미리 말씀드리자면, 이건 어느 한 플랫폼이 절대적으로 좋다는 주장이 아닙니다. 오히려 각자의 상황에 맞는 최적의 조합을 찾는 방법론에 가까워요.백준(Baekjoon Online Judge): 기초부터 심화까지, 가장 폭넓은 학습이 가능..
오늘은 Java 개발자라면 반드시 이해해야 하지만, 개념이 좀 복잡해서 넘어가기 쉬운 주제인 volatile 키워드와 happens-before 관계에 대해 우리가 함께 공부하고 정리해보려고 합니다. 저도 처음에는 이 개념들이 정말 헷갈렸는데, 차근차근 이해하다 보니 멀티스레드 프로그래밍의 핵심이 무엇인지 보이더라고요. 그래서 이번 글에서 제가 학습한 내용을 최대한 쉽고 실용적으로 풀어서 설명하려고 합니다.문제 상황: 멀티스레드 환경에서 왜 문제가 생길까?먼저 volatile 키워드가 필요한 이유를 알기 위해, 간단한 예시로 시작해봅시다.여러분이 만든 애플리케이션에 두 개의 스레드가 있다고 생각해봅시다. Thread A가 어떤 변수 값을 변경하고, Thread B가 그 변수를 읽으려고 합니다. 당연히 T..
우리가 백엔드 개발을 하면서 가장 많이 마주치는 문제 중 하나가 바로 동시성 이슈입니다. 여러 개의 스레드가 동시에 같은 자원에 접근하려고 할 때, 우리가 제대로 관리하지 않으면 예상치 못한 결과가 나타날 수 있거든요. 저도 처음에는 synchronized 키워드만 사용했지만, 실제 프로젝트에서 더 정교한 동시성 제어가 필요해졌을 때 Java의 java.util.concurrent 패키지에 있는 도구들을 알게 됐습니다.오늘은 제가 공부하면서 정리한 ReentrantLock, Semaphore, CountDownLatch 이 세 가지 동시성 유틸에 대해 함께 알아보겠습니다. 각각의 특징, 언제 어떻게 써야 하는지, 그리고 실제 코드 예제까지 정리해봤습니다.ReentrantLock: 명시적 락 제어의 시작먼..
오늘은 Java를 공부하면서 정말 헷갈렸던 부분을 다루고자 합니다. 바로 Synchronized(동기화), 가시성(Visibility), 원자성(Atomicity)에 관한 내용입니다. 이 세 가지 개념은 멀티스레드 환경에서 매우 중요한데, 많은 개발자분들이 이 개념을 완벽히 이해하지 못한 채 코드를 작성하는 경우가 많습니다. 사실 저도 처음에는 이 개념들이 무엇인지, 어디에 써야 하는지, 왜 필요한지 전혀 알지 못했습니다. 처음에는 이 개념들이 비슷하면서도 다르다는 점을 이해하지 못했지만, 실제 프로젝트에서 스레드 관련 버그를 직접 경험하면서 조금씩 깨닫기 시작했습니다. 오늘은 제가 배운 내용을 차근차근 설명드리려고 합니다. 혼자 고민하며 공부하는 것보다는 함께 이해해 나가는 것이 훨씬 낫다고 생각합니다..
코딩테스트를 준비하면서 가장 먼저 부딪히는 벽이 있습니다. 바로 시간복잡도와 공간복잡도입니다. 처음에는 O(n)이 뭐고 O(n²)은 또 뭔지 감이 잘 안 오지만, 일단 한 번 이해하고 나면 문제 읽는 순간 대략적인 해법의 한계가 보이기 시작합니다. 이 글은 저도 다시 기초부터 복습한다는 마음으로, 공부하며 정리한 내용을 여러분과 함께 공유하는 방식으로 풀어가겠습니다. 불필요한 수학 공식은 최소화하고, 바로 손에 잡히는 코드 예제와 실전 체크리스트 위주로 정리했습니다.왜 복잡도를 신경 써야 할까?배열에서 특정 숫자를 찾는다고 가정해 봅니다. 정렬되어 있지 않다면 선형탐색으로 O(n)이 걸립니다. 하지만 한 번 정렬해 두고(대부분 O(n log n)) 이진탐색을 쓰면 탐색은 O(log n)으로 줄어듭니다. ..
처음 멀티스레딩을 공부할 때 가장 헷갈리는 부분이 바로 스레드의 상태 변화와 Runnable 인터페이스 vs Thread 클래스의 선택이다. 나도 이 부분을 깊게 파고들어야 면접에서 자신 있게 답할 수 있겠다는 생각이 들어서 정리해보기로 했다. 이 글을 읽고 나면, 스레드가 어떻게 태어나고 자라고 죽는지, 그리고 Runnable과 Thread를 언제 어떻게 사용해야 하는지 명확하게 이해할 수 있을 거라 생각한다.스레드라이프사이클, 왜 알아야 할까?자바에서 멀티스레딩을 다루려면 스레드의 상태 변화를 이해하는 것이 필수다. 스레드는 생성되는 순간부터 종료될 때까지 다양한 상태를 거치면서 JVM과 OS의 스레드 스케줄러에 의해 관리된다. 이 상태들을 이해하지 못하면 왜 특정 메서드를 호출해야 하는지, 왜 스레..
코딩테스트 준비할 때 모든 알고리즘을 다 공부할 순 없다는 거 아시죠? 시간도 제한되어 있고, 효율적으로 준비해야 하니까요. 저도 처음엔 뭘 공부해야 할지 몰라서 헤맸는데, 지금은 어떤 알고리즘들이 코딩테스트에서 자주 나오는지 알게 됐습니다. 이번 글에서는 제가 배운 경험을 바탕으로 입사를 위한 코딩테스트에서 꼭 알아야 할 10가지 알고리즘을 정리해서 여러분과 공유하려고 합니다. 저도 공부하면서 느꼈던 어려움을 반영해서 최대한 쉽게 설명할 거니까, 함께 차근차근 배워봅시다.정렬(Sorting) - 모든 알고리즘의 기초정렬은 코딩테스트에서 가장 기본이 되는 알고리즘입니다. 저는 이걸 "알고리즘의 기초"라고 부르는데, 왜냐하면 정렬을 얼마나 잘 이해하는지에 따라 다른 알고리즘을 배우는 속도가 달라지기 때문입..