Go

고급 Go

컴파일러 내부, runtime, scheduler, cgo, unsafe 패키지, assembly, build tags

20 면접 질문·
Senior
1

컴파일러가 생성한 assembly 코드를 검사할 수 있는 Go 툴체인 도구는 무엇입니까?

답변

go tool compile -S 명령은 Go 컴파일러가 생성한 assembly 코드를 표시합니다. 이 도구는 컴파일러 최적화를 이해하고 성능이 중요한 코드를 분석하는 데 필수적입니다. 표준 빌드 중에 동일한 결과를 얻기 위해 go build -gcflags=-S를 사용할 수도 있습니다.

2

Go에서 unsafe 패키지의 주요 목적은 무엇입니까?

답변

unsafe 패키지를 사용하면 Go의 타입 시스템을 우회하여 저수준 메모리 작업을 수행할 수 있습니다. Pointer, Sizeof, Alignof, Offsetof와 같은 함수를 노출하여 메모리 주소를 직접 조작할 수 있습니다. C 코드와의 상호 운용이나 중요한 최적화와 같은 특정 경우를 제외하고는 사용이 권장되지 않습니다.

3

Go scheduler(GPM)는 goroutine 실행을 어떻게 구성합니까?

답변

Go scheduler는 GPM 모델을 사용합니다. G는 goroutine, P는 논리 프로세서(GOMAXPROCS), M은 시스템 스레드를 나타냅니다. 각 P는 goroutine의 로컬 run queue를 가집니다. M이 syscall에서 차단되면 P는 분리되어 다른 M에 연결되어 goroutine 실행을 계속할 수 있습니다. 이 설계는 최소한의 context switch로 효율적인 스케줄링을 가능하게 합니다.

4

cgo란 무엇이며 어떤 상황에서 사용해야 합니까?

5

대상 OS 또는 아키텍처에 따라 코드를 조건부로 컴파일할 수 있는 지시어는 무엇입니까?

+17 면접 질문

다음 면접을 위해 Go을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기