-
CS 기반지식 공부하기 / 면접때 받았던 질문 모아두기.
>JAVA
- OOP : 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 객체들 간의 유기적인 상호 작용을 통해 로직을 구성하는 프로그램.
- 클래스 : 추상화를 거쳐 집단에 속하는 속성 & 행위를 변수와 메서드로 정의한 것
- 인스턴스 (객체) : 클래스에서 정의한 것을 토대로 실제 메모리상에 할당된 것
- Call by value ( 값에 의한 호출)
> OOP의 특성.
- 추상화 : 공통의 속성이나 기능을 묶어 이름을 붙이는 것.
- 캡슐화 : 코드를 재수정 없이 재활용 하는것.
- 상속 : 부모 클래스의 속성과 기능을 자식 클래스가 원하는 기능만 수정하여 사용하는것.
- 다형성 : 하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석 하는것
- 오버라이딩, 오버로딩이 해당
- 오버라이딩 : 부모클래스에 메서드와 같은 이름, 매개변수를 재정의 하는것.
- 오버로딩 : 같은 이름의 함수를 여러개 정의 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있게 하는 것 .
>객체 지향적 설게 원칙
- SRP : 단일 책임 원칙
- 클래스는 단 하나의 책임을 가져야 하며 클래스를 변경하는 이유는 단 하나의 이유여야 한다. - OCP : 계방 폐쇄 원칙
- 확장에는 열려 있여야 하고 변경에는 닫혀 있어야 한다. - LSP : 리스코프 치환 원칙
- 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작. - ISP :
- 분리 원칙
- 인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리 해아 한다. - DIP : 의존 역전 원칙
- 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안도니다.
> Restrful API
- Restful : 기본원칙을 성실히 지킨 서비스 디자인.
- API 설계의 중심에 자원이 있고 HTTP Method를 통해 처리하도록 설계
- REST 6 가지 원칙
- Uniform interface
- Stateless
- Caching
- Client-Server
- Hierachical system
- Code on demand
- Restful하게 API를 디자인 한다는 것은?
- 리소스와 행위를 명시적이고 직관적이게 분리한다.
- 리소스는 URL로 표현 되는데 리소스가 가리키는 것은 명사로 표현 되어야 한다.
- 행위는 HTTP METHOD로 표현한다.
- GET(조회) ,
- POST(생성),
- PUT(기존 Entity 전체 수정) ,
- Patch(기존 entity 일부 수정)
- DELETE(삭제)