Roles and responsibilities
We are seeking a highly skilled Java Full Stack Developer to join our team. The ideal candidate will have a strong foundation in Java, Microservices, React, and Cloud-Native technologies.
Responsibilities:
- Design, develop, and deploy robust, scalable, and high-performance applications.
- Collaborate with cross-functional teams to understand requirements and deliver solutions.
- Write clean, well-structured, and maintainable code.
- Perform unit and integration testing to ensure code quality.
- Troubleshoot and resolve technical issues.
- Stay up-to-date with the latest technologies and industry trends.
Required Skills and Experience:
- 7+ years of experience in Java development, including Spring Boot and Spring Framework.
- 5+ years of experience with frontend technologies like React, HTML, CSS, and JavaScript.
- Strong understanding of microservices architecture and cloud platforms (AWS, Azure, GCP).
- Proficiency in relational databases (Oracle) and NoSQL databases (e.g., Couchbase).
- Experience with CI/CD pipelines and tools (Jenkins, GitLab CI/CD).
- Knowledge of containerization technologies (Docker, Kubernetes).
- Strong problem-solving and debugging skills.
- Excellent communication and teamwork abilities.
Preferred Skills:
- Experience with API development (REST, SOAP) and integration technologies (Kafka, RabbitMQ).
- Knowledge of data streaming technologies (Spark, Flink).
- Experience with test automation frameworks (Selenium, JUnit, TestNG).
- Understanding of DevOps practices and tools.
- Design Patterns: Knowledge of common design patterns like MVC, Singleton, Factory, Observer, and Strategy.
- SOLID Principles: Understanding of SOLID principles (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion) for writing clean, maintainable, and scalable code.
- RESTful API Design Principles: Familiarity with designing and consuming RESTful APIs according to standard conventions and best practices.
Desired candidate profile
1. Core Java Skills
- Java SE (Standard Edition): Proficiency in Java fundamentals, such as data types, control structures, loops, collections, exception handling, and multi-threading.
- Java 8+ Features: Familiarity with Java 8 and later versions, including features like streams, lambda expressions, functional interfaces, and default methods.
- JVM Internals: Understanding of JVM architecture, garbage collection, and memory management.
- Concurrency: Knowledge of concurrency concepts like threads, synchronization, and thread pools to handle parallel tasks.
2. Back-End Development Skills
- Spring Framework: Expertise in Spring Boot for creating RESTful services, Spring MVC for web applications, and Spring Security for securing applications. Knowledge of Spring Data JPA for ORM and Spring Cloud for microservices architectures.
- Hibernate/JPA (Java Persistence API): Understanding how to map Java objects to database tables using Hibernate or JPA for interacting with relational databases.
- Database Knowledge:
- SQL: Proficiency in writing and optimizing SQL queries for relational databases (e.g., MySQL, PostgreSQL, Oracle).
- NoSQL Databases: Familiarity with NoSQL databases like MongoDB, Cassandra, or CouchDB.
- RESTful APIs: Ability to design and consume REST APIs for communication between different systems.
- Microservices Architecture: Knowledge of designing and building microservices using Java frameworks, especially Spring Boot and Spring Cloud, and tools like Docker and Kubernetes for containerization and orchestration.
- API Documentation: Ability to document APIs using tools like Swagger/OpenAPI.
3. Front-End Development Skills
- HTML5/CSS3: Understanding the structure and layout of web pages using HTML5 for semantics and CSS3 for styling. Proficiency with responsive design principles using media queries.
- JavaScript: Knowledge of JavaScript for dynamic client-side functionality. Familiarity with ES6+ features like arrow functions, async/await, destructuring, and modules.
- Front-End Frameworks:
- React.js/Angular/Vue.js: Expertise in one or more of these popular front-end frameworks or libraries for building dynamic, single-page web applications (SPA).
- State Management: Knowledge of state management techniques and tools, such as Redux (for React) or Vuex (for Vue.js).
- HTML5 APIs: Familiarity with various HTML5 APIs like localStorage, Geolocation, Canvas, and WebSockets.
- CSS Preprocessors: Familiarity with CSS preprocessors like SASS or LESS to write modular and maintainable stylesheets.
4. Version Control and Build Tools
- Git: Proficiency in using version control systems like Git, and platforms such as GitHub, GitLab, or Bitbucket for source code management and collaboration.
- Build Tools: Experience with build tools such as Maven or Gradle to automate build, dependency management, and deployment processes.
- Continuous Integration/Continuous Deployment (CI/CD): Familiarity with CI/CD pipelines using tools like Jenkins, Travis CI, GitLab CI, or CircleCI for automating testing and deployment.
5. Containerization and Cloud Computing
- Docker: Experience with Docker to containerize Java applications and manage environments for development, testing, and production.
- Kubernetes: Familiarity with Kubernetes for orchestration of containerized applications.
- Cloud Platforms: Knowledge of deploying applications to cloud platforms like AWS, Azure, or Google Cloud, including services for computing, storage, and networking.
- Serverless Architectures: Experience with building and deploying serverless applications using services like AWS Lambda or Google Cloud Functions.
6. Testing Skills
- Unit Testing: Experience with JUnit or TestNG for writing unit tests for Java applications.
- Integration Testing: Knowledge of tools like Spring Test, Mockito, and WireMock for testing the integration of components or external APIs.
- Front-End Testing: Familiarity with front-end testing frameworks like Jest (for React) or Karma (for Angular).
- End-to-End Testing: Experience with tools like Selenium or Cypress for automating end-to-end testing of web applications.