Не будучи специалистом, выжить в роли разработчика
#14. Часто задаваемые вопросы на техническом собеседовании для начинающих разработчиков
[Области оперативной памяти]
- Кодовая область: область, где хранится исходный код программы. ЦП извлекает из кодовой области хранимые инструкции (исходный код, функции, управляющие конструкции) и обрабатывает их. Например, когда программа, написанная на языке C, выполняется, в кодовой области хранится исходный код этой программы.
- Область данных: область, где хранятся глобальные переменные и статические переменные. Выделяется при запуске программы и существует до ее завершения. Например, когда программа, написанная на языке C, выполняется, в области данных хранятся глобальные переменные или статические переменные, объявленные в этой программе.
- Область стека: временная область памяти, используемая программой. В ней хранятся локальные переменные и параметры, связанные с вызовом функции. Выделяется при вызове функции и исчезает при ее завершении. Например, при вызове функции на языке C локальные переменные или параметры, используемые в этой функции, выделяются в области стека.
- Область кучи: область, в которой пользователь динамически выделяет и освобождает пространство памяти. Например, когда в языке C используется функция malloc() для динамического выделения памяти, выделенная область памяти хранится в области кучи.
- Стек: структура данных, работающая по принципу LIFO (Last In, First Out). Например, кнопка «Назад» в браузере похожа на стек. Предыдущие посещенные страницы хранятся в стеке, и при нажатии кнопки «Назад» извлекается и отображается последняя сохраненная страница.
- Очередь: структура данных, работающая по принципу FIFO (First In, First Out). Например, получение талона в банке и ожидание в очереди похоже на очередь. Человек, пришедший первым, обслуживается первым, а человек, пришедший последним, обслуживается последним.
- Дерево: структура данных, представляющая данные в виде иерархической структуры. Например, DOM-дерево HTML похоже на дерево. Структура страницы HTML представлена в виде дерева, начиная с корневого узла html и последовательно отображая дочерние узлы.
- Куча: один из видов бинарного дерева, который делится на максимальную и минимальную кучи. Например, в приоритетной очереди данные с наивысшим приоритетом находятся в корневом узле кучи, а данные со следующим по величине приоритетом находятся в дочерних узлах, что является примером максимальной кучи.
- RDBMS: база данных, которая структурно определяет и управляет данными с помощью строгой схемы. Данные можно хранить распределенно, и их легко изменять. Например, MySQL, Oracle, MS-SQL — это типичные примеры RDBMS.
- NoSQL: база данных, которая хранит и управляет данными с помощью гибкой схемы. Подходит для обработки и хранения больших объемов данных, а также обладает высокой масштабируемостью. Например, MongoDB, Cassandra, HBase — это типичные примеры NoSQL.
[Процедурное и объектно-ориентированное программирование]
- Процедурное программирование: методика программирования, в которой основное внимание уделяется последовательной обработке. Языки C, Pascal являются процедурными языками.
- Объектно-ориентированное программирование: метод обработки, основанный на концепции объекта (Object), в котором данные и процедуры логически связываются. Языки Java, C++, Python являются объектно-ориентированными языками. Например, в программе симуляции автомобиля автомобиль представлен в виде объекта, а его свойства (цвет, ускорение и т. д.) — в виде данных, а функции, которые он выполняет (движение, остановка и т. д.) — в виде методов.
[Переопределение и перегрузка]
- Переопределение: использование метода, который уже есть в родительском классе, в дочернем классе. При вызове метода родительского класса в дочернем классе будет выполнен метод, переопределенный в дочернем классе, а не метод родительского класса. Например, метод toString() в Java — это пример переопределения.
- Перегрузка: определение нескольких методов с одинаковым именем, но с разными типами и количеством параметров для ответа на различные типы вызовов. Несколько методов с разными параметрами, но с одинаковым именем, выполняют свои действия. Например, метод print() в Java — это пример перегрузки.
[Алгоритмы замены страниц]
- FIFO: замена страницы, которая находится в физической памяти дольше всего. Закрытие программы в панели задач компьютера похоже на алгоритм FIFO. Программа, запущенная первой, отображается последней и закрывается.
- LRU: замена страницы, которая не использовалась дольше всего. Приложение для закрытия приложений, которое закрывает старые приложения, которые редко используются, похоже на алгоритм LRU.
- LFU: замена страницы с наименьшим количеством обращений. Например, функция закрытия вкладок браузера, которая закрывает вкладку, которая открыта недавно и используется реже всего, похожа на алгоритм LFU.
- MFU: замена страницы с наибольшим количеством обращений. Алгоритм MFU редко используется.
- Процесс: единица выполнения, которая получает от операционной системы назначенную задачу выполнения программы. При одновременном выполнении нескольких процессов каждый процесс получает выделенную область памяти и ЦП.
- Поток: единица выполнения внутри процесса, которая выполняется, совместно используя ресурсы, выделенные процессу. Например, каждая вкладка в веб-браузере работает не как процесс, а как поток.
- Прикладной уровень: уровень, соединяющий пользователя и сеть. К нему относятся протоколы HTTP, FTP, SMTP.
- Представительский уровень: уровень, определяющий способ представления данных. К нему относятся протоколы JPEG, MPEG, SSL.
- Сеансовый уровень: уровень, управляющий сеансами между двумя взаимодействующими системами.
- Транспортный уровень: уровень, отвечающий за передачу данных. К нему относятся протоколы TCP, UDP.
- Сетевой уровень: уровень, устанавливающий маршрут для передачи данных. К нему относятся протоколы IP, ICMP.
- Канальный уровень: уровень, передающий данные по физическому адресу (MAC-адрес). К нему относятся протоколы Ethernet, Token Ring.
- Физический уровень: уровень, отвечающий за физическое подключение и связь с передающей средой.
- TCP: ориентированная на соединение служба, передающая данные надежным способом. Устанавливает или разрывает соединение с помощью 3-стороннего и 4-стороннего рукопожатия. Например, при входе на веб-сайт или передаче файлов используется TCP.
- UDP: неориентированная на соединение служба, которая не выполняет процедуру сигнализации для передачи данных. Надежность данных низкая, но скорость обработки высокая. Например, при потоковой передаче видео или в онлайн-играх, где важна высокая скорость передачи, используется UDP.
Комментарии0