Java15 [Java] Serialization 기술 면접을 대비해Java의 Serialization와 관련된 질문과 답을꼬리 질문 형태로 작성한 글입니다. Q. 직렬화(serialization)란 무엇이며 왜 자바에서 사용하나요? 답변해주세요. A : Java의 객체를 외부와 상호작용 할때, 데이터 형태를 맞춰주기 위해서 사용합니다. 답변에 대한 평가: 40점평가 이유: 답변은 일부 맞는 내용을 포함하고 있지만, 직렬화의 개념을 충분히 설명하지 않았습니다. 또한, 왜 자바에서 직렬화를 사용하는지에 대한 이유도 명확히 언급되지 않았습니다. Q. Java에서 객체를 직렬화하는 과정에는 어떤 단계들이 포함되어 있나요? 직렬화된 객체를 외부와 상호작용할 때 어떤 장점이 있는지 설명해주세요. A : 직렬화 과정은 먼저, 직렬화가 필요한 클래스에 Seriali.. 2025. 1. 27. 부동 소수점 이 글은 컴퓨터에서 소수를 나타내는 방식인부동 소수점에 대해서 정리한 글입니다. 실수란?실수는 수직선 상에서 나타낼 수 있는 모든 숫자를 말합니다. 실수로는 정수, 유리수, 무리수 등 모든 수를 포함하는 개념입니다. 실수는 언제 사용될까?실수는 연속적인 데이터나 정확한 표현이 필요할 때 사용합니다. 정수만으로는 표현할 수 없는 값, 정밀도가 필요한 계산에 적합합니다.예시로는 수학, 과학, 공학, 컴퓨터 그래픽, 금융과 같은 분야에 사용됩니다. 컴퓨터에서 실수는 어떻게 표현할까?현 시점에서 실수는 이진수 기반의 부동 소수점 방식으로 표현됩니다. 이는 IEEE 754 표준에 따라, 실수를 유효숫자와 지수로 나누어 표현합니다. 부동 소수점 방식은 무엇일까?부동 소수점은 컴퓨터가 실수를 효율적으로 저장하고 계산.. 2025. 1. 11. immutable 객체로 만드는 방법 이번 글은 불변 객체란 무엇이고 어떻게 만들수 있을지에 대한방법을 이야기하는 글입니다. 불변 객체(immutable Object)란?불변 객체는 객체를 생성 후 그 상태를 바꿀 수 없는 객체를 말합니다.객체의 상태를 바꿀수 없다는 말은 어떤 의미를 가질까요? 이는 객체가 생성된 이후 내부 데이터(필드 값)을 변경할 수 없는 특성을 의미합니다. 대표적인 예로 String 클래스를 들 수 있습니다. 이를 코드로 확인해 보겠습니다.public class Main { public static void main(String[] args) { String immutableObject = "immutable"; immutableObject.replace("immutable", "muta.. 2025. 1. 9. JVM 정복하기 📍 JVM이란?JVM(Java Virtual Machine)은 Java 플랫폼의 초석입니다. 이는 하드웨어 및 운영 체제의 독립성, 컴파일된 코드의 작은 크기, 악성 프로그램으로부터 사용자를 보호하는 기능을 담당하는 기술의 구성 요소 입니다.JVM은 추상 컴퓨팅 머신입니다. 실제 컴퓨팅 머신처럼 명령어 세트가 있으며 실행 시 다양한 메모리 영역을 조작합니다.JVM은 java 프로그래밍 언어에 대해 아무것도 알지 못하며, 특정 바이너리 형식인 클래스 파일 형식만 알고 있습니다. 클래스 파일에는 java Virtual Machine 명령어(또는 바이트 코드)와 심볼 테이블 및 기타 보조 정보가 포함되어 있습니다. Q. JVM이 어떻게 악성 프로그램으로부터 사용자를 보호하는가?바이트 코드 검증, 클래스 로더.. 2025. 1. 9. [Effective Java] 생성자 대신 팩터리 메서드를 고려하라 오늘 알아볼 주제는 "생성자 대신 팩터리 메서드를 고려하라"입니다.왜 생성자 대신 팩터리 메서드를 고려해야 할까요? 먼저 정적 팩터리 메서드가 생성자보다 좋은 장점 5가지에 대해 알아보도록 하겠습니다. 장점1. 이름을 가질 수 있습니다.2. 호출될 때마다 인스턴스를 새로 생성하지 않아도 됩니다.3. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있습니다.4. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있습니다.5. 정적 팩터리 메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 됩니다. 장점이 있으면 단점도 늘 있는법 단점에 대해서도 알아보도록 하겠습니다.단점1. 상속을 하려면 public이나 protected 생성자가 필요하니 정적 팩터리 메서드만 제공하면 하위 클.. 2024. 12. 11. 자바 메모리 구조 자바 메모리 구조Deep Dive 자바 실제 메모리 구조 메서드 영역, 스택 영역, 힙 영역으로 총 3가지 영역으로 나뉜다. 메서드 영역메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은 프로그램의 모든 영역에서 공유한다. 어떤 정보가?클래스 정보 : 클래스 실행 코드(바이트 코드), 필드, 메서드 생성자 코드static 영역 : static 변수들을 보관런타임 상수 풀 : 공통 리터럴 상수를 보관 스택 영역스택 영역은 자바 실행 시, 하나의 실행 스택이 생성된다. 각 스택 프레임은 지역 변수, 중간 연산 결과, 메서드 호출 정보 등이 포함된다.스택 프레임 : 스택에 쌓이는 네모 박스 하나가 스택 프레임 (메서드 호출시 하나의 스택 프레임이 쌓이고, 메서드 종료시 해당 스택 프.. 2024. 10. 2. Objects.equals() vs equals() 두 메서드에 어떤 차이가 존재하는지알아보도록 하겠습니다. Equals()equals() 메서드의 설명과 내부 로직은 다음과 같습니다. 설명Compares this string to the specified object. The result is true if and only if the argument is not null and is a String object that represents the same sequence of characters as this object.해석은 다음과 같습니다.이 문자열을 지정된 개체와 비교합니다. 결과는 인수가 null이 아니며 이 개체와 동일한 문자 시퀀스를 나타내는 문자열 개체인 경우에만 참입니다. 내부 로직 🔎 equals()메소드를 비교하는 대상이 nu.. 2024. 9. 25. Object.equals() 메서드가 정말 null-safe한가? 오늘의 실험체는 Ojbect.equals() 메서드 입니다.실험 주제는 Object.equals() 메서드가 정말 null-safe한가?입니다.실험 시작합니다.🧐 실험 코드코드는 다음과 같습니다.package equals실험;import java.util.Objects;public class equalsMain { public static void main(String[] args) { String a = null; String b = null; boolean result = Objects.equals(a,b); System.out.println(result); }} 실행 결과코드를 실행한 결과는 다음과 같습니다. 결론Object.equal.. 2024. 9. 25. equals()메소드를 비교하는 대상이 null인 경우 오늘의 실험체는 equals() 메서드 입니다.실험 주제는 equals()메서드에게 null은 안전한가? 입니다.바로 실험 시작하겠습니다. 🧐 실험 코드코드는 다음과 같습니다.String a = null;String b = "hello";boolean result = a.equals(b); 실행 결과코드를 실행한 결과는 다음과 같습니다. "a가 null이기 때문에 String.equals(Object) 메서드를 호출할 수 없다"라고 오류는 말하고 있습니다. 🔎 왜 NullPointerException 예외가 발생할까?equals()라는 메서드는 Java에서 Object라는 클래스에 정의된 static 메서드이다.null인 상태에서 equals()메서드를 호출하려고 하니, 예외가 발생하게 된다. 결론.. 2024. 9. 25. 이전 1 2 다음