Job Description :
Position : Core Java Developer

Location: San Jose, CA

Duration: 12 Months

Hourly Rate: $65/hr

Job Description – Core Java Developer
8+ years of experience.

Work with business units to crystallize business needs into product features, acting as a bridge between business and technical domains
Provide technical guidance and assistance to other software engineers.
Provide technical and domain thought-leadership, and mentoring to junior members of the team.
Develop product/platform
Review and approve software design and implemented code.
Provide effective cutting edge design/solutions for implementing product features.
Develop new capabilities to ensure continued competence and relevance of the center in supporting software development needs of PayPal's business.

Required Skills:
Experience in building high traffic backend services for external customer facing web applications
Understands inside out of fundamentals of Java, specifically JDK7, JUnit, Maven, Jenkins & Sonar
Has built web applications and services using open-source Java Frameworks: Spring MVC & JAX-RS 2.0 implementations (e.g. RestEasy, Jersey or Apache CXF)
Has designed web applications and clearly understands concepts like Web Services, SOA, REST APIs
Has knowledge of different application servers like JBOSS
Comfortable with Agile development and Scrum process
Identify Performance bottlenecks and use good coding patterns to avoid them in the first place
Take ownership of your work and can work independently
Source Control (GIT experience is an advantage)
Unit testing frameworks such as JUnit, Google Test
Highly analytical, innovative, and able to think strategically and to develop comprehensive detailed specifications
Ability to determine impact of architectural solutions and recommendations. Must have experience in justification of technology solutions to business leaders
Excellent verbal and writing skills; ability to produce clear, concise communications and documentation.
Highly effective at working in cross-functional and cross geographical organizations
Experience in maintenance and enhancement of deployed products
Ability to work in a fast paced environment with diverse cultures
Ability to deal with uncertainty and adapt to changes

Desired Skills:
Has experience in refactoring existing codebase and in understanding existing implementations to decide to refactor or rewrite
Working knowledge of finance industry standards and practices preferred

Any resume that meets these minimum requirements will be reviewed
Education experience – Engineering Degree (Preferably Computer Science)
Minimum number of years of experience – 8+

Send us profiles only after you have one of your Senior Java Developers Internally Screen and Rank the candidate on these topics:

Algorithms/Data structures
Lists , Arrays , Trees – operations and complexities
One sorting algorithm – implementation + complexity
One searching algorithm – implementation + complexity
Should know when to use what data structure
Stack , Queue – operations and complexities

Collections : Sets, Maps, Lists – operations and complexities
Maps : HashMap , should know how to implement a simple one (using two arrays , example), how it works , hash collisions etc.
Strings : Operations, complexity , immutability
OOP/Generics : Subtype, supertype , what is final , what is static etc.
Exceptions : Runtime, compile time, errors, handling

Other stuff
Any 1 design pattern, where it is used etc.
REST, SOAP : What is the difference, why to use one over another
Authorization v Authentication
Different HTTP status codes , what is client side error, what is server error
Javascript; What is server side, what is client side, where would you use it.

Advanced Stuff
Threads : Threadpools, synchronization, what is multithreading, race conditions, volatile , how to design with thread safety, maybe pub-sub implementation, locks

Here is some additional feedback provided by one of our Sr. Java Tech Leads:

To set the tone – you can expect questions similar to below ones during the client rounds.
1. Write a function to randomize a given array of elements (integer/string/any type)
2. Write a program to construct a binary search tree.
3. Given a binary search tree, find the distance between two random nodes.
4. Given a list of string, write a program to find high frequency word in the list.

I would emphasis you to focus on following areas for the client round:
Java Programming (Write as many program as you can to get yourself comfortable with basic programming constructs)
Data structures – go through all basic data structures and their ADT & operations.
Search the internet for problem solving questions and try to solve them yourself. (optimal solution)