Top 50 must-know programmeer-interviewvragen en antwoorden
Softwarebedrijven zijn altijd op zoek naar goed programmeertalent, waarbij telefonische en online interviews vaak binnen een paar minuten je lot bepalen.
Een goede programmeur moet zo veelzijdig mogelijk zijn - van systeembegrip tot algemene programmering, verschillende concepten en technologieën, en ook up-to-date zijn.
Het volgende is een lijst met 50 belangrijkste programmeerinterviewvragen en hun antwoord. Ze werpen een licht op de gevarieerde concepten die elke beginner moet kennen om uit te blinken.
1. Wat is computerprogrammering?
Computerprogrammering is het proces van het coderen van logische processen die door een computer moeten worden uitgevoerd. Dit wordt bereikt door een computertaal te gebruiken die de nodige instructies bevat.
Het proces kan verder worden onderverdeeld in ontwerpen, coderen, debuggen en bijwerken.
2. Wat is foutopsporing?
Debuggen is het proces van het ontdekken en elimineren van fouten in de softwarebron van een computerprogramma. Er zijn veel methoden om dit aan te pakken, maar de meeste ontwikkelomgevingen worden geleverd met een geïntegreerde debugger om dingen gemakkelijker te maken.
3. Wat is een compiler?
Een compiler is een softwareprogramma dat het geschreven programma neemt en het omzet in machinecode die een computer kan begrijpen.
Een typisch compilerpakket bestaat echter uit een pre-processor, de hoofdcompiler die de computertaal omzet in assemblagecode, en een assembler.
4. Wat is een preprocessor?
Een pre-processor is een programma dat de geschreven computercode analyseert om de afhankelijkheden, zoals benodigde bibliotheken, te vinden en te bevredigen.
Nadat de pre-processor ervoor heeft gezorgd dat alles, inclusief de uitvoeringsomgeving, in orde is, kan een compiler de code vervolgens converteren naar assemblagecode.
5. Wat is een monteur?
Een assembler is een programma dat het laagste niveau van voor mensen leesbare computercode, assembler genaamd, gebruikt en dit omzet in de machinecode waarmee een computer kan werken.
Assemblertaal wordt meestal uitgevoerd door een compiler, hoewel men ook rechtstreeks kan coderen. Een assemblageprogramma kan code bevatten zoals:
MOV AH, 02H
maar als je het compileert naar machinecode, krijg je alleen nullen en enen (bijv. 0110011110101010).
6. Hoe wordt een programma uitgevoerd?
Eerst laadt het besturingssysteem het gespecificeerde programma van de harde schijf in het systeemgeheugen (RAM) en laat het vervolgens uitvoeren door de CPU opdracht te geven de uitvoering voort te zetten vanaf het eerste geheugenadres van het programma. De CPU voert elk commando uit dat het ziet en gaat dan naar de volgende, waarbij deze procedure vaak miljoenen keren per seconde wordt herhaald.
32-bits CPU's voeren 32-bits (4-byte, dubbelwoord) instructies tegelijk uit, terwijl 64-bits CPU's 64-bits (8-byte, quad-woord) instructies tegelijk uitvoeren. Deze instructies zijn ingebouwd in de CPU en het is de assembler die de programmeercode omzet in de binaire getallen die de native CPU-opdrachtadressen vertegenwoordigen.
7. Definieer a Subprogramma
Een subroutine is een reeks instructies in een programma die op elk moment kan worden opgeroepen en uitgevoerd. Met andere woorden, een subroutine kan een functie, een methode of een procedure zijn die wordt gebruikt om specifieke taken uit te voeren, zoals het verzenden van een bericht. email, het openen van een bestand of het bruut forceren van een inlogpagina.
8. Bepaal Machine code
Machinecode is een reeks binaire getallen die uitvoeringsinstructies bevat van een specifieke microprocessor en de bijbehorende geheugenadressen.
Machinecode wordt traditioneel uitgevoerd door een assembler die is ontworpen voor die specifieke familie van microprocessors.
9. Leg uit Gecompileerde versus geïnterpreteerde talen
Een gecompileerde computertaal moet worden omgezet in machinecode voordat deze op een computer wordt uitgevoerd, terwijl een geïnterpreteerde taal geen voorafgaande compilatie nodig heeft.
Wanneer u een geïnterpreteerd programma uitvoert, wordt het eerst verwerkt door een interpreter, die het vervolgens on-the-fly compileert en uitvoert. Deze extra stappen maken geïnterpreteerde talen zoals Python langzamer dan gecompileerde talen zoals C.
10. Wat is een lus?
Een lus is een codestructuur die specifieke instructies kan herhalen totdat een bepaald criterium is bereikt. Dit criterium kan een vast aantal herhalingen of de wijziging van een gedefinieerde variabele omvatten.
11. Maak een lijst van populaire soorten loops
Verschillende computertalen interpreteren loops op verschillende manieren. Populaire lustypes uit de C-familie zijn echter:
- Herhalingslus – het staat uitvoering van specifieke code toe, zolang een Boolean terwijl() voorwaarde is voldaan.
Bij voorbeeld while(2>1){print(“yahoo!”)};. - For loop – bevat drie uitdrukkingen (initialisatie; evaluatie; update) die de voorwaarden definiëren waarop moet worden getest, evenals een flexibele methode om de telling te verhogen. Het zal ook minstens één keer code uitvoeren.
- Doe{} While() lus – dit type lus voert de . uit doen{} code minstens één keer voordat u bepaalt of de terwijl() voorwaarde is nog steeds waar.
12. Leg iteratie vs . uit Recursie
Een iteratie is het gebruik van een lus om dezelfde codestappen uit te voeren, terwijl recursie het proces is van een functie die zichzelf keer op keer aanroept. Het probleem met recursie is echter dat je alleen een bepaalde diepte kunt bereiken totdat je geheugenproblemen tegenkomt.
13. Leg de taken van uit Pauze en doorgaan in een lus
A breken instructie beëindigt de uitvoering van een lus en gaat door met het uitvoeren van de rest van de computercode. EEN voortzetten statement, aan de andere kant, gaat door met het herhalen van de lus vanaf het begin.
14. Wat is OOP?
OOP staat voor Object Oriented Programming en het is een programmeerparadigma dat softwareontwerp implementeert rond gegevens en objecten, in plaats van rond functies of procedures.
15. Wat is procedureel programmeren?
Procedureel programmeren is een programmeerparadigma dat computercode organiseert rond de reeksen of stappen van uit te voeren instructies. Zoals de naam al aangeeft, is het een top-down benadering die de code begint vanaf de beginfase van gebeurtenissen en eindigt met het verwachte einde van gebeurtenissen.
16. Functioneel programmeren uitleggen
Functioneel programmeren is een computerprogrammeerparadigma dat dichterbij komt software development door sequentiële functies toe te passen die de status noch de gegevens van de opgegeven argumenten muteren.
Het doel is om robuustere programma's te maken die de verwachte resultaten opleveren zonder onvoorziene bijwerkingen.
17. Leg uit Taal op hoog niveau
Een programmeertaal op hoog niveau is een computertaal die meer een beroep doet op het menselijk begrip dan op de bijzonderheden of de aard van de computer.
Programmeertalen op hoog niveau zoals C en Python zijn gemakkelijk te begrijpen, terwijl een assembleertaal op laag niveau erg verwarrend kan zijn voor beginners.
18. Lijst Populair Talen op laag niveau
Er zijn slechts twee programmeertalen op laag niveau: assembly en machinecode.
19. Definieer een SQL-injectieaanval
Een SQL-injectie-aanval is een proces waarbij SQL-instructies worden ingevoerd in invoervelden zoals gebruikersnaam of adresinvoer, in de hoop dat een ontwikkelaar de invoer tijdens het programmeren niet goed heeft gezuiverd. En als een dergelijke aanval slaagt, kan de aanvaller beheerderstoegang tot de server krijgen.
20. Wat is een tabel in SQL?
Een tabel in SQL verwijst naar een verzameling gegevens die zijn gegroepeerd in kolommen en rijen. Elke kolom heeft een ander gegevenstype en u kunt meerdere tabellen in één database hebben. U kunt ook meer dan één tabel tegelijk opvragen.
U maakt een tabel met:
CREATE TABLE table_name(kolom1 gegevenstype, kolom2 gegevenstype, kolom3 gegevenstype, …);
21. Leg het verschil uit tussen een object en een klasse
Een object is een instantie van een klasse, terwijl een klasse een blauwdruk is van waaruit een object wordt gemaakt. Een object kan toestanden en eigenschappen hebben, zoals kleur, hoogte, gewicht, snelheid, enzovoort.
Deze eigenschappen moeten echter worden gedefinieerd of op zijn minst worden geïnitialiseerd met standaardwaarden.
22. Hoeveel bits maken één megabyte?
Er zijn 8,000,000 bits in 1 Megabyte omdat één byte 8 bits is en één Mega 10 . is6.
23. Definieer een zwevend gegevenstype
Een float is een gegevenstype dat een getal met decimale breuken vertegenwoordigt. Het wordt gebruikt in situaties waar een hoger niveau van precisie nodig is dan wat standaard gehele getallen kunnen bieden. Een voorbeeld van een vlotter is:
0.013
or
25.932
24. Waar staat de HexaDecimal 0xFF voor?
0xFF staat voor Decimaal 255 of Binair 11111111. 0x staat voor base16 of Hexadecimale notatie, die loopt van 1 tot 9 en dan verder gaat met A tot F om 15 weer te geven. Dus 0xF is decimaal 15, terwijl 0xFF decimaal 255 is.
25. Benoem soorten fouten bij het programmeren
Er zijn 3 belangrijke soorten fouten in een computerprogramma, namelijk:
- Syntax error
- Logische fout
- runtime Error
26. Wat is een syntaxisfout?
Een syntaxisfout treedt op wanneer er wordt afgeweken van de vaak strikte syntaxis van programmeertalen. Het kan het gevolg zijn van het eenvoudig verkeerd plaatsen van letters of het doorgeven van de verkeerde parameters aan een functie. De meeste compilers zullen het regelnummer van de broncode opnemen waar de fout is opgetreden.
27. Wat is een logische fout?
Een logische fout is een fout die voortkomt uit de manier waarop een programma werkt. Dus hoewel het programma foutloos kan worden uitgevoerd, bereikt het zijn doel niet. Logische fouten kunnen op vele manieren voorkomen en door vele redenen worden veroorzaakt.
28. Wat is een runtime-fout?
Een runtime-fout is een computerprogrammafout die optreedt tijdens de uitvoering van het programma en door onvoorziene omstandigheden. Dus hoewel het programma foutloos werkt, kunnen geheugen- en netwerkproblemen ervoor zorgen dat het programma zich misdraagt.
29. Leg uit Sterke versus zwak getypte talen
Een sterk getypte taal is streng over de verschillende datatypes en hoe je ze kunt converteren, terwijl een zwak getypte taal minder beperkingen oplegt aan datatypes en hun definities.
Veel zwak getypte talen zullen gegevenstypen automatisch converteren, terwijl sterk getypte talen vaak expliciete conversies vereisen.
30. Wat is MVC-architectuur?
MVC verwijst naar Model-View-Controller en is een softwareontwikkelingspatroon voor gebruikersinterfaces. Het verdeelt de programmalogica in 3 delen.
De model deel behandelt de onderliggende datalogica van de objecten in kwestie, terwijl de view zorgt voor de weergave van informatie aan de gebruiker, en de controleur verwerkt de gegevensstroom tussen de views en de modellen. MVC-ontwerp wordt vaak gebruikt bij objectgeoriënteerd programmeren.
31. Definieer een Algoritme
Een algoritme is een opeenvolging van procedures die zijn ontworpen om een specifiek probleem op te lossen. Deze procedures zijn meestal opgedeeld in kleinere stappen en de computer doet ze elke keer precies zo.
Voorbeelden van algoritmen zijn onder meer gezichtsherkenning, Google Zoeken, de manier waarop u uw schoenen strikt, gegevens codeert of versleutelt, enzovoort.
32. Wat is Machine leren?
Machine learning of ML is daar een onderdeel van kunstmatige intelligentie dat zich richt op het helpen van systemen om patronen te identificeren en zelf beslissingen te nemen door het verbruik van gegevens.
Dit verbetert vervolgens hun prestaties of efficiëntie. Machine learning-systemen kunnen onder toezicht, zonder toezicht en op versterking worden gebaseerd.
33. Wat zijn Normale uitdrukkingen?
Een reguliere expressie of Regex is een tekenreeks die wordt gebruikt om zoekpatronen in tekstdocumenten te definiëren. Verschillende programmeertalen implementeren reguliere expressies of gebruiken populaire regex-bibliotheken. Een voorbeeld van een regex die overeenkomt met alle tekens in een tekst is:
(. *)
terwijl het volgende alleen overeenkomt met mp3-bestanden:
.+\.(mp3)$
34. Wat doet de Modulus (%)-operator?
De modulus-operator % neemt twee operanden en deelt de eerste operand met de tweede. Vervolgens wordt de rest van de bewerking als resultaat geretourneerd.
Het wordt vaak gebruikt om oneven en even getallen te testen door een willekeurig geheel getal te delen door 2, waarbij een 0-resultaat een even getal betekent en 1 een oneven getal.
35. Leg uit Proces Forking
Forking komt uit de vork() functie in Unix- en Linux-systemen die door een lopend proces kan worden gebruikt om een kopie van zichzelf te maken. Process forking is dus de duplicatie van een proces om twee vergelijkbare en gelijktijdig uitvoerende processen te creëren.
Een bijkomend type forking verwijst naar het nemen van de broncode van een open source project en er een geheel nieuw programma van te maken.
36. Leg uit Discussie spawnen
Thread spawning is het proces van het maken van een nieuwe CPU-thread om een proces uit te voeren. Spawning wordt vaak gebruikt door rekenintensieve programma's om gebruik te maken van de multi-threadingmogelijkheden van een processor en het succes hangt af van de CPU waarop deze draait, hoeveel cores deze heeft en hoeveel threads per core deze biedt.
37. Wat doen Gereserveerde woorden Gemiddelde?
Gereserveerde woorden zijn termen die je niet mag gebruiken als identifier in een programmeertaal. Dit omvat functies, variabelen en labels. Ze zijn gereserveerd omdat ze al gedefinieerd zijn en specifieke betekenissen hebben.
38. Lijst populaire gereserveerde woorden
Verschillende talen hebben verschillende gereserveerde woorden op basis van hun syntaxis. Dit zijn de meest populaire gereserveerde woorden in programmeren:
- IF
- TRUE
- Juist
- SWITCH
- ELSE
- CASE
- BOOLAAN
- RETURN
- FUNCTIE
- BREAK
- GOTO
39. Wat is een string?
Een string is een reeks karakters, die vaak in een array wordt gehouden en wordt gebruikt om tekstgegevens te definiëren. De meest populaire string is "hello world".
40. Wat is een variabele?
Een variabele is elke waarde die kan veranderen tijdens de uitvoering van een programma. Een variabele kan van elk gegevenstype zijn, inclusief tekenreeksen en gehele getallen. Een programma wordt bijvoorbeeld als volgt geïnitialiseerd:
int a = 0;
intb = 1;
vervolgens worden tijdens de uitvoering wijzigingen aangebracht:
b = a+b; //b heeft gevarieerd
41. Wat is een constante?
Een constante is een variabele die naar verwachting niet zal veranderen tijdens de uitvoering van het programma. Een goed voorbeeld is de snelheid van licht of geluid. Met verschillende programmeertalen kunt u constanten op verschillende manieren definiëren. Bijvoorbeeld in C:
const float middle_c = 261.62; // middelste toets c op een piano is 261.6255 Hz
42. Definieer een array
Een array is een type variabele dat wordt gebruikt om meerdere waarden tegelijk op te slaan. In veel talen kunt u alleen waarden van vergelijkbare gegevenstypen opslaan, terwijl andere talen arrays met verschillende typen kunnen verwerken. U kunt ook multidimensionale arrays hebben, dit zijn arrays van arrays en kunnen rommelig worden.
Het definiëren van een array in mql4 is eenvoudig met:
tekenreeks TextArray[100]; //een array van honderd strings
43. Wat is Functie Overbelasting?
Functie-overbelasting is een methode waarmee een ontwikkelaar meerdere functies kan definiëren die dezelfde naam hebben maar verschillende functionaliteiten hebben. Dit wordt bereikt door de verschillende functieversies met verschillende argumenten te maken. De compiler weet dan welke functie nodig is door het type en het aantal aangeleverde argumenten.
44. Definieer a Bel op referentie
Een aanroep door verwijzing is een methode om het geheugenadres van argumenten door te geven aan een functie, in tegenstelling tot de standaardmethode om een kopie van de waarde van het argument door te geven. Het doel van verwijzingsaanroepen is dat het argument direct wordt gewijzigd door de functie.
45. Leg uit Rekenkundige operatoren
Dit zijn speciale tekens die dienen om rekenkundige bewerkingen uit te voeren in een programmeertaal. Rekenkundige operatoren zijn onder meer:
- De toevoeging of unaire plus (+)
- Aftrekken of unaire min (-)
- Vermenigvuldiging (*)
- Divisie (/)
- Module (%).
46. Leg uit logische Operators
Logische operatoren zijn woorden of symbolen die worden gebruikt om bewerkingen uit te voeren op basis van voorwaardelijke logica. De meeste talen hebben slechts 3 logische operatoren:
- EN (&& in C, C++, JavaScript)
- OR (|| in C, C++, JavaScript)
- NIET (! In C, C++, JavaScript)
47. Logisch 1 EN 0 =?
Een logische 1 EN 0-bewerking geeft u: vals omdat de tweede operand 0 is en je beide operanden van de EN-bewerking nodig hebt om 1 of TRUE te zijn om een positieve output te krijgen.
48. Logisch NIET 1 =?
Een logische NOT 1 operatie geeft je vals omdat de NOT-operator alles negeert wat je eraan geeft, wat betekent dat het 1 in 0 en 0 in 1 verandert. Dus als je het een 1 of TRUE-operand geeft, resulteert dit in 0 of FALSE.
49. Logisch 1 NAND 1 =?
Een logische 1 NAND 1-bewerking zal produceren: vals omdat beide operanden WAAR zijn en de NAND-operator altijd twee vergelijkbare invoer negeert om een tegengestelde uitvoer te produceren.
Dus als de operatie was 0 NEN 0, dan zou de output 1 of TRUE zijn.
50. Logisch 1 XOR 1 =?
Een logische 1 XOR 1-bewerking zal produceren: vals want terwijl een normale OF-bewerking TRUE produceert als een of beide ingangen WAAR zijn, produceert een XOR-bewerking (Exclusieve OF) alleen TRUE als slechts één invoer en niet de andere WAAR is.
Conclusie
We zijn aan het einde gekomen van deze lijst met de top 50 onmisbare programmeerinterviewvragen en hun antwoorden. En zoals je kunt zien, is de programmeerwereld enorm maar opwindend.
Geen twee sollicitatiegesprekken zijn hetzelfde. Dus hoewel deze lijst u in de juiste richting wijst, moet u ook proberen een beter begrip van elk probleem te krijgen.