- 자바
1. 자바의 특징
1. 객체 지향 언어이다. (객체 지향 언어란 소스를 부품처럼 사용하기 위해 생긴 개념)
2. 이식성이 높다.
3. 오픈소스 라이브러리가 풍부하다.
4. 메모리를 자동으로 관리한다. (가비지 컬렉션)
5. 함수적 스타일 코딩을 지원한다. (자바 8부터 람다식 지원)
-> 즉, 남의 소스를 편하게 쓸 수 있도록 설계되어 있다.
2. 자바의 장단점
1. 장점 : 객체지향 언어로 소스를 부품처럼 사용할 수 있어 결합도가 낮다. 이식성이 높아 소스 파일을 수정하지 않아도 JRE가 설치된 모든 운영체제에서 실행 가능하다. 오픈소스 라이브러리가 풍부하여 쉽게 개발 가능하다. 동적 로딩을 지원해 유지보수가 쉽고 빠르다.
2. 단점 : 실행 속도가 다른 언어보다 느리다. JVM에서 실행되기 때문에 많은 메모리를 소비한다. JVM을 사용하기 때문에 하드웨어를 직접 정밀하게 조정해야하는 프로그램 개발에는 적합하지 않다. 예외처리가 필수적이다. 코드가 길다.
3. 인터페이스와 추상 클래스의 차이는 무엇인가?
1. 인터페이스 : 객체의 사용 방법을 정의한 타입이다.
- 객체화가 불가능하고, 분류가 아닌 규격이기 때문에 복수개의 인터페이스 구현이 가능하다. 익명 객체 사용 가능, 실체 클래스가 implements하여 사용한다.
2. 추상 클래스 : 실체 클래스의 공통적인 특성을 추출해서 선언한 클래스이다.
- 자식객체만 객체화 가능하고, 1개의 추상 클래스만 상속 가능하다. 실체 클래스가 extends 하여 사용한다.
4. 인터페이스가 왜 필요한가?
- 인터페이스는 사용방법을 정의하고 공동 작업 시 규격을 제시할 수 있다.
- 코드 변경 없이 실행 내용과 리턴값을 다양화할 수 있다.
5. 클래스, 객체, 인스턴스의 차이?
- 클래스는 원본, 객체화는 클래스를 복사하는 것, 인스턴스는 복사본이라고 볼 수 있다.
1) 클래스 : 각종 메서드와 필드 등을 담는 분류
2) 객체 : 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 다른 것과 식별 가능한 것
ex) 물리적으로 존재하는 자동차, 자전거, 책, 사람 / 추상적인 학과, 강의, 주문
3) 인스턴스 : 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스라고 한다.
클래스의 타입으로 선언되었을 때 객체라고 부르고, 그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 한다. 인스턴스는 원본(클래스)으로부터 생성된 복사본.
6. 오버라이드와 오버로드의 차이
1) 오버로드는 과적이란 뜻으로, 같은 이름의 메서드를 여러 개 생성하는 것이다. 단, 매개변수의 갯수나 타입은 달라야 한다.
2) 오버라이드는 상속받은 클래스의 객체를 재정의하는 것이다.
7. 싱글톤 패턴을 사용하는 이유
- 싱글톤 패턴은 '하나'의 인스턴스만 생성하여 사용하는 디자인 패턴이다. 인스턴스가 필요할 때, 똑같은 인스턴스를 만들지 않고 기존의 인스턴스를 활용하는 것.
- 사용하는 이유는 메모리 낭비를 방지할 수 있기 때문이다. 객체를 생성할 때마다 메모리 영역을 할당받아야하는데, 한 번의 new를 통해 객체를 생성한다면 메모리 낭비가 방지된다.
또한 싱글톤으로 구현한 인스턴스는 '전역'이므로, 다른 클래스의 인스턴스들이 데이터를 공유하는 것이 가능하다.
8. 객체 지향 프로그래밍의 특징
캡추다상
1) 캡슐화(Encapsulation) : 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것. 자바는 접근 제한자를 통해 객체의 필드와 메소드의 사용 범위를 제한한다(다른 사용자에게 데이터 입/출력을 제한).
2) 추상화(Abstraction) : 실체 간에 공통되는 특성을 추출하여 단순화 시키는 것이다.
- 추상 클래스는 추상 메서드로 꼭 구현해야 하는 메서드 등의 규격을 만들 수 있고, 자식 이외에 객체화 시킬 수 없다.
- 실체 클래스가 추상 클래스를 상속받으면 추상 메서드를 강제로 오버라이드 하게 된다.
3) 다형성(Polymorphism) : 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질. 자식 객체가 부모 객체 형태의 변수에 들어갈 수 있다. 단, 부모 형태의 변수에 들어가면 자식 고유의 기능을 쓸 수 없다.
4) 상속(Inheritance) : 상위 객체는 자기가 가지고 있는 필드와 메소드를 하위 객체에게 물려주어 하위 객체가 원래 내 것 처럼 사용할 수 있도록 해준다.
- 반복된 코드의 중복을 줄여준다. 상위객체의 수정으로 모든 하위 객체들의 수정 효과를 가져오므로 유지 보수 시간을 최소화 시켜준다.
- spring
1. try-catch 와 throw의 차이
1) 예외처리 : 예외가 발생했을 경우 프로그램의 갑작스러운 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 코드
2. DI 와 IOC 에 대한 설명, IOC가 필요한 이유
3. Framework 와 Library 의 차이
4. filter 와 intersector 의 차이
5. AOP 란 무엇인가
6. transaction 이 필요한 이유
7. mvc 패턴이 무엇인지 설명하고 장점을 서술하라.
'Back-End > JAVA' 카테고리의 다른 글
[자바] 문자열과 제너릭 (String & Generic) (0) | 2022.04.20 |
---|---|
자바] 조건문-switch, 반복문, 배열, 향상된 for문 (0) | 2022.04.12 |
STS /이클립스] 사용법 (계속 추가) (0) | 2022.04.08 |
[자바] JAVA, STS 설치 (0) | 2022.04.07 |
[자바] 자바 기초 개념 (0) | 2022.04.07 |