TIL

면접준비 쪼금만

하얀잔디 2022. 12. 2. 16:39

SK 하이닉스 면접때 들었던질문.. 

아는데 답을 조리있게 못한것 같다.

 

차이점은 <제어의 흐름>  : 이 단어가 중요하다.

 

프레임워크를 사용하면 사용자가 관리해야 하는 부분을 프레임워크에 넘김으로써, 신경써야 할 것을 줄이는 

제어의 역전 ( IOC ) 가 적용됩니다.

 

 

 

2. 동기방식 비동기방식

 

동기 :

 

장점 : 순서에 맞춰 진행하기에 제어하기 쉬움

단점 : 동시에 처리할 수 없어 효율이 떨어짐. ( Ex: 콜센터 직원)

 

비동기:

 

장점: 자원을 효율적으로.

단점: 작업이 완료된 결과를 제어하기 힘듬. ( Ex: 이메일)

 

 

Message Queue란?

회사 면접때 들었던 질문입니다.

 

Queue 자료구조를 이용해서 데이터를 관리하는 시스템으로,

비동기 통신 프로토콜을 제공하여 메세지를 빠르게 주고 받을 수 있게 해줍니다.

Producer 가 Message를 Queue에 넣어두면, Consumer 가 Mesaage를 가져와 처리합니다.

 

이러한 예시로는

Kafka, RabbitMq, AMPQ 등이 있습니다.

 

Docker 와 Kubernates

Dokcer :  기존에는 하

 

 

DDD란 : 

 

실제 Domain을 중심으로 설계하는 방법.

 

ex) 옷 쇼핑몰에서, 손님들이 주문하는 도메인, 점주들이 관리하는 도메인이 있을텐데,

서로 상호작용하며 설계하는 것이 도메인 주도 설계임.

DDD에는 같은 객체들이 존재할 수 있는데, 옷 구매자의 입장에서는 name, price 와 같은 객체 정보를 담지만, 판매자의 입장에서는 (madeTie, size, madeCountry)등이 있을 수 있음.

즉, 문맥에 따라 객체의 역할이 바뀔수 있는것이 DDD임.

MSA란

1개의 시스템을 독립적으로 배포가능한 각각의 서버로 분할함.

각각의 서비스는 API를 통해 데이터를 주고받으며 1개의 큰 서비스를 구성함.

 

장점:

1.일부 서비스에 장애가 발생해도 전체에 장애가 발생하지 않음.

2. 각각 서비스는 서로 다른 언어와 프레임워크로 구성 가능

3. 확장 용이함.

 

단점:

1.서비스가 분리되어있어, 테스팅이나 트랜잭션 처리 등이 어렵다.

2. 서비스간 API로 통신하기 때문에 그에 대한 비용이 발생함.

3. 서비스간의 호출이 연속적이라, 디버깅 및 에러 트레이싱이 어렵다.

 

 

우선순위 큐의 내부구조 및 시간복잡도

일반적으로 힙으로 구현됨, 완전 이진트리를 통해서 구현되었기에, 우선순위 큐의 시간복잡도는 O(LogN)임.

 

 

해시 테이블과 해시테이블의 시간복잡도

 

고유한 index로 값을 조회하기 때문에 평균적으로 O(1)의 시간복잡도.

하지만 해시의 index 값이 충돌이 발생한 경우, 충돌된 index 값에 대해 연결된 데이터드를 조회하여 원하는 값을 조회하기에 , O(N)까지 증가할 수 있음.

 

 

큐의 구현

Array로 구현하면, poll 연산 후 객체를 앞당기는 작업이 필요하다.

List 로 구현하면, 객체 1개만 제거하면 되므로 , 삽입 및 삭제가 용이한 LinkedList로 구현하는게 좋다.

 

스택의 구현

List로 구현하면 객체를 제거하는 작업이 필요함.

But Array로 구현하면 삭제할 필요없이 index를 줄이면 되므로 Array가 좋다.

 

 

AVL 트리

한쪽으로 값이 치우치는 이진 탐색 트리의 한계점을 보완하기 위해

'TIL' 카테고리의 다른 글

[자바] Execute, ExecuteQuery, ExecuteUpdate 차이점  (0) 2022.12.16
ResultSet  (0) 2022.12.13
getby vs findby vs existby  (0) 2022.11.25
redis란  (0) 2022.11.21
Service에서 Service를 의존해도 될까?  (0) 2022.11.17