Ранее я публиковал посты с типовыми вопросами для собеседования на менеджера проектов и бизнес-аналитика. Сегодня хотелось бы поделиться минимумом теоретических знаний для собеседования на технического менеджера проектов.
Что такое DNS?
Domain Name System — это технология, которая позволяет браузеру вроде Firefox, Chrome или Edge найти запрошенный пользователем сайт по его имени. Если быть точным клинически, эта служба позволяет сопоставлять IP-адрес сервера с доменным именем.
Каждому имени сайта соответствует набор цифр формата 000.000.000.000. Этот набор называется IP-адресом, примером реального IP-адреса является 192.168.0.154 или 203.113.89.134. Когда пользователь вводит в адресной строке браузера имя сайта, например google.com, компьютер запрашивает IP-адрес этого сайта на специальном DNS-сервере и после получения корректного ответа открывает сам сайт.
Вопрос со звёздочкой. Как происходит сопоставление IP-адреса и сайта, если на одном сервере несколько сайтов?
DNS-серверы отвечают за то, чтобы несколько доменов вели на IP-адрес, а веб-сервер с помощью механизма виртуальных хостов распределяет к какому из сайтов.
Теперь детали, как это работает. В частности, протокол HTTP 1.1 включает в себя заголовок, называемый «host:», который указывает, к какому веб-сайту на конкретном сервере клиент пытается получить доступ.
Таким образом, если snoopy.net и woodstock.org совместно используют 192.0.32.10 и ваш браузер пытается получить контент из http://snoopy.net/doghouse конкретного http-запроса, он будет выглядеть так:
GET /doghouse HTTP/1.1
Host: snoopy.net
Если желаемым URL является http://woodstock.org/seeds запрос будет выглядеть
GET /seeds HTTP/1.1
Host: woodstock.org
В обоих случаях между вашим компьютером и портом 80 сервера будет TCP-сокет. Сервер будет знать, как получить содержимое из /var/www/snoopy.net или /var/www/woodstock.org/ на основе заголовка Host.
Были бы другие заголовки для файлов cookie и другие вещи, такие как тип браузера и разрешенный контент, но именно заголовок «Host» – это то, что позволяет веб-серверу знать, какой виртуальный веб-сайт желателен.
Что такое кэш?
Кэш — это память с большей скоростью доступа, предназначенная для ускорения обращения к данным, содержащимся постоянно в памяти с меньшей скоростью доступа («основная память»). Кэширование применяется ЦПУ, жёсткими дисками, браузерами, веб-серверами, службами DNS и WINS.
Вопрос со звёздочкой. Какие уровни кеша существуют в вебе?
Есть пять уровней кэша:
Клиентские
Ускорение получения веб-контента от веб-сайтов (браузеры или устройства)
DNS
Определение IP-адреса для домена
Интернет
Ускорение получения веб-контента от серверов веб-приложений Управление веб-сеансами (на стороне сервера)
Приложение
Повышение производительности приложений и ускорение доступа к данным
База данных
Сокращение задержек, связанных с запросами к базе данных
Что такое https?
HTTPS (аббр. от англ. HyperText Transfer Protocol Secure) — расширение протокола HTTP для поддержки шифрования в целях повышения безопасности. Данные в протоколе HTTPS передаются поверх криптографических протоколов TLS или устаревшего в 2015 году SSL. В отличие от HTTP с TCP-портом 80, для HTTPS по умолчанию используется TCP-порт 443.
Протокол был разработан компанией Netscape Communications для браузера Netscape Navigator в 1994 году.
Что такое CMS?
Систе́ма управле́ния содержи́мым (англ. Content management system, CMS, система управления контентом) — информационная система или компьютерная программа, используемая для обеспечения и организации совместного процесса создания, редактирования и управления содержимым, иначе — контентом (от англ. content)
CMS обычно состоит из двух основных компонентов: приложения для управления контентом (CMA) в качестве внешнего пользовательского интерфейса, позволяющего пользователю добавлять, изменять и удалять контент с веб-сайта без вмешательства веб-мастера, и приложение доставки контента (CDA), которое компилирует контент и обновляет веб-сайт.
Основной плюс от использования CMS — повышение скорости создания сайта и возможность создавать и публиковать контент редакторам без знания программирования и HTML.
Что такое CSS?
CSS (/siːɛsɛs/ англ. Cascading Style Sheets «каскадные таблицы стилей») — формальный язык описания внешнего вида документа (веб-страницы), написанного с использованием языка разметки (чаще всего HTML или XHTML). Также может применяться к любым XML-документам, например, к SVG или XUL.
CSS реализует концепцию разделения контента и оформления. На современных сайтах контент лежит в базе данных, а вся информация о шрифтах, цветах, отступах и декорациях — в CSS-файле.
В CSS можно описать стиль, дать ему имя, присвоить этот стиль множеству элементов на сайте. Когда потребуется изменить дизайн всех этих элементов, это можно будет сделать, просто отредактировав стиль.
Что такое RAID?
RAID (англ. Redundant Array of Independent Disks — избыточный массив независимых (самостоятельных) дисков) — технология виртуализации данных для объединения нескольких физических дисковых устройств в логический модуль для повышения отказоустойчивости и (или) производительности.
Петтерсон с коллегами из Беркли представили спецификации пяти уровней RAID, которые стали стандартом де факто:
Среди современных реализаций массивов RAID представлены дополнительные уровни спецификации:
Что такое ITIL?
ITIL (произносится как «áйтил», ранее аббревиатура от англ. IT Infrastructure Library — библиотека книг, описывающих лучшие практики на тему инфраструктуры информационных технологий, курируемая правительством Великобритании, и связанная с ней активность по популяризации, сертификации и применению данных практик.
Что такое SMART?
SMART — это мнемоническая аббревиатура, используемая в менеджменте и проектном управлении для определения целей и постановки задач. Можете прочитать мою статью о SMART.
В российском менеджменте есть аббревиатура ВОДКИ
Что такое JSON?
JSON (англ. JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript. Но при этом формат независим от JS и может использоваться в любом языке программирования.
JSON используется в REST API. По крайней мере, вы скорее всего столкнётесь с ним именно там. Однако JSON-объекты можно передавать не только через API, но и любым другим разумным способом.
Чем REST отличается от SOAP?
REST и SOAP на самом деле не сопоставимы. REST — это архитектурный стиль. SOAP — это формат обмена сообщениями.
На верхнем уровне SOAP ограничивает структуры ваших сообщений, тогда как REST — это архитектурный подход, ориентированный на использование HTTP в качестве транспортного протокола.
Специфика SOAP — это формат обмена данными. С SOAP это всегда SOAP-XML, который представляет собой XML, включающий:
- Envelope (конверт) – корневой элемент, который определяет сообщение и пространство имен, использованное в документе,
- Header (заголовок) – содержит атрибуты сообщения, например: информация о безопасности или о сетевой маршрутизации,
- Body (тело) – содержит сообщение, которым обмениваются приложения,
- Fault – необязательный элемент, который предоставляет информацию об ошибках, которые произошли при обработке сообщений. И запрос, и ответ должны соответствовать структуре SOAP.
Специфика REST — использование HTTP в качестве транспортного протокола. Он подразумевает наилучшее использование функций, предоставляемых HTTP — методы запросов, заголовки запросов, ответы, заголовки ответов и т. д.
В SOAP вы используете формат SOAP XML для запросов и ответов.
В REST такого фиксированного формата нет. Вы можете обмениваться сообщениями на основе XML, JSON или любого другого удобного формата. JSON является самым популярным среди используемых форматов.
В современной разработке REST используется для большинства веб-сайтов и мобильных приложений, место SOAP же — интеграции в энтерпрайзе.
Что такое Swagger?
По сути Swagger – это фреймворк для спецификации RESTful API. Его прелесть заключается в том, что он дает возможность не только интерактивно просматривать спецификацию, но и отправлять запросы – так называемый Swagger UI.
Чем POST отличается от GET?
POST-ом клиент отправляет данные на сервер, GET-ом забирает данные. Основное же отличие в том, что у POST-запросов параметры передаются в теле запроса, а у GET — в заголовке.
Что такое Apache?
Это программное обеспечение с открытым исходным кодом, веб-сервер, который обеспечивает работу около 46% сайтов по всему миру. Официальное название – Apache HTTP Сервер, поддерживается и развивается компанией Apache Software Foundation.
Веб-сервер позволяет владельцам сайтов обслуживать их контент в интернете, о чём понятно с самого название «веб-сервер». Apache один из самых старых и надёжный веб-серверов с первой версией выпуска более 20 лет назад в 1995 году.
Зачем применяется NGINX?
Nginx произносится как Engine-X, это более новое (по сравнению с Apache) веб-серверное программное обеспечение с первым релизом в 2004 году. Как на сегодня он добился большой популярности среди владельцев сайтов. Nginx был создан для решения так называемой проблемы c10k – проблемы 10 тысяч соединений, что означает, что веб-сервера, использующие потоки не могут обрабатывать запросы пользователей более, чем с 10 000 подключений одновременно.
Nginx — это HTTP-сервер и IMAP/POP3 прокси-сервер для UNIX-подобных платформ (FreeBSD и GNU/Linux).
На данный момент nginx работает на большом количестве высоконагруженных сайтов (среди них — Рамблер, Яндекс, ВКонтакте, wordpress.com, Wrike и другие).
- Так как Apache использует структуру основанную на потоках, владельцы сайтов с высоким трафиком могли столкнуться с проблемой производительности. Nginx один из веб-серверов, который был нацелен на решение проблемы c10k и возможно это одно из самых успешных решений.
- Nginx имеет событийно ориентированную архитектуру, которая не создаёт новый процесс для каждого запроса. Вместо этого он обрабатывает каждый входящий запрос в едином потоке. Этот главный процесс управляет несколькими рабочими процессами, которые выполняют непосредственную обработку запросов. Модель Nginx, основанная на событиях распространяет запросы пользователей среди рабочих процессов эффективным путём, что приводит к лучшей масштабируемости.
- Если вам нужно обслуживание сайта с высокой посещаемостью, то Nginx – отличный выбор, поскольку он может сделать это, затратив минимальные ресурсы. И не случайно он используется сайтами с большим количеством показов, такими как: Netflix, Hulu, Pinterest и Airbnb.
- Однако для мелких и средних игроков, Apache имеет несколько преимуществ в сравнении с Nginx, среди которых: более простая настройка, множество модулей и среда дружественная для начинающих.
Что такое Active Directory?
Службы Active Directory (AD) – решение от компании Microsoft позволяющее объединить различные объекты сети (компьютеры, сервера, принтера, различные сервисы) в единую систему. В данном случае AD выступают в роли каталога (базы данных), в котором хранится информация о пользователях, ПК, серверах, сетевых и периферийных устройствах.
В чём разница между авторизацией, идентификацией и аутентификацией?
Идентификация — процесс распознавания пользователя по его идентификатору.
Аутентификация — процедура проверки подлинности, доказательство что пользователь именно тот, за кого себя выдает.
Авторизация — предоставление определённых прав.
Что такое индексы?
Объяснение простым языком. Возьмём бумажную энциклопедию в десять томов, в которой вам нужно найти какое-нибудь слово. Без вспомогательных инструментов, вам придётся перебирать тома и долго их листать. Но если добавить оглавление (пусть оно даже будет занимать место как полтома), с его помощью слова будут искаться легко и просто. Вот индекс в БД — это такой аналог оглавления.
Индекс (англ. index) — объект базы данных, создаваемый с целью повышения производительности поиска данных. Таблицы в базе данных могут иметь большое количество строк, которые хранятся в произвольном порядке, и их поиск по заданному критерию путём последовательного просмотра таблицы строка за строкой может занимать много времени.
Индекс формируется из значений одного или нескольких столбцов таблицы и указателей на соответствующие строки таблицы и, таким образом, позволяет искать строки, удовлетворяющие критерию поиска. Ускорение работы с использованием индексов достигается в первую очередь за счёт того, что индекс имеет структуру, оптимизированную под поиск — например, сбалансированного дерева.
Что такое каталог базы данных?
Каталог базы данных – это документ, который содержит перечень объектов предметной области АС, информации о которых включена в базу данных.
Что такое внешний ключ таблицы базы данных?
Это поле, которое обеспечивает однозначную логическую связь, между таблицами одной БД.
Чем тип INTEGER отличается от типа FLOAT?
INTEGER – данные из целых чисел;
FLOAT — данные из дробных чисел, так называемые данные с плавающей точкой;
Чем А/А тестирование отличается от А/В?
А/А-тест — это вариация А/Б-теста. Если при А/Б-тесте сравниваются разные варианты сайта или письма, то при А/А-тесте оригинал сопоставляется сам с собой.
В A/A-тесте победителя быть не должно. Если он есть, значит, что-то пошло не так.
Какие знаете виды тестирования?
- Модульные тесты
- Интеграционное тестирование
- Функциональные тесты
- Сквозные тесты
- Приемочное тестирование
- Регрессионное тестирование
- Тестирование безопасности
- Юзабилити-тестирование
- Тестирование производительности
- Smoke-тестирование
Что такое фреймворк?
Фре́ймворк (иногда фреймво́рк; англицизм, неологизм от framework — остов, каркас, рама, структура) — программная платформа, определяющая структуру программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта.
Употребляется также слово «каркас»
«Фреймворк» отличается от понятия библиотеки тем, что библиотека может быть использована в программном продукте просто как набор подпрограмм близкой функциональности, не влияя на архитектуру программного продукта и не накладывая на неё никаких ограничений. В то время как «фреймворк» диктует правила построения архитектуры приложения, задавая на начальном этапе разработки поведение по умолчанию — «каркас», который нужно будет расширять и изменять, согласно указанным требованиям.
Что такое система контроля версий?
Система управления версиями (также используется определение «система контроля версий», от англ. Version Control System, VCS или Revision Control System) — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.
Такие системы наиболее широко используются при разработке программного обеспечения для хранения исходных кодов разрабатываемой программы. Однако они могут с успехом применяться и в других областях, в которых ведётся работа с большим количеством непрерывно изменяющихся электронных документов. В частности, системы управления версиями применяются в САПР, обычно в составе систем управления данными об изделии (PDM). Управление версиями используется в инструментах конфигурационного управления (Software Configuration Management Tools).
Что такое пулл-реквест?
Pull request — предложение изменения кода в чужом репозитории. Вы делаете форк чужого репозитория (который иногда и сам может быть форком) → производите изменения в своём форке → посредством pull request предлагаете изменения владельцам репозитория, чей форк вы сделали.
Вопрос со звёздочкой. Чем pull-реквест отличается от merge-реквеста?
Ничем. И то, и другое обозначает один и тот же процесс, в GitHub и Bitbucket называют операцию pull request, потому что первое действие, которое совершит человек, который будет вливать себе правки из request это git pull, тогда как GitLab и Gitorious называют это действие merge request, потому что финальным действием будет слияние изменений (git merge).