S'inscrire maintenant

S'identifier

Mot de passe perdu

Mot de passe perdu? S'il vous plaît entrer votre adresse e-mail. Vous recevrez un lien et créez un nouveau mot de passe par e-mail.

Ajouter un enregistrement

Vous devez vous connecter pour ajouter après .

Ajouter une question

Vous devez vous connecter pour poser une question.

S'identifier

S'inscrire maintenant

Bienvenue sur Scholarsark.com! Votre inscription vous donnera accès à l'utilisation de plus de fonctionnalités de cette plate-forme. Vous pouvez poser des questions, apporter des contributions ou de fournir des réponses, Voir les profils d'autres utilisateurs et bien plus encore. inscrire maintenant!

Techniques de programmation système Linux & notions

Techniques de programmation système Linux & notions

Prix: $19.99

Il existe déjà d'innombrables cours/tutoriels sur Internet/Udemy qui enseignent presque tous les aspects du langage de programmation C. Tous ces cours sonnent pareil, parler de la même manière et transmettre plus ou moins les mêmes connaissances. En quoi ce cours est-il différent des autres ?

L'intention de ce cours est de vous préparer à des entretiens techniques de programmation système, niveau d'entretien – de Débutant à Intermédiaire. Ce cours est pour (futur) Développeurs, pas pour les testeurs ou les administrateurs système.

J'ai choisi de créer ce cours pour combler l'écart entre les programmeurs novices/débutants et intermédiaires/avancés. Ce cours suppose que vous êtes au moins au-dessus de la moyenne en programmation (dans n'importe quel langage de programmation, mais préférable en C/C++) – connaître les allocations de mémoire, toutes sortes de boucles, appels de fonction, pointeurs, etc.. Dans ce cours, Je n'enseignerai pas le C/C++ (il y a déjà beaucoup de cours en ligne dessus), mais enseignerait les techniques de programmation et les détails de bas niveau concernant le fonctionnement du programme C dans les coulisses – Tous les sujets très importants du point de vue de l'entretien. Mon objectif est de développer ce cours en Linux/C Bible.

Encore, je me sens toujours, vous devez surpasser vos collègues en cette ère de concurrence féroce, et donc, J'ai essayé cette tentative pour vous présenter la sagesse et les connaissances qui sont de la plus haute importance pour un programmeur. J'ai vu que les étudiants pouvaient écrire de bons programmes C/C++, pourtant ils manquent de clarté sur la façon dont on devrait écrire mieux organisé, Maniable, codes extensibles et programmables sous forme de bibliothèques. Par exemple, Élèves trop bons en programmation compétitive, mais je ne sais pas comment écrire un simple Makefile, raison d'être, Les universitaires n'enseignent pas et les étudiants ne se soucient pas d'apprendre.

Dans ce cours, Je couvrirai les sujets liés à la création de bibliothèques système Linux (Libération 1) avec des concepts de programmation avancés indépendants du langage (Libération 2) ce qui peut être bien appliqué s'il vous arrive de devenir programmeur dans d'autres langues demain.

Les concepts comme Multithreading, Thread-Synchronisation, Programmation de socket, IPC etc. exige un cours séparé sur chaque sujet au total. Actuellement, J'ai un cours sur l'IPC, veuillez vérifier. Ces sujets sont hors de portée de ce cours.

Le cours sera dispensé en deux versions :

Libérer 1 Construire et gérer une bibliothèque: Cela couvre les bases concernant la façon dont on doit créer et organiser son code en tant que bibliothèque.

Libérer 2 Concepts de gestion de la mémoire: Cela couvre les concepts avancés sur la gestion de la mémoire Linux en particulier. Veuillez consulter la table des matières pour plus d'informations.

Pourquoi vous ne devriez *PAS* suivre ce cours?

1. Veuillez excuser ce cours si vous êtes le débutant ultime en programmation C !!

2. Il ne sert à rien de faire ce cours si vous n'aimez pas taper sur le clavier, et assez paresseux pour ne regarder que les VDO de la conférence

3. Si vous voulez que tout soit cuit et servi dans votre assiette.

Cours Pré-requis :

  • Au-dessus du niveau débutant en programmation C/C++

  • Bon d'avoir des connaissances de base sur le système d'exploitation

  • Zèle pour exceller et coder

Aucune bibliothèque tierce

Quelle que soit la logique que vous implémentez, vous devez le mettre en œuvre à partir de zéro. Comme tous mes autres cours, ce cours ne suggère pas de faire appel à une bibliothèque tierce pour faire le travail. L'utilisation de bibliothèques externes va complètement à l'encontre du but du cours.

Attention: Ce cours a des sous-titres générés automatiquement par le système qui peuvent ne pas être parfaits. Veuillez désactiver les sous-titres selon votre convenance.

Curriculum :

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

Libérer 1 Construire et gérer une bibliothèque

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

Section 1 : Introduction aux bibliothèques

  • Qu'est-ce que la bibliothèque

  • Relation entre la bibliothèque et l'application

  • Ex : Liste doublement liée en tant que bibliothèque

  • Étapes de compilation rapide

  • Résumé

Section 2 : Fichiers d'en-tête

  • Relation entre les fichiers source et d'en-tête

  • Méthode de substitution de texte

  • Méthode de substitution de texte – Exemple et démo

Section 3 : Directives de prétraitement

  • Problème d'inclusion en double de fichiers Hdr

  • Directives de prétraitement

  • Solution pour l'inclusion en double de fichiers Hdr

Section 4 : Manière correcte d'utiliser les structures et les fonctions

  • Structures – Définir et utiliser la règle du pouce

  • Les fonctions – Déclarer et utiliser la règle du pouce

  • Le problème de la dépendance récursive

  • Une solution à la dépendance récursive

Section 5 : Création de bibliothèques statiques et dynamiques

  • Reprise avec la bibliothèque de listes doublement chaînées

  • Création rapide de bibliothèques statiques et dynamiques

  • Liaison avec la bibliothèque statique

  • Lien avec la bibliothèque dynamique

Section 7: Comprendre les quatre étapes de la compilation

  • Quatre étapes de la compilation C/C++

  • Comment fonctionne la bibliothèque dynamique ?

  • Lien dynamique : Lien avec la bibliothèque dynamique

  • Comparaison – Liaison statique ou dynamique

Section 8 : Construire à l'aide d'un Makefile

  • Que sont les Makefiles et pourquoi en avons-nous besoin

  • Fonctions de Makefile

  • Arbre de dépendance Makefile

  • Étapes de l'écriture d'un Makefile

  • Devoir sur Makefile

Section 9 : Bibliothèques programmables au moment de l'exécution

  • Que sont les bibliothèques programmables?

  • Étapes pour programmer les bibliothèques

  • Enregistrement des rappels auprès des bibliothèques

    • rappel key_match

    • comparaison_fn rappel

  • Délégation des opérations spécifiques aux applications aux bibliothèques

Section 10 : Écrire des itérateurs à l'aide de macros

  • Que sont les macros itératives ?

  • Pourquoi nous avons besoin de macros itératives ?

  • Comment écrire des macros itératives – Pour les arbres et les listes chaînées

  • Des exercices

Section 11 : Bibliothèques et structures de données basées sur la colle

  • Que sont les bibliothèques à base de colle?

  • Présentation des Glthreads – Une liste liée collée

  • Glthreads Vs Liste chaînée traditionnelle

  • Décalage du champ de structure

  • Opérations GLThread

  • Marche des codes

  • Avantages de GLThread

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

Libérer 2 Concepts de gestion de la mémoire

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

Section 12 : Disposition de la mémoire du processus Linux

  • Notions de base sur la mémoire virtuelle

  • Disposition de la mémoire du processus Linux

  • Exemple: Disposition de la mémoire du processus Linux

  • Exercice sur la commande de taille

Section 13 : Gestion de la mémoire de la pile

  • Bases et contenu de la mémoire de pile

  • Débordement de pile et prévention

  • Corruption de la mémoire de la pile

  • Registres CPU communs

  • Mécanisme d'appel de procédure – Pas à pas

  • But du registre de pointeur de base (ebp)

  • Procédure Mécanisme de retour – Pas à pas

  • Séance de laboratoire

Section 14 : Gestion de la mémoire de tas

  • Introduction et objectifs

  • Comment fonctionne Malloc

  • Haut de la région de mémoire de tas – Pause aiguille

  • Heap Memory Mgmt Sys Calls – brk et sbrk

  • Méta et blocs de données

  • Comme c'est gratuit() travaux

  • Fractionnement de bloc

  • Fusion de blocs

  • Maladie de la mémoire – Problème de fragmentation

Section 15 : Concept de pagination

  • Introduction à la pagination

  • Mémoire adressable par octet

  • 32 peu et 64 peu Architecture de la machine

  • Bus d'adresses et bus de données

  • Adresse physique vs adresse virtuelle

  • Trames de mémoire physique

  • Composition d'adresse virtuelle

  • Tableau des pages

  • Pagination en action

  • Mémoire physique partagée

Section 16 : Pagination à plusieurs niveaux

Section 17 : Recherche de personne à la demande

Section 18 : Gestion de la mémoire pour le processus multithread

L'intention de ce cours est de vous préparer à la programmation système. Entretiens techniques du débutant au 8-9 années d'expérience.

Q. Quelles sont les questions fréquemment posées par les intervieweurs dans un cycle technique lorsque quelqu'un écrit le langage de programmation C/C++/System sur son CV?

Répondre : Si je suis intervieweur, quelles questions je poserais dépend de son nombre d'années d'expérience en C.

1-3 ans d'expérience — j'aurais demandé:

  1. Pointeurs doubles

  2. concevoir une macro pour renvoyer la taille de la structure

  3. Tableaux à deux dimensions, passer et retourner des tableaux à partir d'un fn

  4. Différentes étapes de la compilation d'un programme C

  5. comment fourche() travaux

  6. Quelles sont les différentes manières de déboguer les corruptions de mémoire.

  7. divers IPC

  8. Question basée sur la mémoire de tas et de pile

4-6 ans d'expérience – j'aurais demandé:

  1. Comment la mémoire est allouée par le système d'exploitation

  2. Fragmentation interne et externe, que faire pour l'éviter

  3. Appels système, strace()

  4. Échange d'un IPC sur un autre

  5. diverses façons de communiquer avec le noyau et la comparaison

  6. Données (À partir de)Sérialisation en C

  7. RPC en C

  8. application avancée de rappels

  9. typedef Vs #define

  10. Programmation générique en C à l'aide de macros

  11. Synchronisation des threads

  12. Question basée sur la mémoire de tas et de pile

7+ années d'expérience – j'aurais demandé

  1. Avez-vous conçu un module système pour résoudre un problème

  2. Bibliothèque de fils de conception 0 dans quelles fonctionnalités incorporeriez-vous et comment ?

  3. Quelles sont les choses à faire et à ne pas faire pour écrire une bibliothèque robuste et flexible

  4. Comment écrire du code générique en C

  5. Diverses façons d'implémenter des minuteries en C, et comparaison des approches

  6. Comment fonctionnent les interruptions ?

  7. IPC et comparaison

  8. Comment convertiriez-vous un code C en C++ et vice versa

  9. Comment écrire un outil pour détecter les fuites de mémoire, Ou ramassage des ordures

  10. Concevez votre propre outil d'allocation de mémoire. Pourquoi voudriez-vous écrire votre propre schéma d'allocation de mémoire ?

  11. Quand opter pour la conception multi-processus par rapport à la conception multi-thread et vice versa

  12. Comment fonctionne l'outil ValGrind

  13. Dans le code de fabrication, préféreriez-vous une logique récursive mais simple, Ou Logique non récursive mais complexe, et pourquoi ?

Si vous analysez le modèle,

Candidat avec 1 à 3 ans d'expérience, Je choisirais de poser des questions plus directes et simples.

Candidat avec 4 à 6 ans d'expérience, Je choisirais de poser une question C technique plus avancée ainsi qu'une comparaison des approches basées sur des questions

Candidat avec 7+ années d'expérience, Je choisirais de poser davantage une question basée sur la conception et l'analyse.

Noter que, puisque la question concerne le C et la programmation système, donc je n'ai pas mentionné les structures de données et les algorithmes.

Laisser une réponse