Job Description: Java developer
Experience: 3-9 years
Locations: Bangalore
Job Description: Software Engineer (Java developer for backend network applications)
Responsibilities:
•Design and develop high-performance network applications using OOP languages like Java (Must have) and Python
•Implement, enhance network applications such as DNS based global load balancers and supporting policy engines, HTTPS based reverse proxies and backend for supporting services like management and reporting portal.
•Implement, enhance and maintain network control plane applications like DNS/DoH/DoT, DHCP, Radius, NTP
•Implement, enhance network applications related to configuration of network devices and efficiently managing changes to those configurations over time.
•Be able to store and retrieve network application and device configurations in relational databases using optimized queries and best practices.
•Develop and maintain RESTful APIs for IPC across components and data retrieval.
•Perform test driven development and create automated unit test cases (Junit, Pyunit etc.) and end to end test automation for all development tasks.
•Optimize existing network applications for security, performance, reliability and scalability.
•Participate in the entire application lifecycle, focusing on coding, code reviews, debugging, and testing.
•Write clean, maintainable, and efficient code, adhering to best practices and coding standards.
•Collaborate with network engineers and other software developers to integrate network applications with other systems.
•Provide technical support for network applications, including troubleshooting and resolving issues.
•Keeping up-to-date with emerging trends and technologies in network engineering and programming paradigms.
Preferred Qualifications:
•Master’s degree in Computer Science or Computer Applications, or a Bachelor’s degree in Electrical and Computer Engineering with computer science courses.
•3-9 years of industry experience preferably in data communications companies.
Required Skills For software engineer network applications
•Expertise in Object oriented programming design and languages such as Java.
•Solid experience with normalized database design, optimization, and management in MySQL.
•Strong knowledge of SQL, foreign keys, multi table joins, views, different join types, E-R diagrams, ORM mapping and database transactions and stored procedures.
•Familiarity with JSON, XML, XSD, web services and RESTful APIs.
•Expertise in asynchronous socket programming with Java.
•Expertise in data structures, algorithms, and design patterns. Knowledge of test-driven development, thread safe programming, best practices/tools for development
•Knowledge of data structures especially tries, trees and graphs along with efficient algorithms to traverse them, application of tries on IP address and CIDR subnet searches.
•Experience with multi-threading safe programming, real-time systems, and inter-process communications.
•Familiarity with software development and CI/CD tools (e.g., Git, Ansible, Jenkins).
•Detailed knowledge of Linux-based OSes (e.g., Ubuntu, Rocky Linux, Red Hat)
•Strong analytical and problem-solving skills.
•Excellent verbal and written communication skills.
•Ability to work collaboratively in a team and independently with minimal supervision.
Desired Skills For software engineer network applications
•Knowledge of Shell programming and Python
•Knowledge of virtualization and containerization technologies (e.g., KVM, Docker).
•Ability to create new microservices from scratch
•Knowledge of JSON, NoSql databases like MongoDB, Cassandra etc.
•Knowledge of XSLT for XML transformations
•Familiarity with Cloud computing technologies especially Azure based.
•Familiarity with network and application security best practices including OAUTH, certificates, PKI.
•Understanding of networking protocols (TCP/IP, QUIC, DNS, HTTP, DHCP, BGP, OSPF, ISIS, VRRP, MPLS)
•Experience with Agile/Scrum methodologies and a collaborative approach to software development.