2021/10 65

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 공간적 특성 공간적 특성 : 변수는 객체마다 별도로 존재한다 ㄴ 인스턴스 변수라고 부른다 변수는 클래스당 하나가 생성된다 시간적 특성 객체 생성 시 변수가 생성된다 ㄴ 객체가 생길 때 변수도 생성된다 ㄴ 객체 생성 후 변수 사용이 가능하다 ㄴ 객체가 사라지면 변수도 사라진다 클래스 로딩 시 변수가 생성된다 ㄴ 객체가 생기기(인스턴스) 전에 이미 생성된다 ㄴ 객체가 생기기(인스턴스) 전에도 사용이 가능 ㄴ 생성된 객체(인스턴스)가 사라져도 변수는 사라지지 않는다 ㄴ 변수는 프로그램이 종료될 때 사라진다 공유의 특성 공유되지 않는다 ㄴ 변수는 객체..

05. 기술면접 - 자바 - OOP 의 4가지 특징과 OOP 5가지 설계 원칙

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 OOP 란 - OOP는 현실 세계의 사물및 개념들을 객체로 보고, 그 객체들을 조립하여 프로그래밍 하는 기법이다 - 절차지향적 프로그래밍에서 있었던 코드의 재사용성과 중복제거가 가장 큰 목적으로 만들어진 기법 절차지향 프로그래밍 - 실행하고자 하는 절차를 정하고, 이 절차대로 프로그래밍하는 방법 - 목적을 달성하기 위한 일의 흐름에 중점을 둔다. 객체지향 프로그래밍 - 실세상의 물체를 객체로 표현하고, 이들 사이의 관계, 상호 작용을 프로그램으로 나타낸다. - 객체를 추출하고 객체들의 관계를 결정하고 이들의 상호 작용에 필요한 함수(메서드)와 변수(필드)를 설계 및 구현하다. - 객체 지향의 핵심은 ..

04. 기술면접 - 자바 - 래퍼 클래스 (Wrapper Class)

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 Wrapper Class 프로그램에 따라 기본 타입의 데이터를 객체로 취급해야 하는 경우가 있다 예를들어, 메소드의 인수로 객체 타입만 요구 되면, 기본 타입의 데이터형을 그대로 사용할 수 없다. 이 때 기본타입의 데이터를 먼저 객체로 변환한 후 작업을 수행해야 한다 // 사용 불가 List list = new ArrayList(); // 사용 가능 List list = new ArrayList(); // 사용 가능 (Array 는 reference type 이기 때문) List list = new ArrayList(); 오토 박싱(Auto Boxing) 과 오토 언박싱(Auto Un Boxing) ..

03. 기술면접 - 자바 - 접근 제어자(Access Modifier)와 데이터 타입 (Data Type) = 자료형

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 Access-Modifier 접근제어자 표시 설명 public + 어떤 클래스의 객체에서든 접근가능 private - 이 클래스에서 생성된 객체들만 접근가능 protected # 이 클래스와 동일 패키지에 있거나 상속관계에 있는 하위 클래스의 객체들만 접근가능 package ~ 동일 패키지에 있는 클래스와 객체들만 접근 가능 + default 도 있다 Non-Access-Modifier - static : static 영역에서 사용 - final : 상수 선언 - abstract : 추상 클래스 또는 메소드 선언 - synchronized : 멀티 쓰레드 동기화 - transient : 직렬화 과정에..

02. 기술 면접 - 자바 - 자바 언어의 장점

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 JAVA 언어의 장단점 - 장점 - 운영체제에 독립적이다 - JVM 에서 동작하기 때문에, 특정 운영체제에 종속되지 않는다 - 객체지향 언어이다 - 객체지향적으로 프로그래밍 하기 위해 여러 언어적 지원을 하고 있다 (캡슐화, 상속, 추상화, 다형성 등) - 객체지향 패러다임의 특성상 비교적 이해하고 배우기 쉽다 (C와 C++ 기준 시) - 자동으로 메모리 관리를 해준다 - JVM 에서 Garbage Collector(가비지 컬렉터) 라고 불리는 Demon Thread(데몬 쓰레드)에 의해 GC(Garbage Collection)가 일어난다. GC로 인해 별도의 메모리 관리가 필요 없으며, 비즈니스 로..