No vien­kār­šiem jau­tā­ju­miem par C# priekš­ro­cī­bām līdz dažādu prog­ram­mē­ša­nas valodas elementu iz­skaid­ro­ša­nai un to lie­to­ša­nas veidiem – mēs esam iz­vei­do­ju­ši sarakstu ar 10 sva­rī­gā­ka­jiem jau­tā­ju­miem C# darba in­ter­vi­jai.

Šajā rakstā ir apkopoti desmit bieži uzdotie jautājumi darba intervijā par at­tīs­tī­bas spe­ciā­lis­ta amatu. Mēs esam iekļāvuši arī atbildes uz katru no šiem jau­tā­ju­miem. Lai gan šie jautājumi aptver dažādas tēmas, sākot no vien­kār­šām līdz de­ta­li­zē­tām, ir daudz citu iespējamo jautājumu par C# un tā īpašajām funkcijām.

Šis raksts sniedz sākotnēju pārskatu par dažādiem jau­tā­ju­miem, kas var tikt uzdoti, sākot no vien­kār­šiem jau­tā­ju­miem līdz spe­ci­fis­kā­kiem jau­tā­ju­miem, kuros tiek prasīta konkrēta in­for­mā­ci­ja. Šis raksts var arī palīdzēt jums saprast, kā sa­ga­ta­vo­ties in­ter­vi­jai, kuras mērķis ir pārbaudīt jūsu zināšanas par konkrētu prog­ram­mē­ša­nas valodu.

1. jautājums: Kādas ir C# īpašās iezīmes un kādas priekš­ro­cī­bas piedāvā šī prog­ram­mē­ša­nas valoda?

Ar savu īpašo at­tīs­tī­bas vidi Visual Studio, C# ir pamatā iz­strā­dāts ātruma no­dro­ši­nā­ša­nai. Kā ob­jek­to­rien­tē­ta prog­ram­mē­ša­nas valoda, C# izceļas arī ar savu vienkāršo un moderno lietotņu izstrādi, kas ir gan daudz­pu­sī­ga, gan jaudīga. Tāpēc daudzi iz­strā­dā­tā­ji, iz­vē­lo­ties, kuru prog­ram­mē­ša­nas valodu apgūt, izvēlas C#.

C# ir struk­tu­rē­ta ap klasēm un objektiem, stingri ievērojot ti­pi­zā­ci­jas principus. Tā nodrošina tādas funkcijas kā abs­trak­ci­ja, ietvērums un pār­man­to­ša­na. Šī prog­ram­mē­ša­nas valoda ir gal­ve­no­kārt paredzēta izstrādei Microsoft .NET eko­sis­tē­mā.

Tā kā C# ir saskaņots ar .NET vidi, tam ir sava struktūra, kurā daudzi .NET struktūru tipi pārmanto objektu klasi. Rezultātā šīs klases pārmanto metodes, īpašības, laukus un notikumus. Šī hie­rar­his­kā struktūra veicina kon­sek­ven­ci un sa­darb­spē­ju .NET eko­sis­tē­mā.

2. jautājums: Ko nozīmē kla­si­fi­kā­ci­ja „objekts” C# valodā?

Objektu izpratne C# valodā ir atkarīga no valodas pa­mat­prin­ci­pu izpratnes. C# pamatā ir ob­jek­to­rien­tē­ta prog­ram­mē­ša­nas valoda, kuras pamatā ir klases. Klase nosaka datu struktūru un to, kā dati tiek uzglabāti, pār­val­dī­ti un pārnesti C# valodā. Būtībā tā kalpo kā paraugs visām pārējām datu struk­tū­rām.

Objekti ir reāli elementi C# valodā, kas arī aizņem reālas vērtības pie­eja­ma­jā atmiņā. Par objektiem var uzskatīt visas vienības, kurām ir ļoti spe­ci­fis­kas īpašības vai kuras veic konkrētu uzdevumu prog­ram­ma­tū­rā. Objekta tips tiek definēts ar klasi, un klases instancēm veido pamatu to turp­mā­ka­jai struk­tū­rai.

Piemēram, pieņemsim, ka mēs iz­strā­dā­jam programmu, kas saistīta ar te­le­vi­zo­ru. Pirmkārt, mums ir jādefinē entītija kā sākuma punkts. Šajā gadījumā mēs varētu izveidot klasi „Te­le­vi­zors”. Šajā klasē mēs vēlamies definēt piecas īpašības: ražotājs, modelis, krāsa, izmērs un cena. Šīs īpašības ir klases locekļi. Citi klases locekļi var būt notikumi, metodes vai lauki, kas kopā veido objektu.

Lai prog­ram­mē­tu Sony Bravia kā te­le­vī­zi­jas piemēru, mēs varam norādīt Sony, Bravia, Black, 50 un 500 kā īpašības, iz­vei­do­jot šo objektu. Tas definē in­for­mā­ci­ju par ražotāju, modeli, krāsu, izmēru un cenu. Tādējādi Sony te­le­vī­zi­ja ir te­le­vī­zi­jas klases piemērs. Lai šī klase būtu pieejama, ir svarīgi to definēt kā publisku, nevis privātu vai aiz­sar­gā­tu.

3. jautājums: Kāda ir atšķirība starp pār­val­dī­tu un ne­pār­val­dī­tu kodu C#?

Pār­val­dīts kods

Pār­val­dī­tais kods C# ir viss kods, kas izveidots, iz­man­to­jot .NET Framework. Šāda veida kods tiek izpildīts tieši ar Common Language Runtime (CLR). CLR pārvalda koda dzīves ciklu, tostarp objektu izveidi, atmiņas sadali un objektu iz­nī­ci­nā­ša­nu.

Ne­pār­val­dīts kods

Ārpus .NET Framework iz­strā­dā­tais kods tiek saukts par ne­pār­val­dī­tu kodu. Šajā ka­te­go­ri­jā ietilpst visas lie­to­jum­prog­ram­mas, kas netiek iz­pil­dī­tas CLR kontrolē.

.NET Framework nodrošina funkciju, kas var pārvērst ne­pār­val­dī­tu kodu pār­val­dī­tā kodā un otrādi. Šī funkcija ir īpaši noderīga, jo atvieglo objektu izveides un izpildes, kā arī koda iz­nī­ci­nā­ša­nas vienotu in­teg­rā­ci­ju sistēmā.

4. jautājums: Kāda ir atšķirība starp struktūru un klasi?

C# valodā termini „klase” (class) un „struktūra” (struct) attiecas uz lietotāja de­fi­nē­tiem datu tipiem. Tomēr šiem datu tipiem ir dažas būtiskas at­šķi­rī­bas.

Struktūra

  • Kā vērtības tips C# valodā, struk­tū­ras vienmēr netieši pārmanto no System.ValueType.
  • Struk­tū­ras nevar atvasināt no citiem tipiem.
  • Parasti struktūra tiek izmantota mazākiem datu apjomiem.
  • Struk­tū­ras nevar būt abs­trak­tas un kā tādas prasa tiešu īs­te­no­ša­nu.
  • Struk­tū­rai nav iespējams piešķirt standarta kons­truk­to­ru.
  • Objekta izveide, iz­man­to­jot at­slēg­vār­du new, nav obligāta.

Klase

  • Kā atsauces tips C# valodā, klases vienmēr netieši pārmanto no System.Object.
  • Klasēm var būt citu klašu at­va­si­nā­ju­mi, kas ļauj veikt pār­man­to­ša­nu.
  • Parasti klase tiek izmantota lielākiem datu apjomiem vai sa­rež­ģī­tā­kām struk­tū­rām.
  • Klasēm var būt abstrakta forma, kas nozīmē, ka tās neļauj veikt tiešu in­stan­cē­ša­nu.
  • Atšķirībā no struk­tū­rām, klasēm var būt standarta kons­truk­tors, ja tas ir ne­pie­cie­šams.

5. jautājums: Kāda ir atšķirība starp in­ter­fei­su un abstraktu klasi C#?

In­ter­fei­si (in­terfa­ces) un abs­trak­tās klases (abstract classes) abas nosaka koda līguma klases, piemēram, priekš­no­sa­cī­ju­mus vai objektu in­va­rian­ti, at­va­si­nā­ta­jām klasēm. Ne­ska­to­ties uz šo kopīgo iezīmi, pastāv daudzas at­šķi­rī­bas, kā to parāda in­ter­fei­su un abs­trak­tā­ko klašu fun­kcio­na­li­tā­te.

Koda līguma klases var izmantot, lai noteiktu priekš­no­sa­cī­ju­mus, pēcno­sa­cī­ju­mus un objektu in­va­rian­ti. Priekš­no­sa­cī­ju­mi ir prasības, kas jāizpilda, ievadot metodi vai īpašību.

Mantojuma ziņā abs­trak­ta­jās klasēs papildus abs­trak­ta­jām metodēm var būt arī metodes ar īstenotu kodu, savukārt in­ter­fei­si prasa, lai visas metodes būtu abs­trak­tas. Tāpēc abs­trak­ta­jām klasēm dek­la­rā­ci­jai ir ne­pie­cie­šams at­slēg­vārds abstract

Tā kā C# ne­at­bal­sta vairāku klašu mantošanu, klase nevar mantot no vairāk nekā vienas abs­trak­ci­jas klases. Tomēr klase var īstenot vairākas saskarnes, lai no­dro­ši­nā­tu vairāku saskarņu mantošanu.

Abs­trak­ta­jai klasei var būt kons­truk­to­ri, kurus var izsaukt at­va­si­nā­tās klases. In­ter­fei­si nevar saturēt kons­truk­to­rus, jo tie nav in­stan­cē­ti un tādēļ nevar tikt ini­cia­li­zē­ti.

6. jautājums: Kas ir īpašības C#?

C# valodā īpašības ir klases elements, kas ļauj lasīt, rakstīt vai aprēķināt privāti deklarēta lauka vērtību. Īpašības var izmantot, lai piekļūtu publiskām saskarnēm vai ļautu veikt izmaiņas klasē sa­gla­bā­ta­jos datos.

Īpašības ir ob­jek­to­rien­tē­tās prog­ram­mē­ša­nas C# pa­ma­te­le­ments, un tās parasti izmanto lie­to­jum­prog­ram­mās, lai no­dro­ši­nā­tu tīru un drošu piekļuvi klases datiem.

Tās tiek dek­la­rē­tas, iz­man­to­jot get un set piekļuves funkcijas, kas definē īpašības vērtības lasīšanas vai ie­sta­tī­ša­nas darbību. get piekļuves funkcija iegūst īpašības vērtību, bet set piekļuves funkcija iestata īpašības vērtību. Īpašībai var būt viena vai abas piekļuves funkcijas. Tas ir atkarīgs no tā, vai īpašība ir (vai tai jābūt) tikai lasāma vai lasāma/rakstāma.

7. jautājums: Kas ir boxing un unboxing C# valodā?

C# valodā tipu kon­ver­tē­ša­nai izmanto ie­pa­ko­ša­nu un iz­pa­ko­ša­nu.

  • Pār­vei­do­ša­na no vērtības tipa uz atsauces tipu ir pazīstama kā boxing. Tas var būt, piemēram, vienkārša datu tipa, piemēram, int, pār­vei­do­ša­na uz datu tipu object. Boxing ir netieša pār­vei­do­ša­na.
  • Pār­vei­do­ša­na no atsauces tipa uz vērtības tipu, no otras puses, tiek saukta par iz­pa­ko­ša­nu. Iz­pa­ko­ša­na var notikt tikai ar precīzu vērtības tipu, kas sākotnēji tika iepakots, piemēram, pār­vei­do­jot objektu atpakaļ uz int.

8. jautājums: Kas ir uz­skai­tī­jums (enum) un kādam nolūkam tas tiek izmantots C#?

Enums ir vērtību tips ar saistītu nosaukumu konstantu kopu. Šo grupu sauc arī par “enu­me­ra­to­ru sarakstu”. C# valodā enums ir uz­skai­tī­ti datu tipi, kas ir primitīvi un lietotāja definēti. At­slēg­vārds enum tiek izmantots, lai deklarētu uz­skai­tī­ju­mu.

Enums .NET Framework tiek izmantoti, lai izveidotu skait­lis­kas kon­stan­tes. Katrs enum loceklis ir enum tipa, un katram enum tipam ir ne­pie­cie­ša­ma skait­lis­ka vērtība. Šīs enum vērtības ir ne­mai­nī­gas. Enums var attēlot kā rakstzīm­ju virknes un apstrādāt kā veselos skaitļus.

Enu­me­rā­ci­jas elementa no­klu­sē­ju­ma tips ir int. No­klu­sē­ju­mā pirmajam enu­me­ra­to­ram ir vērtība 0, un katra nākamā enu­me­ra­to­ra vērtība pa­lie­li­nās par 1. Tomēr šīs vērtības var arī iestatīt manuāli, piemēram, 10 = Ieslēgts un 20 = Izslēgts.

9. jautājums: Kāda ir atšķirība starp Dispose un Finalize C# valodā?

C# valodā abas metodes tiek iz­man­to­tas, lai atbrīvotu resursus.

Dispose metode atbrīvo ne­pār­val­dī­tus resursus, piemēram, datu bāzes sa­vie­no­ju­mus, kurus .NET izpildes laika uzņēmējs au­to­mā­tis­ki ne­pār­val­da. Parasti tā tiek īstenota klasē. Tas savukārt īsteno IDis­po­sab­le saskarni, kas definē Dispose metodi.

Šo metodi skaidri izsauc klienta kods, lai atbrīvotu resursus, kas vairs nav ne­pie­cie­ša­mi. Al­ter­na­tī­vi to var netieši izsaukt ar using izteikumu, no­dro­ši­not, ka Dispose metode tiek izsaukta, kad objekts iziet no darbības jomas.

Savukārt Finalize metode tiek izmantota, lai veiktu objekta tīrīšanas darbības tieši pirms atkritumu sa­vāk­ša­nas procesa. Rezultātā tā parasti tiek īstenota klasē, kas pārraksta Object.Finalize metodi.

10. jautājums: Kādas ir pa­pla­ši­nā­ju­mu metožu priekš­ro­cī­bas C#?

Pa­pla­ši­nā­ju­ma metodes ļauj iz­strā­dā­tā­jiem pa­pla­ši­nāt esošā tipa fun­kcio­na­li­tā­ti, nemainot sākotnējo tipu vai ne­iz­vei­do­jot jaunu at­va­si­nā­tu tipu. Tās ļauj pievienot metodes esošajām klasēm, struk­tū­rām, saskarnēm, enumiem utt., pat ja metodes sākotnēji nebija definētas tipā.

Pa­pla­ši­nā­ju­ma metodes tiek dek­la­rē­tas statiskā klasē un definētas kā statiskas metodes, kurām ir unikāls pirmais parametrs ar nosaukumu this. Šis parametrs norāda pa­pla­ši­nā­mo tipu, ļaujot pa­pla­ši­nā­ju­ma metodi izsaukt tā, it kā tā būtu šā tipa in­stan­cē­ša­nas metode.

Kāda veida jau­tā­ju­mus varu sagaidīt C# intervijā?

Zinot, kas jūs intervē, jūs varat labāk izprast jautājumu būtību, kas jums tiks uzdoti. Personāla atlases spe­ciā­lis­tiem dažkārt trūkst ne­pie­cie­ša­mo zināšanu, lai veiktu pa­dzi­ļi­nā­tas dis­ku­si­jas par spe­cia­li­zē­tām jomām, piemēram, ka­te­go­ri­jām vai objektiem C#. Tāpēc, ja in­ter­vē­tājs ir teh­nis­kais vadītājs vai at­tīs­tī­bas komandas loceklis, ir lielāka varbūtība, ka in­ter­vi­jas jautājumi būs saistīti ar konkrētām prog­ram­mē­ša­nas kon­cep­ci­jām un prasmēm.

Ja klāt ir galvenais prog­ram­ma­tū­ras arhitekts vai tīmekļa iz­strā­dā­tājs, vis­ti­ca­māk, viņi uzdos spe­cia­li­zē­tus jau­tā­ju­mus, jo īpaši, ja pie­tea­ties uz amatu, kas nav sākuma līmeņa. Tas ir tāpēc, ka nākamie kolēģi vēlas zināt, kā jaunais komandas loceklis spēs palīdzēt viņiem ikdienas uzdevumos.

Go to Main Menu