
Goroutine の基礎
Goroutine、go キーワード、sync.WaitGroup、runtime.GOMAXPROCS、goroutine リーク
20 面接問題·
Junior
1Go における goroutine とは何ですか?
1
Go における goroutine とは何ですか?
回答
goroutine は他の関数と並行して実行される関数であり、OS ではなく Go ランタイムによって管理されます。OS スレッド(数 MB)と比べて非常に軽量です(初期スタックは数 KB)。Go スケジューラは数千、さらには数百万の goroutine を限られた数の OS スレッド上に多重化できるため、Go では並行処理が非常に扱いやすくなっています。
2Go で新しい goroutine を起動するにはどうすればよいですか?
2
Go で新しい goroutine を起動するにはどうすればよいですか?
回答
go キーワードに関数呼び出しを続けると、新しい goroutine が起動します。たとえば 'go myFunction()' や、無名関数の場合は 'go func() { ... }()' のように書きます。goroutine は呼び出し元のコードと並行して即座に実行されます。注意点として、main 関数は起動した goroutine の終了を自動的には待ちません。
3goroutine と OS スレッドの主な違いは何ですか?
3
goroutine と OS スレッドの主な違いは何ですか?
回答
goroutine の初期スタックは約 2 KB ですが、OS スレッドは通常 1〜2 MB を必要とします。Go runtime はユーザー空間で goroutine の scheduling を管理し(M:N scheduling)、数千の goroutine を数本の OS スレッド上に多重化します。これにより、リソースに制限される OS スレッドとは異なり、システムに負荷をかけずに数百万の goroutine を作成できます。
4
メインプログラムが goroutine の終了前に終了するとどうなりますか?
5
Go runtime は goroutine の実行をどのように管理しますか?
+17 面接問題
その他のGo面接トピック
Goの基礎
Junior
25問Goのデータ構造
Junior
20問Go のインターフェース
Junior
18問エラー処理
Junior
20問Channels
Junior
22問Go Modules
Mid-Level
18問HTTP サーバー
Mid-Level
24問HTTPクライアント
Mid-Level
18問JSON エンコーディング
Mid-Level
20問Database/SQL
Mid-Level
22問context パッケージ
Mid-Level
20問Testing
Mid-Level
22問並行処理パターン
Mid-Level
24問同期プリミティブ
Mid-Level
22問Go Web フレームワーク
Mid-Level
20問REST API 設計
Mid-Level
20問gRPC
Mid-Level
22問Reflection
Senior
20問メモリ管理
Senior
24問パフォーマンス最適化
Senior
22問Generics
Senior
20問Go Design Patterns
Senior
24問Microservices
Senior
24問セキュリティと認証
Senior
24問Docker & Containerization
Senior
20問Kubernetes Basics
Senior
22問高度な Go
Senior
20問CLI開発
Senior
20問