十二月 21, 2025
30 分钟阅读

初级云工程师GCP面试题:完整指南

interview
career-advice
job-search
entry-level
初级云工程师GCP面试题:完整指南
MB

Milad Bonakdar

作者

通过全面的面试题掌握GCP基本原理,涵盖Compute Engine、Cloud Storage、VPC、IAM和核心Google Cloud概念,为初级云工程师职位做好准备。


介绍

Google Cloud Platform (GCP) 是一套全面的云计算服务,提供计算、存储、网络、大数据和机器学习能力。作为一名初级云工程师,你需要掌握核心 GCP 服务的基础知识,才能构建和管理云基础设施。

本指南涵盖了针对初级 GCP 云工程师的常见面试问题,重点关注 Compute Engine、Cloud Storage、VPC 和 IAM。


GCP Compute Engine

1. 什么是 Google Compute Engine,它的主要用例是什么?

回答: Compute Engine 提供在 Google 数据中心运行的可扩展虚拟机。

主要特性:

  • 自定义或预定义的机器类型
  • 持久磁盘和本地 SSD
  • 用于节省成本的可抢占式虚拟机
  • 用于维护的实时迁移
  • 全球负载均衡

用例:

  • Web 托管
  • 应用程序服务器
  • 批量处理
  • 高性能计算
# 创建 VM 实例
gcloud compute instances create my-instance \
  --zone=us-central1-a \
  --machine-type=e2-medium \
  --image-family=debian-11 \
  --image-project=debian-cloud

# 列出实例
gcloud compute instances list

# SSH 进入实例
gcloud compute ssh my-instance --zone=us-central1-a

# 停止实例
gcloud compute instances stop my-instance --zone=us-central1-a

常见程度: 非常常见 难度: 简单


2. 解释持久磁盘和本地 SSD 之间的区别。

回答:

特性持久磁盘本地 SSD
持久性数据独立持久存在VM 停止时数据丢失
性能良好极佳(低延迟)
大小高达 64 TB高达 9 TB
用例启动磁盘,数据存储临时缓存,临时空间
成本较低较高
快照支持不支持

示例:

# 创建带有持久磁盘的 VM
gcloud compute instances create my-vm \
  --boot-disk-size=50GB \
  --boot-disk-type=pd-ssd

# 创建带有本地 SSD 的 VM
gcloud compute instances create my-vm \
  --local-ssd interface=NVME

常见程度: 常见 难度: 简单-中等


GCP Cloud Storage

3. Cloud Storage 中有哪些不同的存储类别?

回答: Cloud Storage 为不同的访问模式提供多种类别:

类别用例可用性最短持续时间成本
Standard频繁访问99.95%最高
Nearline< 每月一次99.9%30 天较低
Coldline< 每季度一次99.9%90 天非常低
Archive< 每年一次99.9%365 天最低
# 创建存储桶
gsutil mb -c STANDARD -l us-central1 gs://my-bucket

# 上传文件
gsutil cp myfile.txt gs://my-bucket/

# 列出对象
gsutil ls gs://my-bucket/

# 下载文件
gsutil cp gs://my-bucket/myfile.txt ./

# 更改存储类别
gsutil rewrite -s NEARLINE gs://my-bucket/myfile.txt

常见程度: 非常常见 难度: 简单-中等


GCP VPC (Virtual Private Cloud)

4. 什么是 VPC,它的关键组件是什么?

回答: VPC 是一个虚拟网络,为 GCP 资源提供连接。

关键组件:

Loading diagram...

组件:

  1. 子网: 区域 IP 范围
  2. 防火墙规则: 控制流量
  3. 路由: 定义流量路径
  4. VPC 对等互连: 连接 VPC
  5. Cloud VPN: 连接到本地
# 创建 VPC
gcloud compute networks create my-vpc \
  --subnet-mode=custom

# 创建子网
gcloud compute networks subnets create my-subnet \
  --network=my-vpc \
  --region=us-central1 \
  --range=10.0.1.0/24

# 创建防火墙规则(允许 SSH)
gcloud compute firewall-rules create allow-ssh \
  --network=my-vpc \
  --allow=tcp:22 \
  --source-ranges=0.0.0.0/0

常见程度: 非常常见 难度: 中等


5. 防火墙规则在 GCP 中如何工作?

回答: 防火墙规则控制传入和传出流量。

特性:

  • 有状态(自动允许返回流量)
  • 应用于网络或特定实例
  • 基于优先级(0-65535,越低 = 优先级越高)
  • 默认:允许出站,拒绝入站

规则组件:

  • 方向(入站/出站)
  • 优先级
  • 操作(允许/拒绝)
  • 源/目标
  • 协议和端口
# 允许 HTTP 流量
gcloud compute firewall-rules create allow-http \
  --network=my-vpc \
  --allow=tcp:80 \
  --source-ranges=0.0.0.0/0 \
  --target-tags=web-server

# 允许内部通信
gcloud compute firewall-rules create allow-internal \
  --network=my-vpc \
  --allow=tcp:0-65535,udp:0-65535,icmp \
  --source-ranges=10.0.0.0/8

# 拒绝特定流量
gcloud compute firewall-rules create deny-telnet \
  --network=my-vpc \
  --action=DENY \
  --rules=tcp:23 \
  --priority=1000

常见程度: 非常常见 难度: 中等


GCP IAM

6. 解释 GCP 中的 IAM 角色和权限。

回答: IAM 控制谁可以对哪些资源执行哪些操作。

关键概念:

  • 成员: 用户、服务账号或群组
  • 角色: 权限集合
  • 策略: 将成员绑定到角色

角色类型:

  1. 原始: 所有者、编辑者、查看者(广泛)
  2. 预定义: 服务特定(例如,Compute Admin)
  3. 自定义: 用户定义的权限
# 授予用户角色
gcloud projects add-iam-policy-binding my-project \
  --member=user:[email protected] \
  --role=roles/compute.instanceAdmin.v1

# 授予服务账号角色
gcloud projects add-iam-policy-binding my-project \
  --member=serviceAccount:[email protected] \
  --role=roles/storage.objectViewer

# 列出 IAM 策略
gcloud projects get-iam-policy my-project

# 移除角色
gcloud projects remove-iam-policy-binding my-project \
  --member=user:[email protected] \
  --role=roles/compute.instanceAdmin.v1

最佳实践:

  • 尽可能使用预定义角色
  • 遵循最小权限原则
  • 为应用程序使用服务账号
  • 定期审核权限

常见程度: 非常常见 难度: 中等


GCP 核心概念

7. 什么是 GCP 区域和可用区?

回答:

区域:

  • 地理位置(例如,us-central1,europe-west1)
  • 包含多个可用区
  • 独立的故障域
  • 根据延迟、合规性、成本选择

可用区:

  • 区域内的隔离位置
  • 单个故障域
  • 跨可用区部署以实现高可用性
Loading diagram...

示例:

# 列出区域
gcloud compute regions list

# 列出可用区
gcloud compute zones list

# 在特定可用区创建实例
gcloud compute instances create my-vm \
  --zone=us-central1-a

常见程度: 非常常见 难度: 简单


8. 什么是服务账号,何时使用它?

回答: 服务账号 是用于应用程序和 VM 的特殊账号。

特性:

  • 不适用于人类
  • 由应用程序使用
  • 可以拥有 IAM 角色
  • 可以创建用于身份验证的密钥

用例:

  • VM 实例访问 Cloud Storage
  • 应用程序调用 GCP API
  • CI/CD 管道
  • 跨项目访问
# 创建服务账号
gcloud iam service-accounts create my-sa \
  --display-name="My Service Account"

# 授予服务账号角色
gcloud projects add-iam-policy-binding my-project \
  --member=serviceAccount:[email protected] \
  --role=roles/storage.objectViewer

# 附加到 VM
gcloud compute instances create my-vm \
  [email protected] \
  --scopes=cloud-platform

常见程度: 常见 难度: 简单-中等


Serverless & Messaging

9. 什么是 Cloud Pub/Sub,何时使用它?

回答: Cloud Pub/Sub 是一种完全托管的消息传递服务,用于异步通信。

关键概念:

  • 主题: 消息发送到的命名资源
  • 订阅: 表示消息流的命名资源
  • 发布者: 将消息发送到主题
  • 订阅者: 从订阅接收消息

架构:

Loading diagram...

基本操作:

# 创建主题
gcloud pubsub topics create my-topic

# 创建订阅
gcloud pubsub subscriptions create my-subscription \
  --topic=my-topic \
  --ack-deadline=60

# 发布消息
gcloud pubsub topics publish my-topic \
  --message="Hello, World!"

# 拉取消息
gcloud pubsub subscriptions pull my-subscription \
  --auto-ack \
  --limit=10

发布者示例 (Python):

from google.cloud import pubsub_v1
import json

# 创建发布者客户端
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path('my-project', 'my-topic')

# 发布消息
def publish_message(data):
    message_json = json.dumps(data)
    message_bytes = message_json.encode('utf-8')
    
    # 使用属性发布
    future = publisher.publish(
        topic_path,
        message_bytes,
        event_type='order_created',
        user_id='123'
    )
    
    print(f'Published message ID: {future.result()}')

# 批量发布以提高效率
def publish_batch(messages):
    futures = []
    for message in messages:
        message_bytes = json.dumps(message).encode('utf-8')
        future = publisher.publish(topic_path, message_bytes)
        futures.append(future)
    
    # 等待所有消息发布
    for future in futures:
        future.result()

订阅者示例 (Python):

from google.cloud import pubsub_v1

subscriber = pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path('my-project', 'my-subscription')

def callback(message):
    print(f'Received message: {message.data.decode("utf-8")}')
    print(f'Attributes: {message.attributes}')
    
    # 处理消息
    try:
        process_message(message.data)
        message.ack()  # 确认成功处理
    except Exception as e:
        print(f'Error processing message: {e}')
        message.nack()  # 否定确认(重试)

# 订阅
streaming_pull_future = subscriber.subscribe(subscription_path, callback=callback)

print(f'Listening for messages on {subscription_path}...')

try:
    streaming_pull_future.result()
except KeyboardInterrupt:
    streaming_pull_future.cancel()

订阅类型:

1. 拉取订阅:

# 订阅者按需拉取消息
gcloud pubsub subscriptions create pull-sub \
  --topic=my-topic

2. 推送订阅:

# Pub/Sub 将消息推送到 HTTPS 端点
gcloud pubsub subscriptions create push-sub \
  --topic=my-topic \
  --push-endpoint=https://myapp.example.com/webhook

用例:

  • 事件驱动架构
  • 微服务通信
  • 流处理管道
  • IoT 数据摄取
  • 异步任务处理

最佳实践:

  • 使用消息属性进行过滤
  • 实现幂等消息处理
  • 设置适当的确认截止时间
  • 为失败的消息使用死信主题
  • 监控订阅积压

常见程度: 常见 难度: 中等


10. 什么是 Cloud Functions,如何部署一个?

回答: Cloud Functions 是一个无服务器执行环境,用于构建事件驱动的应用程序。

触发器:

  • HTTP 请求
  • Cloud Pub/Sub 消息
  • Cloud Storage 事件
  • Firestore 事件
  • Firebase 事件

HTTP 函数示例:

# main.py
import functions_framework
from flask import jsonify

@functions_framework.http
def hello_http(request):
    """HTTP Cloud Function"""
    request_json = request.get_json(silent=True)
    
    if request_json and 'name' in request_json:
        name = request_json['name']
    else:
        name = 'World'
    
    return jsonify({
        'message': f'Hello, {name}!',
        'status': 'success'
    })

Pub/Sub 函数示例:

import base64
import json
import functions_framework

@functions_framework.cloud_event
def process_pubsub(cloud_event):
    """Triggered by Pub/Sub message"""
    # 解码消息
    message_data = base64.b64decode(cloud_event.data["message"]["data"]).decode()
    message_json = json.loads(message_data)
    
    print(f'Processing message: {message_json}')
    
    # 处理消息
    result = process_data(message_json)
    
    return result

Storage 函数示例:

import functions_framework

@functions_framework.cloud_event
def process_file(cloud_event):
    """Triggered by Cloud Storage object creation"""
    data = cloud_event.data
    
    bucket = data["bucket"]
    name = data["name"]
    
    print(f'File {name} uploaded to {bucket}')
    
    # 处理文件
    process_uploaded_file(bucket, name)

部署:

# 部署 HTTP 函数
gcloud functions deploy hello_http \
  --runtime=python39 \
  --trigger-http \
  --allow-unauthenticated \
  --entry-point=hello_http \
  --region=us-central1

# 部署 Pub/Sub 函数
gcloud functions deploy process_pubsub \
  --runtime=python39 \
  --trigger-topic=my-topic \
  --entry-point=process_pubsub \
  --region=us-central1

# 部署 Storage 函数
gcloud functions deploy process_file \
  --runtime=python39 \
  --trigger-resource=my-bucket \
  --trigger-event=google.storage.object.finalize \
  --entry-point=process_file \
  --region=us-central1

# 使用环境变量部署
gcloud functions deploy my_function \
  --runtime=python39 \
  --trigger-http \
  --set-env-vars DATABASE_URL=...,API_KEY=...

# 使用特定内存和超时部署
gcloud functions deploy my_function \
  --runtime=python39 \
  --trigger-http \
  --memory=512MB \
  --timeout=300s

Requirements 文件:

# requirements.txt
functions-framework==3.*
google-cloud-storage==2.*
google-cloud-pubsub==2.*
requests==2.*

本地测试:

# 安装 Functions Framework
pip install functions-framework

# 本地运行
functions-framework --target=hello_http --port=8080

# 使用 curl 测试
curl -X POST http://localhost:8080 \
  -H "Content-Type: application/json" \
  -d '{"name": "Alice"}'

监控:

# 查看日志
gcloud functions logs read hello_http \
  --region=us-central1 \
  --limit=50

# 查看函数详细信息
gcloud functions describe hello_http \
  --region=us-central1

最佳实践:

  • 保持函数小而专注
  • 使用环境变量进行配置
  • 实施适当的错误处理
  • 设置适当的超时值
  • 使用 Cloud Logging 进行调试
  • 尽量减少冷启动时间

常见程度: 非常常见 难度: 简单-中等


CLI & 工具

11. 解释常见的 gcloud CLI 命令和配置。

回答: gcloud CLI 是管理 GCP 资源的主要工具。

初始设置:

# 安装 gcloud SDK (macOS)
curl https://sdk.cloud.google.com | bash
exec -l $SHELL

# 初始化并进行身份验证
gcloud init

# 登录
gcloud auth login

# 设置默认项目
gcloud config set project my-project-id

# 设置默认区域/可用区
gcloud config set compute/region us-central1
gcloud config set compute/zone us-central1-a

配置管理:

# 列出配置
gcloud config configurations list

# 创建新配置
gcloud config configurations create dev-config

# 激活配置
gcloud config configurations activate dev-config

# 设置属性
gcloud config set account [email protected]
gcloud config set project dev-project

# 查看当前配置
gcloud config list

# 取消设置属性
gcloud config unset compute/zone

按服务划分的常见命令:

Compute Engine:

# 列出实例
gcloud compute instances list

# 创建实例
gcloud compute instances create my-vm \
  --machine-type=e2-medium \
  --zone=us-central1-a

# SSH 进入实例
gcloud compute ssh my-vm --zone=us-central1-a

# 停止/启动实例
gcloud compute instances stop my-vm --zone=us-central1-a
gcloud compute instances start my-vm --zone=us-central1-a

# 删除实例
gcloud compute instances delete my-vm --zone=us-central1-a

Cloud Storage:

# 列出存储桶
gsutil ls

# 创建存储桶
gsutil mb -l us-central1 gs://my-bucket

# 上传文件
gsutil cp myfile.txt gs://my-bucket/

# 下载文件
gsutil cp gs://my-bucket/myfile.txt ./

# 同步目录
gsutil -m rsync -r ./local-dir gs://my-bucket/remote-dir

# 设置存储桶生命周期
gsutil lifecycle set lifecycle.json gs://my-bucket

IAM:

# 列出 IAM 策略
gcloud projects get-iam-policy my-project

# 添加 IAM 绑定
gcloud projects add-iam-policy-binding my-project \
  --member=user:[email protected] \
  --role=roles/viewer

# 创建服务账号
gcloud iam service-accounts create my-sa \
  --display-name="My Service Account"

# 创建并下载密钥
gcloud iam service-accounts keys create key.json \
  [email protected]

Kubernetes Engine:

# 列出集群
gcloud container clusters list

# 获取凭据
gcloud container clusters get-credentials my-cluster \
  --zone=us-central1-a

# 创建集群
gcloud container clusters create my-cluster \
  --num-nodes=3 \
  --zone=us-central1-a

有用的标志:

# 格式化输出
gcloud compute instances list --format=json
gcloud compute instances list --format=yaml
gcloud compute instances list --format="table(name,zone,status)"

# 过滤结果
gcloud compute instances list --filter="zone:us-central1-a"
gcloud compute instances list --filter="status=RUNNING"

# 限制结果
gcloud compute instances list --limit=10

# 排序结果
gcloud compute instances list --sort-by=creationTimestamp

有用的命令:

# 获取帮助
gcloud help
gcloud compute instances create --help

# 查看项目信息
gcloud projects describe my-project

# 列出可用区域/可用区
gcloud compute regions list
gcloud compute zones list

# 查看配额
gcloud compute project-info describe \
  --project=my-project

# 启用 API
gcloud services enable compute.googleapis.com

# 列出已启用的 API
gcloud services list --enabled

最佳实践:

  • 使用配置管理不同环境
  • 设置默认项目和区域
  • 使用 --format 进行脚本编写
  • 使用 --filter 缩小结果范围
  • 启用命令完成
  • 保持 gcloud SDK 更新

常见程度: 非常常见 难度: 简单-中等


结论

准备初级 GCP 云工程师面试需要了解核心服务和云概念。重点关注:

  1. Compute Engine: VM 实例、机器类型、磁盘
  2. Cloud Storage: 存储类别、存储桶、生命周期
  3. VPC: 网络、子网、防火墙规则
  4. IAM: 角色、权限、服务账号
  5. 核心概念: 区域、可用区、项目

练习使用 GCP Console 和 gcloud CLI 以获得实践经验。祝你好运!

Newsletter subscription

真正有效的每周职业建议

将最新见解直接发送到您的收件箱

Decorative doodle

在招聘人员面前脱颖而出,获得梦想工作

加入成千上万通过AI驱动的简历改变职业生涯的人,这些简历可以通过ATS并给招聘经理留下深刻印象。

立即开始创建

分享这篇文章

战胜75%的ATS拒绝率

4份简历中有3份从未被人眼看到。我们的关键词优化将您的通过率提高了80%,确保招聘人员真正看到您的潜力。