Nicht-Informatiker, Überleben als Entwickler
#14. Häufig gestellte Fragen zu technischen Vorstellungsgesprächen für Einsteiger
[Bereiche des Hauptspeichers]
- Codebereich: Der Bereich, in dem der Quellcode des Programms gespeichert ist. Die CPU ruft die im Codebereich gespeicherten Befehle (Quelle, Funktionen, Steueranweisungen) ab und verarbeitet sie. Wenn beispielsweise ein in C geschriebenes Programm ausgeführt wird, wird der Quellcode dieses Programms im Codebereich gespeichert.
- Datenbereich: Der Bereich, in dem globale Variablen und statische Variablen gespeichert werden. Er wird beim Programmstart zugewiesen und bleibt bis zum Programmende bestehen. Wenn beispielsweise ein in C geschriebenes Programm ausgeführt wird, werden die in diesem Programm deklarierten globalen Variablen oder statischen Variablen im Datenbereich gespeichert.
- Stackbereich: Der temporäre Speicherbereich, der vom Programm verwendet wird. Lokale Variablen und Parameter, die mit Funktionsaufrufen zusammenhängen, werden hier gespeichert. Er wird mit dem Funktionsaufruf zugewiesen und verschwindet, wenn die Funktion beendet wird. Wenn beispielsweise eine in C geschriebene Funktion aufgerufen wird, werden die lokalen Variablen oder Parameter, die in dieser Funktion verwendet werden, dem Stackbereich zugewiesen.
- Heapbereich: Der Bereich, in dem der Benutzer Speicherplatz dynamisch zuweist und freigibt. Wenn beispielsweise in C die Funktion malloc() verwendet wird, um Speicher dynamisch zuzuweisen, wird der zugewiesene Speicherbereich im Heapbereich gespeichert.
- Stack: Eine Datenstruktur, die nach dem LIFO-Prinzip (Last In, First Out) arbeitet. Beispielsweise ähnelt die Schaltfläche „Zurück“ in einem Computer einem Stack. Die zuvor besuchten Seiten werden im Stack gespeichert, und wenn Sie auf die Schaltfläche „Zurück“ klicken, wird die zuletzt gespeicherte Seite entnommen und angezeigt.
- Queue: Eine Datenstruktur, die nach dem FIFO-Prinzip (First In, First Out) arbeitet. Beispielsweise ähnelt das Warten in einer Warteschlange in einer Bank einer Queue. Die Person, die zuerst ankommt, wird zuerst bedient, und die Person, die zuletzt kommt, wird zuletzt bedient.
- Baum: Eine Datenstruktur, die Daten in einer hierarchischen Struktur darstellt. Beispielsweise ähnelt der DOM-Baum (Document Object Model) von HTML einem Baum. Die Struktur einer HTML-Seite wird als Baum dargestellt, beginnend mit dem Root-Knoten, dem html-Tag, und die untergeordneten Knoten werden sequenziell dargestellt.
- Heap: Eine der binären Baumstrukturen, die in Max-Heap und Min-Heap unterteilt ist. Beispielsweise befindet sich in einer Prioritätswarteschlange das Datenelement mit der höchsten Priorität im Root-Knoten des Heaps, und das Datenelement mit der nächsthöchsten Priorität befindet sich im untergeordneten Knoten. Dies ist ein Beispiel für einen Max-Heap.
- RDBMS: Eine Datenbank, die Daten strukturiert unter Verwendung eines strengen Schemas definiert und verwaltet. Daten können verteilt gespeichert und einfach geändert werden. Beispiele für RDBMS sind MySQL, Oracle und MS-SQL.
- NoSQL: Eine Datenbank, die Daten unter Verwendung eines flexiblen Schemas speichert und verwaltet. Sie eignet sich für die Verarbeitung und Speicherung großer Datenmengen und bietet eine hohe Skalierbarkeit. Beispiele für NoSQL-Datenbanken sind MongoDB, Cassandra und HBase.
[Prozedurale und objektorientierte Programmierung]
- Prozedurale Programmierung: Eine Programmiertechnik, bei der die sequenzielle Verarbeitung im Vordergrund steht. Sprachen wie C und Pascal sind prozedurale Sprachen.
- Objektorientierte Programmierung: Eine Methode, bei der Daten und Verfahren logisch zusammengefasst und verarbeitet werden, basierend auf dem Konzept von Objekten (Object). Sprachen wie Java, C++ und Python sind objektorientierte Sprachen. Beispielsweise wird in einem Fahrzeugsimulationsprogramm ein Fahrzeug als Objekt dargestellt, wobei die Eigenschaften des Fahrzeugs (Farbe, Beschleunigung usw.) als Daten und die Funktionen des Fahrzeugs (Fahren, Anhalten usw.) als Methoden dargestellt werden.
[Overriding und Overloading]
- Overriding: Das Überschreiben einer Methode, die von einer Basisklasse bereitgestellt wird, in einer abgeleiteten Klasse. Wenn eine Methode in der abgeleiteten Klasse aufgerufen wird, wird die in der abgeleiteten Klasse überschriebene Methode anstelle der Methode der Basisklasse ausgeführt. Beispielsweise ist die toString()-Methode in Java ein Beispiel für Overriding.
- Overloading: Die Definition mehrerer Methoden mit demselben Namen, aber unterschiedlichen Datentypen und -anzahlen der Parameter, um auf verschiedene Arten von Aufrufen zu reagieren. Mehrere Methoden mit unterschiedlichen Parametern, aber demselben Namen werden ausgeführt. Beispielsweise ist die print()-Methode in Java ein Beispiel für Overloading.
[Seitenersatzasgorithmen]
- FIFO: Ersetzt die Seite, die am längsten im physischen Speicher geladen war. Das Schließen von Fenstern in der Taskleiste eines Computers ähnelt dem FIFO-Algorithmus. Das zuerst gestartete Programm wird als letztes angezeigt und geschlossen.
- LRU: Ersetzt die Seite, die am längsten nicht verwendet wurde. Eine App, die nicht oft verwendet wird und schon länger nicht mehr aktiv ist, wird beendet. Dies ist vergleichbar mit dem LRU-Algorithmus.
- LFU: Ersetzt die Seite mit der geringsten Anzahl von Zugriffen. Beispielsweise ähnelt das Schließen eines Tabs, der in einem Browser geöffnet wurde und nicht oft verwendet wird, dem LFU-Algorithmus.
- MFU: Ersetzt die Seite mit der höchsten Anzahl von Zugriffen. Der MFU-Algorithmus wird eher selten verwendet.
- Prozess: Eine vom Betriebssystem zugewiesene Ausführungseinheit für eine Aufgabe, die ein Programm darstellt. Wenn mehrere Prozesse gleichzeitig ausgeführt werden, erhält jeder Prozess einen eigenen Speicherbereich und eine eigene CPU-Zuweisung.
- Thread: Eine Ausführungseinheit innerhalb eines Prozesses, die die vom Prozess zugewiesenen Ressourcen gemeinsam nutzt. Beispielsweise werden in einem Webbrowser die einzelnen Tabs nicht als Prozesse, sondern als Threads ausgeführt.
- Anwendungsschicht: Die Schicht, die den Benutzer mit dem Netzwerk verbindet. Sie enthält Protokolle wie HTTP, FTP und SMTP.
- Darstellungsschicht: Die Schicht, die die Darstellungsform der Daten definiert. Sie enthält Protokolle wie JPEG, MPEG und SSL.
- Sitzungs-Schicht: Die Schicht, die die Sitzung zwischen zwei kommunizierenden Systemen verwaltet.
- Transportschicht: Die Schicht, die für die Datenübertragung zuständig ist. Sie enthält Protokolle wie TCP und UDP.
- Vermittlungsschicht: Die Schicht, die den Pfad für die Datenübertragung festlegt. Sie enthält Protokolle wie IP und ICMP.
- Verknüpfungsschicht: Die Schicht, die die Datenübertragung über die physische Adresse (MAC-Adresse) ermöglicht. Sie enthält Protokolle wie Ethernet und Token Ring.
- Bitübertragungsschicht: Die Schicht, die für die physische Verbindung und die Kommunikation über das Übertragungsmedium zuständig ist.
- TCP: Ein Verbindungsorientierter Dienst, der Daten zuverlässig überträgt. Über einen 3-Wege-Handshake und einen 4-Wege-Handshake wird eine Verbindung aufgebaut bzw. getrennt. Beispielsweise wird TCP verwendet, wenn Sie sich auf einer Website anmelden oder Dateien übertragen.
- UDP: Ein verbindungsloser Dienst, der keine Signalisierung für die Datenübertragung benötigt. Die Zuverlässigkeit der Daten ist gering, aber die Verarbeitungsgeschwindigkeit ist hoch. Beispielsweise werden bei Video-Streaming oder Online-Spielen, wo eine schnelle Übertragung wichtig ist, UDP verwendet.
Kommentare0