반응형

java 6

[Java기술면접] ArrayList vs LinkedList 차이 및 시간 복잡도란?

시간 복잡도란?어떤 코드/알고리즘이 얼마나 빨리 동작하는지를 나타내는 단위예요.그런데 "몇 초" 같은 절대 시간이 아니라, 데이터 양(n)이 늘어날 때 연산 횟수가 얼마나 늘어나는지를 보는 거예요. 즉, 성능의 성장률을 나타낸 것. O(1), O(n) 이건 뭔데?O(...) 표기법 = Big-O 표기법이라고 부르고, 최악의 경우에 연산이 얼마나 걸리는지 표현한다.자주 나오는 예시O(1) : 데이터 개수와 상관없이 항상 일정한 시간.→ "한 번에 바로 찾는다."예: 배열에서 arr[5]처럼 인덱스로 값 꺼내기.O(n) : 데이터 개수(n)에 비례해서 시간이 늘어남.→ "처음부터 끝까지 다 뒤져야 한다."예: 배열에서 "값이 7인 원소 찾기" (최악의 경우 전부 확인해야 함).O(log n) : 데이터가 늘..

기술면접 2025.09.08

[Java 기술면접] ConcurrentModificationException 발생

이건 자바 면접에서 정말 자주 나오는 ConcurrentModificationException 문제이다. List list = new ArrayList(Arrays.asList("a","b","c"));for (String s : list) { if (s.equals("n")) { list.remove(s); // 여기서 문제 !! }} 1. 왜 오류가 날까? for-each 문은 내부적으로 Iterator를 사용해 리스트를 순회합니다.그런데 순회 도중에 list.remove(s)로 직접 리스트를 수정하면,Iterator가 감지 → ConcurrentModificationException 발생.즉, “Iterator로 순회 중인데, 너 몰래 리스트를 건드렸다”라는 상황이다. 2. 안전하게 ..

기술면접 2025.09.08

Java Stream anyMatch(), allMatch(), noneMatch() 완벽 정리

안녕하세요!이번 포스팅에서는 Java 8 Stream API에서 제공하는 anyMatch(), allMatch(), noneMatch() 메서드에 대해 자세히 알아보겠습니다.이 메서드들은 리스트(List), 집합(Set) 등의 컬렉션에서 특정 조건을 만족하는 요소가 있는지 확인하는 데 유용하게 사용됩니다.하지만 동작 방식이 비슷해서 헷갈리기 쉬운데요. 이번 글을 통해 공통점과 차이점, 그리고 실행 과정을 완벽하게 이해해 봅시다!   1. anyMatch(), allMatch(), noneMatch() 개념 정리1) anyMatch()리스트에서 하나라도 조건을 만족하면 true 반환 (즉시 종료)anyMatch()는 스트림 내 요소 중 하나라도 주어진 조건을 만족하면 true를 반환하고, 즉시 실행을 종료..

JAVA 2025.03.17

[JAVA] Stream 정리 [Stream, Map, Filtering, Sorted, Collect]

Stream: 자바8부터 추가된 기능입니다.기존에 배열의 원소, 혹은 Collection을 가공할 때는 forEach(), 혹은 for문을 통해 하나씩 가공을 진행했지만, Stream을 사용하면 람다함수형식을 통하여 깔끔하게 한번에 가공할 수 있게 되었습니다.가공하는 방식에는 Map, Filter, Sorted 등이 존재합니다. 1. Stream 생성[콜렉션 -> 스트림]List, Set과 같이 Collection 인터페이스를 구현한 객체는 .stream()을 통해서 변경가능하다.// List로부터 스트림을 생성List list = Arrays.asList("a", "b", "c");Stream listStream = list.stream(); [배열 -> 스트림]Stream의 of() 메소드, 혹은 A..

JAVA 2024.09.05

[JAVA] 9. 다형성 / 객체지향적 이해, 다형성과 클래스, 다형성과 인터페이스

Chapter 9. 다형성 (Polymorphism) 다형성의 사전적 정의는 같은 종의 생물이지만 모습이나 특징이 고유한 특징이 다양한 성질을 의미한다. 단어의 뜻부터 어려운 이 다형성이 객체지향개념의 중요한 특징 중 하나이다. 다형성 여러 가지 형태를 가질 수 있는 능력을 의미하며, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함을 구현하는데 사용한다. 좀 더 구체적으로는 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다는 것이다. 코드를 통해 이해하는게 더 빠를 것 같다. class A { public String x() { return "x"; } } class B extends A // class A를 상속받고 있는 class B { public..

JAVA 2022.05.21

[JAVA/자바] 메모리 구조(static, stack, heap)

이번 글은 자바(JAVA)를 사용하는 입장에서 알아야 할 메모리 구조 및 특징에 대해서 알아보려고 한다. 프로그램을 구동하기 위해서 운영체제가 메모리(RAM)에 데이터 및 명령어를 저장할 공간을 할당하여 준다. 메모리는 컴퓨터에게 있어 가장 중요한 자산이고 사용할 수 있는 공간이 한정되어 있다. 이러한 것을 어떻게 관리하느냐에 따라서 프로그램의 성능(속도 등)이 좌우된다. 따라서 메모리를 효율적으로 사용하기 위해서는 메모리의 구성과 특징에 대해서 이해할 필요가 있다. 메모리의 공간은 크게 Static(스태틱) 영역, Stack(스택) 영역, Heap(힙) 영역으로 구분되고 데이터타입(자료형)에 따라서 해당 공간에 할당된다.(기계어 관련 영역은 제외) 그러면 메모리의 종류 및 특징에 대해서 하나씩 알아보도..

JAVA 2022.05.01
반응형