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、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める