# Shubham Shekhar | 3.5 year
- Good with DS Question
- Good with DB design
- Used RabbitMq, knows limited use case.
- AWS : EC2, ECS, LB
- Can proceed to next round with Rahul
Order Service and there is product quantity that is 2
service1 ---->T1 service 2
---->T2 service 2
service2 --- T3
service4
service5
[T2, ......]
- if we need to do thing in sequence, then we use queue system.
# Question 1: Find combination of array of length K
array - [1, 2, 3, 4, 5] distinct
k = 3 , 0< k <array.length
[1, 2, 3]
[1, 2, 4]
[1, 2, 5]
[1, 3, 4]
[1, 3, 5]
[1, 4, 5]
...
```javascript!
//logic
var arr = [1, 2, 3, 4, 5]
var k = 4
var combinations = []
function distinctCombination(arr, pos, distinct_ele){
if(distinct_ele.length == k){
combinations.push([...distinct_ele])
}
if(pos < arr.length && distinct_ele.length <= k){
distinctCombination(arr, pos+1, [...distinct_ele])
distinctCombination(arr, pos+1, [...distinct_ele, arr[pos]])
}
}
distinctCombination(arr, 0, [])
distinct = []
compare = new Set()
combinations.forEach(c => {
var str = c.toString()
if(!compare.has(str)){
distinct.push(c)
compare.add(str)
}
})
console.log(distinct)
```
# Question 3: Chat System DB design
- user service -
- chat service.
- 1<>1 chat
- text messages
- list of conversation, sorted, pagination.
- list of messages, sorted, paginated.
select * from Chat join ChatParticipants On Chat.Id = ChatParticipants.ChatId where ChatParticipants.UserId == 2 order by ModifiedAt desc
Message
-------
Id
SenderId - int
message - String
CreatedAt - Date
ModifiedAt - Date
Chat
----
Id
Participants - List<User>
messages - List<Messages>
CreatedAt
ModifiedAt
ChatParticipant
------------
ChatId
UserId
ChatMessage
----
ChatId
MessageId
Ex -
Message
1. 2 hello 23-1-2023 23-1-2023
Chat
1. 23-1-2023 23-1-2023
ChatParticipants
1. 1 2
ChatMessage
1. 1 1