Job Description
Project Description:
We deliver a world-class commerce experience that is underpinned by maintainable, highly tested system architecture and application code. Team members are expected to execute on complex requirement sets as part of the core of the client’s commerce capability.
Position Summary/Job Description:
Developing Groovy/Spring web applications.
Object Oriented Programming and Service Oriented Architecture design along with REST.
Help build large-scale distributed systems and client-server architectures.
Aggressive refactoring.
Able to participate in the planning process: take high level design discussions and create user stories, then further break those stories into tasks.
The developer will be expected to demonstrate the following qualities in addition to completing their development work:
Strong technical communication skills.
Ability to work as a part of a team of engineers.
Willingness to develop a deep understanding of complex business domains.
Friendly and cooperative demeanor.
Ability to handle high-stress situations such as urgent bug fixes in production.
What are the top five skills and number of years of experience required to perform this job?
Strong Spring/Java/Groovy applications and unit-testing skills (5+ years).
Experience in developing/consuming REST/HTTP based Services (3+ years).
Experience with paired programming and iterative development (1+ years).
Strong social and communication skills.
Takes initiative, self-starter. Able to identify work that needs to be done on their own.
What are some preferred/nice to have skills the manager is looking for?
Experience as a Technical Lead on a large application development project.
Experience working in a Continuous Integration environment.
Experience with functional testing frameworks.
Test-Driven Development.
Experience with using Spock for integration and unit tests.
Experience with a Message Queuing technology (e.g., Rabbit/IBM/JMS).
High comfort level with Unix/Linux command line.
Experience with monitoring tools (Splunk, Kibana, Grafana, etc.)
Deep understanding of threading and GPars.
Experience with Jenkins.
Experience using version control systems such as Git.
Experience with modern web technologies and frameworks (React, Webpack, etc.).
Prescreening Questions: Must be submitted on resume, no exceptions!
Spring fundamentals: Spring uses various “handlers” and “filters” to assist in preprocessing of requests. Please discuss the differences between Spring filters and Spring interceptors. Which fires first, second, for example. What kinds of processing can you do in a filter vs interceptor?
Threading libraries (e.g., GPars). Discuss the basic reasons why you would use threading, and what it means to be thread-safe. What is a thread pool? When would you use a fork join pool vs normal thread pool?
REST APIs: Let’s talk about HTTP methods (GET, POST, PUT, PATCH, DELETE). Briefly discuss what each implies, which are Idempotent, and the concept of path variable vs body.
Interview Process Overview:
There may or may not be a 30-minute phone pre-screen interview conducted initially; this will depend on the volume and quality of the applications. After or in place of that, a 60-minute interview will be conducted.