Вопросы для собеседования SRE DevOps — Поиск и устранение неисправностей Linux

Я был по обе стороны стола в качестве интервьюера и интервьюируемого для ролей DevOps и SRE. В этом блоге я пытаюсь поделиться некоторыми вопросами, которые мне задавали или я сам задавал.

Примечание: Это просто обмен знаниями, опытом и некоторые забавные вопросы.

Устранение неполадок Linux

Любое собеседование DevOps и SRE обычно начинается с вопросов по устранению неполадок, где интервьюер пытается подтолкнуть вас к внутренним знаниям Linux и некоторым основным базовым концепциям. Вот некоторые из них на мой взгляд

1. Что происходит при загрузке системы Linux, пока вы не получите приглашение к входу в систему.

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

2. Что происходит, когда вы набираете ls в терминале

Вопросы такого типа используются для того, чтобы понять, насколько интервьюер внимателен к деталям и глубоко знает внутреннее устройство Linux. В основном интервьюер хочет знать, знаете ли вы системные вызовы forks() и exec().
shell читает то, что вы набрали, используя функцию getline() и функцию strtok(), которая принимает строку для токенизации. Shell также проверяет, является ли 1-й токен ls псевдонимом Shell или нет. Если это не встроенная функция, shell найдет переменную PATH в каталоге. Поскольку она содержит абсолютные пути ко всем исполняемым двоичным файлам. Как только она находит двоичный файл для ls, программа загружается в память и выполняется системный вызов fork(). Это создает дочерний процесс ls, а оболочка будет родительским процессом. Вызов fork() возвращает 0 дочернему процессу, чтобы он знал, что должен действовать как дочерний, и возвращает PID дочернего процесса родительскому процессу (т.е. оболочке).
Далее процесс ls выполняет системный вызов execve(), который предоставляет ему совершенно новое адресное пространство с программой, которую он должен запустить. Теперь ls может начать выполнение своей программы. Утилита ls использует функцию для чтения каталогов и файлов с диска путем обращения к записям inode базовой файловой системы.
Когда процесс ls закончит выполнение, он вызовет системный вызов _exit() с целым числом 0, что означает нормальное выполнение, и ядро освободит свои ресурсы.
Примечание: вы можете использовать strace ls для более глубокого изучения системных вызовов.

3. Объяснить Иноды Linux

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

4. Авария и паника

Авария обычно происходит, когда возникает ловушка, когда приложение пытается неправильно получить доступ к памяти. Паника обычно происходит, когда приложение внезапно завершает работу. Основное различие между крахом и паникой заключается в том, что крах инициируется оборудованием или ОС, а паника обычно имитируется приложением путем вызова функции abort(). Некоторые приложения используют специальную функцию, называемую обработчиком сигнала, для создания информации о ловушке, другие могут использовать gdb для сбора информации о ней.
Наиболее распространенными сигналами плохого программирования являются SIGSEGV, SIGBUS и SIGILL, обычно вызванные плохим управлением памятью, плохим указателем, неинициализированными значениями или повреждением памяти.

5. Объясните файловую систему /proc.

6. Когда я получаю ошибку filesystem is full, но df показывает, что свободное место есть.

Проверьте, видите ли вы нулевое значение IFree, используя df -i . Если это не так, проверьте, не используются ли еще удаленные файлы с помощью lsof и перезапустите эти процессы.

7. Какие инструменты производительности вы бы использовали на Linux-машине?

Подробный ответ доступен здесь

8. Объясните файловую систему Linux

Интервьюер хочет знать, насколько вы разбираетесь в файловых системах linux. Определенный тип формата хранения данных, такой как EXT3, EXT4, BTRFS, XFS и так далее. Linux поддерживает почти 100 типов файловых систем.

Подробный ответ можно найти здесь

9. Объясните пространство ядра и пространство пользователя

Это может быть вопрос-кроличья нора, интервьюер может пойти как можно глубже, чтобы увидеть, каковы ваши пределы. Это также самая интересная тема о Linux, как управление переходит от пространства пользователя к пространству ядра и почему это важно. Почему мы не можем напрямую обращаться к пространству ядра. Для чего используются внутренние библиотеки, такие как libc, и почему нам нужен системный вызов.

Подробный ответ доступен здесь

10. Как устранить проблему высокого уровня ввода-вывода

Подробный ответ доступен здесь

11. Что такое processes и threads?

Процесс — это программы, которые отправляются из состояния готовности и планируются в центральном процессоре для выполнения. PCB (блок управления процессом) хранит концепцию процесса. Процесс может создавать другие процессы, которые известны как дочерние процессы. Процессу требуется больше времени для завершения, и он изолирован, что означает, что он не делит память с другими процессами.

Подробный ответ доступен здесь

12. Объясните управление памятью ядра

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

Подробный ответ доступен здесь

13. Объясните processes и threads?

Подробный ответ доступен здесь

14. Объясните различные типы состояния задачи?

Подробный ответ доступен здесь

15. Объясните, что такое параллелизм и условия гонки в Linux?

Подробный ответ доступен здесь

16. Объясните STACK и HEAP в операционной системе?

Подробный ответ доступен здесь

17. Объясните, что такое утечка памяти?

Наивное определение: Неспособность освободить недоступную память, которая больше не может быть выделена снова каким-либо процессом во время выполнения выделяющего процесса. В основном это можно вылечить с помощью методов GC (Garbage Collection) или обнаружить с помощью автоматизированных инструментов.
Тонкое определение: Неспособность освободить доступную память, которая больше не нужна для правильного функционирования вашей программы. Это практически невозможно обнаружить с помощью автоматизированных инструментов или программистами, не знакомыми с кодом. Хотя технически это не утечка, она имеет те же последствия, что и наивная утечка. Это не только моя собственная идея. Вы можете встретить проекты, написанные на языке, собирающем мусор, но при этом упоминающие об устранении утечек памяти в своих журналах изменений.

18. Как Linux обрабатывает прерывания?

Подробный ответ можно найти здесь

19. Объясните, что такое Load Average?

Лучшее определение и внутренняя информация о средней нагрузке может быть объяснена здесь. Я бы рекомендовал всем посетить этот сайт для более глубокого понимания внутренних процессов.

20. Что происходит, когда вы пытаетесь curl на сайт?

Это очень известный вопрос, и он возникает время от времени. Однако я думаю, что все мы должны знать о внутреннем процессе, происходящем при выполнении команды curl www.google.com . Лучшее подробное объяснение, которое я нашел, находится здесь. Можно, конечно, возразить, что это слишком подробное объяснение, но нет ничего плохого в том, чтобы знать все досконально, вы можете не рассказывать обо всем этом, когда вас спросят, но вы должны знать об этом.

Другие интересные ресурсы для подготовки к собеседованию

  1. Интервью инженера-технолога Facebook

  2. Интервью с инженером по производству Facebook

  3. Собеседование по надежности сайта

  4. Интервью с менеджером по инжинирингу

  5. Собеседование Google SWE

  6. Собеседование с Amazon SWE

  7. Хорошие советы и рекомендации по устранению неполадок

  8. Хорошие ссылки Что такое кипение

  9. Анализ производительности Linux

  10. Масштабируемость, надежность и производительность для больших систем

Я только что предпринял попытку собрать все это в одном месте. Я буду продолжать отслеживать их и собирать здесь по частям… так что следите за новостями!!!

Счастливого устранения неполадок и удачи!!!

Оцените статью
devanswers.ru
Добавить комментарий