코드 그라데이션

과제 2주차 내용 정리 본문

Java/후발대

과제 2주차 내용 정리

완벽한 장면 2023. 2. 22. 02:26

1. 스프링 프레임워크는 어떤 특징 혹은 장점을 가지고 있나요? (3가지 이상)

1. 객체지향 프로그래밍 (OOP) 에 기반

  1. 서버 개발 시 크게 3계층으로 나누어 구현 가능 (Controller, Service, Repository)

  2. 클래스 1개를 선언하여 재사용 가능

  3. 모듈화가 잘 되어 있어, 필요한 모듈들만 레고처럼 조립하여 사용 가능

  ex) 스프링 시큐리티, 스프링 타임리프 등

 

2. DI (의존성 주입) 지원

  1. DI 통해 강한결합의 문제점을 해결

 

3. 비즈니스 로직에 집중하게 해 줌

  1. 웹 서버에서는 비즈니스 로직이 가장 중요한 구현 부분

  2. 비즈니스 로직 외에 다른 부분은 스프링 프레임워크가 쉽게 구현 가능하도록 도움을 줌

     1. Client 와의 communication 역할을 하는 Controller

     2. DB 와의 communication 역할을 하는 Spring Data JPA

 

4. 그 외 가능한 답변들

  1. AOP 지원

  2. 테스트 코드 작성 수월함

  3. 20여년 동안 발전한 프레임워크

     1. 개발 편의성이 계속 나아짐

     2. 많은 기업에서 사용하며 입증된 신뢰성

 

2. 자바의 메모리 영역을 간단하게 설명하세요. (메서드/스택/힙 영역)

* 메서드 영역

: static 변수, 전역변수, 코드에서 사용되는 Class 정보 등이 올라간다. 코드에서 사용되는 class들을 로더로 읽어 클래스별로 런타임 필드데이터, 메서드 데이터 등을 분류해 저장한다.

 

* 스택(Stack)

: 지역변수, 함수(메서드) 등이 할당되는 LIFO(Last In First Out) 방식의 메모리

 

* 힙(Heap) : new 연산자를 통한 동작할당된 객체들이 저장되며, 가비지 컬렉션에 의해 메모리가 관리되어진다.

 

 

3. ORM, JPA, Spring Data JPA 를 구분해서 설명해 보세요.

1. ORM (Object-Relational Mapping)

◦ 서버의 프로그래밍 언어와 DB 언어 중간에서 통역사 역할을 해 줌

  ▪ Object: **"객체"**지향 언어 (자바, 파이썬)

  ▪ Relational: "관계형" 데이터베이스 (H2, MySQL)

 

2. JPA (Java Persistence API)

◦ 자바 ORM 기술에 대한 표준 명세

◦ 즉, 자바 언어를 사용해 ORM 을 사용 가능하도록 만든 표준 명세

 

3. Hibernate

◦ JPA 가 표준 명세라고 한다면, 이를 실제 구현한 프레임워크 중 사실상 표준

◦ 스프링부트에서 하이버네이트 사용 중

 

4. Spring Data JPA

◦ JPA 를 편리하게 사용하기 위해, 스프링에서 JPA 를 Wrapping

◦ 스프링 개발자들이 JPA 를 사용할 때 필수적으로 생성해야 하나, 예상 가능하고 반복적인 코드들

→ Spring Data JPA 가 대신 작성 ◦ Repostiory 인터페이스만 작성하면, 필요한 구현은 스프링이 대신 알아서 척척!

 

 

4. 제너릭이란?

클래스를 선언할 때 타입을 결정하지 않고 객체를 생성할 때 유동적인 타입으로 재사용하기 위한 것.

 

5. 다형성이란?

서로 다른 클래스로부터 만들어진 객체지만 같은 부모의 Class 타입으로 이들을 관리할 수 있는(=대입될 수 있는) 성질

 

6. Overloading vs Overriding ?

Overloading(오버로딩)

- 같은 이름의 메소드를 여러개 정의하는 것

- 매개변수의 타입이 다르거나 개수가 달라야 한다. * return type과 접근 제어자는 영향을 주지 않음.

 

Overriding(오버라이딩)

- 상속에서 나온 개념

- 상위 클래스(부모 클래스)의 메소드를 하위 클래스(자식 클래스)에서 재정의.

 

7. 캐시(cache) 와 세션(Session)의 공통점과 차이점은?

공통점 : 둘 다 사용자의 데이터를 저장한다.

차이점

- 캐시 : 캐시는 Client 컴퓨터에 저장했다 서버 요청시 네트워크를 타고 서버로 전달되기 때문에 보안에 취약하다.

- 세션 : 세션은 서버에 저장되고 브라우저 단위로 관리된다. 캐시에 비해 보안성이 좋다.

 

8. 보안성이 낮은 Cookie 대신 Session을 사용하면 되는데,                                        그렇게 안 하는 이유?

: 모든 정보를 Session에 저장하면 Server의 메모리를 과도하게 사용하게 되어 Server에 무리가 감'

 

9. Interface, Abstract ?

(특징, 공통점, 차이점, 간략하게) 

 

Interface

- 일종의 추상 클래스

- 오직 추상메서드와 상수만을 멤버로 갖는다.

- Implements 키워드를 사용

- 상속의 관계가 없는 클래스간 서로 공통되는 로직을 구현하여 쓸 수 있도록한다.

- Extends는 하나의 클래스만 상속 가능하나 Interface는 다중 상속이 가능하다.

 

Abstract

- 추상메서드를 하나 이상 가진 클래스

- 자신의 생성자로 객체 생성 불가능

- 하위 클래스를 참조하여 상위 클래스의 객체를 생성

- 하위 클래스를 제어하기 위해 사용

 

Interface vs Abstract

공통점

- new 연산자로 인스턴스 생성 불가능.

- 프로토타입만 있는 메서드를 갖는다.

- 사용하기 위해서는 하위클래스에서 확장/구현 해야 한다.

 

차이점

- 사용하는 키워드가 다르다.

- Abstract는 일반 메서드를 사용할 수 있지만, Interface는 메서드 선언만 가능하다.

 

10. 객체지향 프로그래밍(Objecr-Oriented Programming : OOP)

컴퓨터 프로그래밍의 패러다임의 하나다.

객체지향 프로그래밍(OOP)은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위,          즉 “객체”들의 모임으로 파악하고자 하는 것.

 

각각의 객체는 메시지를 주고 받고, 테이터를 처리할 수 있음.

 

① 캡슐화(Encapsulation)

: 하나의 문제 해결을 위한 data와 method를 한 단위로 묶는 것으로서,

  클래스 내부 정의에 대해 외부에서 볼 수 없도록 함이 특징(은닉화)

 

② 추상화(Abstraction)

: 객체(Object)의 자세한 성질을 무시하고(숨기고) 그들의 일반적인 성질을 나타낸다는 것.

일반적으로 클래스는 클래스로 표현할 서브클래스(또는 객체)의 공통적인 성질과 행위를 일반화해 디자인되며

그로부터 생성된 객체는 자신의 고유한 성질을 갖게 됨.

 

③ 다형성(Polymorphism)

: 다형성이란 같은 메시지에 대해 클래스에 따라 다른 행위를 하는 특성.

일반적으로 같은 이름을 갖는 method에 대해 인자(Argument) 개수와 Data Type에 따라 수행되는 행위가 달라짐을 의미. 다형성을 통해 사용자는 약속된 인터페이스를 따르는 서로 다른 객체들를 같은 방식으로 사용할 수 있게 됨.

 

④ 상속(inheritance)

: 기존에 있던 클래스(즉, 기존의 클래스로부터 상속받은)를 바탕으로 다른 특성을 추가해 새로운 클래스를 만들 수 있음.

 

⑤ 인스턴스(Instance)

: 인스턴스는 추상화 개념 또는 클래스 객체, 컴퓨터 프로세스 등과 같은 템플릿(무엇인가를 만들 때 안내 역할 하는 데 사용되는 형식, 꼴, 틀 또는 모형 등을 의미)이 실제로 구현된 것.

 

728x90

'Java > 후발대' 카테고리의 다른 글

후발대 19일차 설명 추가  (0) 2023.02.24
후발대 19일차 전체 코드  (0) 2023.02.24
후발대 18일차 설명 추가  (0) 2023.02.21
후발대 18일차 전체 코드  (0) 2023.02.21
후발대 17일차 코드 설명 추가  (0) 2023.02.19
Comments