46 よくある DevOps インタビューの質問と回答 [2023]
公開: 2023-01-12次回の DevOps 面接でどのような質問をするべきか知りたいですか? 便利なガイドから始めましょう。
DevOps という用語は 2007 ~ 2008 年に造語されましたが、現在ではソフトウェア エンジニアリングで最も人気のあるキャリアの 1 つになっています。 DevOps は、開発と運用のあらゆる側面に影響を与える文化的な変化です。
2 つのチーム (開発と運用) は、計画と構築から監視と反復まで協力して作業します。 これらは、DevOps エンジニアの役割を求める場合に遭遇する可能性が高い最も一般的な質問です。
DevOps とは何ですか?
DevOps は、開発と運用の短縮形です。 このソフトウェア エンジニアリング プラクティスは、開発チームと運用チームを結び付けて、プロジェクトのすべての段階を自動化します。 DevOps チームは、リソース管理、コミュニケーション、およびチームワークに重点を置いています。
DevOps 方法論のさまざまなフェーズとは
- 継続的な開発。 これは、計画とコーディングのフェーズです。
- 継続的インテグレーション。 これは、開発チームがさまざまなコンポーネントを統合し、コードが壊れないようにするフェーズです。
- 継続的なテスト。 これは、事前にスケジュールされた自動テスト フェーズです。
- 継続的な展開。 このフェーズでは、アプリ全体のパフォーマンスに影響を与えない手間のかからない開発が保証されます。
- 継続的な監視。 このフェーズにより、アプリの全体的な有効性が保証されます。
- 継続的なフィードバック。 エンド ユーザーから報告された問題とパフォーマンスが分析されます。
- 継続的な操作。 開発者が製品のより良いバージョンを構築し、問題を迅速に検出できるようにします。
DevOps の利点は何ですか?
- より速く、より良い製品配送
- スケーラビリティの向上
- 迅速な問題解決
- リソース使用率の向上
DevOps ツールの名前を挙げる
- Jenkins などの継続的インテグレーション ツール
- Git などのバージョン管理
- Maven などのビルドツール
- Chef などの構成管理ツール
- Docker などのコンテナ プラットフォーム
DevOps KPI を挙げてください
- 導入頻度
- 音量を変える
- 展開時間
- 導入失敗率
- 時間検出
- 欠陥回避率
DevOps とアジャイルの違い
DevOps は、ソフトウェアの開発と保守に携わるすべてのチーム メンバー間のコラボレーションを促進する文化です。
アジャイルは、チームの生産性を高め、変化するニーズに基づいてリリースを推進するために設計された開発方法論です。
DevOps における AWS の役割とは
AWS には、企業がアプリケーションを確実かつ迅速に開発するのに役立つ一連の柔軟なサービスがあります。 AWS のサービスは、コードのデプロイ、インフラストラクチャのプロビジョニングと簡素化、ソフトウェア リリース プロセスの自動化、インフラストラクチャのパフォーマンスのモニタリングを簡素化します。
SSH の用途は何ですか?
SSH (Secure Shell) は、異なるコンピューター間の安全な接続を可能にするプロトコルです。 SSH は、提供などのさまざまな目的を果たします。 強力な認証、強力な暗号化、接続の完全性の維持、強力な接続とセキュリティ。
継続的インテグレーションとは
継続的インテグレーションにより、ソフトウェア開発者はコードを中央リポジトリにマージできます。 その後、コードは自動化されたビルドとテストに使用されます。
構成管理とは
これは、システム/製品のパフォーマンスと、そのライフサイクル全体にわたる機能的および物理的属性の一貫性を確立および維持するシステムのエンジニアリング プロセスです。
連続テストとは?
これは、開発が進むにつれて事前にスケジュールされ、自動化されたアプリケーションのテストです。
ギットとは?
これは、ソース コード管理用のオープン ソースで無料のツールです。 このツールは、小規模および大規模なプロジェクトを処理するように設計されています。
基本的な Git コマンドについて言及する
- Git クローン
git clone <https://name-of-the-repository-link>
- Git ブランチ
git branch <branch-name>
- Git チェックアウト
git checkout <name-of-your-branch>
- Git 追加
git add <file>
- Git コミット
git commit -m "commit message"
- Git プッシュ
git push <remote> <branch-name>
- Gitプル
git pull <remote>
Git マージと Git リベースの違いを説明する
Git マージ コマンドを使用すると、開発者は、それぞれのブランチのコミットのログを変更せずに、さまざまな Git ブランチをマージできます。
Git rebase コマンドを使用すると、開発者はあるブランチから別のブランチへの変更を統合でき、プロセスが完了するとログが変更されます。
Git fetch と Git pull の違いを説明する
Git fetch は、オリジナルから最新のメタデータを取得/チェックするように git に指示します。 ただし、ファイル転送は行わず、チェックのみを行います。
Git プルは、リモート リポジトリからローカル プロジェクトに変更をチェックして取り込みます。
マージ競合とは何ですか?
競合するコミットを持つ 2 つのブランチをマージすると、マージの競合が発生します。 通常、マージの競合は、異なる開発者が同じコード行またはファイルを変更したときに発生します。
バージョン管理とは何ですか? さまざまなタイプは何ですか?
バージョン管理 (ソース管理) は、ソフトウェア コードへの変更を追跡および管理するプロセスです。
これらはさまざまな種類のバージョン管理です。
- 一元化– サーバー上にソース コードの単一の「中央」コピーがあり、すべての変更が「中央」コピーにコミットされます。 Subversion (SVN) と Perforce は、集中型バージョン管理の例です。
- 分散型 (DVCS) - プロジェクトのすべてのファイルを保存するための中央サーバーがありません。 Git と Mercurial は DVCS の例です。
バージョン管理を使用する利点は何ですか?
- 開発者が効率性と俊敏性を維持するのに役立ちます
- プロジェクト/ファイルへのすべての変更の完全なログを提供します
- トレーサビリティの向上
- マージと分岐の管理に役立ちます
- コラボレーションを可能にします
分岐とは?
分岐とは、メイン リポジトリの別の/新しいバージョンを作成することを指します。 ブランチを使用すると、メイン ブランチに影響を与えることなく、プロジェクトのさまざまな部分に取り組むことができます。
分岐戦略とは
マージ戦略は、ソフトウェア開発チームがコードを作成、マージ、および展開するときに採用する方法論です。 このようなアプローチにより、バグや間違いは、メイン プロジェクトにマージされる前の分岐段階で修正されます。
自動化テストとは何ですか? DevOps でテストを自動化する方法は?
自動化テストは、コードを自動的にレビューして検証する手法です。 自動化テストは、機能 (ビジネス ロジック)、コード スタイル、およびユーザー エクスペリエンスの品質基準が満たされているかどうかを確認するために行われます。
自動化テストは、Selenium や Katalon などのツールを使用して行われます。
ジェンキンスファイルとは?
Jenkinsfile は、Jenkins パイプラインの定義を含むテキスト ファイルです。 Jenkinsfile がソース管理リポジトリにチェックインされます。 その用途のいくつかは次のとおりです。 これにより、パイプラインの監査証跡が可能になり、パイプラインでのコードのレビューと反復が可能になり、パイプラインで信頼できる唯一の情報源が提供されます。
Jenkins のアーキテクチャについて説明する
Jenkins には、マスター/スレーブ アーキテクチャがあります。 これは、1 人の「マスター」に対して多数の「スレーブ」が働いていることを意味します。 したがって、Jenkins Distributed Build は、異なる環境で同一のテストを実行し、結果を収集してマスター ノードで組み合わせて監視することができます。
上位の Jenkins プラグインは何ですか?
- Jenkins 用の Blue Ocean プラグイン
- Jenkinsのメーラープラグイン
- Jenkins の Git プラグイン
- Jenkins 用の Jira プラグイン
- Jenkins の Docker プラグイン
- Jenkins 用 Maven 統合プラグイン
- Jenkins 用の Kubernetes プラグイン
- Jenkins 用 SonarQube プラグイン
- Jenkins 用 Amazon EC2 プラグイン
セレン IDE とは何ですか?
Selenium IDE は、テスト ケースのブラウザ操作を記録するツールです。 Selenium 統合開発環境でエラーが発生したときに、ブレークポイントを設定し、変数をチェックして一時停止することができます。
さまざまな Selenium コンポーネントとは何ですか?
- セレンIDE
- セレンRC
- Selenium WebDriver
- セレングリッド
Selenium でのさまざまな種類のテストは何ですか?
- エンドツーエンドのテスト
- 回帰試験
- システムテスト
- 性能試験
- 互換性テスト
Selenium のさまざまな例外は何ですか?
- ElementNotSelectableException
- NoAlertPresentException
- InvalidSelectorException
- NoSuchSessionException
- StaleElementReferenceException
- NoSuchWindowException
- NoSuchFrameException
- NoSuchElementException
- TimeoutException
- ElementNotVisibleException
WebDriver の driver.close() と driver.quit() とは何ですか?
driver.close()
コマンドは、フォーカスのあるブラウザー ウィンドウを閉じます。 開いているブラウザーが 1 つだけの場合は、ブラウザー セッション全体が閉じられます。
driver.quit()
コマンドは、ブラウザーのポップアップ、タブ、およびウィンドウを含むブラウザー セッション全体を閉じます。
Dockerfile とは何ですか?
Dockerfile は、ユーザーがイメージを組み立てるためにコマンド ラインで使用できるすべてのコマンドを含むテキスト ドキュメントです。
docker イメージと docker コンテナーの違い
Docker イメージは、ソース コード、ツール、ライブラリ、外部依存関係、および任意のオペレーティング システムまたはプラットフォームでアプリケーションを正常に実行するために必要なその他のファイルで作成された読み取り専用のテンプレートです。
Docker コンテナーは、Docker イメージ テンプレートを実行するボックスです。
Docker のアーキテクチャを説明する
Docker はクライアント サーバー アーキテクチャに従い、Docker クライアント、Docker ホスト、Docker レジストリで構成されます。
Docker クライアントは、REST API とコマンドを使用してサーバー (Docker Daemon) と通信します。
Docker クライアントは CLI を使用してこれらのコマンドを実行します
docker build docker pull docker run
- Docker Hostは、アプリケーションを実行および実行するための環境を提供します。 docker デーモン、ストレージ、イメージ、コンテナー、およびネットワークで構成されます。
- Docker レジストリは、Docker イメージを管理および保存します。
Docker をサポートするクラウド プラットフォーム
Docker ホスティングをサポートするプラットフォームは次のとおりです。
- 鎌寺
- Google クラウド ラン
- A2ホスティング
- スタックパス
- Sloppy.io
- アマゾン ECS
- マイクロソフト アズール
- HostPresto
- バルト
ナギオスとは?
Nagios は、IT インフラストラクチャ全体を監視して、ビジネス プロセス、システム、サービス、およびアプリケーションが適切に機能していることを確認するツールです。
Nagios はどのように機能しますか?
- モニタリング。 IT スタッフは、ネットワーク プロトコル、システム メトリック、アプリケーション、ネットワーク インフラストラクチャ、サービス、およびサーバーを監視するように Nagios を構成します。
- アラート。 重要なコンポーネントに障害が発生すると、Nagios はアラートを送信します。 アラートは、SMS、カスタム コード、または電子メールで送信できます。
- 応答。 IT チームは、アラートとアクションを確認します。
- レポート。 後で確認できるように、通知、停止、アラート応答、およびイベントの履歴レコードを提供するレポートが生成されます。
- メンテナンス。 スケジュールされたダウンタイムにより、メンテナンス中にアラートが送信されなくなります。
Nagios のプラグインについて言及する
- 公式の Nagios プラグイン- 公式チームによって開発および保守されています
- カスタム プラグイン- 個人/企業が個々のニーズに合わせて作成
- コミュニティ プラグイン- Nagios コミュニティのメンバーによって開発されました
Nagios による仮想化について説明する
Nagios は、さまざまな仮想化プラットフォームでさまざまなメトリックを監視する機能を提供します。 Nagios は、Xen、Amazon EC2、VMware、Microsoft Virtual PC などのさまざまな仮想化プラットフォームから実行できます。
Nagios は監視にどのように役立ちますか?
Nagios は NRPE、check_mk、SNMP などのエージェントを使用してサーバーの統計を収集し、メトリックが事前定義されたしきい値を超えた場合にアラートを送信します。
Nagios は監視目的でどのポート番号を使用しますか?
SNMP、ポート 161 および 162
Nagios ネットワーク アナライザーとは何ですか?
Nagios ネットワーク アナライザーは、ビジネス オペレーションを中断する前に、ユーザーが異常な動作、停止、およびセキュリティの脅威をプロアクティブに解決できるようにする、sflow データ分析ソフトウェアです。 この商用グレードのツールは、ネットワーク トラフィックと IT インフラストラクチャに関する広範な洞察を提供します。
Nagios の継承と再帰に影響する変数
- 名前- オブジェクト変数/プロパティを継承できるテンプレート「名前」。
- 用途指定 変数/プロパティを継承するテンプレートのオブジェクト名。
- Registerは、テンプレート オブジェクトの名前を Nagios に「登録」する必要があるかどうかを示します。
パペットとは?
Puppet は、ソフトウェア構成の管理と展開のためのオープンソース ツールです。
Puppet マニフェストとは何ですか?
Puppet マニフェストは、リソースの構成方法を説明する Puppet 構成言語を含むファイルです。
パペットコードとは?
Puppet コードは宣言型コードです。つまり、そこに到達するために必要な手順ではなく、システムの望ましい状態を使用して記述します。
シェフとは?
Chef は、インフラストラクチャをコードに変換する構成管理ツールです。 このツールは、手動プロセスではなくコードの記述に重点を置いています。
シェフはどのように機能しますか?
Chef の作業は、システム管理者または開発者が自動化するタスクを定義したときに始まります。 その後、クックブックとレシピ (ドメイン固有言語で記述された小さなプログラム) が取り込まれ、Test Kitchen、ChefSpec、Foodcritic などのさまざまなツールを使用してテストされます。
クックブックとレシピが期待どおりに機能している場合は、ナイフとシェフのコマンドライン ツールを使用して Chef サーバーにデプロイされます。 Chef デプロイメント プロセスには、Chef サーバー、ワークステーション、およびノードがあります。 3000 以上のクックブック テンプレートから選択して、ニーズに合わせてカスタマイズできます。 その後、シェフが残りの作業を行います。
概要
Glassdoor によると、米国における DevOps エンジニアの平均年収は 104,281 ドルです。 DevOps は新しいキャリアですが、今では、この役割を採用し、専門家に不可欠なスキルを身に付けるためのさまざまなコースを公開する企業が増えています。 上記は、DevOps の面接で遭遇する可能性が高いいくつかの質問です。
また、DevOps を学習するための優れたオンライン コースを検討することもできます。