---
# 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) => {
  const bot = await helper.Bot.findOne({ botId }).exec();
  if (bot) {
      const project = await helper.Project.findOne({ projectId: bot.projectId }).exec();
      if (project) {
          const entity = await helper.Entity.findOne({ entityId }).exec();
          if (entity) {
              return { bot, entity, project };
          }
          throw new Error('Somethings go wrong ');
      }
      throw new Error('Somethings go wrong ');
  
  }
  throw new Error('Somethings go wrong ');
  
  

  
};
```

## Task 3

Write function to check if number is simple

```
const checkIfNumberSimple(number) {
   
    for (let i =2; i<number; i++) {
        if (number%i !==0) {
            return false;
        }
    }
    return true;
}

const iiSevenSimpleNumber = checkIfNumberSimple(7)
```

## Task 4

Write function to check if array is sorted

```
const checkSortedArray(arr) {
   let max = arr[0];
   for (let i = 1; i< arr.length; i++) {
       if (arr[i]> max ) {
           max = arr[i]
       } else {
           return false;
       }
   }
   return true;
   
}

const isSorted = (arr) => {
    const check = arr[0] > arr[1] ?  (a,b) => a > b : (a,b) => a < b;
    for( let i = 1; i < arr.length - 1; i +=1){
        if(!check(arr[i], arr[i+1])) {
            return false;
        }
    }
    
    return true;
}

const a = checkSortedArray([1,5,67,8,2])
```

## Task 5

```
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 }
) => {
    
}
```
checkPermission(334, 'project', permission, { projectId: 78 })
checkPermission(34, 'project', permission, { projectId: 78 })
## Task 5

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