Google Certification Q&A

Hi again!

As promised, after obtaining my Google Certification exam as I mentioned in my previous post (https://pabloclementeperez.wordpress.com/2017/03/21/google-certified-associate-android-developer/), and since there is still few and scarce information online, I have decided to write up a comprehensive QA on how the exam works. I hope you find it useful!

developers_logo

What is it?

Google Developer Certification is a program designed so you can show what you can do and not simply what you know. It allows you to demonstrate your proficiency and skill with typical tasks that you as a developer perform daily in your job.

In taking and passing a certification exam, you will become recognized for your skills, which in turn will allow you to promote yourself to relevant communities, projects, or employers.

You can view the full announcement here:

How to get ready?

It is important to bear in mind that this certification is handled both by Google and Udacity, in fact, if you go into the offitial website, you are recommended the Andriod Developer Fast Track course. I received a scholarship for this course, and it has a very similar format as the exam, you are given Android Studio Projects with to-dos that run you through the basics. If you are not entirely sure if you know everything, or are afraid of the exam format, it might be a good investment. There are a couple of caveats to bear in mind though:

-The course does not cover everything in the exam, such as UI testing and unit testing.

-The course is a mixture of other courses and sometimes feels as if it was put together to make use of these instead of a tailormade course.

What do I have to know?

The offitial requirements are: 

Testing and Debugging

Writing tests to verify that the application’s logic and user interface are performing as expected, and executing those tests using the developer tools. Candidates should be able to analyze application crashes, and find common bugs such as layout errors and memory leaks. This includes working with the debuggers to step through application code and verify expected behavior.

  • Write and execute a local JVM unit test
  • Write and execute a device UI test
  • Given a problem description, replicate the failure
  • Use the system log to output debug information
  • Debug and fix an application crash (uncaught exception)
  • Debug and fix an activity lifecycle issue
  • Debug and fix an issue binding data to views

Application User Interface (UI) and User Experience (UX)

Implementation of the visual and navigational components of an application’s design. This includes constructing layouts–using both XML and Java code–that consist of the standard framework UI elements as well as custom views. Candidates should have a working knowledge of using view styles and theme attributes to apply a consistent look and feel across an entire application. Understanding of how to include features that expand the application’s audience through accessibility and localization may also be required.

  • Mock up the main screens and navigation flow of the application
  • Describe interactions between UI, background task, and data persistence
  • Construct a layout using XML or Java code
  • Create a custom view class and add it to a layout
  • Implement a custom application theme
  • Apply a custom style to a group of common widgets
  • Define a RecyclerView item list
  • Bind local data to a RecyclerView list
  • Implement menu-based or drawer navigation
  • Localize the application’s UI text into one other language
  • Apply content descriptions to views for accessibility
  • Add accessibility hooks to a custom view

Fundamental Application Components

Understanding of Android’s top-level application components (Activity, Service, Broadcast Receiver, Content Provider) and the lifecycle associated with each one. Candidates should be able to describe the types of application logic that would be best suited for each component, and whether that component is executing in the foreground or in the background. This includes strategies for determining how and when to execute background work.

  • Describe an application’s key functional and nonfunctional requirements
  • Create an Activity that displays a layout resource
  • Fetch local data from disk using a Loader on a background thread
  • Propagate data changes through a Loader to the UI
  • Schedule a time-sensitive task using alarms
  • Schedule a background task using JobScheduler
  • Execute a background task inside of a Service
  • Implement non-standard task stack navigation (deep links)
  • Integrate code from an external support library

Persistent Data Storage

Determining appropriate use cases for local persisted data, and designing solutions to implement data storage using files, preferences, and databases. This includes implementing strategies for bundling static data with applications, caching data from remote sources, and managing user-generated private data. Candidates should also be able to describe platform features that allow applications to store data securely and share that data with other applications in a secure manner.

  • Define a database schema; include tables, fields, and indices
  • Create an application-private database file
  • Construct database queries returning single results
  • Construct database queries returning multiple results
  • Insert new items into a database
  • Update or delete existing items in a database
  • Expose a database to other applications via Content Provider
  • Read and parse raw resources or asset files
  • Create persistent preference data from user input
  • Toggle application logic based on preference values

Enhanced System Integration

Extending applications to integrate with interfaces outside the core application experience through notifications and app widgets. This includes displaying information to the user through these elements and keeping that information up to date. Candidates should also understand how to provide proper navigation from these external interfaces into the application’s main task, including appropriate handling of deep links.

  • Create an app widget that displays on the device home screen
  • Implement a task to update the app widget periodically
  • Create and display a notification to the user

 

What is the exam like?

The exam consists of two parts. The first one is an Android Studio Project with a set of requirements and user feedback. The idea is you are given a project a previous developer left in a hurry and have to complete a series of tasks ASAP. It includes creating new screens, modifying code, adding persistence, creating widgets, showing notifications, writing tests and fixing bugs reported by users.

You have 48 hours to complete the exam, but if you are a proficient Android developer it should take you around 6-10 hours.

After the exam you will have to complete an exit interview. In this interview you will have to answer a series of questions about your App to prove that you have written the code yourself. You will also be asked general Android knowledge questions. If you have done the exam yourself, this should be a breeze.

What will I obtain?

You will obtain a badge to prove your Google Certificated Associated Android Developer status. You can view mine here.

Other questions?

Feel free to drop me a line in the comments if you would like to know anything else and I’ll update the post 🙂