| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 메모리관리
- 정렬
- 코딩테스트준비
- JVM
- 예외처리
- 자바공부
- 멀티스레드
- 개발공부
- 프로그래밍기초
- 객체지향
- 코딩공부
- 코딩테스트
- 자바기초
- 자바개발
- 알고리즘공부
- 클린코드
- HashMap
- 개발자취업
- 알고리즘
- 백준
- 자바
- Java
- 프로그래머스
- 코딩인터뷰
- 코딩테스트팁
- 가비지컬렉션
- 자료구조
- 자바프로그래밍
- 파이썬
- 개발자팁
- Today
- Total
목록2025/10 (31)
코드 한 줄의 기록
최근 개발자 취업을 준비하면서 가장 많이 듣게 되는 단어가 있다. 바로 '코딩테스트'다. 카카오, 네이버, 삼성 같은 대기업뿐만 아니라 작은 스타트업까지 거의 모든 IT 기업이 개발자 채용 과정에서 코딩테스트를 필수 전형으로 두고 있다. 나 역시 지원하려는 회사들의 채용 공고를 보면서 코딩테스트라는 관문을 피할 수 없다는 걸 깨달았다. 그래서 이번 기회에 코딩테스트가 정확히 무엇인지, 왜 이렇게 중요한지 제대로 정리해보려고 한다.코딩테스트, 정확히 무엇인가코딩테스트는 지원자가 자료구조와 알고리즘 등을 활용해 주어진 문제를 해결할 수 있는 능력을 평가하는 시험이다. 쉽게 말하면 기업이 개발자를 채용하는 과정에서 지원자의 기본적인 코딩 실력을 점검하는 시스템이라고 볼 수 있다.일반적으로 제한 시간 내에 기업..
자바 8이 출시된 지 꽤 시간이 지났지만, 여전히 함수형 인터페이스와 메서드 레퍼런스를 제대로 활용하지 못하는 개발자들이 많습니다. 저도 처음에는 이 개념들이 다소 낯설었는데요, 실무에서 사용하다보니 코드가 훨씬 간결해지고 가독성이 좋아지더라고요. 오늘은 제가 공부하면서 정리한 내용을 여러분과 공유하려고 합니다.함수형 인터페이스란 무엇인가?함수형 인터페이스는 딱 하나의 추상 메서드만 가지고 있는 인터페이스를 말합니다. Java 8부터 도입된 이 개념은 람다 표현식과 밀접한 관계가 있어요. 쉽게 말해서 함수를 마치 하나의 변수처럼 다룰 수 있게 해주는 도구라고 생각하면 됩니다.@FunctionalInterface 어노테이션함수형 인터페이스를 만들 때는 @FunctionalInterface 어노테이션을 붙여..
최근에 자바 프로젝트를 진행하면서 제네릭에 대해 제대로 공부할 필요성을 느꼈습니다. 그동안 ArrayList 정도만 사용했는데, 실무 코드를 보니 나 같은 복잡한 문법이 자주 등장하더군요. 그래서 이번 기회에 제네릭을 처음부터 끝까지 정리하면서 저처럼 제네릭이 헷갈리는 분들과 함께 공부하고자 이 글을 작성하게 되었습니다.제네릭이 왜 필요한가자바를 처음 배울 때는 제네릭 없이도 프로그래밍이 가능했습니다. 하지만 실제로 프로젝트를 진행하다 보면 제네릭이 왜 필요한지 절실히 느끼게 됩니다.List list = new ArrayList();list.add("Hello");list.add("World");String text = (String) list.get(0); // 타입 캐스팅 필요이런 방식의 문제는 컴..
자바로 개발하다 보면 리스트나 셋 같은 컬렉션을 순회하면서 요소를 추가하거나 삭제해야 할 때가 있다. 그런데 이 과정에서 ConcurrentModificationException이라는 예외를 만나본 적 있지 않은가? 처음엔 당황스럽지만, 이 예외는 자바 컬렉션의 안전장치로서 중요한 역할을 한다. 오늘은 Iterator의 개념부터 fail-fast 메커니즘, 그리고 컬렉션을 안전하게 수정하는 방법까지 함께 살펴보려 한다.Iterator란 무엇인가?Iterator는 자바 컬렉션 프레임워크에서 컬렉션의 요소들을 순차적으로 읽어오기 위한 표준 인터페이스다. 쉽게 말해, 리스트나 셋처럼 여러 데이터를 담고 있는 자료구조를 하나씩 탐색할 수 있게 해주는 도구라고 생각하면 된다.Iterator는 다음 세 가지 핵심 ..
안녕하세요! 오늘은 Java에서 정렬을 다룰 때 반드시 알아야 하는 Comparable과 Comparator에 대해 깊이 있게 알아보려고 합니다. 저도 처음에는 이 둘의 차이가 헷갈렸는데, 실무에서 직접 사용하면서 체득한 내용들을 공유하려고 해요.Comparable vs Comparator, 뭐가 다를까?처음 이 개념들을 접했을 때 "둘 다 정렬하는 건데 왜 두 개나 있지?"라는 생각이 들었어요. 근데 써보니까 각자 확실히 용도가 다르더라고요. Comparable은 java.lang 패키지에 있어서 import도 필요 없고, 클래스 자체에 "나는 이렇게 비교되어야 해!"라는 기본 규칙을 심어주는 거예요. compareTo(T o) 메서드 하나만 구현하면 됩니다. Comparator는 java.util 패..
코딩 테스트를 준비하다 보면 Queue 관련 자료구조를 정말 많이 사용하게 됩니다. 특히 BFS 알고리즘이나 우선순위 처리 같은 문제에서 필수적이죠. 저도 처음엔 이 세 가지가 뭐가 다른지 헷갈렸는데, 하나씩 공부하면서 정리해보니 확실히 이해가 되더라고요. 오늘은 제가 공부한 내용을 바탕으로 Queue, Deque, PriorityQueue의 사용 패턴을 같이 살펴보려고 합니다.Queue 인터페이스 기본 개념Queue는 FIFO(First-In-First-Out) 방식으로 동작하는 자료구조입니다. 쉽게 말해 먼저 들어간 데이터가 먼저 나오는 구조죠. 은행 창구에서 번호표를 뽑고 기다리는 것과 비슷하다고 생각하면 됩니다. Java에서 Queue는 인터페이스로 제공되기 때문에 직접 인스턴스를 만들 수 없습니..
Java 개발을 하다 보면 Map은 정말 자주 사용하게 되는 자료구조입니다. 특히 HashMap은 거의 매일 쓰게 되는데요, 막상 "왜 HashMap을 쓰는 거야?"라고 물어보면 명확하게 대답하기 어려운 경우가 많습니다. 저도 처음엔 그냥 데이터를 key-value로 저장하는 거구나 정도로만 알고 있었는데, 공부하면서 내부 구조와 각 Map의 특징을 알게 되니 훨씬 더 효율적으로 사용할 수 있더라고요. 특히 커스텀 객체를 키로 사용할 때 제대로 동작하지 않아서 한참 헤맸던 경험도 있습니다. 그래서 오늘은 저와 같은 고민을 하시는 분들께 도움이 되고자, HashMap, LinkedHashMap, TreeMap의 차이점과 함께 키 설계의 핵심을 정리해봤습니다.HashMap: 빠른 검색의 핵심, 해싱의 마법H..
자바로 개발하다 보면 중복 없이 데이터를 관리해야 하는 경우가 정말 많습니다. 이럴 때 Set 컬렉션을 사용하는데, 막상 HashSet, TreeSet, LinkedHashSet 중에서 어떤 것을 선택해야 할지 고민될 때가 있죠. 오늘은 제가 공부한 내용을 정리하면서, 여러분께도 각 Set의 특성과 정렬 방법을 공유해보려고 합니다.Set 인터페이스의 기본 특징먼저 Set이 무엇인지부터 정리하고 넘어가겠습니다. Set은 Collection 인터페이스를 상속받은 인터페이스로, 중복을 허용하지 않는다는 것이 가장 큰 특징입니다. List처럼 같은 값을 여러 번 저장할 수 없고, 한 번만 저장됩니다.중복된 값을 저장할 수 없음기본적으로 순서를 보장하지 않음 (일부 구현체 제외)인덱스로 접근 불가능null 값도 ..
자바에서 가장 많이 쓰는 자료구조 둘을 꼽으라면 단연 ArrayList와 LinkedList일 겁니다. 근데 이 둘의 차이를 제대로 이해하고 있는 개발자는 생각보다 많지 않더라고요. 제가 공부하면서 깨달은 것들을 정리해볼게요.메모리 구조부터 이해해야 한다먼저 둘의 가장 근본적인 차이부터 봅시다. ArrayList는 내부적으로 배열을 사용합니다. 배열은 메모리 상에서 연속된 공간에 데이터를 저장하죠. 메모리 주소가 차례대로 이어져 있다는 뜻입니다. LinkedList는 노드(Node)라는 객체들을 체인처럼 연결해서 사용합니다. 각 노드는 실제 데이터와 다음 노드의 참조(주소)를 가지고 있어요. 그래서 메모리 상에서는 떨어져 있을 수 있지만, 참조로 연결되어 논리적으로는 이어진 거죠. 이 차이가 성능에 직결..
배열(Array)을 처음 배웠을 때 생각했던 게 있어요. 크기가 미리 정해지니까 데이터를 추가하거나 삭제할 때마다 새로운 배열을 만들어야 한다는 점이 정말 불편했습니다. 게다가 데이터가 중간에 삭제되면 뒤에 있는 모든 요소를 앞으로 한 칸씩 이동시켜야 하고요. 이런 문제들을 해결하기 위해 Java가 제공하는 것이 바로 컬렉션 프레임워크(Collection Framework)입니다. 요즘 Java 개발을 하면서 컬렉션 프레임워크를 모르고는 단 하루도 버틸 수 없을 정도로 중요하더군요. 특히 List, Set, Map 이 세 가지는 정말 자주 마주치게 됩니다. 이 글에서는 제가 공부하면서 배운 내용을 여러분과 함께 정리해보겠습니다.컬렉션 프레임워크란 무엇인가?먼저 컬렉션 프레임워크가 정확히 뭔지 알아봅시다...