∞. 기술 면접 61

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로 인해 별도의 메모리 관리가 필요 없으며, 비즈니스 로..

01. 기술면접 - 자바 - JAVA 와 C/C++ 차이점

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 차이점 - 자바와 c/c++ 의 가장 큰 차이점은 실행 환경이다 - java 에서의 개발 혹은 컴파일 + jar 압축 - 자바는 링크 과정이 없이 컴파일러가 바로 바이트 코드를 생성 - c/c++ 에서의 개발: 컴파일 + 링크 다른 블로그 글 - c++ 과 java 는 문법적으로 상당히 유사하다 - java 를 설계 할 때 c++ 개발자들이 쉽게 배울 수 있도록 만들었기 때문이다 - 하지만 여러 차이점이 있는 데, 이는 설계 목표 차이에서 발생했다 - java 는 보안, 이식성, 빠른 개발에 비중을 두었고, C++ 은 속도와 C 언어의 하위호환성에 중점을 두었다 - 또 한 java 는 가상 머신 바이..

14. 기술면접 - 데이터베이스 - JDBC (Java DataBase Connectivity)

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 JDBC 란 JDBC (Java Database Connectivity)는 DB에 접근할 수 있도록 Java 에서 제공하는 API 이다. - JDBC 는 관계형 데이터베이스에 사용되는 SQL 문을 실행하기 위해 자바로 작성된 클래스와 인터페이스로 구성되어 있다 - 특정 데이터베이스나 특정 데이터베이스 매커니즘에 구애 받지 않는 독립적인 인터페이스를 통해 다양한 데이터베이스에 접근하는 코드를 구현(mysql, oracle, mssql 등 추상화를 통해 접근가능)할 수 있도록 제공하는 자바 클래스의 표준 집합이다 - JDBC 클래스는 자바 패키지 java.sql 과 javax.sql 에 포함되어 있다 데..

13. 기술면접 - 데이터베이스 - ORM (Object Relation Mapping)

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 ORM 이란 - 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결) 해주는 것을 말한다 영속성 (Persistance) - 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성 - 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다 - 때문에 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 데이터를 영구하게 저장하여 영속성 을 부여한다 영속성 레이어 (Persistence Layer) - 프로그램의 아키텍처에서, 데이터에 영속성을 부여해주는 계층 - JDBC 를 이용하여 직접 구현할 수 있지만 Pe..

12. 기술면접 - 데이터베이스 - 파티셔닝(Partitioning)

공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 배경 - 서비스의 크기가 점점 커지고 DB에 저장하는 데이터의 규모 또한 대용량화 되면서, 기존에 사용하는 DB 시스템의 용량(storage)의 한계와 성능(performence)의 저하를 가져오게 되었다 - 즉, VLDB(Very Large DBMS) 와 같이 하나의 DBMS 에 너무 큰 table 이 들어가면서 용량과 성능 측면에서 많은 이슈가 발생하게 되었고, 이런 이슈를 해결하기 위한 방법으로 Table 을 `파티션(partition)` 이라는 작은 단위로 나누어 관리하는 `파티셔닝(partitioning) 기법`이 나타나게 되었다 파티셔닝의 개념 - 큰 테이블이나 index를 관리하기 쉬운 ..