![translation](https://cdn.durumis.com/common/trans.png)
Это сообщение переведено AI.
[Для неспециалистов, выживание как разработчик] 14. Краткое изложение часто задаваемых вопросов на техническом собеседовании для начинающих разработчиков
- Язык написания: Корейский
- •
-
Базовая страна: Все страны
- •
- ИТ
Выбрать язык
Текст, резюмированный ИИ durumis
- В статье собраны часто задаваемые вопросы по техническим вопросам на собеседовании для начинающих разработчиков, предоставляется описание различных тем, таких как область памяти, структуры данных, базы данных, программирование, алгоритмы замены страниц, процессы и потоки, семиуровневая модель OSI, TCP и UDP.
- Для лучшего понимания каждая тема снабжена кратким описанием концепции и примерами.
- В статье представлена полезная информация, которая поможет начинающим разработчикам в освоении базовых технических знаний, необходимых для подготовки к собеседованию.
Разработка без профильного образования: как выжить
#14. Часто задаваемые вопросы на техническом собеседовании для начинающих разработчиков
[Области оперативной памяти]
- Область кода: область, где хранится исходный код программы. ЦП берет инструкции из области кода (исходный код, функции, управляющие конструкции) и обрабатывает их. Например, когда запускается программа, написанная на языке C, в области кода хранится исходный код этой программы.
- Область данных: область, где хранятся глобальные и статические переменные. Она выделяется при запуске программы и существует до её завершения. Например, когда запускается программа, написанная на языке C, в области данных хранятся глобальные и статические переменные, объявленные в этой программе.
- Область стека: временная область памяти, используемая программой. В ней хранятся локальные переменные и параметры функций, связанные с вызовом функций. Она выделяется при вызове функции и уничтожается после завершения её работы. Например, когда вызывается функция, написанная на языке C, локальные переменные и параметры, используемые в этой функции, выделяются в области стека.
- Область кучи: область, в которой пользователи могут динамически выделять и освобождать память. Например, при динамическом выделении памяти с помощью функции malloc() в языке C выделенная область памяти хранится в области кучи.
[Структуры данных]
- Стек: структура данных, работающая по принципу LIFO (последним пришел - первым вышел). Например, кнопка "Назад" в браузере работает как стек. Предыдущие посещенные страницы сохраняются в стеке, и при нажатии кнопки "Назад" самая последняя сохраненная страница извлекается и отображается.
- Очередь: структура данных, работающая по принципу FIFO (первым пришел - первым вышел). Например, получение номера очереди в банке похоже на очередь. Первый человек, который пришел, обслуживается первым, а последний человек, который пришел, обслуживается последним.
- Дерево: структура данных, представляющая данные в иерархической структуре. Например, DOM-дерево в HTML похоже на дерево. Структура HTML-страницы представлена деревом, начиная с корневого узла "html" и переходя к дочерним узлам.
- Куча: один из видов бинарного дерева, которое делится на максимальную и минимальную кучи. Например, в очереди с приоритетом данные с наивысшим приоритетом находятся в корневом узле кучи, а данные с более низким приоритетом находятся в дочерних узлах. Это пример максимальной кучи.
[RDBMS и NoSQL]
- 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 редко используется.
[Процесс и поток]
- Процесс: единица выполнения, которая выделяется операционной системой. Процесс представляет собой программу. При одновременном выполнении нескольких процессов каждый из них получает отдельную область памяти и ЦП.
- Поток: единица выполнения в рамках процесса. Потоки совместно используют ресурсы, выделенные процессу. Например, в веб-браузере каждая вкладка работает не как отдельный процесс, а как отдельный поток.
[OSI 7Layer]
- Прикладной уровень: уровень, который соединяет пользователя с сетью. Включает в себя протоколы HTTP, FTP, SMTP и т.д.
- Представления: уровень, который определяет способ представления данных. Включает в себя протоколы JPEG, MPEG, SSL и т.д.
- Сеансовый уровень: уровень, который управляет сеансами между двумя системами.
- Транспортный уровень: уровень, который отвечает за передачу данных. Включает в себя протоколы TCP, UDP и т.д.
- Сетевой уровень: уровень, который настраивает маршрут для передачи данных. Включает в себя протоколы IP, ICMP и т.д.
- Канальный уровень: уровень, который передает данные по физическому адресу (MAC-адрес). Включает в себя протоколы Ethernet, Token Ring и т.д.
- Физический уровень: уровень, который отвечает за физическое соединение и передачу данных по физическому каналу связи.
[TCP и UDP]
- TCP: ориентированная на соединение служба, которая передает данные надежным образом. Использует 3-стороннее рукопожатие и 4-стороннее рукопожатие для установления и разрыва соединения. Например, при входе в систему на веб-сайте или передаче файлов используется протокол TCP.
- UDP: неориентированная на соединение служба, которая не требует сигнализации для передачи данных. UDP не обеспечивает надежности данных, но отличается высокой скоростью обработки. Например, для потоковой трансляции видео или онлайн-игр, где важна скорость передачи, используется UDP.