Sida 1/14 Tentamen delkurs C#, Systemutvecklare, SU13, Malmö Tentamen, delkurs C# Systemutvecklare SU13, Malmö Plats: Plushögskolan Malmö Tid: 09.00-13.00 Tillåtna hjälpmedel: Papper, penna, suddgummi. Ej tillåtna hjälpmedel: Datorer, telefoner, böcker, anteckningar, kompendier etc. Max poäng: 120 poäng Del 1, slutna svar: 50 poäng Del 2, öppna svar: 50 poäng Inlämningsuppgift: 20 poäng (avser tidigare gjord gruppinlämningsuppgift Tic-Tac-Toe, som räknas in i poängen enligt följande: Ej gjord/u = 0 poäng, G = 15 poäng, VG = 20 poäng) Betygsgränser: Godkänt Väl godkänt 75 poäng 95 poäng Examinator: Thomas Frank, Nodebite AB
Sida 2/14 Tentamen delkurs C#, Systemutvecklare, SU13, Malmö Del 1, slutna svar Instruktioner: Läs igenom frågorna på följande sidor och välj svarsalternativ. FYLL I DITT NAMN (!) och kryssa i dina svar på denna sida. (Mer än ett ikryssat svar per fråga ger 0 poäng på frågan.) Lämna endast in denna sida för del 1. Namn: Fråga 1-20 (1 poäng per rätt svar) Fråga 21-35 (2 poäng per rätt svar) 1 a b c d 21 a b c d 2 a b c d 22 a b c d 3 a b c d 23 a b c d 4 a b c d 24 a b c d 5 a b c d 25 a b c d 6 a b c d 26 a b c d 7 a b c d 27 a b c d 8 a b c d 28 a b c d 9 a b c d 29 a b c d 10 a b c d 30 a b c d 11 a b c d 31 a b c d 12 a b c d 32 a b c d 13 a b c d 33 a b c d 14 a b c d 34 a b c d 15 a b c d 35 a b c d 16 a b c d 17 a b c d 18 a b c d 19 a b c d 20 a b c d
Sida 3/14 Tentamen delkurs C#, Systemutvecklare, SU13, Malmö 1. Vilket av följande påståenden om SCRUM är falskt? a. Product Owner ansvarar för produktbacklogen. b. Rollen som Scrum Master kan axlas av olika team-medlemmar, men bör vara samma person inom en sprint. c. En burn down chart visar hur många arbetstimmar som finns kvar under sprinten. d. Team-medlemmarna väljer själva vilka tasks de vill jobba med. 2. Vilket av följande påståenden är sant om JSON? a. JSON är ett subset av JavaScript. b. JSON är ett märkspråk, precis som XML. c. Agil metodik och JSON förknippas ofta med varandra. d. Datastrukturen skapas med hjälp av dictionaries och objekt. 3. HTML och XML skiljer sig åt på en viktig punkt vilken? a. I HTML kan inte taggarna ha attribut, det kan de i XML. b. I XML kan inte taggarna ha attribut, det kan de i HTML. c. XML används ofta på webbsidor, HTML ganska sällan. d. I XML kan man hitta på egna namn på taggar, i HTML är dessa namn förutbestämda. 4. CSS används för? a. Att få webbsidor att bete sig på ett visst sätt. b. Att styra layout och utseende på webbsidor. c. Att styra utseendet på JavaScript tillsammans med jquery. d. Cascading Style Sheets, dvs. HTML-utveckling enligt vattenfallsmodellen. 5. TDD står för Test Driven Development och innebär bl.a. att: a. Att man måste skriva testerna för att kunna kompilera koden. b. Att utvecklingen kan ske snabbare då man totalt sett får en mindre mängd kod. c. Att man skriver tester som alltid rapporterar att koden som de ska testa fungerar då de först körs. d. Att man skriver tester som alltid rapporterar att koden som ska testas inte fungerar då de först körs.
Sida 4/14 Tentamen delkurs C#, Systemutvecklare, SU13, Malmö 6. C# är ett s.k. hårt typat språk. Det innebär bl.a. att: a. Visual Studio måste användas för att kunna kompilera C#. b. Värdet på en variabel är alltid är en typ av konstant. c. Dynamic är en variabeltyp som kapslar in objekt. d. Det inte går att ändra datatyp för en deklarerad variabel. 7. I C# är följande sant om en konstruktor: a. Den måste heta Main och startar programmet. b. Man kallar den samma som klassen och den körs bara en gång. c. Den körs aldrig när jag skapar en ny instans av klassen. d. Man anger ingen datatyp för den. 8. Utvecklingen av C# leds av a. Anders Heljsberg som tidigare har skapat TurboPascal. b. John Resig som även skapat jquery. c. Brendan Eich som tidigare har skapat JavaScript för Netscape. d. Tim Berners-Lee som utvecklade grunderna till C# vid CERN. 9. C# är ett kompilerat språk och innan det kan köras omvandlas det till: a. bitkod i C++ b. assemblerkod c. byte code d. maskinkod 10. C# kan inte användas som: a. klientsidespråk för applikationer b. serversidespråk för webbapplikationer c. serversidespråk för applikationer d. klientsidespråk för webbapplikationer
Sida 5/14 Tentamen delkurs C#, Systemutvecklare, SU13, Malmö 11. En runtime error i C# uppkommer t.ex. om a. Man försöker sätta en nyckel som inte finns i en HashTable. b. Man försöker läsa av en nyckel som inte finns i en Dictionary. c. Man försöker läsa av en nyckel som inte finns i en HashTable. d. Man försöker sätta en nyckel som inte finns i en Dictionary. 12. Poker planning används inom SCRUM för att a. Uppskatta omfånget på olika user stories. b. Uppskatta omfånget på olika tasks. c. Spela höga kort först och därmed ta bort osäkerhetsfaktorn. d. Bryta ner flera tasks till mindre beståndsdelar. 13. Komposition inom OOP innebär att a. Ett objekt använder andra objekt som egenskaper. b. En klass använder andra klasser som metoder. c. En klass ärver från en annan med hjälp av abstrakta metoder. d. Ett objekt initieras med hjälp av en konstruktor. 14. Ordet this i C# är en referens till: a. Klassen som koden finns i. b. Den aktuella instansen av klassen. c. Alla instanser som har skapats av klassen. d. Klassen som ärver från metoden som för tillfället körs. 15. Genom att skriva s.k. extension methods i C# kan man: a. Addera metoder till befintliga inbyggda variabler. b. Addera metoder till befintliga inbyggda metoder. c. Addera metoder till befintliga inbyggda typer/klasser. d. Addera items till befintliga inbyggda arrayer och listor.
Sida 6/14 Tentamen delkurs C#, Systemutvecklare, SU13, Malmö 16. En rekursiv metod är en metod som anropar: a. En annan rekursiv metod. b. Sig själv. c. En setter inom samma klass. d. En getter inom samma klass. 17. C#-program körs i en s.k. virtuell maskin. Vad är en virtuell maskin? a. En mjukvarusimulering av viss hårdvara. b. En hårdvarusimulering av viss mjukvara. c. En hårt typat miljö som delar på flera bibliotek. d. En runtime som nollställer timerskillnader. 18. Genom att skriva en egen s.k. setter kan man i C#: a. Begränsa vilka värden en viss egenskap kan sättas till. b. Utöka storleken ett privat fält kan sättas till. c. Begränsa vilka egenskaper ett visst värde kan sättas till. d. Hindra gettern från hinna reagera för tidigt. 19. Vilken av följande förkortningar är felaktigt utläst nedan: a. CLR Common Language Runtime. b. XML extensible Makeup Language. c. JSON JavaScript Object Notation. d. MVC Model View Controller. 20. Vilket av följande påståenden är korrekt? a. Linux lanserades på 1970-talet. b. Internet Explorer lanserade på 1980-talet. c. Windows lanserades på 1990-talet. d. C# lanserades på 2000-talet.
Sida 7/14 Tentamen delkurs C#, Systemutvecklare, SU13, Malmö 21. Vad skrivs ut till konsolen när följande kod körs? var a =!false; var b =!!true; var c =!!!false; var d = a && b && c; Console.WriteLine(d); a. False b. True c. null d. (tom sträng) 22. Vad skrivs ut till konsolen när följande kod körs? var a = new Dictionary<string,string>(); var b = "hej"; var c = "då"; a[b] = b; a[a[b]] = c; Console.WriteLine(c); a. då b. hej c. hej då d. då hej 23. Vad skrivs ut till konsolen när följande kod körs? var person = "Olle"; var car = "Mazda"; car = person; person = car; Console.WriteLine(person + " " + car); a. Olle Mazda b. Olle Olle c. Mazda Mazda d. Mazda Olle
Sida 8/14 Tentamen delkurs C#, Systemutvecklare, SU13, Malmö 24. Vad skrivs ut till konsolen när följande kod körs? var dict = new List<int>(); dict.addrange(new int[] 4,3,5,2,1); var val = 0; while (val < dict.count()) val = dict[val]; Console.Write(val + " "); a. 1 2 3 4 5 b. 4 1 2 3 5 c. 4 1 3 2 5 d. 3 2 1 5 4 25. Vad skrivs ut till konsolen när följande kod körs? var person = "Olle"; var car = "Mazda"; var temp = car; car = person; person = temp; Console.WriteLine(person + " " + car); a. Olle Mazda b. Olle Olle c. Mazda Mazda d. Mazda Olle 26. Vad skrivs ut till konsolen när följande kod körs? double co = 0; co++; co *= 2; co /= 4; co- - ; Console.WriteLine(co); a. 0,5 b. -1 c. -0,5 d. 1
Sida 9/14 Tentamen delkurs C#, Systemutvecklare, SU13, Malmö 27. Vad skrivs ut till konsolen när följande kod körs? for (int i = 1; i < 255; i += i) Console.Write(i + " "); a. 1 2 3 5 8 13 21 34 55 89 144 b. 1 2 4 8 16 32 64 128 c. 1 3 8 21 55 144 d. 1 4 8 32 128 28. Vad skrivs ut till konsolen när följande kod körs? for (int i = 1; i <= 10; i += 2) for (int j = - 1; j < 1; j++) Console.Write((i + j) + " "); a. 0 1 2 3 4 5 6 7 8 9 b. 1 2 3 4 5 6 7 8 9 10 c. 0 0 0 0 0 0 0 0 0 0 d. 1 1 1 1 1 1 1 1 1 1 29. Vad skrivs ut till konsolen när följande kod körs? for (int i = 1; i <= 10; i += 2) for (int j = - i; j <= - i; j++) Console.Write((i + j) + " " + (i + j) + " "); a. 0 1 2 3 4 5 6 7 8 9 b. 1 2 3 4 5 6 7 8 9 10 c. 0 0 0 0 0 0 0 0 0 0 d. 1 1 1 1 1 1 1 1 1 1
Sida 10/14 Tentamen delkurs C#, Systemutvecklare, SU13, Malmö 30. Vad skrivs ut till konsolen när följande kod körs? for (int i = 2; i <= 11; i += 2) for (int j = - i; j <= - i; j++) Console.Write((i + j) + " " + (i + j) + " "); a. 0 1 2 3 4 5 6 7 8 9 b. 1 2 3 4 5 6 7 8 9 10 c. 0 0 0 0 0 0 0 0 0 0 d. 1 1 1 1 1 1 1 1 1 1 31. Vad skrivs ut till konsolen när följande kod körs? for (int i = 2; i <= 11; i += 2) for (int j = - 1; j < 1; j++) Console.Write((i + j) + " "); a. 0 1 2 3 4 5 6 7 8 9 b. 1 2 3 4 5 6 7 8 9 10 c. 0 0 0 0 0 0 0 0 0 0 d. 1 1 1 1 1 1 1 1 1 1 32. Vad skrivs ut till konsolen när följande kod körs? for (var i = "a"; i!= "aaaa"; i += "a") Console.Write(i + " "); a. 1 2 3 b. a a a c. aaa aaa aaa d. a aa aaa
Sida 11/14 Tentamen delkurs C#, Systemutvecklare, SU13, Malmö 33. Vad skrivs ut till konsolen när följande kod körs? var x = "san"; var co = 0; foreach (var i in "h,e,j".split(',')) Console.Write(i + (x + i == ""? x[co] + "" : "")); co++; a. hej b. san c. hseajn d. hejsan 34. Vad skrivs ut till konsolen när följande kod körs? var x = "san"; var co = 0; foreach (var i in "h,e,j".split(',')) Console.Write(i + (x + i == "sanj"? x : "")); co++; a. hej b. san c. hseajn d. hejsan 35. Vad skrivs ut till konsolen när följande kod körs? var cond =!false; Console.Write("nada "); do Console.Write("zilch "); cond =!cond; while (cond); a. nada b. nada zilch c. nada zilch zilch d. nada zilch zilch zilch
Sida 12/14 Tentamen delkurs C#, Systemutvecklare, SU13, Malmö Del 2, öppna svar Instruktioner: Läs igenom frågorna på följande sidor och svara på dem på separata skrivpapper. Obs! Märk varje pappersark noga med: Ditt namn Xxx Yyy Frågans nummer C#-tenta, öppen fråga X Markera även tydligt var svar på olika delfrågor börjar! När du är klar med samtliga öppna frågor (eller inte hinner skriva mer) sidnumrerar du dina skrivna sidor enligt sida X av Y. Detta minimerar risken att något du har skrivit förväxlas eller tappas bort! Fråga 1: Agil Metodik & SCRUM (10 poäng totalt) a) Beskriv med egna ord anledningen till att agil metodik behövs och utvecklades. (2 poäng) b) Återge de fyra hörnstenarna/nyckelprinciperna i det agila manifestet. Anknyt varje princip till ett verklighetsnära exempel. (4 poäng) c) Förklara hur man arbetar med SCRUM-metodik och väv gärna in följande termer: produkt, produktägare, produkt-backlog, epics, user stories, tasks, scrum master, sprintplanering & pokerplanning, sprint, sprint backlog, retrospective-möte, daily standup, burn down chart, samt spike. (4 poäng)
Sida 13/14 Tentamen delkurs C#, Systemutvecklare, SU13, Malmö Fråga 2: In your arms (14 poäng totalt) Du ska skapa en applikation där personer har armar, armarna har händer och händerna har fingrar. I övrigt ska varje persons ha namn, ålder och kön. Man ska kunna be en arm att peka. Armen ska då lyftas, säga till sin hand att peka, varvid handen ska säga till sitt pekfinger att sträcka ut sig och övriga fingrar att dra in sig mot handflatan. (Du behöver inte göra något grafiskt här det räcker med konsolmeddelanden där armen, handen och fingrarna meddelar vad de gör.) a) Hur löser du detta objektorienterat? Vilken/vilka klasser skapar du? Vilka egenskaper och/eller metoder har klassen/klasserna? Ange även typ för egenskaper och metoder! (4p) b) Löser du problemet med arv eller komposition? Eller bådadera? Förklara och motivera! Visa att du förstår dessa två begrepp och skillnaden mellan dem. (2p) c) Skriv C#-kod eller pseudokod för armens peka-metod, samt de övriga metoder som kommer att anropas/köras när den körs. (4 poäng + 1 extrapoäng för helt korrekt C#-kod) d) En person skapas initialt med 2 armar. Skriv C#-kod eller pseudokod för en setter som gör att man kan ändra antalet armar på en person efter att han/hon skapats dock endast till ett lägre värde än initialt och som lägst till 0 stycken. (2p + 1 extrapoäng för helt korrekt C#-kod)
Sida 14/14 Tentamen delkurs C#, Systemutvecklare, SU13, Malmö Fråga 3: Business as usual (26 poäng totalt) Du skriver en applikation som ska kunna hantera data om olika företag. Varje företag har ett namn, ett organisationsnummer, en eller flera ägare (personer och/eller andra företag), samt noll till flera anställda. a) Hur löser du detta objektorienterat? Vilken/vilka klasser skapar du? Vilka egenskaper och/eller metoder har klassen/klasserna? Ange även typ för egenskaper och metoder! (6p) b) Löser du problemet med arv eller komposition? Eller bådadera? Förklara och motivera! Visa att du förstår dessa två begrepp och skillnaden mellan dem. (3p) c) Skissa/rita upp ett grafiskt gränssnitt där man kan mata in personer och företag, samt lägga till och ta bort ägare och anställda. Ange gärna vilken typer av komponenter du vill använda dig av. Kan du inte namnen så beskriv hur de fungerar ( fäller ner en lista etc.) (6p) d) Ge exempel på en JSON-datastruktur som skulle fungera för att lagra datan mellan körningar. (4p) e) Vilken tillvägagångssätt använder du för att spara datan mellan körningar. (2p) f) Skriv C#-kod eller pseudokod som gör att man om företag äger företag kan se ägandeskapet i flera led. (4 poäng + 1 extrapoäng för helt korrekt C#-kod).