Вопросы linux администратору
==============================

 Попросили провести собеседование на должность linux администратора в WEB компанию.  

Вот думаю, о чем спрашивать-то?   

Есть у кого идеи по теме? Посоветуйте, пожалуйста.   

Заранее спасибо! 

 Была вакансия в хостинг-компании NetAngels. Там был такой список:  

Компания NetAngels ищет грамотного технического специалиста на должность старшего системного администратора в отдел NOC. В своей работе мы используем Debian GNU/Linux, поэтому мы будем особенно рады специалистам, имеющим опыт работы именно с этим дистрибутивом.  

  

Задачи, которые вам предстоит решать:  

  

 — поддержка существующей инфраструктуры нашей хостинговой платформы;  

 — исследование и внедрение новых технических решений;  

 — решение сложных задач и вопросов, находящихся выше компетенции службы технической поддержки.  

  

Качества, которые будут полезны при работе в нашей компании:  

  

 — понимание функционирования linux-систем, опыт их администрирования;  

 — понимание принципов функционирования Internet, знакомство с протоколами dns, http, ftp, smtp, pop3, imap;  

 — некоторые представления о языке C (необходимость заглянуть в код какой-нибудь программы при отсутствии внятной документации не должна стать для вас невыполнимой задачей);  

 — опыт написания скриптов на sh, виртуозное владение sed и awk;  

 — технический английский на уровне свободного чтения документации (без постоянного заглядывания в словарь);  

 — ответственность и готовность быстро принимать решения по возникающим проблемам;  

 — самостоятельность: исследование возможностей по реализации технических новшеств, умение выбрать подходящий инструмент для решения задачи.  

 — понимание устройства сетевого стека linux и подсистемы ядра netfilter;  

 — опыт работы с нетривиальными конфигурациями iptables, iproute2;  

 — знакомство с протоколами динамической маршрутизации;  

 — навыки работы с дистрибутивами Debian/Ubuntu (пакетный менеджер, опыт сборки пакетов);  

 — опыт работы с системами виртуализации;  

 — навыки диагностики и решения нетривиальных проблем в области сетевых настроек или эксплуатации сервисов, работающих на linux-платформе;  

 — опыт работы с высоконагруженными сервисами, работающими в режиме 24/7/365;  

 — знакомство с веб-серверами Apache или nginx;  

 — опыт настройки почтовой системы на платформе linux;  

 — знакомство с системами контроля версий (предпочтительно git);  

 — представления о том, что такое sql query plan, навыки оптимизации каких-либо СУБД под конкретную задачу;  

 — навыки программирования на Python;  

  

Ну и сами вопросы:  

1. Как узнать, кто из клиентов потребляет больше резидентной памяти в данный момент своими процессами (построить топ по потреблению). Вывод ps (не полный) выглядит так. Всего в ps процессов несколько сотен:  

Исходник:  

ps axu  

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND  

u5867 32518 0.0 0.0 214036 12764? S 21:34 0:00 /usr/bin/php-cgi5.2  

u425 32532 1.1 0.0 139736 24556? S 21:34 0:01 /usr/bin/php-cgi5.3  

u6363 32535 1.1 0.0 183444 20240? S 21:34 0:01 /usr/bin/php-cgi5.2  

u12124 32548 0.2 0.0 174432 28360? S 21:34 0:00 /usr/bin/php-cgi5.2  

  

2. По какому принципу работает программа traceroute?  

3. Вам понадобилось выделить подсеть размером в 30 ip-адресов. Можете ли в уме посчитать, какой должна быть маска получившейся сети?  

4. Расскажите, что такое Path MTU.  

5. Расскажите, что такое TCP Window.  

6. Какой тип DNS-записи мы будем использовать при указании того, какой сервер отвечает за приём почты определённого домена?  

7. Как выглядит HTTP-запрос для проверки корректности работы настроек веб-сервера для отдачи сжатого контента при его поддержке клиентом (на примере /index.html)?  

8. Расскажите, в чём заключаются различия между симлинком и хардлинком.  

9. Каким образом в sh/bash можно обработать какой-либо сигнал? Например, по завершении скрипта необходимо удалить временные файлы, созданные в процессе работы, причём выполнить это необходимо даже том случае, если выполнение скрипта было прервано извне. Обработку каких сигналов мы не можем выполнить?  

10. Вам необходимо обеспечить максимальную доступность одного сервиса (программы). Расскажите, каким образом можно обеспечить автоматический запуск/перезапуск сервиса в случае его внештатного завершения.  

11. Для нового сервера, на котором будут работать базы данных, необходимо подготовить дисковую систему. Пожалуйста, расскажите, чем вы будете руководствоваться при настройке дисков, какие настройки raid будете применять, какой io scheduler?  

12. Как посмотреть, с какими параметрами запущено ядро linux?  

13. Приходилось ли вам сталкиваться с tun/tap устройствами? В чём заключается их различие?  

14. Допустимо ли полностью отключать своп на сервере? Почему?  

15. Каким образом можно просмотреть загруженность диска операциями ввода-вывода?  

16. На сервере настроены два интерфейса: eth0 и eth1. Используемый по умолчанию шлюз доступен через eth0. Запросы поступают на сервер через оба интерфейса. Каким образом можно настроить использование другого шлюза для отправки ответов на пришедшие через eth1 запросы? Предполагается, что запрос может придти с произвольного ip-адреса.  

17. Каким образом вы будете делать бэкап базы MySQL объёмом 10 Гб и использующей хранилище InnoDB? А если хранилище MyISAM?  

18. С какими трудностями/проблемами вам приходилось сталкиваться при поддержке репликации в MySQL, если есть такой опыт? Каким образом вы чинили развалившуюся репликацию?  

  

19. Предположим, у вас есть какой-то веб-сайт, работающий под LAMP. На этот сайт началась атака типа http-flood. Какие действия Вы бы предприняли для самостоятельной борьбы с этой атакой?  

20. Имеется некоторое большое (несколько десятков) количество одинаковых систем, настроенных под одну задачу (хостинг). Каким образом вы будете производить работы по установке нового ПО, обновлению; следить за актуальностью и однотипностью конфигурационных файлов?  

21. В каких ситуация целесообразно применять Jumbo Frames?  

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

23. Необходимо запретить доступ к размещенным на сервере сайтам всем клиентам с User-Agent: MegaXakep. Как бы Вы это сделали?  

24. В чем отличие между KVM, XEN и OpenVZ. Какие преимущества и недостатки каждой из этих технологий вы знаете?  

25. Необходимо ограничить процессы пользователя uXXXX, чтобы они потребляли в сумме не более 512 мб памяти. Как это можно сделать?  

26. Какие режимы репликации изменений базы поддерживаются MySQL?  

27. В каких случаях на slave-ах может быть необходимо ведение binlog-а?  

  

Взято тут [www.e1.ru/talk/forum/go\_to\_message.php?f=125&t=33520&i=33603](http://www.e1.ru/talk/forum/go_to_message.php?f=125&t=33520&i=33603) 

 Когда я на собеседование ходил, мы про аниме говорили… Взяли. 

 Взять машину с линуксом. Сломать на нёй всё, до чего дотянутся руки, дать соискателю на починку. Посмотреть, что и как он будет делать. Потом спросить, чем занимался на предыдущей работе и… всё. Вот я и вижу идеальное собеседование на должность linux администратора. 

 Весьма годный вариант:  

  

[hydrobiont.livejournal.com/107182.html#cutid1](http://hydrobiont.livejournal.com/107182.html#cutid1)  

  

Также есть вот это:  

Вопрос 1.  

Расскажите, пожалуйста, о типах packet filters, о разнице между stateful и  

stateless поведением,  

о Packet filters в различных системах.  

  

Вопрос 2.  

Способ организации packet filter rulesets.  

Дана машина с одним внешним интерфейсом. Составьте группы правил (в любой  

форме, можно в свободной) для следующих  

условий: открытые сервисы: ftp, ssh, smtp, named, http. ftp должен работать  

как в passive, так и active режиме,  

исходящие соединения разрешены.  

  

Вопрос 3.  

а) Репликация MySQL.  

На двух серверах настроена репликация БД. Как убедиться, что с репликацией  

всё в порядке?  

Что делать, если репликация «сломалась»?  

б) Есть база db. В ней 3 таблицы staff(id1, name), phone(id2, number),  

office(id3, room).  

Как составить 1 запрос, который выводит сотрудников, которые находятся в  

комнате 13  

и их телефонный номер начинается на 13 в формате «имя, телефон, комната».  

  

Вопрос 4.  

Приведена tcp сессия. Объясните особенность данной сессии.  

Что она означает?  

[pastebin.com/LawY6C5D](http://pastebin.com/LawY6C5D)  

  

Вопрос 5. На продакшен сервере после нештатной перезагрузки не проходит  

проверка дисков и  

вы видите сообщение bad superblock. Ваши действия?  

  

Вопрос 6.  

Приведите небольшой фрагмент вашего кода на Bash с описанием его работы?  

  

Вопрос 7  

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

пожалуйста, пример (в виде diff).  

  

Вопрос 8.  

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

Можно ли обслуживать с помощью apache 1000-2000 одновременных коннектов?  

Каким образом можно снизить нагрузку на сервер в этом случае?  

  

Вопрос 9.  

Виртуализация.  

а) Какие программные реализации использовали в работе?  

б) В чем принципиальное различие между OpenVZ и KVM?  

в) Какие тонкие настройки, модификации осуществляли при работе с системами  

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

г) Выполняли ли оптимизацию работы с памятью в системе виртуализации KVM? Если да, то какой технологией пользовались?  

  

Вопрос 10.  

Какие системы контроля версий ПО вы использовали в работе? Какие инструменты  

для организации коллективной работы использовали? 

 Дать консоль и попросить создать файл, если vi напишет брать.  

Шутка конечно, но доля правды есть.  

Я знаю случай создали подобную ситуацию только на windows, девушку на работу взяли, потому что far запустила. 

 Пригласите пару крутых пингвиноадминов и попросите их побеседовать.  

Иначе никак. 

 1) Идея Eddy\_Em указанная в самом начале более чем хороша. И вот чем: в реальности оно обычно так и бывает: вначале все настроили, все хорошо работает, затем бац, и что-то поломалось, и никто не знает почему. адекватный админ должен уметь решать такие проблемы. а тут честная эмуляция.  

  

2) пост от ASP тоже очень понравился, отличная подборка, спасибо за неё! 

 Собеседовать бестолку. Чтобы сослать сразу неумных претендентов — спрашивайте про DNS, есть ещё хороший вопрос «что происходит с того момента, как пользователь нажал на ссылку в браузере до того момента, как он увидел страницу» и куча подобных.   

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