Чек-лист самопроверки
Чек-лист самопроверки
- Что такое машинное слово и как его размер влияет на адресацию памяти?
- Почему 32-битная система не может напрямую использовать более 4 ГБ оперативной памяти?
- Как размер машинного слова влияет на производительность арифметических операций?
- Что такое порядок байтов (endianness) и почему он важен при работе с сетевыми протоколами?
- Как регистры процессора связаны с размером машинного слова?
- Почему выравнивание данных повышает производительность доступа к памяти?
- Что такое padding и зачем компилятор его вставляет в структуры?
- Как директива
#pragma pack(1)влияет на расположение полей в структуре? - Какие последствия имеет отключение выравнивания для производительности и совместимости?
- Почему глобальные переменные размещаются в сегменте данных, а локальные — в стеке?
- В чём разница между автоматическим и динамическим размещением данных?
- Как работает указатель стека (RSP/ESP) при входе и выходе из функции?
- Что такое фрейм стека и какие данные он содержит?
- Почему обращение к неинициализированной локальной переменной приводит к неопределённому поведению?
- Как сборщик мусора определяет, что объект больше не используется?
- Что такое жизненный цикл переменной и как он зависит от области видимости?
- В чём разница между передачей по значению и по ссылке?
- Почему строки в Python и C# считаются неизменяемыми?
- Что происходит при присвоении нового значения строковой переменной в управляемых языках?
- Как замыкания влияют на время жизни переменных?
- Что такое чистая функция и почему она предсказуема?
- Как стек вызовов помогает отслеживать цепочку ошибок?
- Почему важно давать функциям говорящие имена?
- Как композиция функций упрощает построение сложной логики?
- Что такое сигнатура функции и зачем она нужна?
- Как работает оператор
returnи почему он немедленно завершает функцию? - Что такое итерация и как она реализуется в цикле?
- В чём разница между циклом
forи цикломwhile? - Почему цикл
do-whileгарантированно выполняется хотя бы один раз? - Как избежать бесконечного цикла при использовании
while? - Что такое вложенные циклы и как рассчитывается общее число их итераций?
- Почему использование одной переменной-счётчика в нескольких вложенных циклах — ошибка?
- Как условный оператор реализуется на уровне машинных инструкций?
- Что такое флаговый регистр и как он используется при сравнениях?
- В чём разница между
if,if-elseиif-elif-else? - Когда уместно использовать тернарный оператор?
- Почему смешивание присваивания (
=) и сравнения (==) — частая ошибка? - Как ранний выход (early return) упрощает чтение кода с множественными условиями?
- Что такое байт-код и чем он отличается от машинного кода?
- Как виртуальная машина обеспечивает платформонезависимость?
- В чём разница между интерпретацией и JIT-компиляцией?
- Почему JIT-компиляция может быть быстрее чистой интерпретации?
- Что такое AOT-компиляция и когда она предпочтительна?
- Как работает стековая модель виртуальной машины?
- Что такое верификация байт-кода и зачем она нужна?
- Как сборка мусора интегрирована в жизненный цикл программы в JVM или .NET?
- Что такое дизассемблирование и какие инструменты его выполняют?
- Чем декомпиляция отличается от дизассемблирования?
- Почему восстановленный код редко компилируется без доработки?
- Что такое неопределённое поведение и почему оно опаснее исключения?
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). № Название этапа Описание --------------------------- 1 Проектирование сущности Чтобы что-то создать, нужно сначала понять, что это такое. На этапе проектирования определяется концепция сущности — её… В языках с автоматическим управлением памятью, таких как JavaScript или Python, многие потенциально опасные операции перехватываются средой выполнения. Например, обращение к несуществующему элементу… В конечном счёте, вся программа — это сеть взаимодействующих функций. Каждая решает свою маленькую задачу, но вместе они создают сложное поведение. Отображение веб-страницы, обработка платежа, расчёт… В программировании механизм циклов работает точно так же. Он состоит из двух ключевых частей — Тело цикла — это набор инструкций, которые нужно повторять, Условие цикла — это правило, которое… Условные операторы — это мост между статичным кодом и динамическим миром, в котором он работает. Они позволяют программе думать, анализируя текущую ситуацию и выбирая наилучший ответ. Стек — это упорядоченная область памяти с принципом последним пришёл — первым ушёл (LIFO). Он используется для хранения локальных переменных, параметров функций и адресов возврата. Когда функция… № Этап Описание ----------------- 1 Вызов метода (синтаксис) Программист пишет obj.method(arg). На уровне языка это вызов метода на экземпляре. Компилятор или интерпретатор проверяет сигнатуру, типы… Шестнадцатеричная система — это мост между человеком и машиной. Она сохраняет точность двоичного представления, но делает его доступным для восприятия. Префикс 0x — это знак, указывающий на переход… Стек - это сегмент памяти, работающий по принципу LIFO (Last In, First Out). Он используется для хранения локальных переменных, параметров функций, адресов возврата и сохранённых регистров. Регистры — это высокоскоростные ячейки памяти, расположенные непосредственно внутри центрального процессора. Они служат временным хранилищем для данных, адресов и управляющей информации, с которой… Но процессоры не работают с отдельными битами. Они оперируют блоками фиксированной длины, которые называются машинными словами. Это базовая единица данных, с которой центральный процессор… Куча представляет собой область динамической памяти, размер которой не известен на этапе компиляции. Программа запрашивает блоки памяти в куче во время выполнения и сама отвечает за их освобождение.Выполнение программного кода
Неопределённое поведение в программах
Внутреннее устройство функций
Реализация циклов на уровне системы
Как работают условные операторы
Жизненный цикл переменных
Процесс выполнения исходного кода
Шестнадцатеричная система счисления в программировании
Архитектура современных процессоров
Регистры процессора и их роль
Машинное слово
Расположение данных в памяти и директивы компилятора