Собеседования программистов
1 этап на адекватность - проверка на "говно"
2 этап на знание технологий (что бы наняли)
3 этап на то, что его драйвит (что бы повысили, что бы не выгнали)
Про собеседования и общение
Не пытайся понравится. Отвечай естественно. Будь искренним. Это не тест не экзамен. Важно показать себя как личность. При разговорах смешай фокус внимания с себя на собеседника,на других людей. Не копайся в себе. Не подсираивац свое поведение пол окружающих. Не думай что о мне думают другие люди. Как они меня воспринимают. Вместо этого анализируй его, что он хочет сказать, прчему, повеление, чего они не договаривают?
RAID расшифровывается как риски (R, risks), допущения (A, assumptions), проблемы (I, issues) и зависимости (D, dependencies). Выбрать меньшее из зол. Пока нет оценки - неприятности весьма велики. Проблемы и зависимости ограничивают выбор.
Под критическим путём понимают все задачи, которые определяют окончательную дату запуска проекта. И если из-за одной задачи график нарушается на день, весь проект задерживается на день. Для таких задач необходимо планировать резерв.
20% усилий дают 80% результата. По этому можно расставлять приоритеты что делать в те самые 20%.
При возникновении сложной ситуации важно вовлечь в её решение всю команду. Метод мозгового штурма, метод «шести шляп мышления».
Ожидаемое значение определяется посредством вычисления среднего из трёх:
— оптимистичного (O, optimistic value);
— пессимистичного (P, pessimistic value);
— наиболее вероятного (M, most likely value).
На каждой контрольной точке происходит контроль запланированного значения (PV, planned value), заработанного значения (EV, earned value) и фактической стоимости (AC, actual cost). Совокупность всех запланированных значений — это базовый план исполнения. Если заработанное значение равняется запланированному, можно говорить о достижении цели. Если наблюдается значительное отклонение от расписания либо стоимости, для исправления просчётов следует предпринять соответствующие меры. Окончательная смета оценивается и сравнивается с бюджетом, просчёты выражаются в виде издержек.
Выделяют следующие сферы знаний:
— управление предметной областью;
— оптимизация затрат;
— планирование распределения ресурсов;
— использование методики «Шести Сигм»;
— контроль материально-технического обеспечения;
— управление рисками;
— улучшение процесса работы;
— сравнительный анализ производительности;
— автоматизация;
— планирование показателей качества;
— анализ первопричин отклонения от плана.
Реализация любого проекта сопровождается ограничениями. Основные три фактора — это время, объём и стоимость. Мы можем образовать из них треугольник, где каждый фактор — это вершина, а качество — это центр.
Система этого типа часто используется в корпорациях и основана на информационной системе управления. Есть два типа СПР — неструктурированная и структурированная. СПР соединяет множество блок-схем в организационном процессе, её можно сформулировать и построить и статистически, и стохастически.
Она же диаграмма Исикавы и причинно-следственных связей. Отображает первопричины определённого события. В контексте управления инструмент применяется для мониторинга рисков и контроля качества.
CMMI — совершенствование процессов и видов деятельности в компаниях разных размеров. Содержит набор рекомендаций в виде практик. Их применение, по мнению разработчиков модели, даёт возможность достичь целей, необходимых для полной реализации поставленных задач в определённых областях деятельности.
«Шесть сигм» — это показатель качества, который стремится к совершенству. Метод основан на данных для устранения дефектов. Зрелость производственного процесса описывается в качестве σ-рейтинга отклонений либо процентом бездефектной продукции на выходе. При грамотном применении помогает завершать проект вовремя и снижать риск провала.
Это документ, включающий в себя все выявленные риски проекта, а также список обязательных и потенциальных действий.
Для этого используют методики разбивки продукта, анализа требований, системной инженерии, системного анализа, анализа стоимости и анализа альтернатив. Последний реализуется путём мозгового штурма либо парного сопоставления.
Система распределения работ определяет перечень действий, необходимых для проекта, включая вспомогательные действия. Система основана на уровнях, причём вся работа требует чёткого понимания. Используется дневник распределения работ, включающий в себя дополнительные детали. Когда всё известно о работе и зависимостях, тогда оценки времени и усилий будут точны.
Самый важный навык для менеджера проектов – умение довести проект до завершения в рамках установленного бюджета и сроков. Важные качества:
Ответить с точки зрения критериев:
Менеджер знает цели и задачи проекта, а также отслеживает ход движения по проекту в реальном времени. Возможные решения:
Буду стремиться что бы они реализовывали свое видение идей, не затмевая их результатов работы.
Нужно проявить способность к рефлексии и умению честно признавать свое поражение. Часто в процессе управления проектами выделяется недостаточно времени на стадии планирования. Иногда высшее руководство компании больше концентрируется на реализации проекта, нежели на планировании. В таких случаях менеджеру проектов важно не торопиться и проверить, что план составлен по каждому аспекту проекта. Вы обречете себя на провал, если не будет четкости и ясности как на стадии планирования, так и в процессе реализации и контроля за выполнением работ.
Важные критерии:
Когда я вел поддержку крупного проекта в (это был сайт обувного бренда), мы практиковали разбиение больших задач на мелкие, дабы иметь возможность во-первых не тонуть в океане правок и трансформаций функционала по ходу разработки (что в больших задачах присутствует всегда), а во-вторых в конце месяца выставить к оплате заказчику реально наработанное (или близкое к этому) количество часов и избежать ситуации, когда по факту за месяц наработали 400 часов, а задач сдано максимум на 100, потому что две задачи на 200 и на 100 часов мы никак не можем сдать в этом месяце.
Возвращаясь же к кейсу, во-первых я бы привлек аутсорс, насколько это было бы возможно, во вторых сосредоточился бы на наиболее приоритетных частях функционала, которое мы реально можем успеть сделать за неделю одним программистом. В срок мы, конечно, не уложимся, но сделаем к нему львиную долю проекта.
Я бы посмотрел на сроки по этапам, прописанные в договоре (или д/с). Утверждать можно многое, важно понимать, что мы имеем по факту и отсюда уже разговаривать. Попросил бы конкретизировать клиента что его не устраивает и что было оговорено.
Чаще всего я досогласовывал часы у заказчика. Это касалось, конечно же, большого функционала. Если аргументировано расписать на что ушло время, и сколько еще потребуется, как правило, клиент относился адекватно. Однако, если клиент уперся рогом и «договорились за N часов/рублей, значит за столько и делайте, что за качели начинаются?», то придется делать в ущерб компании, ибо наш косяк при оценке. Опять же, если при оценке бюджета оговаривалась некая вилка в каком-то функционале и это где-то прописано, то проблем с досогласованием бюджета возникнуть не должно.
Избегать срыва сроков по задачам (на примере техподдержки) можно дробя большие задачи на более мелкие, как описал в п.1. Конечно, в поддержке это делать значительно легче, чем в разработке с нуля, но если проект делается крупный, а на просто сайт-визитка на CMS, то MVP никто не отменял.
Что до нас, там экономика была проста как пассатижи: у нас была себестоимость - та сумма, которую мы заплатим за проект фрилансерам. Эта себестоимость тупо умножалась на 3 и выставлялась заказчику. Т.е. по сути, конечная цена состояла из трех частей:
Конечно же, бывало, что клиент не соглашался на цену, которую мы давали, и тут, если Ген.директор был готов подвинуться, он снижал цену, но разница бралась из прибыли, а не себестоимость или затрат на компанию. Понятно, что зарплатный фонд и аренда офиса - это тоже относится к себестоимости, но у нас себестоимостью назывались именно затраты на фрилансеров.
Руководитель проекта в моем понимании - тот, который управляет и проектом и командой. Менеджер - это координатор (форвардовщик писем, делатель всего непрограммерского). На примере студии X - ты скорее менеджер, нежели руководитель. С одной стороны с тебя требуют управления командой и несения ответственности в полной мере за свои действия, но в то же время говорят, что: 1) мы на 28 из 40 часов забираем у тебя тимлида, т.к. он нужен для лекций в корп. университете 2) этого миддл-программера мы из проекта вынем и дадим тебе юниора. При этом ты уже запланировал на них занятость на след. неделю, а выясняется это уже на пятничной планерке. Согласен, что жизнь менеджера иначе была бы скучна, но получается, что было потрачено впустую 6 часов работы по планированию след. недели и надо все перекраивать))
Главное — выяснить, что конкретно не нравится клиенту, а продолжение диалога будет зависеть от его ответа. Если проблема реальна, вы сможете договориться и все исправить или же отстоять свою версию проекта. Если заказчик не может ответить на вопрос, возможно, он пытается таким образом снизить цену.
Проблемы со сроками могут быть в любом проекте. В этом не всегда виноват менеджер, иногда мешают внешние обстоятельства. Если команда не успевает по вашей вине, объясните ситуацию клиенту как можно раньше и вместе найдите решение, которое устроит обоих. Если дело в изменившихся условиях, представьте, как бы вы действовали в такой ситуации, и расскажите об этом.
Например, заказчик хочет добавить дополнительных функций или разделов на сайт, но просит уложиться в прежний срок. Ваша задача — оценить ситуацию и решить, соглашаться или нет на такие условия. Можно объяснить клиенту, что половина функций бесполезна и сократить их количество, или внедрить все, но тогда увеличить сроки на работу.
Для менеджера важно быстро справляться с конфликтами в коллективе, а лучше не допускать их. Этот вопрос показывает, что вы знаете об особенностях работы с творческой командой, умеете ли решать проблемы без эмоций.
Менеджер нужен, чтобы организовать работу команды, распределить ресурсы и помогать в сложных ситуациях по ходу проекта. Он должен уметь планировать, общаться с людьми, не бояться рисков и быстро решать проблемы. Менеджер не только управляет, но и работает вместе с остальными ради общего результата. Качества и навыки менеджера проектов:
Здесь расскажите, где бы вы искали сотрудников и как их оценивали. Кого начали бы искать первым и почему. Например, если нужно создать сайт или приложение, логично начать с поиска разработчика и дизайнера.
Если команда работала хорошо, а теперь работает хуже, возможно, у нее пропала мотивация. И тогда задача менеджера проекта — в первую очередь выяснить причину, и далее действовать уже исходя из этого.
В целом же стоит помнить, что деньги — не всегда хороший стимул, особенно в digital. Поэтому важно уметь заинтересовать людей и показать им ценность проекта. Например, рассказать, кому он поможет, чтобы команда могла чувствовать себя частью чего-то важного, а не просто наемными работниками.
Зависит от сложности проекта. Можно оценивать задачи «на глаз» по шкале от 1 до 10, если у менеджера достаточно опыта, а в проекте нет неопределенности. Для более точной оценки можно использовать метод Planning Poker: все заинтересованные в проекте лица собираются и оценивают каждую задачу, а менеджер анализирует результат и выбирает самую частую оценку.
Система контроля версий — это сервис или программа, в которой хранятся данные о продукте, чтобы в любой момент можно было вернуться к любому этапу его создания.
Юзабилити («usability» в переводе с английского — «возможность использования») — это термин, который описывает взаимодействие пользователя с интерфейсом. Например, насколько удобно работать с сайтом, интернет-магазином или приложением: все ли понятно, легко ли найти нужные данные и ориентироваться в структуре.
Для этого есть Earned Value Management, или метод освоенного объема. Он основан на математических формулах, но достаточно простой, чтобы с ним мог разобраться кто угодно. Метод освоенного объема помогает выяснить, что не так со сроками проекта, и как это отразится на бюджете. С его помощью менеджер поймет, на каком этапе проекта находится команда, отстает ли от графика, есть ли отклонения от бюджета и сколько еще нужно денег, чтобы закончить проект.
Agile — семейство гибких методологий разработки ПО.
Waterfall — каскадная модель разработки.
Они отличаются подходом к работе и ценностями. В Waterfall принято четко соблюдать техническое задание, следовать плану и нельзя менять этапы работы местами. В Agile команды работают короткими итерациями. Если что-то идет не так, всегда можно пересмотреть работу, инструменты, сроки проекта или изменить направление.
Философия Lean — система бережливого мышления (от англ. lean production, lean manufacturing — «стройное производство»). Это часть Agile и основа любой гибкой методологии (например, Scrum), где есть набор принципов и практик, которые пересекаются с ценностями Lean. Придерживаться философии бережливого мышления в работе — значит создавать ценность, использовать системный подход и избегать потерь.
Scrum — это фреймворк гибкой разработки программного обеспечения, основанный на принципах Agile. Он подходит для небольших команд из 5-9 человек.
Кроме команды разработки в scrum-команду входят: Product Owner (человек, отвечающий за создание продукта) и scrum-мастер. В проекте также участвуют пользователи и стейкхолдеры (заинтересованные лица), и клиент, если это заказная разработка.
Не отноись к резюме слишком серьезно. Всем важно как он достигает результата, какие у него софт, хард скилы, что он умеет, какая у него культура (как он общается со всеми вежливо или мат через мат). Резюме это для HR (понять свой чужой). Нужно писать так как нужно для HR-a все остальное нужно красиво о себе рассказывать. Резюме пробегают по диагонали...
Все пытаются понять что ты за человек. Нужно делать ставку не на то, чем я занимался. А на то как я делал и чего достиг.
Кто двигает компанию а кто нет...
Есть аналитическое мышление, есть то-то... Такие то такие качества...
Когда смотрим глаза в глаза - руководитель пытается понять сможешь ли ты выполнить его задачи. Ему нужно в этом помочь - рассказать какие методики ты применяешь и т.д. что бы это реализовать.
Справится человек или нет... С теми задачи. Проверка по личным качествам. Насоклько он впишется в коллектив. Когда он начнет приностить пользу (риски). Будет ли оставаться после работы. Знание предметной области. Цель мероприятия - продать себя как специалиста. Рассказать какой ты хороший относительно других кандидатов.
Собедеование это челенж с определенными правилами.
Образ идеального сотрудника и чем ближе к нему тем лучше.
Вопросы для работодателя
На собеседовании не только выбирают вас, но и вы приглядываетесь к работодателю.
Есть много подборок с вопросами, которые могут задать на собеседовании. Но почему-то нет вопросов, которые должен задавать соискатель потенциальному работодателю. Исправим ситуацию.
Публикую список вопросов, которые чаще всего задаю на собеседовании:
Культура управления в компании:
- Какая структура у компании? Как устроена иерархия?
- Есть ли okr/kpi/какие-то цели? Как устроено стратегическое планирование?
- Откуда берется команда на проект? Как устроено управление ресурсами?
- Какие есть циклы обратной связи/совещания/собрания?
- Какие есть метрики на проектах (от план/факта и до SLA)?
Контекст проектов:
- Кто основные клиенты?
- Какое типовые проекты (лендинги, бюджетные коттеджи, SAP и т.д.)?
- На чём специализируется компания?
Запуск проекта:
- Откуда берутся проекты?
- Как происходит предварительная оценка проектов?
- Используется ли устав проекта?
- Участвует ли ПМ в составлении юридических документов?
Планирование проекта:
- Как происходит планирование расписания проекта? Как происходят оценки задач?
- Как планируется бюджет проекта? Управляет ли ПМ бюджетом?
- Как планируется содержание проекта? Как собираются требования?
Инфраструктура:
- Какие инструменты используются для управления проектами (MS Project, Jira, Excel)?
- Как выглядит борд в типовом проекте, какие у него есть статусы?
- Какие есть артефакты (смета, тз, реестр рисков)?
- Вопросы про типовые процессы,Например, как устроены тестирование или дизайн?
- Есть ли сисадмин/девопс для поддержки рабочего пространства?
Подводные камни:
- Есть ли премирование команды после завершения проекта?
- Подводятся ли итоги проекта?
- Есть ли планы развития сотрудников?
- Оплачивает ли организация оплату обучения/конференций сотрудников?
- Что произойдет, если ПМ пропадет на один день посреди проекта?
- Что произойдет, если ПМ будет загружен и не сможет писать ТЗ/формировать кп/проводить демо?
- Как происходит повышение в компании?
Конечно, эти вопросы стоит задавать не рекрутеру, а тому, кто ближе к ЛПР. Если после такого количества вопросов от вас не сбежал интервьюер и вас устроят его ответы, то, возможно, это компания вашей мечты 😉
- Какие твои сильные стороны: фронтенд или бэкенд?
===Проектирование сайта===
Система голосования
- Какие разделы будут присутствовать на данном сайте?
- Какую защиту от накрутки лайков необходимо сделать (голосовать можно только один раз)? ⇒ Регистрация по номеру телефона (через смс код)
- С какими БД ты работал и какая БД, на твой взгляд, лучше и почему?
- Напиши какие таблицы ты создашь для реализации данного функционала?
- Напиши какие будут поля у каждой из таблиц, какие будут у этих полей типы и почему?
- Нужны ли связи (внешние ключи) для данной структуры БД?
- Что такое транзация, зачем она нужна и нужна ли она в данном функционале?
- Напиши SQL запрос, выводящий топ 3 животных и количество лайков за них.
- Что такое кеширование и когда его необходимо применять? Нужно ли кеширование в данном проекте?
- Опиши логику взаимодействия модели и контроллера для любого раздела на твой выбор. Какие принципы ты соблюдаешь в них?
===VUE JS===
- Опиши структуру JSON объекта, который отдаст бэкенд для обработки на фронтенд.
- Какие компоненты ты выберешь для реализации своего раздела (который ты выбрал выше) и почему?
- Какую библиотеку ты выберешь для связи фронтенда и бэкенда и почему?
- Как во Vue ты будешь сохранять промежуточные данные (Vuex)?
- Как ты будешь выводить данные на страницу?
- Где, на твой взгляд, должна находиться основная логика проекта (фронтенд или бэкенд) и почему?
- Расскажи про хуки жизненного цикла во Vue.
-
- С какими CSS фреймворками ты работал (Bootstrap)? Почему вообще их стоит использовать и в каких случаях?
- Какие сборщики пакетов ты знаешь (npm, composer, webpack, gulp)? Какой из них будешь использовать в данном проекте?
- Есть ли у тебя опыт написания тестов? Какие виды тестирования существуют? Какие фреймворки для этого использовал? Что самое важное при написании тестов (по возможности, покрыть все варианты использования функционала)?
===PHP===
1. С какими версиями PHP работал?
2. Что нового в PHP8?
3. Что такое трейт и для чего он нужен
4. Что такое интерфейс и что такое абстрактный класс? В чем различие?
5. Есть ли в PHP множественное наследование?
6. Что такое инъекция зависимостей?
7. Паттерны, с какими работал и когда стоит применять.
8. Какие методы передачи данных ты знаешь (POST, GET...)?
9. Работал ли с API ? Расскажи с какими? Возможно платежные системы?
10. Какие механизмы для отладки php-кода используешь?
11. Что такое генераторы в PHP и чем они отличаются от функций?
12. Как работает CRONTAB? Когда его целесообразно и нецелесообразно использовать?
13. Как ты относишься к рефакторингу кода? Есть ли в этом опыт?
14. Есть большой файл, который надо спарсить и вставить в таблицу. Как бы реализовал? Какие слабые места есть в этой задаче?
===MySql===
1. С какими БД приходилось работать?
2. Если бы нужно было разрабатывать большой проект, который будет активно развиваться и дорабатываться, то какую бы БД выбрал и почему?
3. Для чего нужны индексы и когда их стоит применять , а когда нет?
4. Для чего существуют тригеры? Приведи пример их использования?
5. Какие мехнанизмы используешь для анализа запроса?
6.Был ли опыт высоконагруженных сайтов? Как решали проблемы со скоростью?
7. JOIN
8. Внешние ключи, зачем нужны и когда их стоит использовать?
9. Рефакторинг, приходилось ли делать? Какие типичные ошибки встречались?
==Сайты==
1. Сайт работает медленно, что делать?
2. Уязвимости и как от них защититься?
3. Набираешь в браузере домен и что происходит далее?
4. С какими фреймворками сталкивался и на каком уровне знаешь?
5. Какие типичные ошибки приводят к замедлению работы сайта?
===GIT , Сервера===
1. Git и GitFlow? В каких случаях необходимо использовать? Как строиться проектно-командная работа?
2. Что такое Docker и в каких ситуациях его необходимо использовать?
3. Серверное окружения для проекта ты обычно используешь? (Apache, Nginx)
4. Как происходил деплой на Ваших проектах
Напишите пожалуйста что ещё нужно для middle разработчика по вашему мнению
ООП, solid, паттерны
Php/php7-8
MySQL
Git
CI CD
Docker
Composer
Npm (поверхностное понимание стека vue, html для фронт разработки, для spa, для restapi )
Знание основ Linux
Nginx
Uml (диаграмма классов)
PSR, PHPDoc, phpcs, php codesniffer
PhpStorm
2-3 популярных фреймворка (Laravel, yii2)
Websocket
Jira
Scrum, декомпозиция задач
Что ещё?
GIT
Docker
http (как работает, что происходит когда вводим адрес в браузер)
Linux/Apache/Nginx
HTTP
Laravel/YII2/Active Record
WordPress
ООП
PHP-с какими версиями работал (composer)
Composer (что это, какие пакеты знаете, какие используете в своей работе?
Какую IDE использует
Как проводишь отладку
Тесты
SOLID/DRY/KISS
Статические анализаторы
БД (Основные опрераторы, индексы, внешние ключи, связи, миграции, join)
------------
Почему программирование
Где черпает занение
Какие технологии освоили за последние пол года
Какую последнюю книгу прочитал
Как оцениваете задачи?
Какие хобби (увличения) по мимо программирования
Как организовываете свое рабочее время
Какой последний проект запустил в продакшн?
Кем видите себя через 2 года.
Какую самую интересную задачу решали на PHP
Чему я могу у вас научится?
Есть ли какие нибудь сертификаты
Когда готовы выйти на работу
Кого знаете из мира (каких лиц, фигуры) ПХП?
Общие:
1.Какую роль играет DNS в сети?
служит для преобразование имен из ip для ваших локальных машин или наоборот из ip в имена
2.Что такое HTTP?
протокол передачи информации, который расшифровывается как «протокол передачи гипертекста» (HyperText Transfer Protocol)
передача данных по протоколу HTTP осуществляется через TCP/IP-соединения
3.Что такое HTTP прокси и как он работает?
Выполняет роль посредника между пользователем и целевым сервером. Сначала клиент подключается к прокси-серверу и запрашивает необходимый ресурс, расположенный на другом сервере. Например, почту или html-страницу. Затем прокси либо подключается к указанному серверу и получает у него ресурс, либо возвращает ресурс из собственного кэша
HTTP-прокси — это удаленные сервера, предназначенные для отправки поисковых запросов через браузер. Они также применимы для программ, которые задействуют незащищенное соединение TCP.
Настройка HTTP-прокси позволяет:
контролировать доступ к определенным ресурсам;
кэшировать файлы при загрузке для того, чтобы ускорить открытие веб-страниц;
контролировать скорость соединения;
фильтровать данные, желая сократить время загрузки страницы и сэкономить трафик;
управлять трафиком для пользователей, вести логи.
4.Опишите кратко как работает HTTPS?
протокол безопасной передачи данных, поддерживает технологию шифрования TLS/SSL.
→ браузер посылает запрос к сайту
→ сайт отправляет в ответ копию сертификата
→ браузер проверяет подлинность сертификата — узнаёт у центра сертификации, который его выдал
→ если сертификат не поддельный, сайт и браузер тайно договариваются о секретном симметричном ключе
5.Что такое SMTP? Разница между IMAP/POP
Simple Mail Transfer Protocol (SMTP) — простой протокол связи, применяемый с целью пересылки электронных писем с сервера отправителя на сервер получателя. Этот протокол не рассчитан на обработку входящих сообщений, его используют для отправки и последующей доставки писем адресату
Простые:
1.Какое имя и UID администратора?
0 - админ
от 100 - обычный пользователь
от 1 до 100 системный пользователь
2.Как посмотреть все файлы в каталоге, включая скрытые?
ls -a / ls -la
l - размер, а также дату и время изменения, права и владельца.
3. Какая команда в Unix/Linux удаляет каталог со всем его содержимым?
rm -rf
f - принудительно
4.Какая команда в Unix/Linux показывает свободную/используемую память?
free -h
h - выводится в Гб либо в Мб
cat /proc/meminfo (файл откуда берётся информация)
5.Какая команда показывает доступное свободное пространство на диске в Unix/Linux?
df -h (диски)
du -h (папки)
h - выводится в Гб либо в Мб
6. Как проверки DNS записи домена?
nslookup -type=<ns, txt, ptr, cname, soa и другие> example.com
7.Какая команда Unix/Linux используется для изменения владельца файла, прав доступа к файлу?
сhown user:group file
-R (рекурсивно для директории)
8.Что делает команда chmod +x FILENAME?
Задаёт разрешение для выполнения файла
https://losst.ru/komanda-chmod-linux
9.Что означают права 0750 для файла?
Право на чтение, запись и выполнение для владельца, право на чтение и выполнение для группы и нет доступа для всех остальных
10.Какая разница между UNIX и Linux?
Linux - это бесплатное семейство операционных систем с открытым исходным кодом. Unix - это коммерческий продукт, предлагаемый различными поставщиками, каждый со своим вариантом, обычно предназначенным для своего собственного оборудования
11.В чем разница между Telnet и SSH?
при подключении Telnet для установления прямого TCP-соединения, вся передача данных является простой текстовой передачей, это опасно. SSH является аббревиатурой для Secrue Shell. SSH является надежным протоколом, основанным на уровне приложений
12.Что такое модуль ядра Linux?
!!!???
13.Расскажите по шагам как вы будете решать проблему с ошибкой 404 в веб-приложении, которое вы обслуживаете.
Неверный адрес
Битая ссылка
Удалённая страница
Неправильный редирект
Неполадки на сервере
Средние:
1.Что такое swap и для чего он используется?
это механизм виртуальной памяти, при котором часть данных из оперативной памяти (ОЗУ) перемещается на хранение на HDD (жёсткий диск), SSD (твёрдотельный накопитель).
2.Что такое A-запись, NS-запись, PTR-запись, CNAME-запись, MX-запись?
А-запись указывает адрес, куда должен ссылаться Ваш домен
CNAME-запись используется для создания алиасов домена
MX-запись используется для указания почтового сервера, который использует этот домен
NS-запись (Authoritative name server) указывает на DNS-серверы, которые отвечают за хранение остальных ресурсных записей домена.
PTR — обратная DNS-запись, которая связывает IP-адрес сервера с его каноническим именем (доменом). PTR-запись применяется для фильтрации почты.
3.Опишите как работает 'ps'.
показывает запущенные процессы, выполняемые пользователем в окне терминала
ps -e/ps -A (все запущенные процессы)
ps -p <pid> (просмотр конкретных процессов по pid)
ps -U <userlist> (просмотр процессов по пользовтелю)
ps -ef (полный список "f" - полный список информации)
-e - вывести информацию обо всех процессах
-a - вывести информацию обо всех наиболее часто запрашиваемых процессах
-t - показывать только процессы из этого терминала
-p - показывать информацию только об указанном процессе
-u - показывать процессы только определенного пользователя
ps aux --sort=%mem (сортировка по исп памяти)
ps aux --sort=-%cpu (сортировка по исп цп)
4.Как узнать какой процесс слушает указанный порт?
sudo lsof -i :номер_порта
sudo netstat -lntup
(
-l показать только прослушиваемые "LISTEN" порты.
-n показывать адреса как ip, а не пытаться определять домены.
-t показывать TCP порты.
-u показывать UDP порты.
-p показать название программы, которая слушает порт.
)
5.Что такое зомби-процесс и какова его причина возникновения?
Процесс при завершении освобождает все свои ресурсы (за исключением PID — идентификатора процесса) и становится «зомби» — пустой записью в таблице процессов, хранящей код завершения для родительского процесса.
6.В чем разница между процессом и потоком?
Процесс — экземпляр программы во время выполнения, независимый объект, которому выделены системные ресурсы (например, процессорное время и память). Каждый процесс выполняется в отдельном адресном пространстве: один процесс не может получить доступ к переменным и структурам данных другого
Различия-
Все потоки программы логически содержатся в процессе.
Процесс имеет большой вес, а поток - легкий.
Программа представляет собой изолированную исполнительную единицу, тогда как поток не изолирован и разделяет память.
Нить не может иметь индивидуального существования; оно привязано к процессу. С другой стороны, процесс может существовать индивидуально.
Во время истечения срока действия потока связанный с ним стек может быть восстановлен, поскольку каждый поток имеет свой собственный стек. Напротив, если процесс умирает, все потоки умирают, включая процесс.
Сложные:
1.Что такое туннель и как вы можете обойти http прокси?
!!!!!?????
2.В чем разница между IDS и IPS?
IDS / IPS (Intrusion Detection and Prevention System) – системы обнаружения и предотвращения вторжений используются для защиты от сетевых атак. Основное различие между ними в том, что IDS — это система мониторинга, а IPS – система управления(предназначенна для обнаружения несанкционированных действий и атак, а также автоматизированного противодействия им.)
3.Вы только что настроили http сервер, который не запустился после рестарта. Что вы будете делать?
Варианты решения (вопрос скорее на логику и реагирование)
4.Какие ключи содержатся в ~/.ssh/authorized_keys и для чего нужен этот файл?
содержит список ключей ssh, по одному в строке (служит для автоматического входа без запроса пароля)
5.Я добавил свой публичный ключ в authorized_keys, но до сих пор получаю запрос пароля. Что может быть не так?
Проверить чтобы в /etc/ssh/sshd_config был разрешён вход по ключу (PubkeyAuthentication yes)
Какие права на authorized_keys?
При создании ключа был создан пароль
на ~/.ssh должны быть права 700 и 600 на каталоги и файлы
6.Как можно перехватить Linux сигнал из скрипта?
Сигналы генерирует сама система
1 SIGHUP Закрытие терминала
2 SIGINT Сигнал остановки процесса пользователем с терминала (CTRL + C)
3 SIGQUIT Сигнал остановки процесса пользователем с терминала (CTRL + \) с дампом памяти
9 SIGKILL Безусловное завершение процесса
15 SIGTERM Сигнал запроса завершения процесса
18 SIGTSTP Приостановка процесса с терминала (CTRL + Z), но не завершение работы
Для того, чтобы включить в скрипте отслеживание сигналов Linux, используется команда trap
7.Можно ли перехватить сигнал SIGKILL?
Штатными средствами нельзя
8.Как можно увеличить/уменьшить приоритет процесса в Linux?
Команда nice, c помощью неё можно указать приоритет для запускаемого процесса:
nice -n 10 apt-get upgrade
Или изменить приоритет для уже существующего по его pid: renice -n 10 -p 1343
Сеть сложные:
1.В чем сходство между "ping" и "traceroute"?
- Команда ping посылает на указанный хост пакет заданного размера, который затем возвращается обратно
- При использовании команды tracertroute с буквенным адресом проверяемого хоста, автоматически проверяется еще и работоспособность и доступность DNS - сервера и
вместо UDP-пакетов использует TCP-пакеты
2.В чем разница между TCP и UDP?
TCP - протокол имеет высокую надежность, поскольку позволяет не терять данные при передаче, запрашивает подтверждения о получении от принимающей стороны и в случае необходимости отправляет данные повторно. При этом отправляемые пакеты данных сохраняют порядок отправки, то есть можно сказать, что передача данных упорядочена. Минусом данного протокола является относительно низкая скорость передачи данных, за счет того что выполнение надежной и упорядоченной передачи занимает больше времени, чем в альтернативном протоколе UDP.
UDP - Для передачи данных ему не обязательно устанавливать соединение между отправителем и получателем. Информация передается без предварительной проверки готовности принимающей стороны. Это делает протокол менее надежным – при передаче некоторые фрагменты данных могут теряться. Кроме того, упорядоченность данных не соблюдается – возможен непоследовательный прием данных получателем. Зато скорость передачи данных по данному транспортному протоколу будет более высокой
3.Как вы будете противодействовать DDoS атаке?
- Одним из первых методов нейтрализации DDoS-атак является сведение к минимуму размера зоны
Необходимо убедиться, что доступ к приложению или ресурсам не был открыт для портов, протоколов или приложений, взаимодействие с которыми не предусмотрено
Таким образом, сведение к минимуму количества возможных точек для атаки позволяет сосредоточить усилия на их нейтрализации
- В некоторых случаях этого можно добиться, разместив свои вычислительные ресурсы за сетями распространения контента (CDN) или балансировщиками нагрузки и ограничив прямой интернет-трафик к определенным частям своей инфраструктуры, таким как серверы баз данных
4.Как можно посмотреть содержимое ip пакета?
Пример утилиты:
tcpdump - это инструмент для перехвата и анализа сетевых пакетов. Она позволяет просматривать все входящие и исходящие из определенного интерфейса пакеты и работает в командной строке
Команда tcpdump: (tcpdump опции -i интерфейс фильтры)
-A - выводить все пакеты в формате ASCII;
-c - закрыть программу после перехвата n-ого количества пакетов;
-C - при записи пакетов в файл, проверять размер файла, и если он больше заданного - создать новый файл;
-D - вывести список доступных сетевых интерфейсов;
-e - выводить информацию уровня соединения для каждого пакета, это может быть полезно, например, для отображения MAC адреса;
-f - выводить доменное имя для ip адресов;
-F - читать пакеты из файла, а не интерфейса;
-G - создавать новый файл лога через указанный промежуток времени;
-H - обнаруживать заголовки 802.11s;
-i - имя интерфейса для перехвата пакетов. Вы можете захватывать пакеты со всех интерфейсов, для этого укажите any;
-I - переключить интерфейс в режим монитора для захвата всех проходящих пакетов;
-j - установить формат Timestamp для записи пакетов;
-J - посмотреть доступные Timestamp;
-K - не проверять контрольные суммы пакетов;
-l - добавить поддержку прокрутки к выводу;
-L - вывести поддерживаемые протоколы подключения для интерфейса;
-n - не отображать доменные имена;
-r - прочитать пакеты из файла, созданного с помощью -w;
-v, -vv, -vvv - более подробный вывод;
-q - выводить минимум информации;
-w - записать вывод в файл;
-Z - пользователь, от имени которого будут создаваться файлы.
- Пример использования:
sudo tcpdump -i eth0
sudo tcpdump -v -i eth0
*пакеты, адресованные нашему компьютеру
sudo tcpdump -i eth0 ip dst 192.168.1.2
*пакеты, отправляемые на определенный узел
sudo tcpdump -i eth0 dst host google-public-dns-a.google.com
* отсеять все запросы или ответы к DNS (на порт 53,80)
sudo tcpdump -vv -i eth0 port 53
sudo tcpdump -vv -i eth0 port 80
*диапазон портов
sudo tcpdump portrange 21-23
*отфильтровать только пакеты конкретного протокола, например tcp, udp или arp
sudo tcpdump -vv arp
DevOps:
1.Что такое GIT?
Git — система управления версиями приложения с распределенной архитектурой
2.Для чего используется puppet/chef/ansible?
- Упрощение настройки и обслуживания десятков, сотен и даже тысяч серверов
- Это ПО которое автоматизирует поставку программного обеспечения, управление конфигурацией и развёртывание приложений. По помогает DevOps-специалистам автоматизировать сложные задачи.
3.Для чего используется Nagios/Zenoss/NewRelic?
Инструменты непрерывного мониторинга, которые контролируют сеть, приложения и серверы. Они могут находить и устранять проблемы, обнаруженные в инфраструктуре, и останавливать будущие проблемы, прежде чем они затронут конечных пользователей. Это дает полный статус вашей ИТ-инфраструктуры и ее производительность.
4.Для чего используется Jenkins/TeamCity/GoCI?
Система просмотра, изучения и изменения.Позволяют автоматизировать часть процесса разработки программного обеспечения, без участия человека. Данные системы предназначены для обеспечения тестов, процесса непрерывной интеграции и деплоя программного обеспечения.
5.Что такое виртуальный IP адрес? Что такое кластер?
- Виртуальные IP-адреса, или циклические интефейсы, - это мощное средство для присвоения адресов одному или нескольким серверам без необходимости присваивать адреса физическим интерфейсам
За счет этого, в частности, можно запустить несколько экземпляров сервера, связанных с различными адресами, или другой службы, которая работает с портом по умолчанию. Чаще всего виртуальные адреса применяются в случаях, когда необходимо создать несколько логических каналов для передачи данных между шлюзом и платформой System i, например, с целью распределения нагрузки или обеспечения устойчивости к сбоям. Для этого на сервере необходимо создать несколько дополнительных интерфейсов и приобрести дополнительные, невиртуальные IP-адреса
- Кластер серверов (Server Cluster) — это определенное количество серверов, объединенных в группу и образующих единый ресурс. Данное решение позволяет существенно увеличить надежность и производительность системы.
Общая логика кластера серверов создается на уровне программных протоколов и дает возможность:
Управлять произвольным количеством аппаратных средств с помощью одного программного модуля;
Добавлять и усовершенствовать программные и аппаратные ресурсы, без остановки системы и масштабных архитектурных преобразований;
Обеспечивать бесперебойную работу системы, при выходе из строя одного или нескольких серверов;
Синхронизировать данные между серверами — единицами кластера;
Эффективно распределять клиентские запросы по серверам;
Использовать общую базу данных кластера.
По сути, главной задачей кластера серверов, является исключение простоя системы. В идеале, любой инцидент, связанный с внешним вмешательством или внутренним сбоем в работе ресурса, должен оставаться незамеченным для пользователя.
6.Каковы важные аспекты системы непрерывной интеграции и развертывания?
- Непрерывная интеграция (Continuous Integration) — когда продукт регулярно (несколько раз в день) собирается из исходного кода и для него запускается существенная часть автоматических тестов, например все модульные тесты. Если автоматические тесты работают долго, то их можно запускать реже, например раз в сутки. Стандартный подход для организации непрерывной интеграции — это запустить TeamCity или Jenkins, которые будут загружать исходный код из системы контроля версий, собирать его и запускать тесты. Другие известные решения: Travis CI, GitLab, Space, GitHub, BitBucket.
- Непрерывное развертывание (Continuous Deployment) — когда обновления продукта регулярно (например, после каждого изменения, внесенного разработчиками) вводятся в промышленную эксплуатацию, и при этом все процессы предметной области продолжают работать без сбоя. В некотором роде непрерывное развертывание — это хорошо автоматизированная и часто выполняющаяся непрерывная доставка