1. Swagger란? (사용방법 살짝 알아두기)
API 문서화 도구, API 문서를 자동으로 생성하고 관리하는 오픈 소스 프레임워크
- API 문서 자동 생성
Swagger는 API에 대한 명세를 기반으로 자동으로 문서를 생성하며, 사용자에게 API 사용법을 명확하게 제공.
- API 디자인 및 테스트
시각적으로 디자인하고 수정할 수 있으며, 실제로 실행하지 않고도 API요청 및 응답 시뮬레이션 가능.
- 다양한 언어 및 프레임워크 지원
[ Springboot에서 Swagger 적용 ] _ Springboot 2.0대 버전 추천
* build.gradle에 라이브러리 적용
implementation 'io.springfox:springfox-swagger2:2.9.2'
implementation 'io.springfox:springfox-swagger-ui:2.9.2'
* Swagger 설정을 위한 SwaggerConfig 클래스 파일 생성
@Configuration 어노테이션
* Controller 클래스에 API 명세 정의.
[ Swagger 어노테이션 ]
- @Api : 해당 클래스가 Swagger 문서에 표시될 때의 정보 정의 (API의 제목, 설명 )
- @ApiOperation : 해당 메서드가 어떤 역할을 하는지에 대한 정보 정의 ()
- @ApiParam :
https://velog.io/@banjjoknim/Swagger
2. extends와 implements 차이
* extends
자식클래스에서 부모클래스를 상속받을 때 사용. Java에서는 단일상속만 허용.
class Parent {
// 부모 클래스의 멤버들
}
class Child extends Parent {
// 자식 클래스의 멤버들
}
* implements
클래스에서 인터페이스를 상속받을 때 사용. 다중상속 가능.
interface InterfaceA {
// 인터페이스 A의 메서드 선언들
}
interface InterfaceB {
// 인터페이스 B의 메서드 선언들
}
class MyClass implements InterfaceA, InterfaceB {
// 클래스의 구현
}
3. solid 원칙
SOLID
객체지향 프로그래밍에서 코드의 설계 원칙.
1. 단일 책임 원칙 (Single Responsibility Principle, SRP)
하나의 클래스는 하나의 책임만 가져야 함.
=> 클래스 변경 시 발생하는 부작용 최소화, 코드의 응집성 향상
2. 개방 / 폐쇄 원칙 (Open / Closed Principle, OCP)
소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에 대해서는 열려 있어야 하지만 변경에 대해서는 닫혀 있어야 함.
=> 기존 코드 변경없이 확장을 통해 새로운 기능 추가
3. 리스코프 치환 원칙 (Liskov Substitution Principle, LSP)
자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 함.
=> 기존 클래스를 상속한 자식 클래스는 부모 클래스의 기능을 사용할 수 있어야 함, 다형성 유지.
4. 인터페이스 분리 원칙 (Interface Segregation Principle, ISP)
하나의 큰 (범용)인터페이스보다 여러 개의 작은 인터페이스가 더 나음.
=> 각 클라이언트는 자신이 필요로 하는 인터페이스에만 의존.
5. 의존관계 역전 원칙 (Dependency Inversion Principle, DIP)
고수준 모듈은 저수준 모듈에 의존해서는 안됨. 두 모듈 모두 추상화에 의존해야함.
=> 구체적인 구현이 아닌 추상 인터페이스 / 추상 클래스에 의존.
4. API, HTTP API와 REST API의 차이점 (다시보기)**
* HTTP API
- HTTP 프로토콜을 사용하여 통신하는 API.
* REST API
- REST 아키텍처 스타일을 따르는 API.
Representational State Transfer
* REST
- HTTP를 기반으로 하며, URI를 사용하여 리소스를 식별.
- HTTP 메서드(GET, POST, PUT, DELETE, PATCH)를 통해 자원의 행위를 지정.
- 리소스를 여러 형태로 표현하고, 리소스 간의 상태 전이를 통해 상호작용.
- 클라이언트-서버 구조, 무상태, 캐시 처리 가능, 계층화, 인터페이스 일관성
5. DB 인덱싱에 대해서 알고 있는지
데이터베이스 테이블에서 특정 컬럼(열)에 대한 검색 및 쿼리 성능을 향상시키기 위해 사용되는 기술.
* index : 데이터베이스 테이블에 대한 검색 속도를 향상시켜주는 자료구조. (책의 목차 역할)
특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 값과 물리적 주를 key, value 형식으로 별도 메모리 공간에 저장.
* index 장점
- 빠른검색속도 : 인덱스의 키를 기반으로 빠른 검색.
- 정렬 및 그룹화 성능 향상 : ORDER BY 및 GROUP BY와 같은 연산이 빨라짐.
- 고유 제약(Unique Constraint) 지원 : 해당 컬럼에 대한 인덱스는 중복을 방지하고 빠른 고유성 검사 제공.
- 조인 성능 향상 : 조인 컬럼에 대한 인덱스를 사용하면 조인 연산이 빨라짐.
- 범위 검색 성능 향상 : BETWEEN, >, <, >=, <= 와 같은 범위 검색에 대한 성능 향상.
*index 단점
- 저장공간소요
- 데이터 삽입, 수정, 삭제 시 추가작업 필요.
- 검색 성능 저하
* index 자료구조
- 해시테이블 (Hash Table)
Key와 Value를 한 쌍으로 데이터를 저장하는 자료구조.
키를 해시 함수를 통해 고유한 해시 코드로 변환하고 이를 배열의 인덱스로 사용하여 값을 저장하고 검색.
(key, value) = (컬럼의 값, 데이터의 위치)
=> 빠른 검색 속도 / 충돌 문제 발생, 불연속적인 메모리 할당
- B-Tree
균형 이진 트리의 일종으로, 대용량 데이터베이스에서 사용되는 인덱스 구조.
각 노드는 여러 개의 키와 해당 키에 대응하는 자식 노드로 구성.
=> 순차적인 엑세스, 높은 확장성, 연속적인 메모리 할당
6. 자바에서 for, if, while, switch 기본 문법 양식 작성 (안보고 손으로 써보기연습)
for ( int i ; i < 10 ; i ++ ) {
반복할 로직
}
if (조건식1) {
조건식1에 대한 실행문
} else if (조건식2) {
조건식2에 대한 실행문
} else {
그 외 조건에 대한 실행문
}
while (반복을 위한 조건식) {
반복할 로직
}
switch (조건) {
case value1 :
조건이 value1일때 실행문.
break;
case value2 :
조건이 value2일때 실행문.
break;
default :
그 외 조건에 대한 실행문.
}
* break 가 없다면 해당하는 case 이후의 모든 case가 실행.
7. 쿠키와 세션의 차이점
* 쿠키 (Cookie)
- 클라이언트 측(웹 브라우저)에 저장.
- 보안에 취약.
- 저장 가능한 쿠키 개수 및 크기 제한.
- 만료 날짜 지정 가능.
* 세션 (Session)
- 서버 측에 저장.
- 쿠키에 비해 안전하나 세션ID 유출 주의 필요.
- 저장용량 제한 없음.
- 브라우저 종료 시 세션 종료.
8. SI / SM / Solution 차이점
* SI (System Integration) 시스템 통합
프로젝트의 기획, 설계, 개발, 유지보수까지 통합 시스템을 구축하는 서비스를 제공.
* SM (System Maintenance) 개발 유지보수
이미 구축된 시스템에 대해 오류 수정, 기능 개선, 추가 등 관리/점검하는 서비스를 제공.
* Solution 솔루션
완성된 프로그램(제품)을 고객의 요구사항에 맞게 수정하여 제공.
9. Exception에 대해 설명.
* 예외 처리 (Exception Handling)
프로그램이 실행 중 예상치 못한 문제(오류)에 대응하는 방법.
자바에서는 ' java.lang ' 패키지에 예외 클래스들이 정의되어 있어 예외 처리에 사용됨.
* 에러 (Error)
프로그램이 원인을 알 수 없이 비정상적으로 작동하거나 종료되어 더이상 작업을 수행할 수 없는 상황.
*컴파일 에러 : 컴파일 시점에서 발생하는 에러. 소스코드의 오타, 자료형의 불일치 등
*런타임 에러 : 프로그램 실행 시점에서 발생하는 에러.
- 에러 (Error) : 발생하면 복구할 수 없는 심각한 오류.
메모리 부족(OutOfMemoryError), 스택오버플로우(StackOverflowError)
- 예외 (Exception) : 발생해도 수습이 가능한 오류.
NPE(NullPointException)
*논리적 에러 : 컴파일도 정상이고 실행도 되지만 의도와 다르게 동작하는 에러.
* 예외 클래스의 계층구도
최상위 객체 Object 아래에 Throwble이 있으며 이를 상속받는 Error와 Exception으로 구성.
스프링 Optional 찾아보기 ****
10. DB 각종 제약사항(Constraint)들 + 간단히 설명
* PRIMARY KEY
하나 이상의 열(attribute)로 구성되어 테이블의 튜플을 식별하기 위해 사용. 중복값 / Null값 불가.
* FOREIGN KEY
attribute가 다른 테이블의 기본키를 참조. 참조 무결성.
* UNIQUE
고유한 값을 가지는 attribute (중복값 불가), Null값 가능.
* NOT NULL
Null값을 가질 수 없는 attribute.
* DEFAULT
attribute의 기본값 지정. 명시된 값이 없는 경우 자동으로 default값이 적용.
* CHECK
attribute의 값을 조건을 걸어 제한.
'Study > 면접준비' 카테고리의 다른 글
[3주차] 면접질문정리 (스터디) (0) | 2024.01.24 |
---|---|
[2주차] 면접질문정리 (스터디) (0) | 2024.01.14 |
[1주차] 면접질문정리 (스터디) (0) | 2024.01.05 |