Day 8

오버로딩과 오버라이딩의 차이점은 무엇인가요? => 오버로딩의 정의는 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다. 오버로딩을 사용하는 이유 같은 기능을 하는 메소드를 하나의 이름으로 사용할 수 있다. 다형성 사용자 편의성 => 오버라이딩은 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것이다. 상속받은 메소드를 그대로 사용할 수도 있지만, 자식 클래스에서 상황에 맞게 변경해야하는 경우 오버라이딩할 필요가 생긴다. 오버라이딩은 부모 클래스의 메소드를 재정의하는 것이므로, 자식 클래스에서는 오버라이딩하고자 하는 메소드의 이름, 매개변수, 리턴 값이 모두 같아야 한다. 오버라이딩 조건 자식 클래스에서 오버라이딩하는 메소드의 접근 제어자는 부모 클래스보다 더 좁게 설정할 수 없다. 예외(Exception)는 부모 클

2023년 3월 2일
·
0개의 댓글
·

Day 7

절차지향 / 객체지향 / 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가? => 절차 지향 프로그래밍(Procedural Programming) 순차적인 처리를 중요시 여기며, 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법 장점 코드의 가독성이 좋다. 코드를 단위화 할 수 있다. 컴퓨터의 처리구조와 비슷해 실행 속도가 빠르다. 단점 각각의 코드가 순서에 따라 실행되어, 변경, 유지보수 및 분석이 어렵다. 변수나 상수 등의 값들을 관리하는 자료형 과 해당 자료형을 사용하는 함수가 분리되어 사용된다. 절차지향 프로그래밍 언어 : C => 객체지향 프로그래밍(Object Oriented Programming) 모든 데이터를 객체(Object)로 취급하여, 객체가 처리 요청을 받았을 때, 객체 내부에 있는 기능을 가져와 사용해 처리하는 기법 모든 객체가 내부의 자료형(Field)와 함수(Meth

2023년 3월 1일
·
0개의 댓글
·

Day6

웹 서버와 WAS의 차이는? => 웹 서버는 http 요청을 받아들여 HTML 문서와 같은 정적인 콘텐츠를 사용자에게 전달해주는 역할을 한다. 웹 서버의 임무는 대표적으로 다음과 같다. 단순히 저장된 웹 리소스들을 클라이언트로 전달하고, 클라이언트로부터 콘텐츠를 전달받아 저장하거나 처리한다. 사용자로부터 동적인 요청이 들어왔을 때, 해당 요청을 웹 서버 자체적으로 처리하기 어렵기 때문에 WAS에게 요청한다. => WAS 또한 웹서버와 동일하게 HTTP 기반으로 동작한다. 웹 서버가 할 수 있는 기능 대부분이 WAS에서도 처리가 가능하다. 비즈니스 로직을 처리할 수 있어 사용자에게 동적인 콘텐츠를 전달할 수 있다. 주로 DB와 같이 수행한다. 웹서버와 WAS 분리 => WAS는 DB 조회 및 비즈니스 로직을 처리하는 데 집중한다. 따라서 단순한 정적 콘텐츠는 웹 서버에게 맡기고, 기능을 분리해 서버 부하를 방지한다. 또한 WAS에 문제가 생겨 WAS를 재시작

2023년 2월 28일
·
0개의 댓글
·

Day5

@SpringBootTest와 @WebMvcTest의 차이점을 설명해 주세요. => @SpringBootTest를 사용하게 되면 웹 애플리케이션 컨텍스트에 대한 모든 구성이 로드된다. 애플리케이션의 모든 Bean을 스캔해 로드하기 때문에 실제 환경과 동일하게 테스트 할 수 있으나, 시간이 오래걸린다. 주로 통합 테스트에서 사용되는 애노테이션이다. => @WebMvcTest는 Web Layer만 테스트할 때 사용한다. @WebMvcTest(ContollerClassName.class)로 특정 컨트롤러만 인스턴스화 하여 테스트하는 것도 가능하다. 컨트롤러의 의존성은 @MockBean으로 모의 의존관계 생성 및 주입한다. MockMvc객체를 주입받아 해당 객체를 이용하여 테스트 진행한다. 트랜잭션이 무엇인지 설명해 주세요. => 트랜잭션은 DB에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말한다. 즉 여러 쿼리들을 하나로 묶는 단위를 말한다. 트랜잭션의 특징은 A

2023년 2월 27일
·
0개의 댓글
·

Day4

Parameter와 Argument의 차이에 대해 설명해주세요. => Parameter는 메소드를 정의할 때 사용되는 변수를 의미한다. => Argument는 실제로 메소드를 호출할 때, 넘기는 변수값을 의미한다. 프로세스와 스레드의 차이에 대해 설명해 주세요 => 프로세스는 메모리 상에서 실행중인 프로그램을 말하며, 스레드는 이 프로세스 안에서 실행되는 흐름 단위를 말한다. 프로세스는 최소 하나의 스레드를 보유하고 있으며, 각각 별도의 주소공간을 독립적으로 할당 받는다.(code, heap, stack) => 스레드는 이중에 stack만 따로 할당받고 나머지 영역은 스레드끼리 서로 공유한다. 멀티 프로세스 => 프로그램을 여러 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 것이다. 장점: 의 프로세스가 잘못 되어도 프로그램은 동작한다. 단점: context switching 비용이 발생한다. 멀티 스레드 => 프로그램을

2023년 2월 24일
·
0개의 댓글
·

Day3

MSA(Microservice Architecture)란? => MSA는 1개의 시스템을 독립적으로 배포 가능한 각각의 서비스로 분할하는 아키텍처다. 각각의 서비스는 API를 통해 데이터를 주고 받으며 1개의 큰 서비스를 구성한다. 모든 시스템의 구성요소가 한 프로젝트에 통합되어 있는 Monolithic Architecture(모놀리식 아키텍쳐)의 한계점을 극복하고자 등장했다. => 장점 일부 서비스에 장애가 발생해도 전체 서비스에 영향을 끼치지 않는다. 각각의 서비스들은 서로 다른 언어와 프레임워크로 구성될 수 있다. 서비스의 확장이 용이하다. 특정 서비스만 scale in/out이 가능해 트래픽에 유연한 대처가 가능하다. => 단점 서비스가 분리되어 있어 테스트나 트랜잭션 처리 등이 어렵다. 서비스 간에 API로 통신하기 때문에 그에 대한 비용이 발생한다. 서비스 간의 호출이 연속적이기 때문에 디버깅 및 에러 트레이싱이 어렵다. 모놀리식의 장단점 => 장점 1

2023년 2월 23일
·
0개의 댓글
·

Day2

DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해 설명해주세요. => DI란 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다. => 의존성이란 한 객체가 다른 객체를 사용할 때 의존성이 있다고 한다. => DI의 장점은 다음과 같다. 의존성이 줄어든다. 의존한다는 것은 그 의존대상의 변화에 취약하다는 것이다. DI로 구현하게 되었을 때, 주입받는 대상이 변하더라도 그 구현 자체를 수정할 일이 없거나 줄어들게됨. 재사용성이 높은 코드가 된다. 의존하는 클래스를 구분하여 구현하면, 다른 클래스에서 재사용할 수가 있다. 테스트하기 좋은 코드가 된다. 의존 관계에 있는 클래스들을 분리해서 테스트할 수 있다. 가독성이 높아진다. 의존

2023년 2월 22일
·
0개의 댓글
·

Day 1

1. 객체지향 프로그래밍(OOP)에 대해 설명해주세요. 알고있는 원칙이나 키워드를 언급해주세요 OOP란? ⇒ OOP란 컴퓨터 프로그래밍 방법론이다. 프로그램을 여러 개의 독립된 단위인 객체로 나누고 객체들의 상호작용으로 프로그램을 구성하는 프로그래밍 방법이다. 객체들은 메시지를 주고 받으며 데이터를 처리한다. OOP의 키워드 ⇒ OOP의 특징으로는 캡슐화, 정보 은닉, 다형성, 추상화, 상속, 동적 바인딩의 특징이 있다. 캡슐화 캡슐화란 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것을 말합니다 상속 상위 클래스로부터 필드와 메소드를 물려 받는다. 코드 재사용이 가능하다. 추상화 객체의 공통적인 속성과 기능을 추출하여 정의하는 것이다. 추상화가 잘 되면 클라이언트가 내부 코드를 몰라도 되고 코드의 변경이 생겨도 클라이언트는 영향을 받지 않는다. 다형성

2023년 2월 21일
·
0개의 댓글
·