NOSSAS CERTIFICAÇÕES

Perguntas de exemplo

Estas perguntas são exemplos do tipo de pergunta que você pode encontrar nos exames. Elas foram fornecidas para ajudar você a se familiarizar com o formato do exame. Elas incluem um cenário descritivo e uma pergunta que normalmente pede para você escolher a ação apropriada. Para responder, você precisa avaliar diagramas, snippets de código ou estudos de caso. Algumas perguntas são curtas, como as que incluímos aqui. Outras são mais complexas e demorarão mais para ler e responder.
Você está projetando um aplicativo de bate-papo para dispositivos móveis e quer garantir que uma mensagem só possa ser lida pelo destinatário. O que você deve fazer?
  • Criptografar a mensagem no lado do cliente com criptografia baseada em blocos com uma chave compartilhada.
  • Incluir tags nas mensagens no lado do cliente com um identificador dos usuários de origem e destino.
  • Usar uma autoridade de certificação confiável para permitir a conectividade SSL entre o aplicativo do cliente e o servidor.
  • Usar uma infraestrutura de chave pública (PKI) para criptografar a mensagem no lado do cliente com a chave pública do destinatário.
Suas ferramentas de teste identificaram os seguintes snippets de código com tempo de execução alto. Que código visível nos snippets você pode refatorar para remover uma falha de projeto que causa o tempo de execução alto?

A.

public class CloudSqlServlet extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws IOException, ServletException
  {

    String sql = "SELECT user_ip, timestamp FROM visits"
        + "LIMIT ? OFFSET ?"

    url = System.getProperty("ae-cloudsql.cloudsql-database-url");
    Class.forName("com.mysql.jdbc.GoogleDriver");

    Connection conn = DriverManager.getConnection(url);
    PreparedStatement prepared = conn.prepareStatement(sql);

    ArrayList userIps = new ArrayList();
    for (int i = 0; i < 100; ++i) {
        prepared.setInt(1, 100);
        prepared.setInt(2, i * 100);
        ResultSet rs = prepared.executeQuery(sql);
        while (rs.next()) {
            userIps.add(rs.getString("user_ip"));
        }
     }

     StringBuilder out = new StringBuilder();
     for (String userIp : upserIps) {
        out.append(userIp);
     }
     resp.getWriter().print(out.toString());
  }
}
                        

B.

public class FibServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException, ServletException
    {
        int n = req.getParameter("n");
        resp.getWriter().print(fibonacci(n).toString());
    }

    private HashMap fibCache = new ConcurrentHashMap();
    private Integer fibonacci(int n) {
        if (n > 100) { return -1; }
        if (n == 0) { return 0; }

        Integer f = fibCache.get(n);
        if (f == null) {
            f = fibonacci(n - 1) + fibonacci(n - 2);
            fibCache.put(n, f);
        }
        return f;
    }
}
                        

C.

public class FileUploader extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException, ServletException
    {
        String bucketName = req.getRequestURI();

        // Get fresh file listing
        List<String> filenames = getFileNamesInGcs(bucketName);
        String files = "<Table> "
        + "<thead>"
        + "<tr><td>FileName</td></tr>"
        + "</thead>"
         + "<tbody>"
        for (String filename: filenames) {
            files += "<tr><td>" + file + "</td></tr>"
        }
        resp.getWriter().print(files);
 }
}
                        

D.

public class BigQueryServlet extends HttpServlet {

    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws IOException, ServletException
    {
        Bigquery bigquery = createAuthorizedClient();

        // Print out available datasets in the "publicdata" project to the console
        listDatasets(bigquery, "publicdata");

        // Start a Query Job
        String querySql = "SELECT TOP(word, 50), COUNT(*) FROM
            publicdata:samples.shakespeare";
        JobReference jobId = startQuery(bigquery, PROJECT_ID, querySql);
        resp.getWriter().print(jobId.toString());
    }
}
                        
Você está começando a coletar terabytes de dados no BigQuery em uma tabela. Você quer reduzir os custos e melhorar o desempenho das consultas. O que você deve fazer?
  • Criar uma tabela para cada mês de dados e UNION as tabelas nas queries.
  • Criar uma tabela com partições e usar a pseudo coluna _PARTITIONTIME
  • Copiar os dados para o Google Cloud Storage e dividir em arquivos diários. Em seguida, usar origens de dados federadas.
  • Processar os dados com Dataflow e enviá-los para o Google Cloud Storage.
Você está criando a arquitetura de uma solução para processar dados de diversas origens. Você está usando um cluster Apache Kafka grande para lidar com os requisitos de entrada, mas ainda precisa identificar os sistemas de back-end para processar os dados. Sua empresa quer tomar decisões programáticas em tempo real conforme os dados são recebidos. O que você deve fazer?
  • Carregar os dados em um cluster Hadoop do Google Cloud Dataproc e consultá-lo com Hive.
  • Transmitir os dados diretamente para o Google BigQuery para análise.
  • Criar um fluxo de transmissão do Google Cloud Dataflow para processar os dados.
  • Carregar os dados no Cloud Bigtable para análise por meio da HBase API.