∞. 기술 면접/7. 자바 15

15. 기술면접 - 자바 - == 와 eqauls 의 차이

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 "==" 항등 연산자(Operator) 이다. != - 참조 비교(Reference Comparison) ; (주소 비교, Address Comparison) - 두 객체가 같은 메모리 공간을 가리키는지 확인한다. - 반환 형태: boolean type - 같은 주소면 return true, 다른 주소면 return false - 모든 기본 유형(Primitive Types)에 대해 적용할 수 있다. - byte, short, char, int, float, double, boolean "equals()" 객체 비교 메서드(Method) 이다. !(s1.equals(s2)); - 내용 비교(Conte..

13. 기술면접 - 자바 - String, StringBuilder, StringBuffer

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 String StringBuilder StringBuffer 새로운 값을 할당 할 때 마다 새로 클래스에 대한 객체가 생성된다 String 에 저장되는 문자열은 private final char[]의 형태이기 때문에 String 값은 바꿀 수 없다 (불변성) Array 에 add 가 불가능하기 때문에 새롭게 인스턴스를 생성해야 함 (아래 코드 참고) String + String + String ... ㄴ 각각의 String 주소값이 Stack 에 쌓이고 , Garbage Collector 가 호출 되기 전 까지 생선된 String 객체들 은 Heap 에 쌓이기 때문에 메모리 관리에 치명적이다 memo..

12. 기술면접 - 자바 - 클래스, 객체, 인스턴스

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 /* 클래스 */ public class Animal { ... } /* 객체와 인스턴스 */ public class Main { public static void main(String[] args) { Animal cat, dog; // '객체' // 인스턴스화 cat = new Animal(); // cat은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당) dog = new Animal(); // dog은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당) } } - 클래스(Class) : 객체를 만들기 위한 설계도 (클래스명, 멤버변수, 메소드 등 작성된 코드 덩어리) - 객체(O..

11. 기술면접 - 자바 - 컬렉션 프레임워크 (Collection Framework)

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 전체 구조 Collection Map - List ㄴ 순서가 있음 ㄴ 데이터 중복 가능 - Set ㄴ 순서 없음 ㄴ 데이터 중복 불가능 - 검색할 수 있는 인터페이스 - 데이터를 삽입할 때 Key와 Value 의 형태로 삽입되며, Key를 이용해서 Value 을 얻을 수 있다 - 선택과정 1. Map과 Collection 인터페이스 중 선택 1-1. Collection 선택 시 사용 목적에 따라 List, Set 선택 1-2. List 선택 시, Linked 또는 Array 택 Map Collection Set List HashMap Entry 의 배열로 저장되며, 배열의 index는 내부함수를 통해..

10. 기술면접 - 자바 - 인터페이스와 추상 클래스 차이

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 공통점과 차이점 추상 클래스 인터페이스 공통점 인스턴스(객체)를 생성 할 수 없다 (구현체가 필요하다는 말) 선언만 되어있고 구현 내용이 없다 자식 클래스가 메소드의 구체적인 동작을 구현하도록 책임을 위임한다 차이점 추상 클래스는 추상 메소드를 자식 클래스가 구체화하여 그 기능을 확장하는 데 목적이 있다 (상속을 위한 부모 클래스) 인터페이스는 서로 관련이 없는 클래스에서 공통적으로 사용하는 방식이 필요하지만 기능을 구현할 필요가 있는 경우에 사용한다 클래스 o 클래스 x 단일 상속 (extends) 다중 상속 (implement) is a kind of (일종의 라는 속한다는 개념에 가까움) can..

09. 기술면접 - 자바 - 자바는 항상 CallByValue 이다

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 public class CallByVal { public static void main(String[] args) { Person admin = new Person(1L, "admin"); changePerson(admin); System.out.println(admin); } private static void changePerson(Person admin) { admin = new Person(2L, "root"); } } class Person { private Long id; private String name; public Person(long id, String name) { this.id..

08. 기술면접 - 자바 - 직렬화(Serializable)

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 자바 직렬화란? - 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터를 변환하는 기술이다 (주로 네트워크 통신할 때) - 시스템적으로 이야기하면 JVM의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술 자바 직렬화 조건 1. 자바 기본(primitive) 타입 2. java.io.Serializable 인터페이스를 상속받은 객체 직렬화 방법 - java.io.ObjectOutputStream 객체를 이용 public class Serial implements Serializable { int ..

07. 기술면접 - 자바 - 가비지 컬렉션(Garbage Collection ) 처리 방법

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 JAVA 의 Garbage Collection 처리 방법 - GC(Garbage Collection) 을 수행하는 가비지 컬렉터(Garbage Collector) 가 하는 일 1. 메모리 할 당 2. 사용 중이 메모리 인식 3. 미사용 메모리 인식 - Stop the World 1. 자바 애플리케이션은 GC 실행 시 GC 실행 스레드를 제외한 모든 스레드를 멈추고, GC 완료 후 다시 스레드를 실행 상태로 변경 (아래 코드 참고) 2. Stop the World 는 모든 애플리케이션 스레드의 작업이 멈추는 상태 3. 어떤 GC 알고리즘을 사용하더라도, Stop the world 불가피하며 최소화하기 ..

06. 기술면접 - 자바 - Non Static 과 Static

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 Non-Static 변수 Non-Static Static 공간적 특성 공간적 특성 : 변수는 객체마다 별도로 존재한다 ㄴ 인스턴스 변수라고 부른다 변수는 클래스당 하나가 생성된다 시간적 특성 객체 생성 시 변수가 생성된다 ㄴ 객체가 생길 때 변수도 생성된다 ㄴ 객체 생성 후 변수 사용이 가능하다 ㄴ 객체가 사라지면 변수도 사라진다 클래스 로딩 시 변수가 생성된다 ㄴ 객체가 생기기(인스턴스) 전에 이미 생성된다 ㄴ 객체가 생기기(인스턴스) 전에도 사용이 가능 ㄴ 생성된 객체(인스턴스)가 사라져도 변수는 사라지지 않는다 ㄴ 변수는 프로그램이 종료될 때 사라진다 공유의 특성 공유되지 않는다 ㄴ 변수는 객체..