CS
-
[CS/JAVA] Set과 Map의 타입이 Wrapper Class가 아닌 Object를 받을 때 / Vector와 List의 차이 / 제네릭 / 제네릭의 불공변성CS/Java 2025. 1. 23. 23:08
• Set과 Map의 타입이 Wrapper Class가 아닌 Object를 받을때 중복 검사는 어떻게 할건지 설명해주세요. hashCode() 메소드를 오버라이딩하여 리턴된 해시코드 값이 같은지 보고, 해시코드 값이 다르다면 다른 객체로 판단하고,해시코드 값이 같으면 equals() 메소드를 오버라이딩하여 다시 비교합니다. 이 두개가 모두 맞으면 중복 객체입니다. • Vector와 List의 차이를 설명해주세요. 벡터는 데이터 삽입 시 원소를 밀어내지만, 리스트는 노드를 연결만 하기 때문에, 삽입 삭제 부분에서 리스트가 시간복잡도의 우위를 가집니다. 벡터는 랜덤부분접근이 가능하지만 리스트는 더블링크드리스트(노드가 양쪽으로 연결)로 되어있기 때문에 랜덤 접근이 되지 않습니다. 검색적인 측면에서는 벡..
-
[CS/JAVA] Optional API / 컬렉션 프레임워크 / List, Set, Map, Stack, QueueCS/Java 2025. 1. 23. 23:08
• Optional API에 대해 설명해주세요. 개발할 때 가장 많이 발생하는 예외 중 하나가 NPE(Null Pointer Exception) 입니다. NPE를 피하려면 null 여부 검사를 필연적으로 하게 되는데, 만약 null 검사를 해야하는 변수가 많은 경우, 코드가 복잡해지고 번거롭습니다. 하지만, Java8부터 Optional를 제공하여 null로 인한 예외가 발생하지 않도록 도와주고, Optional 클래스의 메소드를 통해 null을 컨트롤 할 수 있습니다. • 컬렉션 프레임워크에 대해 설명해주세요. 다수의 데이터를 쉽고 효과적으로 관리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미합니다. 자바 컬렉션에는 List, Set, Map 인터페이스를 기준으로 여러 구현체가 존재하..
-
[CS/JAVA] 리플렉션(Reflection) / Error와 Exception의 차이 / CheckedException과 UnCheckedException의 차이CS/Java 2025. 1. 23. 23:08
• 리플렉션(Reflection)이란 무엇인지 설명해주세요.리플렉션이란 구체적인 클래스 타입은 알지 못해도 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API 입니다. • 리플렉션은 어떤 경우에 사용되는지 설명해주세요.코드를 작성할 시점에는 어떤 타입의 클래스를 사용할지 모르지만, 런타임 시점에 지금 실행되고 있는 클래스를 가져와서 실행해야 하는 경우 사용됩니다. 프레임워크나 IDE에서 이런 동적인 바인딩을 이용한 기능을 제공합니다. intelliJ의 자동완성 기능, 스프링의 어노테이션이 리플렉션을 이용한 기능이라 할 수 있습니다. • Error와 Exception의 차이를 설명해주세요.Error는 실행 중 일어날 수 있는 치명적 오류를 말합니다. 컴파일 시점에 체크할 ..
-
[CS/JAVA] static / static을 사용하는 이유 / Inner Class / 내부 클래스를 static으로 해야 하는 이유CS/Java 2025. 1. 22. 21:48
• static에 대해 설명해주세요.static 키워드를 사용한 변수나 메소드는 클래스가 메모리에 올라갈 때 자동으로 생성되며, 클래스 로딩이 끝나면 바로 사용할 수 있습니다. 즉, 인스턴스(객체) 생성없이 바로 사용 가능합니다. 모든 객체가 메모리를 공유한다는 특징이 있고, GC 관리 영역 밖에 있기 때문에 프로그램이 종료될 때까지 메모리에 값이 유지된 채로 존재하게 됩니다. • static을 사용해야 하는 이유에 대해 설명해주세요.static은 자주 변하지 않는 값이나 공통으로 사용되는 값 같은 공용 자원에 대한 접근에 있어서 매번 메모리에 로딩하거나 값을 읽어들이는 것보다 일종의 '전역 변수'와 같은 개념을 통해 접근하는 것이 비용도 줄이고 효율을 높일 수 있습니다. 인스턴스 생성 없이 바로..
-
[CS/JAVA] String, StringBuffer, StringBuilder의 차이 / 접근 제한자 / 클래스 멤버 변수 초기화 순서CS/Java 2025. 1. 22. 21:07
• String, StringBuffer, StringBuilder의 차이를 설명해주세요. String은 불변의 속성을 가지며, StringBuffer와 StringBuilder는 가변의 속성을 가집니다. StringBuffer는 동기화를 지원하여 멀티 쓰레드 환경에서 주로 사용하며,StringBuilder는 동기화를 지원하지 않아 싱글 쓰레드 환경에서 주로 사용합니다. • String 객체가 불변인 이유에 대해 아는대로 설명해주세요. ➀ 캐싱 기능에 의한 메모리 절약과 속도 향상자바에서 String 객체들은 Heap의 String Pool 이라는 공간에 저장되는데, 참조하려는 문자열이 String Pool에 존재하는 경우 새로 생성하지 않고 Pool에 있는 객체를 사용하기 때문에 특정 문자열 값..
-
[CS/JAVA] Wrapper Class / Boxing과 UnBoxing / Synchronized / new String()과 리터럴("")의 차이CS/Java 2025. 1. 22. 15:48
• Wrapper Class란 무엇이며, Boxing과 UnBoxing은 무엇인지 설명해주세요.기본 자료형에 대한 객체 표현을 Wrapper Class라고 합니다. 기본 자료형 → Wrapper Class로 변환하는 것을 Boxing이라 하며,Wrapper Class → 기본 자료형으로 변환하는 것을 UnBoxing이라 합니다. • Synchronized에 대해 아는 대로 말해주세요.여러개의 쓰레드가 한개의 자원을 사용하고자 할 때, 현재 데이터를 사용하고 있는 쓰레드를 제외하고, 나머지 쓰레드들은 데이터에 접근할 수 없게 막는 개념입니다. 데이터의 thread-safe를 하기 위해 자바에서 Synchronized라는 키워드를 제공해 멀티 쓰레드 환경에서 쓰레드 간 동기화를 시켜 데이터의 thr..
-
[CS/JAVA] 자바의 메모리 영역 / 클래스와 객체 / 생성자CS/Java 2024. 11. 26. 16:53
• 자바의 메모리 영역에 대해 설명해주세요. 자바의 메모리 공간은 크게 Method 영역, Stack 영역, Heap 영역으로 구분되고, 데이터 타입에 따라 할당됩니다. 메소드 영역 : 전역변수와 static 변수를 저장하며, 메소드 영역은 프로그램 시작부터 종료까지 메모리에 남아있습니다. 스택 영역 : 지역변수와 매개변수 데이터 값이 저장되는 공간이며, 메소드가 호출될 때 메모리에 할당되고 종료되면 메모리가 해제됩니다. LIFO(Last In First Out) 구조를 갖고, 변수에 새로운 데이터가 할당되면 이전 데이터는 지워집니다. 힙 영역 : new 키워드로 생성되는 객체(인스턴스), 배열 등이 힙 영역에 저장되며, 가비지 컬렉션에 의해 메모리가 관리되어 집니다. • 각 메모리 영역이 할당되..
-
[CS/JAVA] 가비지 컬렉션 / 객체지향 설계의 원칙CS/Java 2024. 11. 26. 16:53
• 가비지 컬렉션(Garbage Collection)에 대해 설명해주세요. 가비지 컬렉션은 JVM의 메모리 관리 기법 중 하나로, 시스템에서 동적으로 할당됐던 메모리 영역 중에서 필요없어진 메모리 영역을 회수하여 메모리를 관리해주는 기법입니다. • 가비지 컬렉션 과정에 대해 설명해주세요.GC의 작업을 수행하기 위해서 JVM이 어플리케이션의 실행을 잠시 멈추고, GC를 실행하는 쓰레드를 제외한 모든 쓰레드들의 작업을 중단 후 (Stop The World 과정), 사용하지 않는 메모리를 제거(Mark and Sweep 과정)하고 작업이 제개됩니다. GC의 작업은 Young 영역에 대한 Minor GC와 Old 영역에 대한 Major GC로 구분됩니다. • 객체지향의 설계원칙에 대해 설명해주세요..