Domande di intervista su Linux

Domande di intervista su Linux

In questo post del blog, ho creato un elenco delle domande più comuni per le interviste su Linux. Queste domande di intervista su Linux non solo per i più freschi, ma anche per le persone esperte. Se vuoi la risposta a queste domande su Linux, scrivi nella casella dei commenti. Se conosci la risposta alla domanda, scrivi la risposta nella casella dei commenti. Potrebbe essere la tua risposta utile per gli altri. Queste domande per l'intervista su Linux le ho create dopo aver trascorso molte ore, quindi spero che queste domande per l'intervista su Linux possano essere utili.

Cos'è Linux?

Linux è una famiglia di sistemi operativi open source simili a Unix basati sul kernel Linux. Linux è stato introdotto per la prima volta da Linus Torvalds. Lo scopo principale di Linux era fornire sistemi operativi gratuiti ea basso costo per utenti che non potevano permettersi sistemi operativi come Windows o iOS o Unix.

Qual ​​è la differenza tra Linux e Unix?

Di seguito menziono alcune differenze tra Linux e Unix.

  • Linux ha sia la versione gratuita che quella a pagamento, ma Unix ha solo la versione gratuita a pagamento non disponibile in versione gratuita.
  • Il codice sorgente Linux è disponibile al pubblico in generale mentre, in Unix, il codice sorgente è proprietario.
  • Utente Linux per utente generico, sviluppatore, ecc. Ma Unix utilizza principalmente server Internet, server Workstation, ecc.
  • Il sistema operativo UNIX è stato creato alla fine degli anni '60 presso gli AT&T Bell Labs, mentre Linux è un sistema operativo creato da Linus Torvalds presso l'Università di Helsinki nel 1991.
  • Linux è un clone di Unix.
  • La shell predefinita di Linux è BASH mentre la shell Unix è Bourne Shell.
  • Il rilevamento e la soluzione delle minacce Linux sono molto veloci mentre gli utenti Unix richiedono tempi di attesa più lunghi per ottenere la corretta patch di correzione dei bug.
  • Le versioni importanti di Linux sono Redhat, Ubuntu, OpenSuse, Solaris, mentre le versioni importanti di Unix sono HP-UX, AIS, BSD, ecc.

Quali sono i componenti di base di Linux?

Di seguito ho menzionato i componenti di base di Linux:

  • Kernel :Un kernel è il componente principale del sistema operativo che gestisce le operazioni e l'hardware.
  • Guscio: Shell è un interprete Linux utilizzato per eseguire comandi.
  • GUI: GUI sta per Graphical User Interface che è un altro modo in cui un utente può interagire con il sistema. Ma a differenza della CLI, la GUI è composta da immagini, pulsanti, caselle di testo per l'interazione.
  • Utilità di sistema: Queste sono le funzioni del software che consentono all'utente di gestire il computer.
  • Programmi applicativi: Programmi software o insieme di funzioni progettati per svolgere un compito specifico.

Cos'è lo spazio di scambio?

Swap Space è la quantità di memoria fisica utilizzata da Linux per contenere temporaneamente i programmi in esecuzione contemporaneamente. Questa condizione di solito si verifica quando la RAM non ha spazio sufficiente per contenere i programmi. Ora il processore cercherà i dati nella RAM e nello spazio di scambio. Sono disponibili diversi comandi e strumenti per gestire l'utilizzo dello spazio di scambio. Puoi vedere l'articolo Il vantaggio della memoria virtuale. Sono disponibili diversi comandi e strumenti per gestire l'utilizzo dello spazio di scambio.

Scrivere i comandi per verificare quanta memoria viene utilizzata da Linux?

Di seguito, abbiamo menzionato i pochi comandi utilizzati per verificare quanta memoria viene utilizzata da Linux.

in alto

Il comando in alto può visualizzare informazioni di riepilogo del sistema e un elenco del processo attualmente gestito dal kernel Linux.

gratuito

Il comando "free" di solito mostra la quantità totale di memoria fisica e di scambio libera e utilizzata nel sistema, nonché i buffer utilizzati dal kernel. Per vedere la dimensione della memoria in (MB) megabyte usa l'opzione come -m.

free -m

top

Il comando htop viene utilizzato per visualizzare i processi in modalità interattiva e mostra anche informazioni sull'utilizzo della memoria.

vmstat

Il comando vmstat viene utilizzato per visualizzare informazioni sulle statistiche della memoria virtuale.

Quali sono gli stati del processo in Linux?

Ogni processo ha alcuni stati, di seguito abbiamo menzionato gli stati del processo in Broadway con i loro codici di stato del processo.

Stati del processo:
  • In esecuzione:il processo è in esecuzione o è pronto per l'esecuzione
  • Interrompibile:uno stato Bloccato di un processo e in attesa di un evento o segnale da un altro processo
  • Uninterruptible:uno stato bloccato. Il processo attende una condizione hardware e non può gestire alcun segnale
  • Arrestato:il processo viene interrotto o interrotto e può essere riavviato da un altro processo
  • Zombie:processo terminato, ma le informazioni sono ancora presenti nella tabella dei processi.
CODICI DI STATO DEL PROCESSO:
  • D sonno ininterrotto (di solito IO)
  • R eseguibile (in coda di esecuzione)
  • Sto dormendo
  • T tracciato o fermato
  • Z un processo defunto ("zombi")

Spiega il comando 'ls' in Linux.

ls viene utilizzato per elencare informazioni su file e directory all'interno del file system.

Sintassi per utilizzare ls:

ls [OPTIONS] [FILES]

Nota: Quando abbiamo usato ls senza opzioni e argomenti, visualizza un elenco dei nomi di tutti i file nella directory di lavoro corrente.

Ci sono diverse opzioni che possono essere usate con il comando ls, qui ne abbiamo menzionate alcune.

  • -l   elenca il formato lungo (mostra tutte le autorizzazioni del file).
  • -ld Se vuoi i dettagli della directory.
  • -i   elenca i file con il loro numero di inode.
  • -s  elenca i file con le relative dimensioni.
  • -a  elenca tutti i file, inclusi i file nascosti.
  • -S  elenca i file con le relative dimensioni e ordina l'elenco in base alle dimensioni del file.
  • -t   ordina i file elencati per ora e data.
  • -lh mostra le dimensioni del file in un formato di facile lettura.

Come rinominare un file in Linux?

Molte volte è necessario rinominare il file e il nome della directory. Qui sto spiegando alcuni comandi che usavano per cambiare il nome di file e directory. Allora vediamoli,

Rinominare i file con il comando mv:

Il comando mv viene utilizzato per rinominare o spostare i file da una posizione all'altra.

Sintassi per utilizzare mv:

mv [OPTIONS] source destination

Se hai un nome file aml.txt e vuoi cambiarne il nome con aticleworld.txt. Quindi hai bisogno di

mv aml.txt aticleworld.txt

Nota: Usando il comando mv puoi cambiare il nome del singolo file alla volta.

Rinominare i file con il comando rinomina:

rename command non fa parte di una distribuzione Linux standard, quindi dovrai installarlo. Nelle distribuzioni derivate da Ubuntu e Debian installi rinomina in questo modo:

sudo apt install rename

Sintassi per utilizzare la ridenominazione:

rename [options] expression replacement file...

Cos'è BASH?

Bash è la shell, o interprete del linguaggio dei comandi, per il sistema operativo GNU. Il nome è l'acronimo di "Bourne-Again SHell", un gioco di parole su Stephen Bourne, l'autore dell'antenato diretto dell'attuale shell Unix sh, che è apparso nella versione di Unix della settima edizione di Bell Labs Research.

Bash è ampiamente compatibile con sh e incorpora utili funzioni della shell Korn ksh e della shell C csh. È inteso come un'implementazione conforme della parte IEEE POSIX Shell and Tools della specifica IEEE POSIX (IEEE Standard 1003.1). Offre miglioramenti funzionali rispetto a sh sia per l'uso interattivo che di programmazione.

Mentre il sistema operativo GNU fornisce altre shell, inclusa una versione di csh, Bash è la shell predefinita. Come altri software GNU, Bash è abbastanza portatile. Attualmente funziona su quasi tutte le versioni di Unix e pochi altri sistemi operativi:esistono porte supportate in modo indipendente per piattaforme MS-DOS, OS/2 e Windows.

Qual ​​è la differenza fondamentale tra BASH e DOS?

Bash è una potente shell di comandi e un linguaggio di scripting sviluppato dalla shell Bourne. Tuttavia, ora le implementazioni di Bash possono essere trovate su altri sistemi operativi. Bash supporta variabili array, funzioni di shell e sostituzioni molto flessibili. È attivamente sviluppato e nuove funzionalità vengono aggiunte regolarmente.

BASH e DOS vengono utilizzati per interpretare i comandi immessi da un utente. Di seguito abbiamo menzionato alcune differenze tra dos e bash.

BASH

DOS

I comandi scritti in BASH fanno distinzione tra maiuscole e minuscole I comandi DOS non fanno distinzione tra maiuscole e minuscole.
In BASH il carattere '/' è un separatore di directory e '\' è un carattere di escape. In DOS, '/' è un delimitatore di argomenti di comando e '\' è un separatore di directory.
BASH non segue alcuna convenzione nella denominazione dei file. DOS segue una convenzione durante la denominazione dei file. È il nome del file di 8 caratteri seguito da un punto e 3 caratteri per l'estensione.

Cos'è il comando PWD?

PWD sta per Stampa directory di lavoro. Visualizza il percorso della directory di lavoro attuale, partendo dalla radice.

Sintassi di PWD:

pwd [OPTION]...

Quali sono le variabili ambientali?

Le variabili ambientali sono impostazioni globali che controllano la funzione della shell e quella di altri programmi Linux. Un altro termine comune per le variabili ambientali è variabili shell globali. Può influire sui processi in corso o sui programmi eseguiti nell'ambiente.

Vediamo un esempio in cui sto creando una variabile di ambiente e impostando un valore e successivamente accedo al suo valore utilizzando il comando echo.

$MSG="Love Aticleworld"

$echo $MSG

Produce il seguente risultato.

Ama Aticleworld

Nota: Le variabili d'ambiente vengono impostate senza utilizzare il segno $ ma durante l'accesso usiamo il segno $ come prefisso. Queste variabili mantengono i loro valori finché non usciamo dalla shell.

Alcuni ENV comunemente usati in Linux
$USER: Gives the current user's name.
$PATH: Gives search path for commands.
$PWD: Gives the path of the present working directory.
$HOME: Gives path of the home directory.
$HOSTNAME: Gives the name of the host.
$LANG: Gives the default system language.
$EDITOR: Gives default file editor.
$UID: Gives user ID of the current user.
$SHELL: Gives location of current user's shell program.

Come si interrompe un processo in corso?

Ogni processo ha un ID processo univoco. Possiamo terminare il processo usando il comando kill seguito dal PID. Quindi prima dobbiamo trovare il PID del processo. Il comando ps elencherà tutti i processi in esecuzione insieme all'id del processo. Dopo aver eseguito il comando ps è possibile selezionare il PID di processo che si desidera selezionare.

Nota: Per terminare tutti i processi contemporaneamente, usa kill 0.

Scrivi un comando che visualizzerà tutti i file .txt, inclusa la relativa autorizzazione individuale.

ls -al *.txt

Come puoi trovare lo stato di un processo?

Usando l'opzione seguente con il comando ps possiamo controllare lo stato di un processo.

ps axu

Come puoi aggiungere un file a un altro in Linux?

Usando il comando cat possiamo aggiungere un file a un altro file in Linux. Dobbiamo usare il simbolo '>>' (doppio maggiore di) con il comando cat per aggiungere il file. Vediamo un esempio di come possiamo aggiungere un file a un altro file.

Qui, il contenuto del file test1 verrà aggiunto alla fine del file test2.

cat test1 >> test2

Spiega come disinstallare le librerie in Linux?

Per disinstallare le librerie in Linux, puoi utilizzare i seguenti comandi,

Se vuoi solo disinstallare la libreria e non vuoi eliminare il file di configurazione.

sudo apt-get remove library_name

Se vuoi solo disinstallare la libreria e vuoi anche eliminare i file di configurazione.

sudo apt-get --purge remove library_name

Se vuoi rimuovere eventuali pacchetti inutilizzati, usa il comando "autoremove".

sudo apt-get autoremove

Se vuoi rimuovere un programma e anche le sue dipendenze che non vengono più utilizzate.

sudo apt-get purge --auto-remove library_name

Qual ​​è il comando per calcolare la dimensione di una cartella?

Per calcolare la dimensione di una cartella usa il comando,

du –sh Folder_Name

Spiega il desktop virtuale.

Un desktop virtuale significa che l'ambiente desktop di un utente (icone, sfondi, finestre, cartelle, barre degli strumenti, widget, ecc.) è archiviato in remoto su un server, anziché su un PC locale o un altro dispositivo di elaborazione client. Il software di virtualizzazione del desktop separa i sistemi operativi desktop, le applicazioni e i dati dal client hardware, archiviando questo "desktop virtuale" su un server remoto.

Il server remoto che esegue e supporta i desktop virtuali utilizza un software chiamato hypervisor per creare una "macchina virtuale" che simula l'ambiente desktop e le capacità dell'utente. In un ambiente desktop virtuale, gli utenti accedono al proprio desktop personale in remoto, tramite Internet, da qualsiasi dispositivo client.

Esistono due modi per implementare Virtual Desktop:

  • Cambia desktop.
  • Desktop di grandi dimensioni.

Come si esegue più di un comando o programma da una singola voce della riga di comando?

È possibile combinare più comandi separando ciascun comando o programma utilizzando un punto e virgola. Ad esempio, puoi emettere una tale serie di comandi in una singola voce:

ls –l cd .. ls –a MYWORK which is equivalent to 3 commands: ls -l cd.. ls -a MYWORK

Nota che questo verrà eseguito uno dopo l'altro, nell'ordine specificato.

Su una macchina uniprocessore con la prelazione disabilitata, cosa accadrà internamente quando diciamo spin_lock()?

Quali sono i requisiti minimi di Linux per funzionare sull'hardware?

Quali sono i pro ei contro dell'utilizzo di una variabile per CPU come metodo di sincronizzazione?

Qual ​​è la differenza tra cambio di contesto e prelazione?

Posso bloccare uno spinlock in una CPU e sbloccarlo in un'altra CPU?

Come si verifica se ci sono perdite di memoria in un'applicazione Linux?

Su un sistema multiprocessore, come si fa a sapere quale processo è in esecuzione su quale processore?

A cosa servono le cache L1, L2, L3?

Qual ​​è la differenza tra semaforo binario e mutex in Linux?

Qual ​​è la differenza tra down_interruptible e down_killable nel semaforo?

Come modificare la priorità di un processo in Linux?

Dove sono archiviate le tabelle delle pagine?

Cos'è SMP?

Differenza tra IO mappato IO e memoria mappato IO.

Differenza tra kmalloc e vmalloc.

Differenza tra processore e core.

Come posso scoprire il numero di volte in cui un processo è stato anticipato in Linux?

Cosa restituisce malloc(0)?

Se la dimensione dello spazio richiesto è zero, il comportamento sarà definito dall'implementazione. Il valore restituito di malloc potrebbe essere un puntatore nullo o mostra il comportamento come se la dimensione fosse un valore diverso da zero. Lo standard suggerisce di non utilizzare il puntatore per accedere a un oggetto restituito da malloc mentre la dimensione è zero.

Vediamo un esempio di programma C, in cui sto allocando memoria usando il malloc con dimensione 0.

#include<stdio.h>
#include<stdlib.h>
int main (void)
{
    int *piBuffer = NULL;
    //allocating memory using
    //the malloc with size 0.
    piBuffer = malloc(0);
    //make sure piBuffer is valid or not
    if (piBuffer == NULL)
    {
        // allocation failed, exit from the program
        fprintf(stderr, "Out of memory!\n");
        exit(1);
    }
    *piBuffer = 10;
    printf("%d\n",*piBuffer);
    free(piBuffer);
    return 0;
}

Risultato: Dipendente dall'implementazione.

Qual ​​è la causa dell'overflow dello stack?

Nell'applicazione incorporata abbiamo una piccola quantità di memoria stack rispetto all'applicazione desktop. Quindi dobbiamo lavorare con molta attenzione sull'applicazione incorporata per poter affrontare i problemi di overflow dello stack che possono essere una causa dell'arresto anomalo dell'applicazione.

Qui ho menzionato alcune cause dell'uso indesiderato dello stack.

1. Uso improprio della funzione ricorsiva.
2 . Passaggio a molti argomenti nella funzione.
3. Passare una struttura direttamente in una funzione.
4. Chiamate a funzioni nidificate.
5. Creazione di un array locale di grandi dimensioni.

Cos'è NUMA?

Qual ​​è la quantità massima di tempo che la CPU può rimanere nella sezione critica dopo aver acquisito lo spinlock?

Differenza tra GFP_KERNEL e GFP_ATOMIC.

Cosa accade internamente durante il cambio di contesto nel kernel Linux?

Quale file in Linux fornisce informazioni sulle zone di memoria?

Cos'è buffer/cache?

Cos'è la cartella asm-generic nel codice sorgente di Linux?

Cosa contiene?

Un modulo verrà caricato se ha un ciclo while(1) nella funzione module_init?

Qual ​​è la memoria massima che può essere allocata utilizzando vmalloc?

Qual ​​è la memoria massima che può essere allocata utilizzando kmalloc?

Qual è la differenza tra i campi VIRT, RES e SHR in top command?

Qual è la chiamata di sistema utilizzata da malloc e free?

Qual è la memoria massima che posso allocare utilizzando malloc?

La macro Makefile che si imposta per identificare quale file per il Makefile del kernel trasformare in un modulo è _____. un. obj-m b. obj-y c. obiettivo d. elenco.

Come si controlla quante corsie vengono utilizzate dalla scheda PCIe in Linux?

Il numero massimo di dispositivi PCI che possono essere collegati a un host.

Cosa sono le corsie in PCI?

Come avviene il rilevamento automatico dei dispositivi PCI in PCI?

Che cos'è un bridge PCI?

Dove cercano gli eseguibili gli oggetti condivisi in fase di esecuzione?

I microprocessori hanno una memoria interna?

Qual è lo scopo del flag fPIC durante la generazione della libreria condivisa.

Qual è il carico medio in Linux?

Linux lascia intenzionalmente i primi kilobyte (o anche megabyte) dello spazio di indirizzi virtuali di ciascun processo non mappati, in modo che i tentativi di dereferenziare i puntatori null generino un errore di pagina non gestito che provoca un SIGSEGV immediato, uccidendo il processo.

Is System bus =bus indirizzi + bus dati + bus di controllo.

Qual è l'uso del flag O_SYNC durante l'apertura del file?

Che cos'è la memoria residente nel processo?

La memoria virtuale è suddivisa in ____ a) pagine b) byte c) bit.

Quali sono i vantaggi dell'utilizzo della memoria virtuale?

Quali sono i vantaggi della libreria statica rispetto a una libreria condivisa?

Qual è l'uso della tabella di collegamento delle procedure (PLT) durante l'avvio di un'applicazione.

Quali sono i vantaggi della libreria condivisa rispetto alla libreria statica?

Quale dovrebbe essere il numero di lavori durante la compilazione del kernel Linux make -j.

Qual è la differenza tra un file e un inode?

Come viene invocato lo scheduler nel kernel Linux?

A cosa serve l'immagine initrd durante l'avvio?

Cosa è presente all'interno di una libreria statica?

Qual è l'uso di macro probabili e improbabili nel kernel Linux?

Come fai a scoprire quale init manager è in esecuzione sulla tua macchina Linux:sysvinit/systemd?

Cosa sono le rilocazioni in un file oggetto?

Posso chiamare kmalloc(GFP_KERNEL) tenendo premuto uno spinlock?

Qual è il vantaggio di dichiarare un simbolo debole?

Qual è la prima funzione che verrà chiamata quando verrà caricato il kernel Linux?

Quali sono gli algoritmi lock-free presenti nel kernel Linux?

Perché eseguire il comando ps senza opzioni sulla shell mostra solo due voci?

Cosa succede quando chiami spin_lock() su un sistema monoprocessore con la prelazione abilitata?

Quali sono le operazioni eseguite dal linker durante il processo di compilazione?

Qual è la struttura dei dati implementata nel kernel Linux?

Quali sono i vantaggi della sigazione rispetto al segnale?

A cosa serve il processo di scambio in Linux?

Come uccidere il processo che si trova nello stato TASK_UNINTERRUPTIBLE?

Post consigliato

  • Può protocollare le domande dell'intervista.
  • Domande dell'intervista 100 C.
  • Domande sul colloquio I2C
  • Domande di intervista sugli operatori bit per bit in C
  • Domande sull'intervista C++.
  • 10 domande sull'allocazione dinamica della memoria.
  • Gestione dei file in C.
  • Puntatore in C.
  • Specificatori di formato C.

Riferimento:https://www.gnu.org/software