Съдържание[Крия][Покажи]
- 1. Опишете Голанг.
- 2. Какви предимства има Go пред другите езици?
- 3. Какво е fmt в програмирането на Golang?
- 4. Какво точно е Go Interfaces?
- 5. Какво точно представляват низовите литерали?
- 6. Как се конфигурират работните среди и параметрите в Golang?
- 7. Опишете пакетите Golang?
- 8. Какви типове данни се поддържат от Golang?
- 9. Какво имате предвид под декларация на статичен тип на променлива в Golang?
- 10. Какво представлява декларацията на динамична променлива в Golang?
- 11. Как мога да използвам персонализирани пакети в езика за програмиране GO?
- 12. Какво точно е goroutine? Как можете да го спрете?
- 13. Опишете руна.
- 14. Какъв е идиомът на Go за представяне на enum?
- 15. Как се проверява типът на променливата по време на изпълнение?
- 16. Опишете Go каналите.
- 17. Обяснете методите на Golang.
- 18. Какво точно е надпревара за данни?
- 19. Какво точно представлява събирането на боклука Go?
- 20. Опишете етапите на тестване с помощта на Golang.
- 21. Какво точно представляват слайсовете в Go?
- 22. Какво точно е heap памет?
- 23. Какво точно представляват затварянията на функции?
- 24. Какво означава goto изявлението на Golang?
- 25. Какво представляват Lvalue и Rvalue в Golang?
- 26. Какво представляват цикличните конструкции в Go?
- 27. Какво точно представляват шаблоните за проектиране?
- 28. Кой е най-добрият пакет Golang за прости файлови операции? Какви допълнителни пакети на Golang се използват за манипулиране на файлове?
- 29. Дайте обяснение на обектно-ориентираната архитектура на Golang.
- 30. Кои типове преобразуване поддържа Golang?
- 31. Опишете целта и действието на Type assertion.
- 32. Какво точно е структурен тип?
- 33. Обяснете резервния масив на стойност на срез.
- 34. Необходимо ли е да има и двете променливи GOPATH и GOROOT и ако е така, защо?
- 35. Golang позволява ли наследяване?
- 36. Как се появява CGo в Golang?
- 37. Какъв е типът указател в Golang?
- Заключение
Езикът за програмиране Go, често известен като Golang, е език за програмиране с отворен код, който е сравним с C, но е проектиран за бърза компилация, плавна едновременност и удобство за разработчиците.
Този език е разработен и използван от Google, но придоби популярност в други фирми през последните години, тъй като търсенето на едновременно мрежово програмиране нарасна.
Golang прави разработката по-лесна за разработчиците, като предлага оптимална компилация за бързо разработване на софтуерни приложения, по-плавна паралелност, подобрена ефективност по време на изпълнение и по-малко дефекти.
Golang бързо се превръща в популярен корпоративен програмен език с няколко възможности за работа. Много ИТ гиганти, като Google, Uber и Apple, обожават Golang заради по-краткото му време за разработка, лекота на обучение, подобрено време на изпълнение, събиране на боклук и други предимства.
Тъй като все повече фирми използват Golang, нуждата от Golang програмисти нараства. Долния ред? Изучаването на Golang би осигурило няколко перспективи за работа.
Ако искате да работите като разработчик на Golang, трябва да се подготвите адекватно за вашето интервю. Ето защо съставихме тази изчерпателна колекция от въпроси за интервю с Golang.
В тази публикация ще представим основни до напреднали въпроси за интервю с Golang, така че да можете лесно да преминете през интервюто.
1. Опишете Голанг.
Go е с общо предназначение на високо ниво програмен език който поддържа събиране на отпадъци и едновременно програмиране и е много плътно и статично въведен. Go приложенията се създават чрез използване на пакети, които осигуряват ефективно управление на зависимостите.
Освен това, той се възползва от подхода за компилиране на връзки за създаване на изпълними двоични файлове от изходния код. Go е ясен език с красиви и ясни синтактични структури.
Той идва с набор от силни стандартни библиотеки, които могат да се използват от разработчиците за решаване на проблеми, без да са необходими други пакети.
2. Какви предимства има Go пред другите езици?
- Go code е разработен с мисъл за практичност, за разлика от други езици, които са започнали като интелектуални експерименти. Всеки избор на синтаксис и функция се прави с мисъл за удобството на програмиста.
- Тъй като автоматичното събиране на отпадъци работи едновременно с приложението, то е много по-ефективно от Java или Python.
- Мащабируемостта и паралелността са приоритетни в Golang.
- Golang обикновено се счита за по-разбираем от другите езици, тъй като има единна стандартизирана кодова структура.
3. Какво е fmt в програмирането на Golang?
Пакетът Format се обозначава със символа fmt. Потребителите могат да използват тази функционалност, за да форматират основен текст, стойности или нещо друго и да го отпечатат.
Той също така позволява на потребителите да получават въведени данни от терминала, да пишат във файл със записващо устройство и дори да създават поръчкови фантастични съобщения за грешка. Този пакет е изцяло за форматиране на вход и изход.
4. Какво точно е Go Interfaces?
Интерфейсите в Go се различават от тези на другите езици. Go интерфейсите са специален тип, който се използва за изразяване на колекция от един или повече сигнатури на метода.
Интерфейсът се формира чрез използване на термина „тип“, последван от името и ключовата дума интерфейс. Интерфейсите могат да бъдат дефинирани, както следва:
- колекция от методи
- Тип
5. Какво точно представляват низовите литерали?
Низовият литерал е низова константа, получена от свързване на букви. Суровите и интерпретираните низови литерали са двата вида низови литерали. Необработените низови литерали са оградени от обратни отметки (foo) и съдържат неинтерпретирани UTF-8 знаци.
Интерпретираните низови литерали са низове, написани в двойни кавички и включващи всеки знак с изключение на нов ред и непълни двойни кавички.
6. Как се конфигурират работните среди и параметрите в Golang?
Работната среда и настройките могат да бъдат конфигурирани с помощта на JSON, който се използва широко в наши дни. Фактът, че JSON е включен в стандартната библиотека, е основното му предимство.
Стандартната библиотека предоставя методи за писане за предназначените структура на данни, което го прави много четим. Пакетът YAML за Go е допълнителен избор.
7. Опишете пакетите Golang?
Пакетите са папки, които съдържат други пакети и техния изходен код в работното пространство на Go. Свързаните пакети включват целия код, включително променливи, функции и типове, които са записани в изходните файлове.
Всеки изходен файл е част от пакет и go пакетите също могат да се съхраняват в пакети.
8. Какви типове данни се поддържат от Golang?
Golang използва следните видове:
- Начин на доставка
- Булева
- Numeric
- Низ
- Показалка
- функция
- Interface
- Парче
- Структура
- Карта
- Канал
- Array
9. Какво имате предвид под декларация на статичен тип на променлива в Golang?
Компилаторът може да продължи с друга компилация, без да е необходимо да има изчерпателна информация за променливата, благодарение на декларациите на променливи от статичен тип, които го уверяват, че има само една променлива с дадения вид и име.
Декларацията на променлива е важна само по време на компилация; компилаторът изисква реална променлива и декларация, когато се свързва с приложението.
10. Какво представлява декларацията на динамична променлива в Golang?
Компилаторът трябва да обясни вида на променливата в динамичен тип декларация на променлива въз основа на сумата, прехвърлена към нея. Като задължително условие, компилаторът не изисква променлива за статично категоризиране.
11. Как мога да използвам персонализирани пакети в езика за програмиране GO?
Ако създавате отделен проект go get -table за вашата библиотека и той е само за вътрешна употреба, можете да напишете код по този начин.
- Поставете директорията с файлове на библиотеката под директорията на вашия проект.
- Обърнете се към библиотеката по нейния път спрямо корена на работното пространство, което съдържа проекта.
12. Какво точно е goroutine? Как можете да го спрете?
Goroutine е функция или процедура, която се изпълнява едновременно с други goroutine в специална нишка на goroutine. Нишките Goroutine са по-леки от обикновените нишки и повечето приложения на Golang използват едновременно хиляди goroutines.
Гороутина може да бъде спряна чрез предаване на сигнален канал. Goroutines могат да реагират на сигнали само ако са насочени към проверка, следователно включете проверки на разумни места като горната част на вашия for цикъл.
13. Опишете руна.
В Go руната е вграден тип с име int32. Unicode CodePoint служи като руна в Go. Без значение колко байта заема кодовата точка, тя може да бъде представена с руна.
Не се изисква руните да са подредени в низ. Въпреки че можем да конвертираме между низ и руна, те не са едно и също.
14. Какъв е идиомът на Go за представяне на enum?
Езикът за програмиране Golang не поддържа директно enums. Йота и константи могат да се използват за имплементиране на enum. Всеки от следните подходи може да се използва за прилагане на изброен тип:
- въвеждане на нов целочислен тип
- Йота се използва за обозначаване на неговата стойност.
- Чрез предоставяне на функция String към типа
15. Как се проверява типът на променливата по време на изпълнение?
Превключвателят на типа е най-ефективният подход за определяне на типа на променлива в реално време. Променливите се оценяват по тип, а не по стойност, когато се използва превключвателят тип.
Както случай по подразбиране, който се изпълнява, ако никой от случаите не е верен, така и поне един случай, който служи като условен оператор, присъстват във всеки Switch. Можете например да проектирате Type Switch, който определя дали стойността на интерфейса, която включвам, е тип int или string:
16. Опишете Go каналите.
Go канал позволява предаване на данни и прехвърляне между goroutines. Данни от един и същи тип могат да се изпращат през един канал.
Goroutines могат да изпращат и получават данни по един и същ канал поради двупосочния поток от данни на канала.
17. Обяснете методите на Golang.
Golang не предоставя класове, но поддържа методи. Тези методи са идентични с функциите, с изключение на това, че методите на Go имат параметър приемник.
Методът Go има достъп до атрибутите на приемника чрез параметрите на приемника. Go методите, известни също като приемни функции, помагат при представянето на по-точна и реална идея.
18. Какво точно е надпревара за данни?
Най-често срещаното и трудно отстраняване на грешки е надпреварата с данни. Несинхронизираният достъп до споделена памет или изпълнението на няколко goroutine едновременно без отделна обработка води до грешка в надпреварата за данни.
19. Какво точно представлява събирането на боклука Go?
Събирането на боклука преназначава хранилището, което е било динамично присвоено на програма за използване от други обекти. Думата често се отнася до автоматизираното регенериране на събирача на отпадъци за рутинно съхранение, а не до изричен код (предоставен от програмист) за освобождаване на конкретни блокове памет.
Автоматичното събиране на кошчето често започва, когато количеството свободна RAM памет падне под предварително определен праг или след определен брой разпределения.
Елиминирането на елементи, които софтуерът вече не изисква, за да създаде място в паметта за по-динамични обекти, се нарича „събиране на боклук“.
20. Опишете етапите на тестване с помощта на Golang.
Golang осигурява автоматизирано тестване на пакети с помощта на персонализирани пакети за тестване. За да създадете нов пакет, създайте файл, който завършва с _test.go и включва функция TestXxx, където Xxx се замества с името на функцията, която тествате.
Функция, която тества възможностите за влизане, например, ще бъде наречена TestLogin. След това файлът с пакета за тестване се включва в същия пакет като тествания файл.
Тестовият файл ще бъде пропуснат по време на обикновено изпълнение, но ще се стартира, когато въведете командата go test.
21. Какво точно представляват слайсовете в Go?
Срезовете са важен тип данни на Go, който предоставя по-мощен интерфейс за последователности от масивите. Срезовете, за разлика от масивите, се въвеждат единствено в зависимост от елементите, които съдържат (а не броя на елементите).
За да конструирате празен срез с дължина, която не е нула, използвайте вградената ключова дума „make“.
22. Какво точно е heap памет?
Ние съхраняваме динамично формирани обекти и променливи в паметта на купчината. Когато вече не използваме обект, обикновено изтриваме паметта, която той е заемал.
23. Какво точно представляват затварянията на функции?
Затварянията на функциите са тип функционална стойност, която създава променливи с външни препратки. Функцията има достъп и контрол върху стойностите на референтните променливи.
Като илюстрация, всяко затваряне, върнато от adder(), е свързано с различна реферирана сумарна променлива.
24. Какво означава goto изявлението на Golang?
Операторът goto функционира като оператор за скок в Golang. Goto се използва за предоставяне на определен контрол над програмата.
Може да се използва за прескачане на части от код и преминаване направо към необходимите изрази или може да се използва за повторение на част от програмен код при определени обстоятелства.
25. Какво представляват Lvalue и Rvalue в Golang?
L стойност:
- Намеква за място на паметта.
- Може да се променя.
- Той обозначава идентификатор на променлива.
- Може да се появи отляво или отдясно на оператора =.
- В реда x =20, например, x е lvalue и 20 е rvalue.
Rстойност:
- Означава фиксирана стойност.
- Той представлява съхранена в паметта стойност на данните.
- Винаги се появява от дясната страна на оператора =.
- Изразът 10 = 20 е неправилен, например, тъй като има rvalue (10) вляво от оператора =.
26. Какво представляват цикличните конструкции в Go?
В Go има само един цикличен компонент: for цикълът. Цикълът for се състои от три части, които са разделени с точка и запетая:
- Операторът Init се изпълнява преди началото на цикъла. Често това е декларация на променлива, която се появява само в обхвата на цикъла for.
- Преди всяка итерация операторът на условието се оценява като булево, за да се реши дали цикълът трябва да продължи.
- Изявлението за пост се изпълнява в края на всяка итерация.
27. Какво точно представляват шаблоните за проектиране?
Шаблоните за проектиране са части от код, които могат да бъдат използвани повторно за справяне с общи проблеми със софтуера. Ако използвате шаблони за проектиране, вашите проекти ще генерират по-модулен, мащабируем и ефективен софтуер. Шаблоните за проектиране ви помагат да разширите вашите приложения и да работите с екип. Общите модели на проектиране включват фабричен метод, Singleton, Facade и Decorator.
28. Кой е най-добрият пакет Golang за прости файлови операции? Какви допълнителни пакети на Golang се използват за манипулиране на файлове?
Независимият от платформата интерфейс се осигурява от стандартния библиотечен пакет os. Когато взаимодействаме с файлове, ние ги използваме за системни функции. OS интерфейсът е предназначен да бъде последователен във всички операционни системи.
В резултат на това приложенията, които разработваме, работят еднакво на Windows, Linux и Mac. Други стандартни библиотечни пакети на Go включват io, ioutil и bufio. Те работят с файлове и добавят функционалност. Те обаче не са необходими за основни файлови операции. Изискваме само пакета os.
29. Дайте обяснение на обектно-ориентираната архитектура на Golang.
Golang не използва дизайн на клас-обект като конвенционален Обектно-ориентирано програмиране прави. Вместо това сложните структури от данни и поведение се съхраняват в структури и методи.
Структурата е просто схема с план за данните, които структурата ще носи. Структурите могат да се използват за символизиране на идеи от реалния свят, като книги, хора или автомобили.
30. Кои типове преобразуване поддържа Golang?
Когато става въпрос за явно въвеждане, Go е много придирчив. Не се извършва автоматично преобразуване на типа. За да обозначите променлива от един тип към друг, преобразуването на типа трябва да се извърши изрично.
31. Опишете целта и действието на Type assertion.
В GO преобразуването на типове се използва за трансформиране на различни типове. Явна стойност от посочения тип се извлича от стойност на интерфейс чрез твърдение за тип.
32. Какво точно е структурен тип?
Структурата се състои от списък с именувани компоненти, наречени полета. За всяка област има вид и име. Друг начин да се представи структура е като група от свързани свойства. Те са полезни за комбиниране на данни за създаване на записи.
33. Обяснете резервния масив на стойност на срез.
Когато изградим срез, Go произвежда таен масив, наречен backing или underlying array зад кулисите, и новата променлива за тип срез препраща към него. Елементите, а не частта, се съхраняват в резервния масив.
Срезовете са внедрени в Go като структури от данни, наречени заглавки на срезове, които действат като представяне на среза по време на изпълнение.
34. Необходимо ли е да има и двете променливи GOPATH и GOROOT и ако е така, защо?
Обикновено нито едно от двете не е необходимо. Единствената променлива, която трябва да бъде настроена да сочи към дървото или дърветата на пакета Go, е GOPATH.
GOROOT се отнася до корена на началната директория за езика за програмиране Go, но почти сигурно е вече зададен на местоположението на текущата инсталация на Go.
Ако в една и съща система има множество версии на език Go или ако езикът Go е изтеглен като двоичен пакет от интернет или е преместен от друга машина, променливата GOROOT трябва да бъде зададена.
35. Golang позволява ли наследяване?
Наследяването е основно понятие в обектно-ориентираното програмиране, което се отнася до предаване на свойствата на суперкласа към базовия клас.
Тъй като на Golang липсват класове, наследяването се осъществява чрез вграждане на структура и структурите не могат да бъдат директно разширени, трябва да използваме идеята за композиция, за да създадем нови обекти със структурата.
36. Как се появява CGo в Golang?
От Go изходен файл с дефинирани функции, cGo създава Go и C файлове, които могат да бъдат свързани в уникален Go пакет. C се отнася до „псевдо-пакет“, който е различна фраза, генерирана от cGo, за да се отнася до пространството от имена на C.
37. Какъв е типът указател в Golang?
Буквено-цифровите обозначения или етикети за определени области на паметта са известни като променливи. Тип променлива, известна като указател, съхранява адреса на паметта на друга променлива.
Адресът на променливата е представен от стойност на указател или нула, ако променливата все още не е установена. Точно както променливата представлява местоположението на паметта на стойност, указателят сочи към този адрес.
Заключение
Целта на езика за програмиране Golang беше по-бързото създаване на ефективни програми. Компаниите започнаха да използват Golang, когато започнаха да осъзнават неговите изгодни възможности.
Golang е изключително ефективен в запалването на интереса на разработчиците, увеличаването на тяхното базово използване и, следователно, възможностите за работа. Отговорите на гореспоменатите въпроси, които са най-често задаваните по време на интервютата с Golang, могат да ви помогнат да намерите работата в Golang, която търсите.
виждам Серията интервюта на Hashdork за помощ при подготовката на интервюто.
Оставете коментар