LINUX.ORG.RU
ФорумAdmin

Техподдержка: тестовое задание

 


1

3

Здравствуйте!

Пробуюсь на специалиста техподдержки в компанию. Прислали вот такой тест. Сижу и думаю: это нормальный тест на данную позицию или оригинальная форма отказа?

С уважением, Novichok

Задания основаны на реальных задачах технической поддержки.

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

Для тестового задания использовать дистрибутив Роса Фреш 12, который есть в свободном доступе.

https://www.rosalinux.ru/rosa-linux-download-links/

Если нет возможности провести установку ОС на физическом оборудовании, ставьте в qemu/kvm. Опыт, опять же, лишним не бывает…


Общие вопросы.

  1. Какой командой (с опциями) узнать версию ядра в Linux?

  2. Какой командой (с опциями) узнать файловую систему ОС?

  3. Какой командой (с опциями) создать файловую систему ext4 на блочном устройстве /dev/sda1?

  4. Какая команда служит для анализа логов работы системы?

  5. Как проверить что вы работаете на физическом или виртуальном сервере?

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

  7. Как узнать, установлен ли конкретный rpm-пакет?

  8. Как войти в режим одиночного пользователя (single user mode)?

  9. Какая команда позволяет изменить имя хоста навсегда.

  10. Как узнать какие модули ядра загружены в ОС?

  11. Как посмотреть таблицу маршрутизации в ОС Linux?

  12. Как изменить порт «по умолчанию» для SSH?

  13. Как увидеть временные метки dmesg в Linux?

  14. Какой командой можно посмотреть информацию о группе томов LVM?

  15. Как узнать на каком порту работает сервис Apache?

  16. Какой командой можно сбросить все текущие правила iptables?

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

  18. Какой командой можно создать символьную ссылку на файл /opt/1?

  19. Какой командой можно найти все файлы старше 7 дней в каталоге /var?

  20. Какой командой можно посмотреть объём свободной памяти в ОЗУ?

  21. Сколько IP адресов в сети с маской /27 и сколько из них можно использовать для устройств?

  22. Сколько байт в IPv4 адресе?

  23. По какому протоколу работает команда ping?

  24. Какой командой можно перезапустить сервис?

  25. Какой командой можно узнать информацию о процессоре?


Тестовое задание Инженера технической поддержки №1. Сложность низкая.

Вопросы:

  1. Приложение падает без объяснения причин. Ваши действия?

  2. Как найти программы, которые используют больше всего памяти в ps?

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

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

  5. Как ограничить максимальное количество одновременных входов в систему в linux?

  6. Как отключить автозапуск USB для определенного устройства?

  7. Как получить список USB-устройств без графического интерфейса и модуля ядра в Linux?

  8. В чем разница между insmod и modprobe?

  9. Как определить что wine в данный момент 64?

  10. Как запретить пользователю запуск скриптов?

Задание.

Необходимо установить Фреш12 + набор прикладного ПО по списку для демонстрации руководству заказчика.

Срок по задаче стоял - asap. Вам максимум неделя.

Список прикладного ПО:

  1. Yandex Browser;

  2. Sputnik Browser;

  3. Chromium-gost;

  4. Ассистент клиент;

  5. ViPNet PKI Client;

  6. RDP client;

  7. Wine с поддержкой 32х битного ПО.

По итогам предоставить удалённый доступ и составить небольшую инструкцию (в формате pdf), чтобы заказчик мог выполнить установку ПО методом «copy/paste».

Ваша инструкция будет проверена.

Непонимание или неполное выполнение задания - проваленное тестовое задание.

Нерабочая инструкция - проваленное тестовое задание.

Вопросы и/или обсуждение задания приветствуются.



Последнее исправление: Novichok25 (всего исправлений: 1)

Ответ на: комментарий от fluorite

зы. ПДД у водителей в голове тоже не с рождения как бы

С ПДД у водителей, со временем, происходят такие мутации, что от реальности это порой сильно отличается. Думаю у программистов бывает также.

Silerus ★★★★
()
Ответ на: комментарий от fluorite

Ввести сильную типизацию вместо слабой.

Сведение exit code к одному биту - выстрел в ногу. Обычно нолик означает «всё хорошо», а всё остальное - «что-то пошло не так». Как именно «не так» - «надо посмотреть». Почитайте man grep, например.

bugfixer ★★★★★
()
Ответ на: комментарий от bugfixer

к одному биту

Не к биту, а к определённому множеству значений. Почитайте про enum class в с++. Да и во времена UNIX был список из define и использовать exit с произвольным числом не считалось хорошей практикой, см. sysexits.h.

fluorite ★★★★★
()
Ответ на: комментарий от fluorite

Не к биту, а к определённому множеству значений.

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

bugfixer ★★★★★
()
Ответ на: комментарий от bugfixer

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

Лол. Их сейчас 256.

Note: It is also to taken into consideration that an exit code with a value greater than 255 returns an exit code modulo 256.
For Example: If we execute a statement exit(9999) then it will execute exit(15) as 9999%256 = 15.
fluorite ★★★★★
()
Ответ на: комментарий от anc

А причём тут входящие параметры?

enum class exit_code {
    ok,
    ko
}

void my_exit(exit_code code) {
    if (code == exit_code::ok) {
        exit(EXIT_SUCCESS);
    }
    exit(EXIT_FAILURE);
}

int main(int argc, char** argv) {
    // покажи как вызвать my_exit с чем-то кроме ok или ko
}
fluorite ★★★★★
()
Ответ на: комментарий от fluorite

Нам не важно, что за приложение.

Ещё как важно.

Это контракт такой

На generic уровне он уже есть - нолик означает «всё хорошо», всё остальное - «что-то пошло не так». Я уже об этом писал.

примерно как коды возврата в HTTP протоколе.

Притянуть за уши фиксированный протокол в контексте «whole universe of apps, incl. future ones», ну так себе.

bugfixer ★★★★★
()
Ответ на: комментарий от fluorite

Это будет мой последний пост в этом топике потому как мы ударились в оффтоп.

Линуксу плевать

Именно. И с какой радости и с какой целью он (kernel / libc, не важно) должен определять константы для exit codes навязывая их аппликухам?

Несуществующие требования из будущего, ну так себе.

Вопрос свободы. С практической точки зрения мне хватит 255 уникальных кодов ошибки для любой конкретной аппликухи. И в обозримом будущем - тоже. А вот на все - может и не хватить. Неужели такие банальные вещи не очевидны?

За сим - расшаркиваюсь.

bugfixer ★★★★★
()

По мне так это уже администрирование ОС, а не тех. поддержка.

Тех. поддержка в моём понимании занимается другими задачами и инструкции не пишут.

Но если з\п норм и компания норм, нужна работа, то попробуй. Я с ходу могу ответить на ~97% вопросов из списка, но если опыта нет, то да, придётся повозиться.

Вопросы несложные на самом деле, если есть опыт. Если нет, то да, придётся потратить время.

iljuase ★★★
()
Ответ на: комментарий от fluorite

А почему все в треде на серьёзных щщах требуют оплаты за инструкцию и пару дней на неё?

Потому что на ЛОРе кто-то когда-то закинул эту идею, и с тех пор ее все кому не лень копипастят из треда в тред. Их время слишком ценно, понимаешь? Вакансия на типичного админа локалхоста (не имею в виду ничего плохого, вся работа полезна), а агрятся на неё синьоры с 10+ лет опыта и подражающие им эникеи.

Если ты фанат линукса, но ничего кроме этого не умеешь, отличный способ начать карьеру, казалось бы.

ЗЫ за патч спасибо, встал как влитой!

filosofia
()
Ответ на: комментарий от anc

Но я не о том писал, кто сказал что успешное завершение всегда 0 ? Существуют утилиты у которых код возврата весьма разнообразный и он не означает что мы завершились «плохо», это информационный код на основании которого если нужно можно принять какое-то решение, а если не нужно то и пофиг.

Это соглашение. Оно не прописано явно в POSIX, но весь юникс мир ему следует начиная с шеллов с Мэйкфайлами и заканчивая докерами с СиАйями. Кроме того прописано в sysexits.h.

Тот факт, что какая-то софтина не следует соглашению в силу своей ущербности или наоборот слишком сложной модели, в которой нет возможности выделить семантическую ошибку, мало о чем говорит и звучит с твоей стороны как доебаться до столба.

filosofia
()
Ответ на: комментарий от iljuase

По мне так это уже администрирование ОС, а не тех. поддержка.

Тех. поддержка в моём понимании занимается другими задачами и инструкции не пишут.

Есть разные уровни техподдержки. Одни сидят на телефоне и отсеивают 90% проблем по известным паттернам. Если у них не получается, они «связывают тебя со специалистом». Думаю, это как раз вот эта вакансия. Если специалист тоже бессилен, он говорит, что техническая команда изучает проблему. В задачи специалиста вполне может входить и написание инструкций для первой линии поддержки, более того, это его шкурный интерес, чтобы девочки на телефоне знали больше паттернов и реже передавали ему трубочку.

filosofia
()
Ответ на: комментарий от Psilocybe

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

Я бы ответил:

  1. Проверил статус завершения, возможно в доке программы описано, как статусы соотносятся с ошибками
  2. Проверил логи (может программа что-то плюнула в свой или общесистемный лог)
  3. Попробовал бы запустить с параметрами -v, -vv
  4. Запустил под strace
  5. Запустил под gdb
emorozov
()

Изейшие вопросы как по мне. Им требуется опытный специалист просто, а не Вася с улицы.

Вам максимум неделя

Да они издеваются. Тут максимум 5 часов надо, если ничего не знать вообще, только в гугл уметь и английский. На сколько собеседовались то хоть? Я бы за такие навыки больше 50 000 рублей в Москве не платил, в регионах не больше 40 000.

peregrine ★★★★★
()
Ответ на: комментарий от anc

Возникает встречный вопрос: Что такое «файловая система ОС»? /boot, /, /usr, /tmp, /var, /home &etc ?

Правильный ответ - обсуждение, уточнить у заказчика. Тот кто вас в техподдержке спрашивает ничего не знает, иначе он бы не спрашивал. Умение понять и уточнить то что у вас хотят узнать - важнейший навык.

Какого модуля? В смысле с выпиленной usb из ведра под корень? Забавные робята однако, но встречный вопрос, «а зачем в гамаке и стоя?».

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

peregrine ★★★★★
()
Ответ на: комментарий от emorozov

0. погуглил если оно в общем доступе

5. написал разработчику, анализ дампа это отдельная работа за которую платят немного больше чем за техподдержку

А гдб это уже 7 пункт

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 3)

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

Имхо это неоригинальная форма выполнения работы на халяву за счёт соискателя. Меня бы это как минимум напрягло.

hobbit ★★★★★
()
Ответ на: комментарий от Novichok25

Можно так неделю провозиться, а потом все равно возьмут того,«у кого больше развиты коммуникативные навыки» и есть профильное образование:)

Если гипотеза о разводе верна, то, скорее всего, они вообще никого брать не собираются ;)

hobbit ★★★★★
()
Ответ на: комментарий от filosofia

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

Уточняющий вопрос в виде «Какая команда?» это «доебаться до столба»? Ну, что ж, видимо в этом отличие админов/программистов от эникееев.

anc ★★★★★
()
Ответ на: комментарий от Psilocybe

Приложение падает без объяснения причин. Ваши действия?

Ктонибуть знает ответ?

Их (ответов) больше одного, начиная «от быстро поднятое не считается упавшим», заканчивая «да заимело ты меня, пойду искать альтернативу»

anc ★★★★★
()
Ответ на: комментарий от anc

Не ври, не было никакого уточняющего вопроса, был столб.

Часть вопросов это троллинг тупостью. Например

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

Опять в единственном числе «команда»… Какая команда? Я могу собрать свой бинарник под названием «команда» и в любом случае успешного/не-успешного завершения возвращать 0. Кстати припоминаю что-то подобное у кого-то было, там без парсинга лога было не обойтись.

Если $? в sh говорит 0, значит команда завершилась успешно, согласно конвенции, принятой в юниксах. В противном случае, ошибка. Сеньор админ/программист с 10+ лет опыта решил блеснуть знанием «со звездочкой» на эникейском интервью, назвав адекватный вопрос троллингом тупостью.

Можешь кстати свою собранную «команду» засунуть в какой-нибудь CI и потроллить своей тупостью его админов.

filosofia
()
Ответ на: комментарий от filosofia

Сеньор админ/программист с 10+ лет опыта решил блеснуть знанием «со звездочкой» на эникейском интервью, назвав адекватный вопрос троллингом тупостью.

Именно так, сначала изучаем документацию к конкретной команде, а только потом принимаем решение как анализировать exit code.
ЗЫ И это я ещё выпадение в кору не упомянул.

anc ★★★★★
()
Ответ на: комментарий от Novichok25

В догонку ответ к вопросу:

Приложение падает без объяснения причин. Ваши действия?

Это может быть и проблемой железа. Напомнило очень старую ситуацию которую я здесь уже описывал, перебрали всё железо пока оно не заработало. Благо это было у продована железа и перебирать железки было не сложно. «ходи на склад бери новый железка» :) Реальная жизненная ситуация.

anc ★★★★★
()
Ответ на: комментарий от anc

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

Novichok25
() автор топика

В целом простейшие вопросы, кроме:

Какой командой (с опциями) узнать файловую систему ОС?

Команда «чо?». Чтобы знать, какой комендой узнать «файловую систему ОС», нужно узнать, что составитель данного мегасписка подразумевает под «файловой системой ОС» это где ядро лежит? Или где корень? Или /boot? Или предполагается, что у клиентов это всегда совпадает? Хотя можно схитрить и сказать lsblk без опций — покажет всё, соответственно узнаешь и / и /boot и /usr и т.д., так что задача будет решена, и команда одна.

Как определить что wine в данный момент 64?

В какой, блин, данный? Изнутри wine или снаружи? Найти все wine (включая те, что в докерах, например) в системе? По каталогу префикса? По запущенному процессу? А если одновременно и 32-битный и 64-битный запущены, в разных firejail’ах, например, или в разных контейнерах?

Приложение падает без объяснения причин. Ваши действия?

Материться и плеваться, блин. Идиотский вопрос, не первый раз его вижу.

ViPNet PKI Client;

Это что вообще за зверь…

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от Novichok25

В описываемом мной случае это вообще новое железо собирали, собрали, раскатали систему, чуть больше нагрузки крэш… понеслась звезда по кочкам в виде «поменяй железку»

anc ★★★★★
()