Skip to content

abdelelbouhy/tech-task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Coding Test

Hi Abdel!

Software engineering is at the heart of what we do here at giffgaff. Our agile engineering teams build and support a wide variety of applications and services. These combine to create our unique user experience on the giffgaff website, enable a whole range of awesome features via modern APIs and, additionally, enable our internal teams to work in the most productive and efficient ways.

The quality and maintainability of our software is very important to us, so we are looking for engineers with real-world experience of building and running contemporary software, especially in terms of the whole development lifecycle. You will help us to design and implement tightly focussed APIs, user interfaces, services that internalise our core business logic or internal tools and, together with your team, you will support them in production. We want you to share your opinions on how we are doing things - and help us get better!

Have you got what it takes?

Basic Expectations
  • Love delivering a wow to our members
  • Ability to communicate clearly
  • Be curious & creative
  • Have excellent attention to detail
  • Have an interest in technology, mobile and wider popular culture trends
  • Able to work under pressure and manage workloads effectively
  • Organised, self motivated and accountable for own workload
  • A strong team player

Key Attributes & Behaviours
Community & Connectedness

A person with community & connectedness skills has a sense of being part of a larger whole, a desire to contribute, a sense that the other people (i.e. coworkers, users, members) are not simply characters in his or her own movie, but fully-realised individuals.

  • Coach & Mentor
  • Courageous & Honest
  • Code with Empathy
  • Open Source Approach

Leadership

A person with leadership skills knows how to develop and follow a sense of purpose, in themselves and in others. They are willing to point out, own, and fix things that are broken about our company and in their own career tracks.

  • An Owner’s Mindset
  • Good at Persuasion
  • A Sense of Purpose
  • Do the Next Right-Thing

Technical Capability

A person with high technical capability is technically curious, tackles problems without giving up, and produces solutions that less-experienced folks can use, maintain, and learn from.

  • Creative & Curious
  • Disciplined & Rigorous
  • Fearless & Pragmatic
  • Good at Problem Solving
  • A Propensity to Ship

Core Engineering Skills
Must HaveReading & Writing Code
Variables & Control Structures
Debugging & Troubleshooting
IDE & OS Basics
Should HaveTest Driven Development
Pair Programming
Clean Code & Refactoring
Version Control
Could HaveContinuous Integration & Deployment
Algorithms & Data Structures
Dependency Injection
Mocks & Stubs
Alerting & Monitoring
Functional & Non-Functional Testing
Would LikeSOLID Principles
Containerisation & Networking Basics
Twelve Factor App Design
Solution Architecture
Our Technology Stack
Client-SideCSS3
ECMAScript (ES6+)
HTML5
Jest
React
React Native
SASS
TypeScript
Server-SideJava 8 with Maven
JUnit
Node JS
PHP & Laravel
Python
Spring Framework
AdditionalApache & NGINX
AWS
Jenkins
DynamoDB, PostgreSQL, Redis & Oracle
Docker & Kubernetes
ElasticSearch & Kibana
Grafana & Prometheus
Kinesis

The Challenge

We would like you to complete the following coding exercise - we anticipate this taking you no more than 45 minutes. You can use any programming language you like. Ideally your solution will include unit tests, preferably written using a test-driven development approach. The code related to your solution should be placed in a subfolder and be easy to execute - ideally cloneinstallrun.

Please commit your code back to this repository frequently. We expect you to complete this exercise within a day, but if takes a little longer don't worry - just let us know when you're done.

NOTE: Due to 2FA if you're using HTTPS to access this repo, you must create a personal access token to use as a password when authenticating to GitHub on the command line using HTTPS URLs.

Good Luck!


Exercise #1 (45 minutes)

Text Sharing

Create a web application that lets users share a snippet of text, similar to http://pastie.org. The program you write should follow these specifications:

  • The user should enter the text into a text area and save the text.
  • The text should be stored in a data store.
  • The program should generate a URL that can be used to retrieve the saved text.
  • When a user follows that URL, the text should be displayed, along with an invitation to edit the text.
  • When a user clicks the Edit button, the text should be copied and placed in the same interface used to create new text snippets.

Constraint

  • Use something other than a primary key for the URL, such as a slug that you generate. Investigate SHA or MD5 hashing.

Generated for abdelelbouhy on Thu Aug 20 2020 at 15:02:29 GMT+0100 (British Summer Time)

tech stack
  • React
  • redux
  • saga
  • styled components
  • jest
  • react testing library
  • express

install and run

yarn start or npm run start

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors