Snowflakeの面接では、どのような質問が出ますか?
文責 Aaron Cao · 更新

アーキテクチャ(ストレージとコンピュートの分離、仮想ウェアハウス、クラウドサービス層)、ストレージ(マイクロパーティション、クラスタリングキー、プルーニング)、データライフサイクル(Time Travel、ゼロコピークローニング、Snowpipe、ストリームとタスク)に関する質問に加え、ウェアハウスが過大である、またはクエリのスキャン量が多すぎる場合のコストやパフォーマンス問題を想定しましょう。暗記よりも論理的な説明が評価されます。
Snowflake面接の冒頭では、どのようなアーキテクチャ質問が出ますか?
Snowflakeの面接は、後続のすべての質問の基礎となるアーキテクチャから始まります。3つの層を自分の言葉で説明できるようにしましょう。クラウドオブジェクトストレージ内の圧縮された列指向マイクロパーティションにデータを保持するストレージ層、クエリを実行する独立したクラスターである仮想ウェアハウスから成るコンピュート層、そして認証、メタデータ、クエリの解析と最適化、トランザクションを処理するクラウドサービス層です。最初の追加質問は、ストレージとコンピュートの分離がなぜ重要かです。答えは独立性にあります。複数のチームが同じプロセッサーを奪い合うことなく、同じデータに対して各自のウェアハウスを実行でき、コンピュート料金はウェアハウスの稼働中にのみ発生します。
- 仮想ウェアハウス。サイズ、自動停止と自動再開、同時実行性を高めるマルチクラスターウェアハウス。追加質問:ウェアハウスを大きくすると何が高速化され、何は高速化されないでしょうか?
- 結果キャッシュとメタデータキャッシュ。同一のクエリを繰り返すと結果キャッシュから応答できます。それが無効になる条件を説明しましょう。
- エディションとアカウント。アクセス制御に使うロール、ユーザー、ロール階層。ユーザーではなくロールに権限を付与する方式が拡張しやすい理由を説明できるようにしましょう。
- 半構造化データ。
VARIANT型、JSONの保存方法とクエリ方法、列へフラット化すべき場面。
仕組みと、その結果を1つ答えましょう。コンピュートを独立して拡張できるというだけでは標語にすぎません。大規模スキャンには大きなウェアハウスが有効でも、レイテンシーに制約される小さなクエリには効果がないと説明できる水準を、面接官は求めています。
ストレージとパフォーマンスについて、何を準備すべきですか?
Snowflakeを日常的に使っていても、普段書くSQLより深い質問が出るのではないかと不安かもしれません。実際に出るため、ここでは通常の質問順にストレージモデルを整理し、各項目の追加質問も示します。
- マイクロパーティション。データは変更不能なチャンクに保存され、各列の値の範囲に関するメタデータが付与されます。追加質問:オプティマイザーはそのメタデータを使って、どのようにパーティションをスキップするでしょうか?また、プルーニングは何に依存するでしょうか?
- クラスタリング。自然なクラスタリングはロード順から生じます。クラスタリングキーは大規模テーブルを再編成し、その列に対するフィルターで効率よくプルーニングできるようにします。追加質問:クラスタリングが無条件の利点ではなくコストとなるのはなぜでしょうか?また、テーブルに必要かどうかをどのように判断するでしょうか?
- クエリプロファイル。クエリが遅いときに確認する箇所:全パーティション数に対するスキャン済みパーティション数、ローカルまたはリモートストレージへのスピル、急増する結合結果。
- マテリアライズドビューと検索最適化。それぞれが何を高速化し、どのような保守コストを追加するか。
- Time TravelとFail-safe。保持期間内で、変更前の状態のデータを照会または復元します。保持期間は設定項目でありコストにも影響すること、そしてFail-safeの用途を説明しましょう。
- ゼロコピークローニング。クローンは、どちらか一方が変更されるまで基盤となるマイクロパーティションを共有します。そのため、大規模テーブルのクローニングは高速で、作成直後には追加費用がかかりません。
すべての機能について、どのようなコストがかかるかを述べましょう。Snowflakeの料金を実際に支払う企業の面接官は、機能名を覚えていること以上に、その観点を自然に示せるかに注目します。
パイプラインとコストに関するシナリオ質問は、どのように進みますか?
シニア向けの面接ループでは、具体的な状況が提示されます。代表例として、保険会社の分析プラットフォーム担当職を受けるデータエンジニアが、データ量はほとんど増えていないのにSnowflakeの月額料金が倍増したと告げられる場面があります。優れた回答では、最も多くのクレジットを消費したウェアハウス、自動停止が設定されていてアイドル状態のウェアハウスへの課金が止まるか、スケジュール済みジョブが過大なウェアハウスで実行されていないか、繰り返し表示されるダッシュボードが結果キャッシュを利用できているか、クラスタリングされていない列でフィルタリングするために一部のクエリがテーブル全体をスキャンしていないか、という順で調査します。面接官が評価するのは、単一の修正策ではなく調査の順序です。
ほかにも頻出するシナリオがあります。Snowpipeによる継続的な取り込みと、スケジュールされたCOPYロードで得られるレイテンシーの違い、ストリームとタスクによる変更キャプチャとタスクを冪等にする方法、誤って切り詰められたテーブルをTime Travelで復元する方法、データをコピーせずパートナーに読み取りアクセスを与えるためのセキュアデータ共有、成長する組織のロール設計などです。制約を示し、仕組みを選び、そのコストを説明しましょう。
面接前に追加質問も含め、声に出して練習しましょう。模擬面接モードではシナリオ質問が出され、回答を掘り下げられます。ほかのデータ職とエンジニア職向けの質問集は、職種・トピック別の面接質問にまとめられています。
AI面接アシスタントはSnowflakeの質問に役立ちますか?
対話形式の面接では役立ちますが、明確な制限があります。SubcueAIのmacOSおよびWindows向けネイティブデスクトップアプリは、システム音声とマイク音声を取得し、ローカルオーバーレイに短い回答候補を表示します。そのため、クラスタリングキーがプルーニングのために何を犠牲にするかを面接官に尋ねられた際、画面上の仕組みを確認しながら自分の言葉で説明できます。ブラウザー拡張機能は、ChromeとEdgeで会議タブの音声のみを取得し、ブラウザータブ内の通話に対応します。ボットが通話に参加することも、会議ページに何かを挿入することもありません。設定方法はチュートリアルページにあります。
制限事項として、監督付きSQL試験、画面が録画される試験、会社管理のノートパソコン、監視下でクエリを書くライブ演習は対象外です。SubcueAIの創業者であるAaron Caoは、この製品を知識の代替ではなく、すでに知っていることを思い出すための手掛かりだと説明しています。そのため、履歴書と自分自身の表現を基に機能します。利用範囲の詳細は検出可能性に関する記事群にまとめられています。