Interview Prep: Summary

High-level summary of application.

Team Roster

https://github.com/cnikolai - https://www.linkedin.com/in/cynthia-nikolai/

https://github.com/Sergio-Valdez - https://www.linkedin.com/in/sergio-valdez-8601b3213/

https://github.com/zcr003 - https://www.linkedin.com/in/zac-ramsey

Summary

PDF Overview of Project

Overview of Project

Summary of the project topic in general terms and Overview of Intended Functionality:

This Android application is designed to help prospective employees and interviewers in the IT field prepare for the big day. Coming with preset questions and self-created interview quizzes, a user can comfortably practice for a variety of different interviews in the tech field. A custom question feature makes it accessible for interviewers to use, quizzing applicants on whatever they seek to know.

The application (client and server together) stores general interview questions as well as detailed technical interview questions. Additionally, it stores a good example answer for each question while allowing the user to store additional questions and answers for self practice. We chose a professional color scheme intended to help put the user’s mind at ease as they prepare for a stressful interview.

Motivations for selecting the given topic for the app:

We chose this particular application to give us a well-rounded Android development experience. Our goal is to create an impressive app to show an employer while conveniently preparing us for interview day. Some major take-a-ways from this project have been learning how to:

Key functional elements of the app:

The user is able to

Intended users

Client component

Persistent data

Device/external services

Client Side Design & Implementation

Client Side Design, Implementation, & Basic User Instructions

Copyright and Licenses

Server component

Persistent data

Note: The server can also serve as a backup storage container for the user’s interview data.

External services

Server Side Design & Implementation

Server Side Design & Implementation

Summary of current state of the project

The application currently has basic functionality implemented and serves as a working proof-of-concept prototype. Upon first opening the application the user is brought to a Google Sign-in screen and is prompted to enter their information. Once logged in the user sees the Question home screen that displays a list of questions along with icons that give the ability to add new questions or edit and delete current questions. As a user selects a specific question from the list they are taken to a question detail screen that displays the question along with the answer and the source all with color coded headings. The quiz feature allows the user to scroll/swipe through a list of randomly generated questions from our server.

Enhancements include a history function that allows a user to see a list of previously accessed questions, a category feature that organizes the interview questions into specific categories such as Java, Android, HTML, and more. Another unimplemented feature is hiding the answer from the user once they begin a quiz and storing their answer in the cloud. Finally we would like to implement the ability to select the length of the quiz based on user preferences in settings/shared preferences.

Cosmetic enhancements include allowing users to change the background image and customize the color scheme.

Stretch goals/possible enhancements

Technology Stack

Back end

Ubuntu Linux OS
Apache HTTP server configured as reverse proxy
JRE 8
Apache Tomcat Java application server
Web service application, incorporating:
    Data model
        Embedded Apache Derby database
        Hibernate ORM
        Custom entity classes
        Spring Boot Data
        Custom data repository interfaces
    Service controllers
        Spring MVC
        Custom controller classes
    View composition & serialization
        Jackson JSON
        Custom view classes & interfaces
    Authentication
        Spring Security
        Google Sign In (external service; see https://developers.google.com/identity)
        Custom authentication verifier method for audience (client ID)

Front end

Android OS
Data model
    SQLite
    Room ORM
    Custom entity and other model classes
    Custom type converters
    Data access object (DAO) interfaces
Remote service interfaces
    Retrofit
    ReactiveX
    Gson
    Custom serializer/deserializers
Viewmodel components
    Android Lifecycle framework (ViewModel & LiveData)
    Custom viewmodel classes
View
    Custom RecyclerView.Adapter and RecyclerView.Holder classes
    Custom layouts
Controller
    Custom activity and fragment classes
Authentication
    Google Sign In (external service; see https://developers.google.com/identity)
    Custom sign in service class