특징
•
후입선출(LIFO) 구조이다.
•
단방향 입출력 구조 : 데이터가 들어오는 방향과 나가는 방향이 같다.
•
데이터를 하나씩만 넣고 뺄 수 있다. (clear로 모두 삭제 가능)
•
깊이 우선 탐색에 이용된다.
•
재귀 함수의 동작 흐름과 같은 구조를 가진다.
사용법
Stack<Integer> integerStack = new Stack<>();
Stack<String> strStack = new Stack<>();
// 값 넣기
integerStack.add(0);
strStack.add("a");
// 값 제거 및 반환
Integr i = integerStack.pop(); // i는 0
String s strStack.pop(); // s는 "a"
// 값 모두 제거
integerStack.clear();
strStack.clear();
// 스택의 마지막 요소 반환
integerStack.push(1);
integerStack.push(2);
integerStack.push(3);
Integer peek = integerStack.peek(); // peek는 3
// 비어있는지 여부 판단
integerStack.isEmpty(); // true or false 반환
// 인덱스 구하기
integerStack.search(4); // 있으면 index 반환 없으면 -1 반
Java
복사
1. 클라이언트에서 여러 정렬기준으로 상품을 조회요청한다.
레디스에 어떤 자료구조를 사용하여 처리할것인가
2.서비스간 의존성을 줄인다는 것이 어떤의미이고 예를들어 설명해봐라
3. SQS, RabbitMQ, Kafka의 특징을 비교해서 말해달라
4. 독립된 서비스간에 카프카 메세지 발행을 보장할 수 있는 방법과 중복처리에 대한 방안을 말해달라
5. 커뮤니케이션을 중요하게 생각한다했는데 어떤 이유인지 사례를 들어서 설명해달라
6. 한 서비스의 디비에 부하가 너무 심한 상황이다 수평적 확장 말고 다른방안에 대해 말해달라
7. 1) 사용자가 주문 요청을 한다.
2) 주문 서버는 주문 내역을 생성한다.
3) 주문 정보를 타 서비스나 외부 API로 보내 결제를 수행한다.
4) 사용자에게 결제 완료 메일을 보낸다
위 상황에서 메시지 큐를 사용할 곳과 이유에 대해서 설명해라
Java
복사