차례[숨다][보여 주다]
- 1. 골랑에 대해 설명합니다.
- 2. 바둑은 다른 언어에 비해 어떤 장점이 있나요?
- 3. Golang 프로그래밍에서 fmt는 무엇입니까?
- 4. Go 인터페이스가 정확히 무엇인가요?
- 5. 문자열 리터럴이란 정확히 무엇입니까?
- 6. Golang에서 작업 환경과 매개변수는 어떻게 구성되어 있습니까?
- 7. Golang 패키지를 설명하시겠습니까?
- 8. Golang에서 지원하는 데이터 유형은 무엇입니까?
- 9. Golang에서 변수의 정적 유형 선언이란 무엇을 의미합니까?
- 10. Golang에서 동적 변수 선언이란 무엇입니까?
- 11. GO 프로그래밍 언어에서 사용자 정의 패키지를 어떻게 활용할 수 있습니까?
- 12. 고루틴이란 정확히 무엇입니까? 어떻게 막을 수 있습니까?
- 13. 룬을 설명하십시오.
- 14. 열거형을 나타내는 Go 관용구는 무엇입니까?
- 15. 런타임에 변수 유형을 어떻게 확인합니까?
- 16. Go 채널을 설명합니다.
- 17. Golang 방법을 설명합니다.
- 18. 데이터 경쟁이란 정확히 무엇입니까?
- 19. Go 가비지 컬렉션이란 정확히 무엇입니까?
- 20. Golang을 사용한 테스트 단계를 설명합니다.
- 21. Go에서 슬라이스란 정확히 무엇입니까?
- 22. 힙 메모리란 정확히 무엇입니까?
- 23. 함수 클로저가 정확히 무엇인가요?
- 24. Golang의 goto 문은 무엇을 의미합니까?
- 25. Golang에서 Lvalue와 Rvalue는 무엇입니까?
- 26. Go에서 루핑 구조는 무엇입니까?
- 27. 디자인 패턴이란 정확히 무엇입니까?
- 28. 간단한 파일 작업을 위한 최고의 Golang 패키지는 무엇입니까? 파일 조작에 사용되는 추가 Golang 패키지는 무엇입니까?
- 29. Golang의 객체 지향 아키텍처에 대해 설명하십시오.
- 30. Golang은 어떤 전환 유형을 지원합니까?
- 31. Type assertion의 목적과 동작을 설명하라.
- 32. 구조체 유형이란 정확히 무엇입니까?
- 33. 슬라이스 값의 백업 배열을 설명하십시오.
- 34. GOPATH 및 GOROOT 변수가 모두 있어야 하며, 그렇다면 그 이유는 무엇입니까?
- 35. Golang은 상속을 가능하게 합니까?
- 36. Golang에서 CGo는 어떻게 나타납니까?
- 37. Golang의 포인터 유형은 무엇입니까?
- 결론
종종 알려진 Go 프로그래밍 언어 골양, C에 필적하는 오픈 소스 프로그래밍 언어이지만 빠른 컴파일, 원활한 동시성 및 개발자 편의를 위해 설계되었습니다.
이 언어는 Google에서 개발하고 사용했지만 최근 몇 년 동안 동시 네트워크 프로그래밍에 대한 수요가 증가함에 따라 다른 회사에서도 주목을 받았습니다.
Golang은 신속한 소프트웨어 응용 프로그램 개발, 원활한 동시성, 향상된 런타임 효율성 및 더 적은 결함을 위한 최적의 컴파일을 제공하여 개발자를 위해 개발을 더 쉽게 만듭니다.
Golang은 여러 고용 옵션을 통해 빠르게 인기 있는 기업 프로그래밍 언어가 되고 있습니다. Google, Uber 및 Apple과 같은 많은 IT 거물은 짧은 개발 시간, 학습 용이성, 향상된 런타임, 가비지 수집 및 기타 이점으로 인해 Golang을 좋아합니다.
Golang을 사용하는 회사가 늘어남에 따라 Golang 프로그래머의 필요성이 커집니다. 결론? Golang을 배우면 몇 가지 고용 전망을 제공할 수 있습니다.
Golang 개발자로 일하고 싶다면 면접을 충분히 준비해야 합니다. 이것이 우리가 Golang 인터뷰 질문의 포괄적인 모음을 편집한 이유입니다.
이번 포스트에서는 골랑 면접에 대한 기초 질문부터 고급 면접 질문까지 여러분이 쉽게 면접을 통과할 수 있도록 알려드리겠습니다.
1. 골랑에 대해 설명합니다.
Go는 높은 수준의 범용 프로그래밍 언어 가비지 수집 및 동시 프로그래밍을 지원하며 매우 엄격하고 정적으로 유형이 지정됩니다. Go 애플리케이션은 효과적인 종속성 관리를 제공하는 패키지를 활용하여 생성됩니다.
또한 컴파일 링크 접근 방식을 활용하여 소스 코드에서 실행 가능한 바이너리를 만듭니다. Go는 아름답고 명확한 구문 구조를 가진 간단한 언어입니다.
개발자가 다른 패키지에 대한 요구 사항 없이 문제를 해결하는 데 사용할 수 있는 강력한 표준 라이브러리 세트와 함께 제공됩니다.
2. 바둑은 다른 언어에 비해 어떤 장점이 있나요?
- Go 코드는 지적 실험으로 시작된 다른 언어와 달리 실용성을 염두에 두고 개발되었습니다. 구문과 기능의 모든 선택은 프로그래머의 편의를 염두에 두고 이루어집니다.
- 자동 가비지 수집은 애플리케이션과 동시에 실행되기 때문에 Java나 Python보다 훨씬 효과적입니다.
- 확장성과 동시성은 Golang에서 모두 우선시됩니다.
- Golang은 표준화된 단일 코드 구조를 가지고 있기 때문에 일반적으로 다른 언어보다 이해하기 쉬운 것으로 간주됩니다.
3. Golang 프로그래밍에서 fmt는 무엇입니까?
Format 패키지는 fmt 기호로 표시됩니다. 사용자는 이 기능을 활용하여 기본 텍스트, 값 또는 기타 항목의 서식을 지정하고 인쇄할 수 있습니다.
또한 사용자가 터미널 입력을 수신하고 라이터로 파일에 쓸 수 있으며 맞춤형 멋진 오류 메시지를 작성할 수도 있습니다. 이 패키지는 입력 및 출력 형식 지정에 관한 모든 것입니다.
4. Go 인터페이스가 정확히 무엇인가요?
Go의 인터페이스는 다른 언어의 인터페이스와 다릅니다. Go 인터페이스는 하나 이상의 메서드 서명 컬렉션을 표현하는 데 사용되는 특수 유형입니다.
인터페이스는 "유형"이라는 용어 뒤에 이름과 키워드 인터페이스를 사용하여 구성됩니다. 인터페이스는 다음과 같이 정의할 수 있습니다.
- 메소드 모음
- 타입
5. 문자열 리터럴이란 정확히 무엇입니까?
문자열 리터럴은 문자를 연결하여 생성된 문자열 상수입니다. 원시 및 해석된 문자열 리터럴은 두 가지 유형의 문자열 리터럴입니다. 원시 문자열 리터럴은 백틱(foo)으로 묶이고 해석되지 않은 UTF-8 문자를 포함합니다..
해석된 문자열 리터럴은 큰따옴표 안에 작성되고 개행 문자와 불완전한 큰따옴표를 제외한 모든 문자를 포함하는 문자열입니다.
6. Golang에서 작업 환경과 매개변수는 어떻게 구성되어 있습니까?
요즘 널리 사용되는 JSON을 사용하여 작업 환경 및 설정을 구성할 수 있습니다. JSON이 표준 라이브러리에 포함되어 있다는 사실이 주요 이점입니다.
표준 라이브러리는 의도한 대로 작성 방법을 제공합니다. 데이터 구조, 매우 읽기 쉽게 만듭니다. Go용 YAML 패키지는 추가 선택 사항입니다.
7. Golang 패키지를 설명하시겠습니까?
패키지는 Go 작업 공간에서 다른 패키지와 해당 소스 코드를 보관하는 폴더입니다. 링크된 패키지에는 소스 파일에 작성된 변수, 함수 및 유형을 포함한 모든 코드가 포함됩니다.
모든 소스 파일은 패키지의 일부이며 go 패키지는 패키지 내부에도 저장할 수 있습니다.
8. Golang에서 지원하는 데이터 유형은 무엇입니까?
Golang은 다음 유형을 사용합니다.
- 방법
- 부울
- 숫자
- 끈
- 포인터
- 함수
- 인터페이스
- 일부분
- 구조
- 지도
- 채널
- 배열
9. Golang에서 변수의 정적 유형 선언이란 무엇을 의미합니까?
컴파일러는 정적 유형 변수 선언 덕분에 변수에 대한 포괄적인 정보를 가질 필요 없이 다른 컴파일을 계속할 수 있습니다. 이 선언은 주어진 종류와 이름을 가진 변수가 하나만 있음을 확인시켜줍니다.
변수 선언은 컴파일 중에만 중요합니다. 컴파일러는 응용 프로그램에 연결할 때 실제 변수와 선언이 필요합니다.
10. Golang에서 동적 변수 선언이란 무엇입니까?
컴파일러는 전달된 양에 따라 동적 유형의 변수 선언에서 변수의 종류를 설명해야 합니다. 필수 조건으로 컴파일러는 정적으로 분류하는 변수가 필요하지 않습니다.
11. GO 프로그래밍 언어에서 사용자 정의 패키지를 어떻게 활용할 수 있습니까?
라이브러리에 대해 별도의 go get -table 프로젝트를 만들고 내부 용도로만 사용하는 경우 다음과 같은 코드를 작성할 수 있습니다.
- 프로젝트 디렉토리 아래에 라이브러리 파일 디렉토리를 배치하십시오.
- 프로젝트를 포함하는 작업 공간의 루트에 대한 상대 경로로 라이브러리를 참조하십시오.
12. 고루틴이란 정확히 무엇입니까? 어떻게 막을 수 있습니까?
고루틴은 전용 고루틴 스레드에서 다른 고루틴과 동시에 실행되는 함수 또는 프로시저입니다. 고루틴 스레드는 일반 스레드보다 가볍고 대부분의 Golang 애플리케이션은 수천 개의 고루틴을 동시에 사용합니다.
고루틴은 시그널 채널을 전달함으로써 멈출 수 있습니다. 고루틴은 신호가 확인하도록 지시받은 경우에만 신호에 응답할 수 있으므로 for 루프의 상단과 같은 합리적인 위치에 확인을 포함합니다.
13. 룬을 설명하십시오.
Go에서 룬은 이름이 int32인 기본 제공 유형입니다. 유니코드 CodePoint는 Go에서 룬 역할을 합니다. 코드포인트가 차지하는 바이트 수와 상관없이 룬으로 나타낼 수 있습니다.
룬은 문자열에서 순서대로 필요하지 않습니다. 문자열과 룬을 변환할 수는 있지만 동일하지는 않습니다.
14. 열거형을 나타내는 Go 관용구는 무엇입니까?
Golang 프로그래밍 언어는 열거형을 직접 지원하지 않습니다. 열거형을 구현하는 데 Iota 및 상수를 사용할 수 있습니다. 다음 접근 방식 중 하나를 사용하여 열거형을 구현할 수 있습니다.
- 새로운 정수형 도입
- Iota는 그 가치를 나타내는 데 사용됩니다.
- 유형에 String 함수를 제공함으로써
15. 런타임에 변수 유형을 어떻게 확인합니까?
Type Switch는 실시간으로 변수의 유형을 결정하는 가장 효과적인 방법입니다. 유형 스위치를 사용할 때 변수는 값이 아닌 유형으로 평가됩니다.
모든 케이스가 true가 아닐 때 실행되는 기본 케이스와 조건문 역할을 하는 하나 이상의 케이스가 모든 스위치에 존재합니다. 예를 들어, 내가 포함하는 인터페이스 값이 int 또는 string 유형인지 결정하는 유형 스위치를 설계할 수 있습니다.
16. Go 채널을 설명합니다.
go 채널은 고루틴 간의 데이터 전송 및 전송을 가능하게 합니다. 동일한 유형의 데이터를 하나의 채널을 통해 전송할 수 있습니다.
고루틴은 채널의 양방향 데이터 흐름으로 인해 동일한 채널을 통해 데이터를 보내고 받을 수 있습니다.
17. Golang 방법을 설명합니다.
Golang은 클래스를 제공하지 않지만 메서드는 지원합니다. 이 메서드는 Go 메서드에 수신기 매개 변수가 있다는 점을 제외하고는 함수와 동일합니다.
Go 메서드는 수신기 매개변수를 통해 수신기의 속성에 액세스할 수 있습니다. 수신기 기능이라고도 하는 Go 메서드는 보다 정확하고 실제적인 아이디어를 제시하는 데 도움이 됩니다.
18. 데이터 경쟁이란 정확히 무엇입니까?
가장 일반적이고 어려운 디버그는 데이터 경쟁입니다. 공유 메모리에 대한 동기화되지 않은 액세스 또는 별도의 처리 없이 여러 고루틴을 동시에 실행하면 데이터 경합 오류가 발생합니다.
19. Go 가비지 컬렉션이란 정확히 무엇입니까?
가비지 컬렉션은 다른 개체에서 사용할 수 있도록 프로그램에 동적으로 할당된 저장소의 용도를 변경합니다. 이 단어는 종종 특정 메모리 블록을 해제하기 위한 명시적 코드(프로그래머가 제공)보다는 일상적인 저장을 위한 폐기물 수집기의 자동 재생성을 나타냅니다.
자동 휴지통 수집은 사용 가능한 RAM 양이 미리 정의된 임계값 아래로 떨어지거나 지정된 할당 수 후에 시작되는 경우가 많습니다.
소프트웨어가 더 이상 동적 개체를 위한 메모리 공간을 생성할 필요가 없는 항목을 제거하는 것을 "가비지 컬렉션"이라고 합니다.
20. Golang을 사용한 테스트 단계를 설명합니다.
Golang은 사용자 지정 테스트 제품군을 사용하여 패키지의 자동화된 테스트를 제공합니다. 새 제품군을 설정하려면 _test.go로 끝나는 파일을 만들고 TestXxx 함수를 포함합니다. 여기서 Xxx는 테스트 중인 기능의 이름으로 대체됩니다.
예를 들어 로그인 기능을 테스트하는 함수의 이름은 TestLogin입니다. 그런 다음 테스트 스위트 파일은 테스트 중인 파일과 동일한 패키지에 포함됩니다.
테스트 파일은 일반 실행 중에는 건너뛰지만 go test 명령을 입력하면 실행됩니다.
21. Go에서 슬라이스란 정확히 무엇입니까?
슬라이스는 배열보다 시퀀스에 대해 더 강력한 인터페이스를 제공하는 중요한 Go 데이터 유형입니다. 슬라이스는 배열과 달리 포함된 요소(요소 수가 아님)에 따라 단독으로 유형이 지정됩니다.
길이가 XNUMX이 아닌 빈 슬라이스를 구성하려면 내장된 "make" 키워드를 사용하십시오.
22. 힙 메모리란 정확히 무엇입니까?
동적으로 형성된 객체와 변수를 힙 메모리에 저장합니다. 객체를 더 이상 사용하지 않으면 일반적으로 객체가 차지한 힙 메모리를 삭제합니다.
23. 함수 클로저가 정확히 무엇인가요?
함수 클로저는 외부 참조 변수를 만드는 함수 값 유형입니다. 함수는 참조된 변수의 값에 액세스하고 이를 제어할 수 있습니다.
예를 들어, adder()에 의해 반환된 클로저는 각각 다른 참조된 합계 변수에 연결됩니다.
24. Golang의 goto 문은 무엇을 의미합니까?
goto 문은 Golang에서 점프 문으로 작동합니다. Goto는 프로그램에 대해 지정된 레이블 제어를 제공하는 데 사용됩니다.
코드의 일부를 건너뛰고 필요한 명령문으로 바로 이동하거나 특정 상황에서 프로그램 코드의 일부를 반복하는 데 사용할 수 있습니다.
25. Golang에서 Lvalue와 Rvalue는 무엇입니까?
L값:
- 추억의 장소를 암시합니다.
- 변경될 수 있습니다.
- 변수 식별자를 나타냅니다.
- = 연산자의 왼쪽이나 오른쪽에 나타날 수 있습니다.
- 예를 들어 x = 20 라인에서 x는 lvalue이고 20은 rvalue입니다.
R값:
- 고정된 값을 의미합니다.
- 메모리에 저장된 데이터 값을 나타냅니다.
- 항상 = 연산자의 오른쪽에 발생합니다.
- 예를 들어 = 연산자 왼쪽에 rvalue(10)가 있기 때문에 표현식 20 = 10은 올바르지 않습니다.
26. Go에서 루핑 구조는 무엇입니까?
Go에는 루프 구성 요소가 하나만 있습니다. for 루프입니다. for 루프는 세미콜론으로 구분된 세 부분으로 구성됩니다.
- Init 문은 루프가 시작되기 전에 실행됩니다. for 루프의 범위 내에서만 나타나는 변수 선언인 경우가 많습니다.
- 각 반복 전에 조건문은 부울로 평가되어 루프가 계속되어야 하는지 결정합니다.
- post 문은 각 반복이 끝날 때 실행됩니다.
27. 디자인 패턴이란 정확히 무엇입니까?
디자인 패턴은 일반적인 소프트웨어 문제를 해결하기 위해 재사용할 수 있는 코드 덩어리입니다. 디자인 패턴을 사용하면 프로젝트에서 보다 모듈화되고 확장 가능하며 효율적인 소프트웨어를 생성할 수 있습니다. 디자인 패턴은 앱을 확장하고 팀과 협력하는 데 도움이 됩니다. 일반적인 디자인 패턴에는 Factory Method, 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는 배킹 또는 기본 배열이라는 비밀 배열을 생성하고 새로운 슬라이스 유형 변수는 이를 참조합니다. 슬라이스가 아닌 항목은 지원 배열에 저장됩니다.
슬라이스는 슬라이스의 런타임 표현 역할을 하는 슬라이스 헤더라는 데이터 구조로 Go에서 구현됩니다.
34. GOPATH 및 GOROOT 변수가 모두 있어야 하며, 그렇다면 그 이유는 무엇입니까?
일반적으로 둘 다 필요하지 않습니다. Go 패키지 트리 또는 트리를 가리키도록 설정해야 하는 유일한 변수는 GOPATH입니다.
GOROOT은 Go 프로그래밍 언어의 홈 디렉토리 루트를 참조하지만, 현재 Go 설치 위치로 이미 설정되어 있는 것이 거의 확실합니다.
동일한 시스템에 Go 언어 버전이 여러 개 있거나 인터넷에서 바이너리 패키지로 Go 언어를 다운로드했거나 다른 시스템에서 이동한 경우 GOROOT 변수를 설정해야 합니다.
35. Golang은 상속을 가능하게 합니까?
상속은 상위 클래스의 속성을 기본 클래스로 전달하는 것을 참조하는 객체 지향 프로그래밍의 기본 개념입니다.
Golang에는 클래스가 없기 때문에 상속은 구조체 임베딩을 사용하여 이루어지며 구조체는 직접 확장할 수 없으므로 구조체를 사용하여 새 개체를 만들려면 구성 개념을 사용해야 합니다.
36. Golang에서 CGo는 어떻게 나타납니까?
정의된 기능이 있는 Go 소스 파일에서 cGo는 고유한 Go 패키지로 연결할 수 있는 Go 및 C 파일을 만듭니다. C는 "의사 패키지(pseudo-package)"를 참조하며, 이는 C의 네임스페이스를 참조하기 위해 cGo에서 생성한 다른 구문입니다.
37. Golang의 포인터 유형은 무엇입니까?
특정 메모리 영역에 대한 영숫자 지정 또는 레이블을 변수라고 합니다. 포인터라고 하는 변수 유형은 다른 변수의 메모리 주소를 저장합니다.
변수의 주소는 포인터 값으로 표시되며, 변수가 아직 설정되지 않은 경우 nil입니다. 변수가 값의 메모리 위치를 나타내는 것처럼 포인터는 해당 주소를 가리킵니다.
결론
Golang 프로그래밍 언어의 목표는 효과적인 프로그램을 더 빨리 만드는 것이었습니다. 기업들은 Golang의 유리한 가능성을 깨닫기 시작하면서 Golang을 활용하기 시작했습니다.
Golang은 개발자의 관심을 불러일으키고 기반 사용을 늘리고 결과적으로 취업 기회를 늘리는 데 매우 효과적이었습니다. Golang 인터뷰 중 가장 일반적인 질문인 앞서 언급한 질문에 대한 답변은 원하는 Golang 직업을 찾는 데 도움이 될 수 있습니다.
만나다 해시독의 인터뷰 시리즈 면접 준비에 도움이 됩니다.
댓글을 남겨주세요.