В качестве старшего инженера, который прошел несколько собеседований в технологической отрасли и много работал с такими технологиями, как Django, React Javascript, HTML, CSS, Docker, Python, NodeJs, Message Brokers, SQL/NoSQL, Git и AWS.

Вот несколько вопросов интервью, которые возникли во время моих интервью. Надеюсь, это поможет другим, которые готовятся к подобным возможностям.

Я кратко ответил на некоторые вопросы, но имейте в виду, что лучший подход — давать подробные и конкретные ответы, основанные на вашем опыте.

Питон

- Что такое перечислитель в питоне?

- Является ли set() изменяемым типом данных?

- Изменяемые и неизменяемые типы данных в python

- Что такое декораторы в питоне? Напишите собственный декоратор. (общий вопрос)

- Что такое статический декоратор в классе?

- Разница между сортировкой и сортировкой

- Что такое стандарт pep8? (распространенный вопрос)?

- Что такое отладчик python/pdb?

- Что такое экземпляр в питоне?

- Какие типы наследования доступны в python?

- Что такое спецификаторы доступа?

- Как запретить пользователю доступ к определенным свойствам/методам в классе в python

Ответ С помощью спецификаторов доступа. Элементы данных класса объявляются защищенными путем добавления одного символа подчеркивания `_` перед элементом данных этого класса. Элементы данных класса объявляются закрытыми путем добавления двойного символа подчеркивания `__` перед элементом данных этого класса.

JavaScript

- Сколько способов создать объект в js?

Ответ

1. Литералы объекта

2. Функции конструктора

3. Классы ECMAScript 6

4. Метод Object.create

- Разница между стрелочными функциями и обычными функциями в js.

Ответ

1. Разница в синтаксисе

2. В стрелочной функции нет аргументов

3. Нет объекта-прототипа для стрелочных функций.

4. Функция стрелки не может быть вызвана с новым ключевым словом

5. Стрелочные функции не имеют собственной привязки this

6. Функции стрелок нельзя использовать в качестве функции-генератора.

7. Функции стрелок недоступны до инициализации

- Что такое подъем в js?

- Что такое замыкание в js?

- var vs let vs const в js.

- Напишите функцию в стиле iife на js.

- Примитивный и не примитивный тип данных с примерами в js

- изменяемые и неизменяемые типы данных в js

- Как создать и разрешить обещание? (общий вопрос)

- Почему используются асинхронность и ожидание?

- Если у вас есть вызов на сервер и setTimeout, то что будет проверяться первым в цикле событий?

- Что такое прототипическое наследование?

- Что такое ключевое слово this и как оно изменяется и указывает на объект, а не на глобальный контекст?

Ответ В обычном вызове функции ключевое слово `this`, используемое в функции, указывает на глобальный контекст. Однако, если функция вызывается с ключевым словом `new`, то `this` указывает внутрь функции и создается новая копия объекта. Если `this` используется внутри функции, которая является частью объекта, созданного с использованием синтаксиса Object Literal, и функция вызывается с использованием «obj.funcName()», тогда `this` также указывает на объект.

- Что такое call, apply и bind?

- Что такое обратный вызов?

- Как сделать приложение nodejs эффективным?

Ответ Используйте дочерний процесс, используя fork или spawn, чтобы переложить тяжелую работу на другой процесс. используйте Redis для кэширования. использовать индексы в dbs.

- Что такое оператор спреда?

NodeJs

- Является ли узел однопоточным? (общий вопрос)

- Разница между синхронным и асинхронным

- Когда вы не должны использовать nodejs?

- Что такое параллелизм? (общий вопрос)

- Как узел обрабатывает дочерние процессы в spawn, fork, exec и execFile? (общий вопрос)

- Что такое цикл событий? (общий вопрос)

- Какие существуют виды потоков? (общий вопрос)

- Является ли nodejs многопоточным?

- Что такое эмиттер событий?

Ответ Вы можете создать эмиттер событий, импортировав «события» и прослушав свои пользовательские события.

- Что такое обещание в js?

- Что такое package.json в проектах узлов?

- Что произойдет, если package.json отсутствует?

- Что такое нпм?

- Можете ли вы установить максимальное количество слушателей для события?

Ответ Да, используя event.setMaxListners()

Джанго

- Как посмотреть данные в админке? (общий вопрос)

- Django orm против необработанного sql

- Разница между makemigration и migrate

- Как добавить файлы css и js в django?

- Что такое обычное промежуточное ПО в django?

- Что такое сигналы в джанго?

- Как создать пользовательскую модель пользователя?

- Как подключиться к 2 БД в django и агрегировать данные из обеих БД? (общий вопрос)

Ответ Добавьте 2 базы данных в settings.py, создайте модель маршрутизатора, чтобы сопоставить, какие приложения могут использовать какие базы данных. Использование («db_name») может использоваться для выполнения запросов к определенной базе данных в файле представлений, по умолчанию запросы будут выполняться в базе данных, которую вы укажете в файле модели маршрутизаторов.

Пример:

1. User.objects.using(‘users_db’).get(username=’fred’)

2. u = Пользователь (имя пользователя = «Фред»)

u.save (используя = 'users_db')

- Почему django является фреймворком на основе MVT

- В чем разница между django и другими фреймворками и когда бы вы предпочли один из них? (общий вопрос)

- Как добавить свои приложения в django?

- Что такое промежуточное ПО в django и как его создать? (распространенный вопрос)

- Разница между функциями get и all

- Разница между значениями и values_list

- Что произойдет, если есть 2 записи для того, что вы ищете, и вы использовали get()?

- Как создать менеджеры моделей и изменить поведение результатов по умолчанию из модели?

- Что такое модели Джанго?

- Каковы лучшие практики в drf?

- Что такое related_name в моделях?

- Как присоединиться с помощью django orm?

- Как сделать союз?

- Какую информацию содержит каждый файл в папке миграции?

Ответ Содержит зависимости от предыдущего файла миграции и операций, которые необходимо выполнить django, таких как изменение модели, создание модели и т. д.

- Как отменить миграцию в django?

Ответ python manage.py migrate ‹app_name› ‹migration_version›

- Разница между кортежем и списком

- Что такое лямбда-функция в питоне?

- Что такое понимание списка и словаря?

- Как проверить время, затраченное на каждый запрос в django?

Ответ импортировать connection.queries и использовать его после вашего запроса

- Что такое панель инструментов отладки django?

HTML

- Разница между html 4 и html5

Ответ

1. HTML5 поддерживает теги аудио и видео.

2. HTML5 поддерживает сематические элементы, такие как навигация, статья, нижний колонтитул и т. д.

3. html5 имеет js web worker api

4. HTML5 может хранить данные в локальном хранилище

5. Объявление типа документа меньше в случае html5

6. Декларация кодировки символов проста в html5, например. ‹метакодировка = “UTF-8”›

- Что такое семантические элементы в html?

- Что такое атрибуты в html?

CSS

- ссс против ссс

- флексбокс против сетки

Общий

- Перегрузка метода против переопределения

- Что такое CAP-теорема?

- Разница между микросервисами и монолитом (распространенный вопрос)

- Зачем использовать микросервисы?

- Что такое балансировщик нагрузки?

- Что такое автоматическое масштабирование?

- Разница между REST и pub sub

- Что такое веб-серверы?

Ответ Nginx и apache — это веб-серверы.

- Что такое сервер приложений?

Ответ Gunicorn — сервер приложений

- Объясните абстракцию и инкапсуляцию

Ответ Абстракция: скрытие реализации

Инкапсуляция: сокрытие данных с помощью спецификаторов доступа

- Почему кеширование используется в бэкенде?

- Как аннулировать кеш?

Git

- Что такое git stash?

- Что такое git cherry-pick?

SQL

- Разница между наличием и предложением where

- Что такое свойства ACID в SQL?

- Nosql против sql (распространенный вопрос)

Ответ База данных на основе Sql использует деревья B+ для организации данных на диске. С другой стороны, DB, такая как cassandra, использует деревья LSM, которые обеспечивают более быструю запись. Это делает cassandra подходящей для приложений, требующих высокой скорости записи. Однако чтение может быть медленным по сравнению с реляционными БД.

- Когда следует использовать nosql db?

- Когда использовать реляционную базу данных?

- Когда использовать mongodb?

- DDL против DML против DCL

- Drop vs Truncate (распространенный вопрос)

- Что такое ограничения в sql

- Вы должны создать приложение, в котором есть несколько пользователей, каждому пользователю может быть назначено несколько ролей, каждая роль имеет несколько функций. мы хотим показывать только функции, к которым у пользователя есть доступ. разработать схему БД.

- Как вы улучшите производительность запроса?

Ответ Создавая индексы, мы можем кластеризовать таблицу на основе определенного столбца, мы можем разбивать таблицу на основе диапазонов идентификаторов, мы можем даже сегментировать, но в большинстве случаев это не требуется.

МонгоБД

- Есть ли у mongodb ограничение первичного ключа?

Ответ Он использует поле _id в качестве первичного ключа для документов и является уникальным. Следовательно, вы можете сказать, что в mongodb существует ограничение первичного ключа.

- Есть ли у mongodb ограничение внешнего ключа?

Ответ Нет, по умолчанию он не применяет какую-либо схему, поэтому нет ограничений по внешнему ключу, но вы можете использовать поиск, какой тип объединяется.

Подсистема очередей и пабов

- Что такое разветвление в rabbitmq?

Ответ Разветвленный обмен направляет сообщения во все связанные с ним очереди. Это похоже на AWS SNS.

- Как мы можем сделать разветвление в kafka?

- Что такое подсистема пабов и почему она используется? (общий вопрос)

- Разница между rabbitmq и sqs

Ответ

1. RabbitMq следует подходу push-метода для потребления сообщений, тогда как Sqs следует подходу pull-метода.

2. RabbitMQ по умолчанию использует FIFO. При необходимости для очередей Amazon SQS можно установить FIFO.

- Зачем нам кафка?

- Что такое очередь недоставленных сообщений?

Реакция

- Что такое компонент высшего порядка в реакции? (общий вопрос)

- Как создать собственный хук в реакции? (общий вопрос)

- Что такое крючки? (общий вопрос)

- Какие данные вы можете передать в хуке useState?

- Какая польза от редукции в реакции?

- Redux против контекста и что предпочесть в каком состоянии?

- что такое хук useLayoutEffect и чем он отличается от useEffect?

Ответ Он синхронный, в отличие от useEffect. код внутри этого запускается первым, а затем отображается dom. В случае useEffect, поскольку он по своей природе асинхронный, сначала выполняется рендеринг dom, а затем запускается код внутри него.

- реквизит против состояния

- Что такое виртуальный дом?

- Могут ли браузеры выполнять jsx?

- Зачем использовать реакцию и что предлагает реакция по сравнению с другими?

- Создайте приложение для реагирования на состояние счетчика менеджера и увеличьте счетчик из дочернего компонента, у которого будет кнопка для увеличения.

- Что на самом деле делает react render?

Ответ Он состоит из двух фаз: первая фаза — это фаза рендеринга, а вторая фаза — фаза фиксации. На этапе рендеринга виртуальный дом реакции обновляется, и список изменений в элементах передается на этап фиксации, а на этапе фиксации эти изменения применяются к DOM.

- Что такое примирение в реакции?

Ответ Различие старого и нового дерева реагирующих элементов (Virtual DOM)

- использоватьMemo против использованияCallback

- Как вы делаете вызовы API в Redux?

- Что такое промежуточное ПО в Redux?

Ответ Это фрагмент кода, который перехватывает каждое действие, отправляемое редюсеру, чтобы вы могли внести изменения в действие или отменить его.

Пример: Redux-преобразователь

- Что такое реф?

Инженерия данных

- Если я хочу добавить еще один столбец в кадр данных на основе некоторых вычислений других столбцов, вызовет ли это перетасовку?

- Если я установлю shuffle.partition, когда искра создаст такое количество разделов

- Вызывает ли sum func перемешивание?

- Как работает искра

Ответ Начинается с функции действия. Этап также создается при чтении набора данных, дальнейшие этапы создаются в зависимости от того, запущено ли перетасовка, этап содержит набор инструкций, которые необходимо выполнить задачам, в зависимости от количества разделов задач. создаются. каждая задача работает на 1 разделе.

- Вызывает ли sum func перемешивание?

Ответ Нет, широкое преобразование вызывает перемешивание, которое происходит всякий раз, когда данные реорганизуются в новые разделы, где каждый ключ назначается одному из них.

Докер

- Как создать образ в докере?

- Какая команда для сборки образа в докере?

- Что такое докер-контейнер?

АМС

- Что такое API-шлюз в aws? (общий вопрос)

- Как поместить объекты в s3?

Ответ Получите ключ доступа и секрет доступа пользователя, имеющего доступ к s3, используйте boto3 для загрузки объекта.

- Как обрабатывать ваши неудачные задания, если сервер выходит из строя?

Ответ Используйте брокер сообщений, такой как RabbitMQ/SQS. Он хранит сообщения в очереди в течение определенного периода времени, пока они не будут использованы вашим потребителем. Если сообщение недействительно и потребитель не может его обработать, вы можете отправить сообщение в очередь недоставленных писем.

- Что такое ес?

- Как запустить ваши докер-контейнеры при перезагрузке сервера?

- Что такое АРН?

- Как создать частный экземпляр ec2?

- Как прикрепить собственный URL к лямбда-функции?

- Как настроить ваше приложение так, чтобы запросы поступали в вашу функцию EC2/Lambda, но ваш домен размещался у другого поставщика?

- Что такое обработчики в лямбда-функции?

- Как запустить шаблон cloudformation в определенное время дня?

Вопрос по кодированию

- Вывод Js

let a = {1,2}; 
let b = […a]; 
console.log(b)

Ответ Set не поддерживается js. Это выдаст ошибку.

- Напишите вывод приведенного ниже кода js

process.nextTick(() => {
console.log("nextTick")
});
setTimeout(() => {
console.log("set timeout")
}, 0)
setImmediate(() => {
console.log("set immediate")
});
// Hint: https://www.geeksforgeeks.org/node-js-event-loop/

- повернуть массив вправо

Вход: nums = [1,2,3,4,5,6,7], k(повернуть элементы массива вправо на k позиций) = 3, n(длина массива) = 7

Вывод: [5,6,7,1,2,3,4]

// Hint: arr[(i+k)%n] = arr[i]

- повернуть массив влево

Вход: nums = [1,2,3,4,5,6,7], k(повернуть элементы массива влево на k позиций) = 3, n(длина массива) = 7

Вывод: [4,5,6,7,1,2,3]

// Hint: arr[(i-k)+n] = arr[i]

- Объединить два несортированных массива в один

a = [5, 2, 7]

b = [1, 8, 3, 10]

результат = [1,2,3,5,7,8,10]

- Объединить отсортированные массивы в один массив и какова будет временная сложность (распространенный вопрос)

a = [1, 2, 7]

b = [3, 4, 5, 6]

результат = [1,2,3,4,5,6,7]

- Учитывая список интервалов (начало, конец), сгруппируйте перекрывающиеся интервалы и верните массив массивов.

Пример 1

Ввод: [(1, 3), (2, 5), (8, 10), (9, 11), (15, 21)]

Вывод: [[(1, 3), (2, 5)], [(8, 10), (9, 11)], [(15, 21)]]

возвращает группу перекрывающихся интервалов, также включает неперекрывающиеся интервалы в своей группе

- для чего будет вывод

(let i = 0; i < 3 i++) {
  window.setTimeout(() => {console.log(i)}, 1000+i);
}

- У вас есть 2 набора строк, вам нужно найти str2 в str1 и вернуть true вместе с начальным индексом совпадающей строки

str1 = «привет, мир, привет»

str2 = «мир»

вывод: [правда, 6]

- Что будет выведено нижеприведенным кодом js

console.log(undefined + 1)

- Вернуть список, содержащий ключи, где значения равны 1

let obj = {
  a:1,
  b: {
    c: 1,
    d: 1
  }
}

Он должен вернуть [a,c,d]

  • Напишите код, в котором мы можем реализовать умножение (6) (7) (8)
function multiply(a) {
    return function param2(b) {
        return function param3(c) {
            return a * b * c
        }
    }
}

console.log(multiply(6)(7)(8))
// OUTPUT -> 336