---
# System prepended metadata

title: Interview

---

# Interview

## Task 1

What is wrong?
![](https://i.imgur.com/z2rIrRJ.png)

## Task 2

File 
```
module.exports = async (botId, entityId) => {
let project;
  const bot = await helper.Bot.findOne({ botId }).exec();
  if(bot) {
 project = await helper.Project.findOne({ projectId: bot.projectId }).exec();
  }

  const entity = await helper.Entity.findOne({ entityId }).exec();

  return { bot, entity, project };
};
```

## Task 3

Write function to check if number is simple
// 17

function isSimple(num) {
let isSimple = false;
    for(let i = num - 1; i !==0; i--){
        if(num % i === 0) isSimple = true 
    } 
return isSimple;
}

## Task 4

Write function to check if array is sorted
const isArraySorted = (array) => {
    
}

## Task 5

Описати функцію перетину для двох масивів елементів

```

intersection([1,2,3,4,5],[3,4,5,6,7]); => [3,4,5]
intersection([1,5,45,-6],[-9,5,23, -90]); => [5]
const a = [
  {value: 1, name },
  {value: 2, name },
  {value: 3, name },
];
const b = [
  {value: 15, name },
  {value: 3, name },
  {value: 34, name },
];

... => [{value: 3, name },]
```
## Task 6

Ситуація: Для старту сервера необхідно 20с. Трафік на сервер починає надходити з моменту npm run start. Необхіодно тримати запити доти поки сервер не почне повноцінно функціонувати. В момент запуску, сервер заспавнить івент у івент емітер.


## Task 7

```
const permission = { 
    systemUserId: 4,
    organizations: {
        1: {
            roleIds: [45],
            systemFunctionIds: {
                34: { availablePermissionTypes: [ 'POST' ] }
            }
        },
        2: {
            roleIds: [43],
            systemFunctionIds: {
                56: { availablePermissionTypes: [ 'PUT' ] },
                57: { availablePermissionTypes: [ 'DELETE', 'GET' ] }
            }
        }
    },
    projects: {
        78: {
            organizationId: 1,
            roleIds: [145],
            systemFunctionIds: {
                334: { availablePermissionTypes: [ 'POST' ] }
            }
        }
        
    }
}
```
Перевірити описати перевірку чи даний об'єкт надає доступ для використання функції.
```
const checkPermission = (
    systemFunctionId,
    level,
    permission,
    options = { projectId: null, organizationId: null }
) => {
    return permission[level][options["projectId"]].systemFunctionIds[systemFunctionId] ? true: null
}

checkPermission(334, 'project', permission, { projectId: 78}) => true
checkPermission(2344, 'project', permission, { projectId: 80}) => false
checkPermission(34, 'project', permission, { projectId: 78}) => true
```
## Task 8

Mongo collection
```
{
    id: Number,
    value: Numbder,
    description: String,
    locations: [
        { id: Number, location: String }
    ]
}
```
Count of documents: 6 000 457
Потрібно перетворити цю колекцію в наступну структуру
```
{
    id: Number,
    value: Numbder,
    description: String,
    locations: [
        { id: Number, address: String }
    ]
}
```

яким чином можна максимально безболісно конвертувати ці дані?

## Task 9

Створити middleware для обмеження кількості запитів в секунду, по одному і тому ж apiToken.

## Task 10

Є адмін панель, яка дозволяє генерувати звіт за певний період часу. Генерація звіту маєстабільний час виконання 10с. При цьому бекенд адмін панелі не відповідає, і при отриманні нових запитів падає. Які є варіанти вирішення цієї ситуації.