Want to be a Java developer?
Java is one of the top 3 programming languages in the world. It can be used to develop both web applications and desktop applications and more importantly it is cross platform--write once, run everywhere. Also, it's easy to pick up. If you want to be a Java developer, please get to ask yourself whether you know below listed topics.
This list is summarized by Vivek Vermani, a Senior Java Developer:
For a Core Java Developer , Ffollowing topics should be good.
- OOPs Concepts
- Abstract Classes and Interfaces
- Constructors and initialization order
- File IO and Serialization
- Collections - List , Map , Set
- Access Specifiers
- Exceptions - Checked , Unchecked
- Java Keywords - Static , Final , volatile, synchronized , transient, this super etc.
- JVM and Memory Management
- Multithreading and Synchronization
- Design Patterns
- Lambda Expressions
Here is a list of 200+ questions on Core Java -
If you want to focus on Network / Distributed Application, Following topics can be asked
- Communication Protocols like IP, HTTP, TCP, FTP,UDP (Reading some RFCs is necessary)
- Synchronous vs Asynchronus Communication
- Technologies like RMI, RCP
- Message Queues
- Interface APIs - JMS, JDBC , ORM , Hibernate
If you want to work Java based web application then following topics should be learned -
- JSP / Servlets
- Web Frameworks like Struts / Spring
- Service Oriented Architecture / Web Services - SOAP / Rest
- Markup Languages like XML and JSON.
- Application and Web Servers (Tomcat)
- Web application servers (WebLogic, WebSphere)
- Some cloud service (AWS, SoftLayer, BlueMix)
- Some libraries (Java mail, log4j, Jackson JSON)
If you want to work on Java UI, then following topics can be learned -
- Frameworks like Swing, SWT, AWT
- Advanced Framewroks like JavaFX, JMF
Every Java Developer is expected to have Database Knowledge
- SQL Queries - Inner Outer Joins, Group By , Having
- Stored Procedures
- Database drivers (JDBC)
Moreover questions around Tools, Methodologies, Processes can be asked -
- Development Tools - Eclipse / RAD / IntelliJ IDEA
- Design Tools and Diagrams
- Configuration Management Tools like SVN, Clearcase etc
- Defect Management
- Build Tools like Maven, Ant etc
- Testing - Unit Testing, JUnit , Black box , White Box
- Development Methodologies - Agile / Waterfall / Iterative
- Requirement Analysis
- Release Management
- Reverse engineering -- JadClipse(A Java decompiler)
- OpenJDK source code --(Mercurial on Eclipse)
Here are few links that might help.
Do you know what is an algorithm? As a programmer, you have to know. Algorithms are word used by programmers when they do not want to explain what they did.