Методы системного программирования Linux & Концепции
Цена: $19.99
В Интернете / Udemy уже есть бесчисленные курсы / учебники, которые обучают почти всем аспектам языка программирования C.. Все эти курсы звучат одинаково, говорите так же и доставляйте более или менее одинаковые знания. Чем этот курс отличается от других ?
Цель этого курса - подготовить вас к прохождению технических собеседований по системному программированию., уровень интервью – от новичка до среднего. Этот курс предназначен для (будущее) Разработчики, не для тестировщиков или системных администраторов.
Я решил создать этот курс, чтобы заполнить пробел между новичками / начинающими и промежуточными / продвинутыми программистами. Этот курс предполагает, что вы как минимум выше среднего в программировании. (на любом языке программирования, но предпочтительнее в C / C ++) – знать распределение памяти, всевозможные петли, вызовы функций, указатели и т. д.. В этом курсе, Я не буду учить C / C ++ (по ней уже есть много онлайн), но научит методам программирования и низкоуровневым деталям того, как программа C работает за кулисами – Все темы очень важны с точки зрения собеседования. Моя цель - превратить этот курс в Библию для Linux / C.
Еще, Я всегда чувствую, вам нужно перехитрить своих коллег в эпоху жесткой конкуренции, и поэтому, Я попробовал эту попытку представить вам мудрость и знания, которые имеют первостепенное значение для программиста.. Я видел, как студенты могут писать хорошие программы на C / C ++., но им не хватает ясности в том, как писать лучше организованно, Управляемый, расширяемые и программируемые коды в виде библиотек. Например, Студенты слишком хороши в соревновательном программировании, пока не умею писать простой Makefile, причина быть, Ученые не учат, а студенты не хотят учиться.
В этом курсе, Я расскажу о темах, связанных с созданием системных библиотек Linux. (выпускать 1) с расширенными концепциями программирования, не зависящими от языка (выпускать 2) который может быть хорошо применен, если завтра вы станете программистом на других языках.
Такие концепции, как Многопоточность, Синхронизация потоков, Программирование сокетов, IPC и т. Д. требует отдельного курса по каждой теме в целом. В настоящее время, У меня курс по IPC, пожалуйста, проверьте это. Эти темы выходят за рамки этого курса.
Курс состоит из двух выпусков. :
Выпускать 1 Создание библиотеки и управление ею: Это охватывает основы того, как следует создавать и организовывать свой код как библиотеку..
Выпускать 2 Концепции управления памятью: В частности, здесь рассматриваются передовые концепции управления памятью в Linux.. Пожалуйста, проверьте Оглавление для получения дополнительной информации.
Почему вам НЕ следует * проходить этот курс?
1. Прошу прощения за этот курс, если вы абсолютный новичок в программировании на C !!
2. Нет смысла проходить этот курс, если вам не нравится нажимать на клавиатуру, и достаточно ленив, чтобы смотреть только лекции VDOs
3. Если вы хотите, чтобы все было приготовлено и подано на вашей тарелке.
Предварительные требования к курсу :
-
Выше начального уровня в программировании на C / C ++
-
Хорошо иметь базовые знания ОС
-
Рвение к успеху и кодированию
Нет сторонних библиотек
Какую бы логику вы ни реализовали, вам нужно реализовать это с нуля. Как и все мои другие курсы, этот курс не предлагает использовать стороннюю библиотеку для выполнения работы. Использование внешних библиотек полностью противоречит цели курса.
Предупреждение: В этом курсе есть автоматически сгенерированные системой субтитры, которые могут быть не идеальными.. Пожалуйста, отключите субтитры по своему усмотрению.
Учебный план :
**********************************************
Выпускать 1 Создание библиотеки и управление ею
**********************************************
Раздел 1 : Введение в библиотеки
-
Что такое библиотека
-
Связь между библиотекой и приложением
-
Бывший : Двусвязный список как библиотека
-
Шаги быстрой компиляции
-
Резюме
Раздел 2 : Заголовочные файлы
-
Связь между исходным и заголовочным файлами
-
Метод замены текста
-
Метод замены текста – Пример и демонстрация
Раздел 3 : Директивы предварительной обработки
-
Проблема повторного включения файлов Hdr
-
Директивы предварительной обработки
-
Решение проблемы двойного включения файлов HDR
Раздел 4 : Правильный способ использования структур и функций
-
Структуры – Определить и использовать правило большого пальца
-
функции – Объявить и использовать правило большого пальца
-
Проблема рекурсивной зависимости
-
Решение рекурсивной зависимости
Раздел 5 : Создание статических и динамических библиотек
-
Возобновление работы с библиотекой двусвязных списков
-
Быстрое создание статических и динамических библиотек
-
Связывание со статической библиотекой
-
Связывание с динамической библиотекой
Раздел 7: Понимание четырех этапов компиляции
-
Четыре этапа компиляции C / C ++
-
Как работает динамическая библиотека ?
-
Динамическое связывание : Связывание с динамической библиотекой
-
сравнение – Статическое и динамическое связывание
Раздел 8 : Сборка с использованием Makefile
-
Что такое Makefile и зачем он нам нужен
-
Функции Makefile
-
Дерево зависимостей Makefile
-
Этапы написания Makefile
-
Назначение в Makefile
Раздел 9 : Программируемые библиотеки времени выполнения
-
Что такое программируемые библиотеки?
-
Шаги по программированию библиотек
-
Регистрация обратных вызовов в библиотеках
-
key_match обратный вызов
-
сравнение_fn обратный вызов
-
-
Делегирование операций, связанных с приложением, в библиотеки
Раздел 10 : Написание итераторов с использованием макросов
-
Что такое итерационные макросы ?
-
Зачем нужны итеративные макросы ?
-
Как писать итерационные макросы – Для деревьев и связанных списков
-
Упражнения
Раздел 11 : Библиотеки на основе клея и структуры данных
-
Что такое библиотеки на основе клея?
-
Представляем Glthreads – Связанный список
-
Glthreads против традиционного связанного списка
-
Смещение поля структуры
-
GLThread Операции
-
Кодовая прогулка
-
Преимущества GLThread
************************************************
Выпускать 2 Концепции управления памятью
************************************************
Раздел 12 : Схема памяти процесса Linux
-
Основы виртуальной памяти
-
Схема памяти процесса Linux
-
пример: Схема памяти процесса Linux
-
Упражнение по команде размера
Раздел 13 : Управление памятью стека
-
Основные сведения о стековой памяти и ее содержание
-
Переполнение стека и предотвращение
-
Повреждение памяти стека
-
Общие регистры ЦП
-
Механизм вызова процедур – Шаг за шагом
-
Назначение регистра базового указателя (ebp)
-
Механизм возврата процедуры – Шаг за шагом
-
Лабораторная сессия
Раздел 14 : Управление памятью кучи
-
Введение и цели
-
Как работает Маллок
-
Верхняя часть области памяти кучи – перерыв указатель
-
Системные вызовы управления памятью кучи – BRK а также sbrk
-
Мета и блоки данных
-
Как бесплатно() работает
-
Разделение блока
-
Блокировка слияния
-
Болезнь памяти – Проблема фрагментации
Раздел 15 : Концепция пейджинга
-
Введение в пейджинг
-
Байтовая адресуемая память
-
32 немного и 64 bit Machine Архитектура
-
Адресная шина и шина данных
-
Физический или виртуальный адрес
-
Фреймы физической памяти
-
Состав виртуального адреса
-
Таблица страниц
-
Пейджинг в действии
-
Общая физическая память
Раздел 16 : Многоуровневый пейджинг
Раздел 17 : Пейджинг по запросу
Раздел 18 : Управление памятью для многопоточного процесса
Цель этого курса - подготовить вас к прохождению технических собеседований по системному программированию от новичков до 8-9 лет опыта.
Q. Какие вопросы часто задают интервьюеры в техническом раунде, когда кто-то пишет в своем резюме язык C / C ++ / системное программирование??
Ответ : Если я интервьюер, какие вопросы я задам, зависит от его многолетнего опыта в C.
1–3 года опыта - я бы спросил:
-
Двойные указатели
-
создать макрос, чтобы вернуть размер структуры
-
Двумерные массивы, передача и возврат массивов из fn
-
Различные этапы компиляции программы на C
-
как вилка() работает
-
Какие существуют способы отладки повреждений памяти.
-
различные IPC
-
Вопрос на основе памяти кучи и стека
4–6 лет опыта – Я бы спросил:
-
Как память распределяется ОС
-
Внутренняя и внешняя фрагментация, что можно сделать, чтобы этого избежать
-
Системные вызовы, Strace()
-
Замена одного IPC другим
-
различные способы связи с ядром и сравнение
-
Данные (Из)Сериализация на C
-
RPC в C
-
расширенное приложение обратных вызовов
-
typedef против #define
-
Общее программирование на C с использованием макросов
-
Синхронизация потоков
-
Вопрос на основе памяти кучи и стека
7+ лет опыта – Я бы спросил
-
Разработали ли вы какой-либо системный модуль для решения любой проблемы
-
Библиотека проектных нитей 0 какие функции вы бы включили и как ?
-
Что нужно и чего нельзя делать при написании надежной и гибкой библиотеки
-
Как написать общий код на C
-
Различные способы реализации таймеров в C, и сравнение подходов
-
Как работают прерывания ?
-
IPC и сравнение
-
Как бы вы преобразовали код C в C ++ и наоборот
-
Как написать инструмент для обнаружения утечек памяти, Или сборщик мусора
-
Создайте свой собственный инструмент распределения памяти. Зачем писать собственную схему распределения памяти ?
-
Когда лучше использовать многопроцессорное проектирование, а не многопоточное и наоборот
-
Как работает инструмент ValGrind
-
В производственном коде, Вы бы предпочли рекурсивную, но простую логику, Или нерекурсивная, но сложная логика, и почему ?
Если вы проанализируете паттерн,
Кандидат со стажем 1–3 года, Я бы предпочел задать более прямые и простые вопросы.
Кандидат со стажем 4–6 лет, Я бы предпочел задать более сложный технический вопрос C плюс некоторое сравнение подходов, основанных на вопросах
Кандидат с 7+ лет опыта, Я бы предпочел задать больше вопросов, основанных на дизайне и анализе..
Обратите внимание, что, поскольку вопрос относится к C и системному программированию, поэтому я не упомянул структуры данных и алгоритмы.
Оставьте ответ
Вы должны авторизоваться или же регистр добавить новый комментарий .