Zarejestruj się teraz

Zaloguj sie

Zgubione hasło

Zgubiłeś swoje hasło? Wprowadź swój adres e-mail. Otrzymasz link i utworzysz nowe hasło e-mailem.

Dodaj post

Musisz się zalogować, aby dodać post .

Dodaj pytanie

Aby zadać pytanie, musisz się zalogować.

Zaloguj sie

Zarejestruj się teraz

Witamy na stronie Scholarsark.com! Twoja rejestracja zapewni Ci dostęp do większej liczby funkcji tej platformy. Możesz zadawać pytania, wnosić wkład lub udzielać odpowiedzi, przeglądaj profile innych użytkowników i wiele więcej. Zarejestruj się teraz!

Techniki programowania systemu Linux & Koncepcje

Techniki programowania systemu Linux & Koncepcje

Cena: $19.99

Istnieje już niezliczona liczba kursów/poradników w Internecie/Udemy, które uczą prawie każdego aspektu języka programowania C. Wszystkie te kursy brzmią tak samo, mówić tak samo i dostarczać mniej więcej taką samą wiedzę. Czym ten kurs różni się od innych ?

Intencją tego kursu jest przygotowanie Cię do programowania systemów Rozmowy techniczne, poziom rozmowy kwalifikacyjnej – od początkującego do średniozaawansowanego. Ten kurs jest przeznaczony dla (przyszły) Deweloperzy, nie dla testerów ani administratorów systemu.

Postanawiam stworzyć ten kurs, aby wypełnić lukę między początkującymi/początkującymi a średniozaawansowanymi/zaawansowanymi programistami. Ten kurs zakłada, że ​​jesteś co najmniej powyżej średniej w programowaniu (w dowolnym języku programowania, ale najlepiej w C/C++) – znać alokacje pamięci, wszelkiego rodzaju pętle, wywołania funkcji, wskaźniki itp. W tym kursie, Nie będę uczyć C/C++ (jest już na nim wiele kursów online), ale nauczyłby technik programowania i niskopoziomowych szczegółów dotyczących działania programu w C za kulisami – Wszystkie tematy bardzo ważne z punktu widzenia rozmowy kwalifikacyjnej. Moim celem jest rozwinięcie tego kursu do wersji Linux/C Bible.

Już, zawsze czuję, musisz przechytrzyć kolegów w erze ostrej konkurencji, i dlatego, Spróbowałem tej próby zaprezentować Wam mądrość i wiedzę, która ma ogromne znaczenie dla programisty. Widziałem, że studenci potrafili pisać dobre programy w C/C++, jednak brakuje im jasności co do tego, jak pisać lepiej zorganizowane, Do opanowania, rozszerzalne i programowalne kody w postaci bibliotek. Na przykład, Studenci zbyt dobrzy w programowaniu konkurencyjnym, jeszcze nie wiem jak napisać prosty Makefile, powód bycia, Akademicy nie uczą, a studentom nie zależy na uczeniu się.

W tym kursie, Omówię tematy związane z tworzeniem bibliotek systemu Linux (uwolnienie 1) z zaawansowanymi koncepcjami programowania niezależnymi od języka (uwolnienie 2) co można dobrze zastosować, jeśli jutro zostaniesz programistą w innych językach.

Koncepcje takie jak Wielowątkowość, Synchronizacja wątków, Programowanie gniazd, IPC itp domaga się osobnego kursu na każdy temat łącznie. Obecnie, Mam kurs na IPC, proszę sprawdź to. Te tematy są poza zakresem tego kursu.

Kurs zostanie dostarczony w dwóch Wydaniach :

Uwolnienie 1 Budowanie i zarządzanie biblioteką: Obejmuje to podstawy dotyczące tego, jak należy tworzyć i organizować swój kod jako bibliotekę.

Uwolnienie 2 Koncepcje zarządzania pamięcią: Obejmuje to koncepcje Advance dotyczące zarządzania pamięcią w systemie Linux. Sprawdź spis treści, aby uzyskać więcej informacji.

Dlaczego *NIE* należy robić tego kursu?

1. Proszę wybaczyć ten kurs, jeśli jesteś najlepszym początkującym w programowaniu C !!

2. Nie ma sensu robić tego kursu, jeśli nie lubisz uderzać w klawiaturę, i wystarczająco leniwy, aby oglądać tylko wykłady VDO

3. Jeśli chcesz wszystko ugotowane i podane na twoim talerzu.

Warunek wstępny kursu :

  • Poziom powyżej początkujących w programowaniu C/C++

  • Dobrze mieć podstawową wiedzę na temat systemu operacyjnego

  • Zapał do doskonałości i kodowania

Brak bibliotek zewnętrznych

Bez względu na logikę, którą wdrażasz, musisz wdrożyć go od zera. Jak wszystkie moje inne kursy, ten kurs nie sugeruje korzystania z pomocy jakiejkolwiek biblioteki innej firmy w celu wykonania zadań. Korzystanie z zewnętrznych bibliotek całkowicie niweczy cel kursu.

Ostrzeżenie: Ten kurs ma napisy generowane automatycznie przez system, które mogą nie być idealne. Wyłącz napisy zgodnie ze swoją wygodą.

Program :

**********************************************

Uwolnienie 1 Budowanie i zarządzanie biblioteką

**********************************************

Sekcja 1 : Wprowadzenie do bibliotek

  • Co to jest biblioteka

  • Związek między biblioteką a aplikacją

  • Były : Podwójnie połączona lista jako biblioteka

  • Szybkie kroki kompilacji

  • Streszczenie

Sekcja 2 : Pliki nagłówkowe

  • Związek między plikami źródłowymi a plikami nagłówkowymi

  • Metoda zastępowania tekstu

  • Metoda zastępowania tekstu – Przykład i Demo

Sekcja 3 : Dyrektywy dotyczące wstępnego przetwarzania

  • Problem duplikatów dołączania plików HDR

  • Dyrektywy dotyczące wstępnego przetwarzania

  • Rozwiązanie do zduplikowania włączenia plików HDR

Sekcja 4 : Prawidłowy sposób korzystania ze struktur i funkcji

  • Struktury – Zdefiniuj i użyj reguły kciuka

  • Funkcje – Zadeklaruj i użyj kciuka!

  • Problem zależności rekurencyjnej

  • Rozwiązanie zależności rekurencyjnej

Sekcja 5 : Tworzenie bibliotek statycznych i dynamicznych

  • Wznawianie z podwójnie linkowaną biblioteką list

  • Szybkie tworzenie bibliotek statycznych i dynamicznych

  • Łączenie z biblioteką statyczną

  • Łączenie z biblioteką dynamiczną

Sekcja 7: Zrozumienie czterech etapów kompilacji

  • Cztery etapy kompilacji C/C++

  • Jak działa biblioteka dynamiczna ?

  • Łączenie dynamiczne : Łączenie z biblioteką dynamiczną

  • Porównanie – Łączenie statyczne i dynamiczne

Sekcja 8 : Budowanie za pomocą Makefile

  • Co to są pliki Makefile i dlaczego ich potrzebujemy

  • Funkcje Makefile

  • Drzewo zależności Makefile

  • Kroki pisania pliku Makefile

  • Przypisanie na Makefile

Sekcja 9 : Biblioteki programowalne w czasie wykonywania

  • Co to są biblioteki programowalne??

  • Kroki programowania bibliotek

  • Rejestracja wywołań zwrotnych w bibliotekach

    • wywołanie zwrotne w dopasowaniu_klucza

    • wywołanie zwrotne porównania_fn

  • Delegowanie operacji specyficznych dla aplikacji do bibliotek

Sekcja 10 : Pisanie iteratorów za pomocą makr

  • Czym są makra iteracyjne ?

  • Dlaczego potrzebujemy makr iteracyjnych ?

  • Jak pisać makra iteracyjne – Drzewa i połączone listy

  • Ćwiczenia

Sekcja 11 : Biblioteki oparte na kleju i struktury danych

  • Czym są biblioteki oparte na kleju?

  • Przedstawiamy Glthreads – Sklejona lista połączona

  • Glthreads a tradycyjna lista połączona

  • Przesunięcie pola struktury

  • Operacje GLThread

  • Kod Spacer

  • Korzyści GLThread

************************************************

Uwolnienie 2 Koncepcje zarządzania pamięcią

************************************************

Sekcja 12 : Układ pamięci procesu Linux

  • Podstawy pamięci wirtualnej

  • Układ pamięci procesu Linux

  • Przykład: Układ pamięci procesu Linux

  • Ćwicz na polecenie rozmiaru

Sekcja 13 : Zarządzanie pamięcią stosu

  • Podstawy i zawartość pamięci stosu

  • Przepełnienie stosu i zapobieganie

  • Uszkodzenie pamięci stosu

  • Wspólne rejestry procesorów

  • Procedura wywołania mechanizmu – Krok po kroku

  • Cel rejestru wskaźnika bazowego (ebp)

  • Procedura zwrotu mechanizmu – Krok po kroku

  • Sesja laboratoryjna

Sekcja 14 : Zarządzanie pamięcią sterty

  • Wprowadzenie i cele

  • Jak działa Malloc

  • Góra regionu pamięci sterty – złamać wskaźnik

  • Sterty zarządzania pamięcią Sys wywołań – brk oraz sbrk

  • Meta i bloki danych

  • Jak za darmo() Pracuje

  • Dzielenie bloków

  • Scalanie bloków

  • Choroba pamięci – Problem fragmentacji

Sekcja 15 : Koncepcja stronicowania

  • Wprowadzenie do stronicowania

  • Bajt pamięci adresowalnej

  • 32 trochę i 64 bitowa architektura maszyny

  • Magistrala adresowa i magistrala danych

  • Adres fizyczny a adres wirtualny

  • Fizyczne ramki pamięci

  • Kompozycja adresu wirtualnego

  • Tabela stron

  • Stronicowanie w akcji

  • Współdzielona pamięć fizyczna

Sekcja 16 : Wielopoziomowe stronicowanie

Sekcja 17 : Stronicowanie na żądanie

Sekcja 18 : Zarządzanie pamięcią w procesie wielowątkowym

Intencją tego kursu jest przygotowanie Cię do programowania systemu Rozmowy techniczne od początkujących do upto 8-9 lat doświadczenia.

Q. Jakie są najczęściej zadawane pytania przez ankieterów podczas rundy technicznej, gdy ktoś pisze w CV w języku C/C++/System Programming?

Odpowiedź : Jeśli jestem ankieterem, jakie pytania bym zadał, zależy od jego liczby lat doświadczenia w C.

1–3 lata doświadczenia — zapytałbym:

  1. Podwójne wskaźniki

  2. zaprojektuj makro, aby zwrócić rozmiar struktury;

  3. Dwuwymiarowe tablice, przekazywanie i zwracanie tablic z fn

  4. Różne etapy kompilacji programu w języku C

  5. jak widelec() Pracuje

  6. Jakie są różne sposoby debugowania uszkodzeń pamięci?.

  7. różne IPC

  8. Pytanie oparte na pamięci sterty i stosu

4–6 lat doświadczenia – Zapytałbym:

  1. Jak pamięć jest przydzielana przez system operacyjny

  2. Fragmentacja wewnętrzna i zewnętrzna, co można zrobić, aby tego uniknąć

  3. Wywołania systemowe, strace()

  4. Wymiana jednego Niezależnego Konsultanta na drugiego

  5. różne sposoby komunikacji z jądrem i porównania

  6. Dane (Z)Serializacja w C

  7. RPC w C

  8. zaawansowana aplikacja wywołań zwrotnych

  9. typedef vs #define

  10. Programowanie generyczne w C przy użyciu makr

  11. Synchronizacja wątków

  12. Pytanie oparte na pamięci sterty i stosu

7+ lat doświadczenia – Zapytałbym

  1. Czy zaprojektowałeś jakiś moduł systemowy, aby rozwiązać jakikolwiek problem?

  2. Biblioteka wątków projektu 0 jakie funkcjonalności byś wprowadził i w jaki sposób? ?

  3. Czym są Dos i Dont do pisania solidnej i elastycznej biblioteki?

  4. Jak napisać kod generyczny w C

  5. Różne sposoby implementacji timerów w C, i porównanie podejść

  6. Jak działają przerwania ?

  7. IPC i porównanie

  8. Jak przekonwertowałbyś kod C na C++ i na odwrót?

  9. Jak napisać narzędzie do wykrywania wycieków pamięci, Lub wywóz śmieci

  10. Zaprojektuj własne narzędzie do alokacji pamięci. Dlaczego miałbyś pisać własny schemat alokacji pamięci? ?

  11. Kiedy decydować się na projektowanie wieloprocesowe, a nie na projektowanie wielowątkowe i na odwrót?

  12. Jak działa narzędzie ValGrind

  13. W kodzie produkcyjnym, czy wolisz rekurencyjną, ale prostą logikę?, Lub Nierekurencyjna, ale złożona logika, i dlaczego ?

Jeśli przeanalizujesz wzór,

Kandydat z 1-3 letnim doświadczeniem, Wolałbym zadać więcej bezpośrednich i prostych pytań.

Kandydat z 4–6 letnim doświadczeniem, Zdecydowałbym się zadać bardziej zaawansowane techniczne pytanie C plus porównanie pytań opartych na podejściach

Kandydat z 7+ lat doświadczenia, Zdecydowałbym się zadać więcej pytań opartych na projektowaniu i analizie.

Zauważ, że, ponieważ pytanie dotyczy C i programowania systemowego, więc nie wspomniałem o strukturach danych i algorytmach.

Zostaw odpowiedź