Obsah[Skryť][Šou]
- 1. Opíšte Golang.
- 2. Aké výhody má Go oproti iným jazykom?
- 3. V programovaní Golang, čo je fmt?
- 4. Čo presne je Go Interfaces?
- 5. Čo sú to vlastne reťazcové literály?
- 6. Ako sú nakonfigurované pracovné prostredia a parametre v Golang?
- 7. Popíšte balíčky Golang?
- 8. Aké dátové typy podporuje Golang?
- 9. Čo rozumiete pod statickou deklaráciou typu premennej v Golang?
- 10. Čo je v Golangu deklarácia dynamickej premennej?
- 11. Ako môžem využívať vlastné balíčky v programovacom jazyku GO?
- 12. Čo je to vlastne gorutín? Ako to môžete zastaviť?
- 13. Opíšte runu.
- 14. Aký je výraz Go na reprezentáciu enumov?
- 15. Ako sa kontroluje typ premennej za behu?
- 16. Popíšte kanály Go.
- 17. Vysvetlite metódy Golang.
- 18. Čo je to vlastne dátový závod?
- 19. Čo je vlastne Go garbage collection?
- 20. Popíšte fázy testovania pomocou Golang.
- 21. Čo presne sú rezy v Go?
- 22. Čo je to vlastne haldová pamäť?
- 23. Čo sú vlastne uzávery funkcií?
- 24. Čo znamená Golangov výrok goto?
- 25. Čo sú v Golangu Lvalue a Rvalue?
- 26. Aké sú slučkové konštrukcie v Go?
- 27. Čo sú to vlastne dizajnové vzory?
- 28. Aký je najlepší balík Golang pre jednoduché operácie so súbormi? Aké ďalšie balíky Golang sa používajú na manipuláciu so súbormi?
- 29. Vysvetlite Golangovu objektovo orientovanú architektúru.
- 30. Ktoré typy konverzií podporuje Golang?
- 31. Opíšte účel a fungovanie tvrdenia typu.
- 32. Čo presne je typ struct?
- 33. Vysvetlite podporné pole hodnoty rezu.
- 34. Je potrebné mať premenné GOPATH aj GOROOT a ak áno, prečo?
- 35. Umožňuje Golang dedičstvo?
- 36. Ako sa v Golangu zobrazuje CGo?
- 37. Aký je typ ukazovateľa v Golangu?
- záver
Programovací jazyk Go, často známy ako Golang, je programovací jazyk s otvoreným zdrojovým kódom, ktorý je porovnateľný s jazykom C, ale je navrhnutý pre rýchlu kompiláciu, bezproblémovú súbežnosť a pohodlie pre vývojárov.
Tento jazyk vyvinula a používa spoločnosť Google, ale v posledných rokoch sa presadil aj v iných firmách, keďže dopyt po súbežnom sieťovom programovaní rástol.
Golang uľahčuje vývoj vývojárom tým, že ponúka optimálnu kompiláciu pre rýchly vývoj softvérových aplikácií, plynulejšiu súbežnosť, zvýšenú efektivitu runtime a menej chýb.
Golang sa rýchlo stáva populárnym podnikovým programovacím jazykom s niekoľkými možnosťami zamestnania. Mnoho IT gigantov, ako sú Google, Uber a Apple, zbožňuje Golang pre jeho kratší čas vývoja, jednoduchosť učenia, vylepšený runtime, zber odpadu a ďalšie výhody.
Čím viac firiem používa Golang, potreba programátorov Golang rastie. Spodný riadok? Učenie sa Golangu by poskytlo niekoľko pracovných vyhliadok.
Ak chcete pracovať ako vývojár Golang, musíte sa na pohovor primerane pripraviť. Preto sme zostavili túto komplexnú zbierku otázok na rozhovor Golang.
V tomto príspevku predstavíme základné až pokročilé otázky na pohovor Golang, aby ste mohli ľahko prejsť pohovorom.
1. Opíšte Golang.
Go je na vysokej úrovni a je univerzálny programovací jazyk ktorý podporuje garbage collection a súbežné programovanie a je veľmi pevne a staticky napísaný. Go aplikácie sú vytvorené s využitím balíkov, ktoré poskytujú efektívnu správu závislostí.
Okrem toho využíva prístup kompilačného prepojenia na vytváranie spustiteľných binárnych súborov zo zdrojového kódu. Go je jednoduchý jazyk s krásnymi a jasnými syntaktickými štruktúrami.
Dodáva sa so sadou silných štandardných knižníc, ktoré môžu vývojári použiť na riešenie problémov bez potreby iných balíkov.
2. Aké výhody má Go oproti iným jazykom?
- Go kód bol vyvinutý s ohľadom na praktickosť, na rozdiel od iných jazykov, ktoré začali ako intelektuálne experimenty. Každá voľba v syntaxi a funkcii sa robí s ohľadom na pohodlie programátora.
- Keďže automatický zber odpadu beží súčasne s aplikáciou, je oveľa efektívnejší ako Java alebo Python.
- Škálovateľnosť a súbežnosť sú v Golangu prioritou.
- Golang sa zvyčajne považuje za zrozumiteľnejší ako iné jazyky, pretože má jedinú štandardizovanú štruktúru kódu.
3. V programovaní Golang, čo je fmt?
Balík Format je označený symbolom fmt. Používatelia môžu využiť túto funkciu na formátovanie základného textu, hodnôt alebo čohokoľvek iného a vytlačenie.
Umožňuje tiež používateľom prijímať vstup z terminálu, zapisovať do súboru pomocou zapisovača a dokonca vytvárať na mieru šité chybové hlásenia. Tento balík je o formátovaní vstupu a výstupu.
4. Čo presne je Go Interfaces?
Rozhrania v Go sa líšia od rozhraní v iných jazykoch. Rozhrania Go sú špeciálnym typom, ktorý sa používa na vyjadrenie kolekcie jedného alebo viacerých podpisov metód.
Rozhranie je tvorené výrazom „typ“, za ktorým nasleduje názov a kľúčové slovo rozhranie. Rozhrania môžu byť definované nasledovne:
- súbor metód
- Typ
5. Čo sú to vlastne reťazcové literály?
Reťazový literál je reťazcová konštanta vytvorená zreťazením písmen. Surové a interpretované reťazcové literály sú dva typy reťazcových literálov. Nespracované reťazcové literály sú uzavreté spätnými znamienkami (foo) a obsahujú neinterpretované znaky UTF-8.
Interpretované reťazcové literály sú reťazce napísané v dvojitých úvodzovkách a zahŕňajúce akýkoľvek znak okrem nového riadku a neúplných dvojitých úvodzoviek.
6. Ako sú nakonfigurované pracovné prostredia a parametre v Golang?
Pracovné prostredia a nastavenia je možné konfigurovať pomocou JSON, ktorý je v súčasnosti veľmi používaný. Skutočnosť, že JSON je súčasťou štandardnej knižnice, je jej hlavnou výhodou.
Štandardná knižnica poskytuje metódy zápisu pre zamýšľané dátová štruktúra, vďaka čomu je veľmi čitateľný. Dodatočnou voľbou je balík YAML pre Go.
7. Popíšte balíčky Golang?
Balíky sú priečinky, ktoré obsahujú ďalšie balíčky a ich zdrojový kód v pracovnom priestore Go. Prepojené balíky zahŕňajú všetok kód, vrátane premenných, funkcií a typov, ktoré sú zapísané v zdrojových súboroch.
Každý zdrojový súbor je súčasťou balíka a balíky go môžu byť uložené aj v balíkoch.
8. Aké dátové typy podporuje Golang?
Golang používa nasledujúce typy:
- Metóda
- boolean
- Číselný
- Reťazec
- Ukazovateľ
- Funkcie
- Rozhranie
- Plátok
- struct
- mapa
- kanál
- Rad
9. Čo rozumiete pod statickou deklaráciou typu premennej v Golang?
Kompilátor môže pokračovať v ďalšej kompilácii bez potreby mať komplexné informácie o premennej vďaka statickým deklaráciám premenných typu, ktoré ho ubezpečia, že existuje len jedna premenná s daným druhom a názvom.
Deklarácia premennej je dôležitá len počas kompilácie; kompilátor vyžaduje skutočnú premennú a deklaráciu pri pripojení k aplikácii.
10. Čo je v Golangu deklarácia dynamickej premennej?
Kompilátor musí vysvetliť druh premennej v dynamickom type deklarácie premennej na základe sumy, ktorá je do nej prevedená. Ako povinnú podmienku kompilátor nevyžaduje premennú na statickú kategorizáciu.
11. Ako môžem využívať vlastné balíčky v programovacom jazyku GO?
Ak vytvárate samostatný projekt go get -table pre vašu knižnicu a je určený len na interné použitie, môžete napísať kód takto.
- Umiestnite adresár súborov knižnice pod adresár vášho projektu.
- Odkazujte na knižnicu podľa jej cesty relatívne ku koreňu pracovného priestoru, ktorý obsahuje projekt.
12. Čo je to vlastne gorutín? Ako to môžete zastaviť?
Gorutina je funkcia alebo procedúra, ktorá beží súčasne s inými goroutinemi vo vyhradenom vlákne goroutine. Goroutine vlákna sú ľahšie ako bežné vlákna a väčšina Golang aplikácií používa tisíce goroutínov súčasne.
Gorutina môže byť zastavená prechodom cez signálny kanál. Goroutines môžu reagovať na signály iba vtedy, ak sú nasmerované na kontrolu, a preto zahrňte kontroly na primeraných miestach, ako je začiatok vašej slučky for.
13. Opíšte runu.
V Go je runa vstavaným typom s názvom int32. Unicode CodePoint slúži ako runa v Go. Bez ohľadu na to, koľko bajtov kódový bod zaberá, môže byť reprezentovaný runou.
Runy nemusia byť usporiadané v reťazci. Hoci môžeme konvertovať medzi reťazcom a runou, nie sú rovnaké.
14. Aký je výraz Go na reprezentáciu enumov?
Programovací jazyk Golang priamo nepodporuje enumy. Iota a konštanty možno použiť na implementáciu enumov. Na implementáciu vymenovaného typu možno použiť ktorýkoľvek z nasledujúcich prístupov:
- zavedenie nového typu celého čísla
- Iota sa používa na označenie jeho hodnoty.
- Poskytnutím funkcie String pre typ
15. Ako sa kontroluje typ premennej za behu?
Prepínač typu je najefektívnejší prístup k určovaniu typu premennej v reálnom čase. Pri použití prepínača typu sa premenné vyhodnocujú skôr podľa typu než podľa hodnoty.
V každom prepínači je prítomný predvolený prípad, ktorý sa vykoná, ak žiadny z prípadov nie je pravdivý, a aspoň jeden prípad, ktorý slúži ako podmienený príkaz. Môžete napríklad navrhnúť prepínač typu, ktorý určí, či hodnota rozhrania i include je typ int alebo reťazec:
16. Popíšte kanály Go.
Kanál go umožňuje prenos údajov a prenos medzi rutinami. Dáta rovnakého typu možno posielať cez jeden kanál.
Goroutines sú schopné odosielať a prijímať dáta cez ten istý kanál vďaka obojsmernému toku dát kanála.
17. Vysvetlite metódy Golang.
Golang neposkytuje triedy, ale podporuje metódy. Tieto metódy sú totožné s funkciami s výnimkou toho, že metódy Go majú parameter prijímača.
Metóda Go má prístup k atribútom prijímača cez parametre prijímača. Metódy Go, známe aj ako funkcie prijímača, pomáhajú pri prezentácii presnejšej a skutočnej myšlienky.
18. Čo je to vlastne dátový závod?
Najbežnejším a najnáročnejším ladením je dátový závod. Nesynchronizovaný prístup k zdieľanej pamäti alebo spustenie niekoľkých gorutín súčasne bez samostatného spracovania vedie k poruche dátového závodu.
19. Čo je vlastne Go garbage collection?
Garbage collection znovu využíva úložisko, ktoré bolo dynamicky priradené programu na použitie inými objektmi. Toto slovo sa často vzťahuje na automatizovanú regeneráciu zberača odpadu na rutinné ukladanie a nie na explicitný kód (dodaný programátorom) na uvoľnenie konkrétnych pamäťových blokov.
Automatické zhromažďovanie koša sa často spustí, keď množstvo voľnej pamäte RAM klesne pod vopred definovaný prah alebo po určitom počte pridelení.
Odstránenie položiek, ktoré už softvér nepotrebuje na vytvorenie miesta v pamäti pre dynamickejšie objekty, sa nazýva „zber odpadu“.
20. Popíšte fázy testovania pomocou Golang.
Golang poskytuje automatizované testovanie balíkov pomocou vlastných testovacích balíkov. Ak chcete vytvoriť nový balík, vytvorte súbor, ktorý končí na _test.go a obsahuje funkciu TestXxx, kde Xxx je nahradené názvom funkcie, ktorú testujete.
Funkcia, ktorá testuje napríklad možnosti prihlásenia, by sa volala TestLogin. Súbor testovacej sady je potom zahrnutý v rovnakom balíku ako testovaný súbor.
Testovací súbor sa počas bežného vykonávania preskočí, ale spustí sa, keď zadáte príkaz go test.
21. Čo presne sú rezy v Go?
Slice sú dôležitým dátovým typom Go, ktorý poskytuje výkonnejšie rozhranie pre sekvencie ako polia. Slice, na rozdiel od polí, sú zadávané výlučne v závislosti od prvkov, ktoré obsahujú (nie počtu prvkov).
Ak chcete vytvoriť prázdny rez s dĺžkou, ktorá nie je nula, použite vstavané kľúčové slovo „make“.
22. Čo je to vlastne haldová pamäť?
Dynamicky formované objekty a premenné ukladáme do haldovej pamäte. Keď objekt už nepoužívame, zvyčajne vymažeme pamäť haldy, ktorú zaberal.
23. Čo sú vlastne uzávery funkcií?
Uzávery funkcií sú typom funkčných hodnôt, ktoré vytvárajú externe odkazované premenné. Funkcia má prístup a kontrolu nad hodnotami odkazovaných premenných.
Na ilustráciu, uzáver vrátený sčítačkou() je každý viazaný na inú referenčnú premennú súčtu.
24. Čo znamená Golangov výrok goto?
Príkaz goto funguje v Golang ako príkaz skoku. Goto sa používa na poskytovanie špecifikovanej kontroly nad programom.
Môže sa použiť na preskočenie častí kódu a prechod priamo k potrebným príkazom, alebo sa môže použiť na zopakovanie časti kódu programu za určitých okolností.
25. Čo sú v Golangu Lvalue a Rvalue?
Lvalue:
- Naráža na pamäťové miesto.
- Dá sa to zmeniť.
- Označuje premenný identifikátor.
- Môže sa vyskytnúť naľavo alebo napravo od operátora =.
- Napríklad v riadku x = 20 je x hodnota l a 20 je hodnota r.
Rvalue:
- Znamená pevnú hodnotu.
- Predstavuje hodnotu údajov uloženú v pamäti.
- Vyskytuje sa vždy na pravej strane operátora =.
- Výraz 10 = 20 je napríklad nesprávny, pretože naľavo od operátora = je rvalue (10).
26. Aké sú slučkové konštrukcie v Go?
V Go je len jedna slučková súčasť: slučka for. Cyklus for sa skladá z troch častí, ktoré sú oddelené bodkočiarkou:
- Príkaz Init sa spustí pred začiatkom cyklu. Často je to deklarácia premennej, ktorá sa objavuje iba v rámci cyklu for.
- Pred každou iteráciou sa príkaz podmienky vyhodnotí ako boolovský, aby sa rozhodlo, či má cyklus pokračovať.
- Príkaz post sa spustí na konci každej iterácie.
27. Čo sú to vlastne dizajnové vzory?
Návrhové vzory sú kúsky kódu, ktoré možno opätovne použiť na riešenie bežných problémov so softvérom. Ak použijete návrhové vzory, vaše projekty vygenerujú modulárnejší, škálovateľnejší a efektívnejší softvér. Dizajnové vzory vám pomôžu rozšíriť vaše aplikácie a pracovať s tímom. Bežné dizajnové vzory zahŕňajú Factory Method, Singleton, Facade a Decorator.
28. Aký je najlepší balík Golang pre jednoduché operácie so súbormi? Aké ďalšie balíky Golang sa používajú na manipuláciu so súbormi?
Platformovo nezávislé rozhranie poskytuje balík štandardnej knižnice os. Pri interakcii so súbormi ich používame na systémové funkcie. Rozhranie OS má byť konzistentné vo všetkých operačných systémoch.
Výsledkom je, že aplikácie, ktoré vyvíjame, fungujú rovnako v systémoch Windows, Linux a Mac. Ďalšie balíky štandardných knižníc Go zahŕňajú io, ioutil a bufio. Pracujú so súbormi a pridávajú funkcie. Nie sú však potrebné pre základné operácie so súbormi. Vyžadujeme iba balík os.
29. Vysvetlite Golangovu objektovo orientovanú architektúru.
Golang nepoužíva dizajn triedy objektov ako konvenčný Objektovo orientované programovanie robí. Komplexné dátové štruktúry a správanie sú namiesto toho uložené v štruktúrach a metódach.
Štruktúra je len schéma s plánom údajov, ktoré štruktúra ponesie. Štruktúry môžu byť použité na symbolizáciu myšlienok zo skutočného sveta, ako sú knihy, ľudia alebo automobily.
30. Ktoré typy konverzií podporuje Golang?
Pokiaľ ide o explicitné písanie, Go je veľmi vyberavý. Žiadna konverzia typu sa nevykoná automaticky. Ak chcete určiť premennú jedného typu na druhý, konverzia typu musí byť vykonaná explicitne.
31. Opíšte účel a fungovanie tvrdenia typu.
V GO sa konverzia typov používa na transformáciu rôznych typov. Explicitná hodnota zadaného typu je extrahovaná z hodnoty rozhrania typovým tvrdením.
32. Čo presne je typ struct?
Štruktúra pozostáva zo zoznamu pomenovaných komponentov nazývaných polia. Pre každé pole existuje druh a názov. Ďalším spôsobom, ako si predstaviť štruktúru, je skupina spojených vlastností. Sú užitočné pri kombinovaní údajov na vytváranie záznamov.
33. Vysvetlite podporné pole hodnoty rezu.
Keď vytvoríme rez, Go vytvorí tajné pole nazývané backing alebo základné pole v pozadí a nová premenná typu rezu naň odkazuje. Položky, nie výrez, sú uložené v podpornom poli.
Slice sú v Go implementované ako dátové štruktúry nazývané hlavičky slice, ktoré fungujú ako runtime reprezentácia segmentu.
34. Je potrebné mať premenné GOPATH aj GOROOT a ak áno, prečo?
Zvyčajne nie je potrebné ani jedno ani druhé. Jediná premenná, ktorá musí byť nastavená tak, aby ukazovala na strom alebo stromy balíkov Go, je GOPATH.
GOROOT odkazuje na koreňový adresár domovského adresára pre programovací jazyk Go, avšak takmer určite je už nastavený na umiestnenie aktuálnej inštalácie Go.
Ak je na tom istom systéme viacero jazykových verzií Go, alebo ak bol jazyk Go stiahnutý ako binárny balík z internetu alebo presunutý z iného počítača, musí byť nastavená premenná GOROOT.
35. Umožňuje Golang dedičstvo?
Dedičnosť je základný pojem v objektovo orientovanom programovaní, ktorý odkazuje na odovzdávanie vlastností nadtriedy základnej triede.
Keďže Golang nemá triedy, dedičnosť sa dosahuje pomocou vkladania štruktúr a štruktúry nemožno priamo rozširovať, musíme použiť myšlienku kompozície na vytváranie nových objektov so štruktúrou.
36. Ako sa v Golangu zobrazuje CGo?
Zo zdrojového súboru Go s definovanými funkciami vytvára cGo súbory Go a C, ktoré možno spojiť do jedinečného balíka Go. C odkazuje na „pseudo-balík“, čo je iná fráza vygenerovaná cGo, ktorá odkazuje na menný priestor C.
37. Aký je typ ukazovateľa v Golangu?
Alfanumerické označenia alebo označenia pre určité oblasti pamäte sú známe ako premenné. Typ premennej známej ako ukazovateľ ukladá pamäťovú adresu inej premennej.
Adresa premennej je reprezentovaná hodnotou ukazovateľa alebo nula, ak premenná ešte nebola stanovená. Rovnako ako premenná predstavuje miesto v pamäti hodnoty, ukazovateľ ukazuje na túto adresu.
záver
Cieľom programovacieho jazyka Golang bolo rýchlejšie vytvárať efektívne programy. Spoločnosti začali využívať Golang, keď si začali uvedomovať jeho výhodné možnosti.
Golang bol mimoriadne účinný pri podnecovaní záujmu vývojárov, zvyšovaní ich využitia základne a následne pracovných príležitostí. Odpovede na vyššie uvedené otázky, ktoré sú najčastejšie kladené počas pohovorov Golang, vám môžu pomôcť získať prácu Golang, po ktorej túžite.
Vidieť Séria rozhovorov s Hashdorkom za pomoc s prípravou na pohovor.
Nechaj odpoveď