目次[隠す][見せる]
- 1. Golang について説明します。
- 2. Go には他の言語よりも優れている点は何ですか?
- 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 アサーションの目的と操作を説明してください。
- 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 のインタビューの質問をまとめたこの包括的なコレクションをまとめました。
この投稿では、Golang 面接の基本的な質問から高度な質問までを紹介するので、簡単に面接を通過できます。
1. Golang について説明します。
Go は高レベルの汎用 プログラミング言語 ガベージ コレクションと並行プログラミングをサポートし、非常に厳密に静的に型付けされます。 Go アプリケーションは、効果的な依存関係管理を提供するパッケージを利用して作成されます。
さらに、コンパイル リンク アプローチを利用して、ソース コードから実行可能なバイナリを作成します。 Go は、美しく明確な構文構造を持つ単純な言語です。
開発者が他のパッケージを必要とせずに問題を解決するために使用できる一連の強力な標準ライブラリが付属しています。
2. Go には他の言語よりも優れている点は何ですか?
- Go コードは、知的実験として始まった他の言語とは対照的に、実用性を念頭に置いて開発されました。 構文と機能のすべての選択は、プログラマーの利便性を考慮して行われます。
- 自動ガベージ コレクションはアプリケーションと同時に実行されるため、Java や Python よりもはるかに効果的です。
- Golang では、スケーラビリティと同時実行性の両方が優先されます。
- Golang は、単一の標準化されたコード構造を持っているため、通常、他の言語よりも理解しやすいと考えられています。
3. Golang プログラミングでは、fmt とは何ですか?
Format パッケージは、シンボル fmt で示されます。 ユーザーはこの機能を利用して、基本的なテキスト、値、またはその他のものをフォーマットして印刷できます。
また、ユーザーは端末入力を受け取り、ライターを使用してファイルに書き込み、特注の派手なエラー メッセージを作成することもできます。 このパッケージは、入力と出力のフォーマットに関するものです。
4. Go インターフェイスとは正確には何ですか?
Go のインターフェイスは、他の言語のインターフェイスとは異なります。 Go インターフェイスは、XNUMX つ以上のメソッド シグネチャのコレクションを表現するために使用される特別な型です。
インターフェイスは、「タイプ」という用語を使用して形成され、その後に名前とキーワード インターフェイスが続きます。 インターフェイスは次のように定義できます。
- メソッドのコレクション
- タイプ
5. 文字列リテラルとは正確には何ですか?
文字列リテラルは、文字を連結して生成される文字列定数です。 生の文字列リテラルと解釈された文字列リテラルは、8 種類の文字列リテラルです。 生の文字列リテラルはバッククォート (foo) で囲まれ、解釈されない UTF-XNUMX 文字が含まれています.
解釈された文字列リテラルは、二重引用符で囲まれ、改行と不完全な二重引用符を除く任意の文字を含む文字列です。
6. Golang では、作業環境とパラメーターはどのように構成されていますか?
作業環境や設定は、最近広く使われている JSON を使用して構成できます。 JSON が標準ライブラリに含まれているという事実が、JSON の主な利点です。
標準ライブラリは、目的の書き込み方法を提供します データ構造、非常に読みやすいです。 Go 用の YAML パッケージは追加の選択肢です。
7. Golang パッケージについて説明してください。
パッケージは、Go ワークスペース内の他のパッケージとそのソース コードを格納するフォルダーです。 リンクされたパッケージには、変数、関数、型など、ソース ファイルに記述されているすべてのコードが含まれています。
すべてのソース ファイルはパッケージの一部であり、go パッケージもパッケージ内に格納できます。
8. Golang でサポートされているデータ型は?
Golang は次の型を使用します。
- 方法
- ブーリアン
- 数値の
- 文字列
- ポインタ
- 演算
- インタフェース
- スライス
- ストラクト
- ゲレンデマップ
- チャネル
- 配列
9. Golang における変数の静的型宣言とはどういう意味ですか?
コンパイラは、静的型変数宣言のおかげで、変数の包括的な情報を必要とせずに別のコンパイルを続行できます。これにより、指定された種類と名前を持つ変数が XNUMX つしかないことが保証されます。
変数宣言は、コンパイル時にのみ重要です。 コンパイラは、アプリケーションに接続するときに実際の変数と宣言を必要とします。
10. Golang の動的変数宣言とは?
コンパイラは、変数に転送された量に基づいて、動的型の変数宣言で変数の種類を説明する必要があります。 必須条件として、コンパイラーは変数を静的に分類する必要はありません。
11. GO プログラミング言語でカスタム パッケージを利用するにはどうすればよいですか?
ライブラリ用に別の go get -table プロジェクトを作成していて、それが内部使用のみである場合は、次のようなコードを記述できます。
- プロジェクトのディレクトリの下にライブラリ ファイル ディレクトリを配置します。
- プロジェクトを含むワークスペースのルートに相対するパスでライブラリを参照します。
12.ゴルーチンとは正確には何ですか? どうすればそれを止めることができますか?
ゴルーチンは、専用のゴルーチン スレッドで他のゴルーチンと同時に実行される関数またはプロシージャです。 ゴルーチン スレッドは通常のスレッドよりも軽く、ほとんどの Golang アプリケーションは数千のゴルーチンを同時に使用します。
ゴルーチンは、シグナルチャネルを渡すことで停止できます。 ゴルーチンは、チェックするように指示された場合にのみシグナルに応答できるため、for ループの先頭などの適切な場所にチェックを含めます。
13.ルーンを説明してください。
Go では、ルーンは int32 という名前の組み込み型です。 Unicode CodePoint は、Go のルーンとして機能します。 コードポイントが占めるバイト数に関係なく、ルーンで表すことができます。
ルーン文字は、文字列に並べる必要はありません。 文字列とルーン文字を変換することはできますが、同じではありません。
14. 列挙型を表す Go のイディオムは何ですか?
Golang プログラミング言語は列挙型を直接サポートしていません。 Iota と定数を使用して、列挙型を実装できます。 次のアプローチのいずれかを使用して、列挙型を実装できます。
- 新しい整数型の導入
- Iota はその値を示すために使用されます。
- 型に文字列関数を提供することによって
15. 変数の型は実行時にどのようにチェックされますか?
タイプ スイッチは、変数のタイプをリアルタイムで決定するための最も効果的な方法です。 タイプ スイッチを使用すると、変数は値ではなくタイプで評価されます。
いずれのケースも真でない場合に実行されるデフォルト ケースと、条件ステートメントとして機能する少なくとも XNUMX つのケースの両方が、すべてのスイッチに存在します。 たとえば、含まれるインターフェイス値が int 型か string 型かを判断する Type Switch を設計できます。
16. Go チャネルについて説明します。
go チャネルは、ゴルーチン間のデータ転送と転送を可能にします。 同じタイプのデータを XNUMX つのチャネルで送信できます。
チャネルの双方向データフローにより、ゴルーチンは同じチャネルを介してデータを送受信できます。
17. Golang メソッドの説明。
Golang はクラスを提供しませんが、メソッドをサポートします。 これらのメソッドは関数と同じですが、Go メソッドにはレシーバー パラメーターがある点が異なります。
Go メソッドは、レシーバー パラメーターを介してレシーバーの属性にアクセスできます。 受信関数とも呼ばれる Go メソッドは、より正確で現実世界のアイデアを提示するのに役立ちます。
18. データ競合とは正確には何ですか?
最も一般的で困難なデバッグは、データ競合です。 共有メモリへの非同期アクセス、または個別の処理なしで同時に複数のゴルーチンを実行すると、データ競合エラーが発生します。
19. Go ガベージ コレクションとは正確には何ですか?
ガベージ コレクションは、プログラムに動的に割り当てられた記憶域を、他のオブジェクトが使用できるように再利用します。 この言葉は、特定のメモリ ブロックを解放するための明示的なコード (プログラマによって提供される) ではなく、ルーチン ストレージ用の廃棄物収集装置の自動再生成を指すことがよくあります。
空き RAM の量が事前定義されたしきい値を下回ったとき、または指定された数の割り当て後に、自動ごみ収集が頻繁に開始されます。
より動的なオブジェクトのためにメモリ内に場所を作成するためにソフトウェアが必要としなくなったアイテムを削除することを、「ガベージ コレクション」と呼びます。
20. Golang を使用したテストの段階を説明してください。
Golang は、カスタム テスト スイートを使用したパッケージの自動テストを提供します。 新しいスイートを作成するには、_test.go で終わり、TestXxx 関数を含むファイルを作成します。ここで、Xxx はテストしている機能の名前に置き換えられます。
たとえば、ログイン機能をテストする関数は、TestLogin という名前になります。 テスト スイート ファイルは、テスト対象のファイルと同じパッケージに含まれます。
テストファイルは、通常の実行ではスキップされますが、go test コマンドを入力すると実行されます。
21. Go のスライスとは正確には何ですか?
スライスは、配列よりもシーケンスに対して強力なインターフェイスを提供する重要な Go データ型です。 配列とは異なり、スライスは (要素の数ではなく) 含まれる要素に応じてのみ型付けされます。
長さがゼロでない空のスライスを作成するには、組み込みの「make」キーワードを使用します。
22. ヒープメモリとは正確には何ですか?
動的に形成されたオブジェクトと変数をヒープ メモリに格納します。 オブジェクトを使用しなくなった場合、通常、占有していたヒープ メモリを削除します。
23. 関数クロージャーとは正確には何ですか?
関数クロージャーは、外部参照変数を作成する関数値の一種です。 この関数は、参照された変数の値にアクセスして制御できます。
例として、 adder() によって返されるクロージャーは、参照される異なる合計変数にそれぞれ関連付けられています。
24. Golang の goto ステートメントはどういう意味ですか?
goto ステートメントは、Golang の jump ステートメントとして機能します。 Goto は、プログラムに対して指定されたラベル コントロールを提供するために使用されます。
コードの一部をスキップして必要なステートメントに直接移動するために使用したり、特定の状況でプログラム コードの一部を繰り返すために使用したりできます。
25. Golang では、Lvalue と Rvalue は何ですか?
左辺値:
- 思い出の場所を暗示しています。
- 変更可能です。
- 変数識別子を示します。
- = 演算子の左側または右側に発生する可能性があります。
- たとえば、行 x =20 では、x は左辺値であり、20 は右辺値です。
右辺値:
- 固定値を意味します。
- これは、メモリに格納されたデータ値を表します。
- = 演算子の右側に常に発生します。
- たとえば、式 10 = 20 は正しくありません。たとえば、= 演算子の左側に右辺値 (10) があるためです。
26. Go のループ構造とは?
Go にはループ コンポーネントが XNUMX つしかありません。それは for ループです。 for ループは、セミコロンで区切られた XNUMX つの部分で構成されています。
- 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 アサーションの目的と操作を説明してください。
GO では、型変換を使用して異種の型を変換します。 指定された型の明示的な値は、型アサーションによってインターフェイス値から抽出されます。
32.構造体型とは正確には何ですか?
構造体は、フィールドと呼ばれる名前付きコンポーネントのリストで構成されます。 すべてのフィールドには種類と名前があります。 構造体を理解するもう XNUMX つの方法は、接続されたプロパティのグループです。 データを組み合わせてレコードを作成するのに役立ちます。
33. スライス値のバッキング配列を説明してください。
スライスを作成すると、Go はバックグラウンドまたは基になる配列と呼ばれる秘密の配列をバックグラウンドで生成し、新しいスライス型変数がそれを参照します。 バッキング配列には、スライスではなくアイテムが格納されます。
スライスは、スライスのランタイム表現として機能するスライス ヘッダーと呼ばれるデータ構造として Go に実装されます。
34. GOPATH 変数と GOROOT 変数の両方が必要ですか? もしそうなら、それはなぜですか?
通常、どちらも必要ありません。 Go パッケージ ツリーまたは複数のツリーを指すように設定する必要がある唯一の変数は GOPATH です。
GOROOT は Go プログラミング言語のホーム ディレクトリのルートを指しますが、ほとんどの場合、現在の Go インストールの場所に既に設定されています。
同じシステムに多数の Go 言語バージョンがある場合、または Go 言語がインターネットからバイナリ パッケージとしてダウンロードされた場合、または別のマシンから移動された場合は、GOROOT 変数を設定する必要があります。
35. Golang は継承を有効にしますか?
継承は、オブジェクト指向プログラミングの基本的な概念であり、スーパークラスのプロパティを基本クラスに渡すことを指します。
Golang にはクラスがなく、構造体の埋め込みを使用して継承が行われ、構造体を直接展開することはできないため、コンポジションの考え方を使用して、構造体で新しいオブジェクトを作成する必要があります。
36. Golang では、CGo はどのように表示されますか?
cGo は、機能が定義された Go ソース ファイルから、独自の Go パッケージに連結できる Go ファイルと C ファイルを作成します。 C は「疑似パッケージ」を指します。これは、C の名前空間を参照するために cGo によって生成される別のフレーズです。
37. Golang のポインター型は何ですか?
特定のメモリ領域の英数字の指定またはラベルは、変数として知られています。 ポインターと呼ばれる変数の型は、別の変数のメモリ アドレスを格納します。
変数のアドレスはポインター値で表されます。変数がまだ確立されていない場合は nil です。 変数が値のメモリ位置を表すように、ポインタはそのアドレスを指します。
まとめ
Golang プログラミング言語の目標は、効果的なプログラムをより迅速に作成することでした。 企業は、Golang の有利な可能性に気づき始めたため、Golang を利用し始めました。
Golang は、開発者の興味をかき立て、基本的な使用を増やし、その結果、雇用機会を増やすのに非常に効果的です。 前述の質問 (Golang の面接で最もよく聞かれる質問) への回答は、希望する Golang の仕事に就くのに役立ちます。
見る Hashdorkのインタビューシリーズ 面接準備のお手伝い。
コメントを残す