Software Engineering (SE)
61 belangrijke vragen over Software Engineering (SE)
Wat is een Data Structure?
- Data stored
- Bepaalde operaties ondersteund
(vb: Array is een data structure dat een collectie in volgorde bewaart)
Wat zijn de nadelen van Arrays (2)
- elementen inserten, deleten, sorteren en zoeken gaat niet gemakkelijk bij arrays (en niet efficient)
Noem 4 classic Data Structures
- Stacks
- Queues
- Binary Trees
- Hogere cijfers + sneller leren
- Niets twee keer studeren
- 100% zeker alles onthouden
Wat is het verschil tussen een liniaire structuur, en een hierarchische structuur
een Hierarchische structuur bestaat uit lagen (links en rechts bijvoorbeeld)
Welke data structuren zijn sequenteel, en welke hierarchisch
- List
- Stack
- Queue
Hierarchisch
- Binary Tree
Noem termen die gebruikt worden in Binary Trees (7)
- Parent, Child
- Root, Leaf
- Binary Search Tree
Wat is een nadeel van een Binary Tree
Wat is een Node, en waar wordt het in gebruikt (welke data struct)
Als de volgende node 'null' is, is de huidige node ook de laatste node
Nodes worden gebruikt in:
- Binary Trees
- Linked Lists
Wat is het verschil tussen een Linked List en een Binary Tree
Het verschil is dat een BT geen 'next' heeft zoals een LL. De BT heeft een 'left' en een 'right', en een 'parent' en 'child'.
Hoe wordt er 'gesorteerd' in Binary trees
Noem 3 verschillende 'orders' in binary trees, en hoe ze werken
- Pre order
- Post order / Breadth first
- Level order
(zie afbeeldingen voor beter uitleg)
In order:
- Sorteerd op oplopende volgorde (1,2,3,4.. a,b,c,d etc)
Waarom zou je de Big O notation gebruiken ipv een Script
- Algoritme implementeren kost tijd
- Kan in de praktijk anders zijn
- Hardware/software moet zelfde zijn
In plaats van een test script kan je beter een theoretische analyse doen. (Big O).
- Is onafhankelijk van hardware/software. Kijkt puur naar het algoritme
- Kijkt alle mogelijk inputs
Welke O notatie heeft Binair zoeken?
Beschrijf het 'Greedy algoritme' in het kort
Bijv: Je wilt het hoogste punt bereiken. Je berekent niet eerst alles, en gaat naar het hoogste punt, maar je kijkt waar jij op dit moment 'verder' kan. Op ten duur denk je dat je op het hoogste punt bent, terwijl het niet zo is, maar je kan niet meer terug.
Greedy alg. = niet altijd optimaal
Wat is optimal substruction
(hij kijkt of greedy gebruikt kan worden, zo ja, gebruik het. Is het niet optimaal, gebruik dynamic programming)
Bij wat voor spellen werkt de minimax methode niet?
- Mijnenveger
- Monopoly
- Yahtzee
- Ganzenbord
- Mario
Omdat er bij sommige spellen verborgen info is (bij kaart spellen weet je niet wat de tegenstander heeft).
Ook omdat sommige spellen met kans werken, en kans kan niet 100% berekend worden.
Of meer dan 2 spelers heeft.
Wat is een Zero Sum game, en hoe win je dit?
Bij een Zero Sum game is de eerste die moet kiezen nadelig, omdat de ander dan op basis van zijn keuze kan kiezen.
Bij Huffman Data compressie, welke letters staan bovenin de boom, en welke onder?
Wat is belangrijk om te weten bij Huffman Data compressie? (tijdens het omzetten naar bits)
Hoe voorkom je een Race condition?
Wat is een nadeel van Synchronizing?
Wat is het verschil tussen Recursie of een For-loop gebruiken?
- Recursie "kost" meer door de overhead die erbij komt bij het aanroepen van een methode.
- De factor hangt af van hoe vaak je het doet
Aan welke 2 voorwaarden moet recursie voldoen
- één of meer base cases (de eenvoudigste case) worden gebruikt om recursie te stoppen. (de kleinste case. Wanneer moet recursie stoppen? vb; als het probleem opgelost is; return. anders ga door met recursie)
- Elke recursieve call verkleint het originele probleem. Waardoor je uiteindelijk bij de eenvoudigste case uitkomt (en stopt/eindigt)
Wat gebeurd er als recursie geen base case heeft (en dus oneindig doorgaat)
Wat is de volgorde van snelheid in de Grote O? (5)
1. O(1)
2. O(log n)
3. O(n)
4. O(n log n)
5. O(n^2)
6. O(n^3)
7. O(2^n)
Waarom wordt er bij de Big O notation altijd naar de wordt case scenario gekeken?
- Niet representatief
Average case:
- ideaal, maar erg moeilijk
Worst-case
- Niet representatief, maar makkelijk en handig
- Cruciaal voor applicaties zoals games, financieel en robotics
Wat is de geprefareerde methode om algoritmes te beschrijven?
Wat voor operaties kan de Big O gebruik van maken, en hoe werkt het.
VB van primitieve operaties:
- Evalueert een expressie
- Een value aan variabele toewijzen
- Indexing in een Array
- Een methode aanroepen
- Returnen van een methode
Wat doet de Asymptotic Analysis en hoe werkt het
Om het uit te voeren:
- Zoek worst-case aantal primitieve operaties
- Deze function uiten met big O
Vb:
- Alogoritme arrayMax voert maximaal: 7n -1 primitieve operaties uit
- arrayMax running time is dan: O(n) tijd
Contstante factoren en lower-order terms worden later weggelaten, dus hoeft het bij de primitieve operaties eigenlijk ook niet geteld te worden.
Wanneer is Lineair zoeken sneller dan binair zoeken?
Wat is de contstante tijd in een algoritme
Wat is Dynamisch programmeren, en van welke techniek maakt het gebruik van?
Bij dynamic programming wordt data dat eerder al berekend is hergebruikt, om makkelijker tot een solutie te komen.
(het opslaan van berekende getallen heet memoization)
Bijv fibonacci van 1.000.003
Omdat dat uit te rekenen duurt heel erg lang.
Maar wat als de fib van ....001 en ....002 al zijn gegeven? Dan kan je het erg makkelijk uitrekenen, en hoef je het niet zelf allemaal te doen.
Wat is 'Entropy' in Huffman encoding
Hoe wordt 'Entropy' in Huffman encoding ook wel genoemd?
Hoe werkt de Huffman encoding
De letters die vaak gebruikt worden (hoge frequentie) staan bovenaan in de tree, en zijn kleine bits.
De letters niet niet vaak worden gebruikt staan onderaan de tree en zijn grote bits)
Hoe wordt de huffman encoding gecodeerd/decodeerd
Hierbij is belangrijk om te weten waar een letter begint en waar het eindigt.
Wanneer is hetpraktisch om Huffman te gebruiken, en wanneer niet?
Voor een korte String (zoals: ABRACADABRA bijv)
- Om dit te decoderen heb je een code table nodig
- Als je de code table in de hele message moet zetten, is het hele bestand groter dan het bericht zelf. Dan is het het niet waard
WEL:- De string om te encoden is groot, (vergeleken met de code table)
OF
- We agree on the code table beforehand
Hoe kunnen threads hun beurt af staan?
- Thread.yield()
Welke (3) methodes moet je NIET gebruiken binnen threads, waarom niet? Hoe moet het dan wel?
- Suspend()
- Resume()
Zijn depricated/outdated. Ze waren niet veilig.
Hoe wel?
Assign null aan een Thread
Thread.interrupt
Hoe werkt het synchroniseren van methodes?
- Voer uit
- Release lock
Andere objecten die erbij willen terwijl het locked is, worden tijdelijk geblocked totdat het gereleased is.
Met welke (3) methodes kan je samenwerken met threads, en hoe werkt het
- Notify()
- NotifyAll()
De Wait() methode laat een thread wachten tot een bepaald conditie voorkomt. Wanneer het voorkomt, kan je notify() of notifyAll() gebruiken om de wachtende threads door te laten gaan.
Wanneer kan je de wait, notify en notifyall methodes aanroepen? Wat anders?
IllegalMonitorStateException
De Wait methode moet in een TRY/CATCH
Wat gebeurd er als de Thread.Wait() methode wordt aangeroepen?
Als de thread weer wordt gestart nadat het notified is, krijgt hij de lock direct weer.
Wat zijn de verschillen tussen: Eenvoudige concurentie, uitgebreide concurrentie, Samenwerken
- Locking met synchronizing
Uitgebreide concurrentie en samenwerken:
- Afstemming via wait() en notify(), locking via synchronized
Hoe worden threads in een thread pool gemanaged?
- ExecutorService interface voor het managen en controlling van taken
ExecutorService is een subinterface van Executor
Wat is het verschil tussen een FixedThreadPool, en CachedThreadPool
Een Cached. maakt een pool die threads maakt wanneer nodig, maar zal andere threads hergebruiken als die available zijn.
Wat is de Fairness Policy, en waar wordt het gebruikt?
De True fairness Policy zorgt ervoor dat de langs-wachtende thread the lock als eerst krijgt wanneer beschikbaar.
False fairness Policy geeft locks aan een wachtende thread zonder een bepaalde volgorde.
Wat is een Condition tijdens het samenwerken van threads. en welke (3) methodes kan de condition gebruik van maken
Als een condition is gemaakt, kan je
- Await()
- Signal()
- SignalAll()
methodes gebruiken voor thread communicatie.
The await() methode zorgt ervoor dat de huidige thread wacht totdat de condition is gesignaleerd.
signal() maakt een thread wakker (notify?)
signalAll() maakt alle wachtende threads wakker (notifyAll?)
In een UML/Klassendiagram. Hoe noteer je de relaties tussen elkaar. Wat zijn de verschillende lijnen? implements, extends, has, owns etc.
gestippelde lijn = implements
Hoe ziet de klassendiagram en samenhang van de volgende klassen er ongeveer uit:
Component, Container, JComponent, JPanel, Layoutmanager, Object
|1
|
|1
Layoutmanager
Schrijf een recursieve methode die de maximale diepte van een tree berekent. De maximale diepte van een lege tree is 0
return(maxDiepte(root));
}
private int maxDepth (Node node) {
if (node==null) {
return(0);
}
else {
int lDepth = maxDepth(node.left);
int rDepth = maxDepth(node.right);
// use the larger + 1
return(Math.max(lDepth, rDepth) + 1);
}
}
//Kan ook als one-liner:
return (Math.max(maxDepth(node.left), maxDepth(node.right)) + 1);
Hoe zit de samenhang van de Swing class hierarchie in elkaar?
Hoe ziet de Event Classes hierarchie in elkaar?
Wat kost tegenwoordig uiteindelijk het meeste aan software
2. Development (±40%)
3. Hardware (5-10%)
Wat is software engineering precies?
- Learn from the past
- Het maken van supporting tools
- Gedisciplineerde aanpank
Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software
Wat maakt software engineering zo moeilijk?
- Schalen
- De gat tussen de gebruiker en developer
- Tijdsdruk
- Relatief jonge discipline
- Zelfs als technisch alles in order is, is het niet altijd een success (ethics, user acceptance, legal issues, change management, business case, ...)
Welke 5 activiteiten in een set zijn nodig om een software systeem te developen
- Design
- Implementatie
- Testen (validation + verification)
- Evolution
Wanneer is een klasse thread-safe?
Wanneer werkt Waterfall methode goed, en wanneer niet?
Werk niet goed als jij, of de klant, niet precies weet wat hij wil
Wat zijn de voor- en nadelen van incremental methode
+ Makkelijker om feedback te ontvangen en te verwerken
- Het proces is minder zichtbaar
- Systeem structuur is minder gestructureerd, omdat er steeds dingen bijkomen. (moet regelmatig refactored worden)
Maak een Huffman tree met de volgende gegevens:
F = 13
A = 8
C = 10
E = 6
https://www.youtube.com/watch?v=umTbivyJoiI
De vragen op deze pagina komen uit de samenvatting van het volgende studiemateriaal:
- Een unieke studie- en oefentool
- Nooit meer iets twee keer studeren
- Haal de cijfers waar je op hoopt
- 100% zeker alles onthouden