Q1. Tell us about yourself?
This question is asked 95% of the time.
[Hint: Focus on your strengths and marry up your strengths with the job specification. For example,
— 5 year hands on experience in building web based applications to integrating disparate systems using web services, messaging, and XML/JSON based data formats.
— Completed 3 projects through full SDLC process using sought-after technologies X, Y, and Z, and frameworks P and Q in 2 of those projects. One of the projects was a mission critical transactional system that handles 300 concurrent users;
— Enhanced my skills in SOA based architectures and stand-alone scheduled batch jobs using bulk loads and ETL operations with IBM Datastage at XYZ Bank.]
— Initiation of any “QuickWins” projects. The focus is to improve the overall effectiveness and usefulness of a system through small changes in a collaborative effort with the business. For example, automating tedious manual tasks, improving website user experience/rankings, stabilizing the environment, etc.
— Fixed security holes. Security is of paramount importance to any application or website. Applications with security vulnerabilities can not only tarnish the reputation of a company, but also can adversely impact the bottom-line of that organization.
— Isolated and reproduced intermittent issues. Intermittent issues are hard to reproduce and debug. A novice developer will promptly mark those defects in the bug tracking system as “cannot be reproduced” without having the skill to isolate, reproduce and then fix the issue. An experienced developer with good grasp on the key areas will not only have will not only have the competency to isolate, reproduce, and fix these issues, but also will have the skill to identify these potential issues during code review.
— Acted as a change agent to enforce standards and improve processes. A change agent not only changes a system’s or application’s behavior but also people’s behavior, attitude, and culture towards writing quality software. People’s behavior can be changed by enforcing good coding standards. Substandard software development processes can also demotivate developers and adversely impact their behavior and attitude. The development processes need to be continuously improved by adopting good tools and practices.
— Identified performance issues and bench marked them with the view to improve. I have never been in a project or organization that is yet to have any performance or scalability issues. It is a safe bet to talk up your achievements in fixing performance or resource leak issues in job interviews. Unlike web security testing, performance testing is very prevalent in many applications. Premature optimization of your code is bad as it can compromise on good design or writing maintainable and testable code. But one needs to be aware of potential causes for performance issues that can occur due to major bottlenecks in a handful of places or minor inefficiencies in thousands of places (i.e. death by thousand cuts ).
— Championed continuous improvement programs. Organizations must develop a culture of continuous improvement in order to flourish. I am yet to work for an organization that did not have any environmental or process related issues and challenges. Many of these tasks can be simplified, automated, and integrated to avoid monotonous and error prone human intervention. So, experience with the agile practices, continuous integration and build, environmental improvements, etc will be of great asset to any organization. A software must be designed for deployability. Deployability is a non-functional requirement that addresses how reliably and easily a software can be deployed from development into the production environment.
— Assessed non-functional requirements. Many non-functional requirements like security, performance, transaction management, thread-safety, quality of service, etc are often neglected or overlooked during application development. Inexperienced or rushed developers can create systems that work great in development, but have many problems in the test or production environments due to sheer load, concurrent access, locale or timezone settings, portability issues due to operating system specific file separator or new line character, hard coded values requiring externalization, etc. If you identify any gaps in these non-functional requirements, take the initiative to close the gap as you would do with any functional requirements.
— A pragmatic person with a wide range of experience and skills to know what works for a given environment without all the hype. When designing or developing systems, be pragmatic without all the buzz words and hype. Pick the proven technology and framework stacks that will get the job done. Ensure that you have the right people with the relevant skills in those technology stacks. Evaluate the architecture and choice of technology/framework/tool with a proof of concept. Determine if a particular architecture, process, or methodology will work for your environment and culture. For example, SOA is an enterprise architecture strategy where business logic is organized into services, and business processes are realized through the invocation of these services. SOA has benefits such as bridging the divide between the I.T. and the business, loose coupling, reuse of business logic, etc. But to successfully implement a SOA based architecture, a number of organizational boundaries need to be bridged. This typically requires a change in organizational culture, which is very difficult to achieve in some organizations that are siloed and have different business teams looking after different products. There are also other inherent challenges like changing a service implementation can break one or more of the consumers, overall reliability of the system when one service is down, rolling back other services when a service fails, propagating security and transactional contexts between the services, deployability of those services and performance considerations in devising services as too many remote calls can adversely impact performance. At times you need to come up with a hybrid approach to attack a problem. The software development is full of trade-offs and be pragmatic about getting things done by looking at the big picture and having attention to detail. For example, an organization using a waterfall approach to software development could adopt some of the agile practices to suit their environment.
16 technical key areas Q&As with code & diagrams will help most of the drill down questions you can get.
Train for the following Q2 to Q15 via SAR technique.
Q2.Tell us about the most satisfying project you worked on in the last year? What were your contributions?
[Hint: Rewriting the whole batch process framework that not only used to take 17 hours to run but also was very hard to maintain as changing one part of the code can break another part of the application. The re-written batch framework with modular design, multi-threading, distributed caching, tuned SQL statements, and revised database tables completes in under 3 hours. My contributions involved designing the solution and leading the development.]
Q3. What are the challenges you faced both technically and non-technically in your past assignments?
[Hint: Fixing performance, thread safety, transactional issues and security holes, spearheading process improvements, taking the initiatives to close the gaps in business requirements, convincing the management with the open-source adoption, streamlining the release and deployment processes, and getting the business users to agree on alternative solutions.]
Q4. Why do you like software development?
[Hint: Passion for building things, and satisfaction you get in seeing all the functional requirements and non-functional technical key areas like design, design patterns, thread safety, performance, security, code quality, etc fit together like a puzzle. Solving problems relating to above mentioned key areas gives me a sense of accomplishment. Like the fact that one needs to look at the big picture as well as pay attention to details. It is also quite interesting to look at things from both business/end user perspective (e.g. user interface design, ease of use, how the business operates) and technical perspective. Derive pleasure in working with people to get things done in a team environment by collaborating, mentoring, and facilitating to get things over the line.]
Q5. What do you do when the requirements are not clear?
[Hint: take initiatives to get it clarified and properly documented. Conduct workshops, meetings, and brain storming sessions to gather requirements. Clearly document your assumptions, potential risks, impacts, and mitigation strategies.]
Q6. How would you proceed if you had been assigned a task that involves an unknown technology or business domain?
[Hint: Learn by doing a quick tutorial and grasping its fundamentals. Seek others’ help. Take it as a challenge. For example, had to collaborate with the access control team that looks after Siteminder to get SSO (Single-Sign-On) working for our application.]
Q7. In your experience, what are some of the harder issues to resolve, and how would you go about resolving them?
[Hint: Thread-safety and transactional issues. A better candidate will also touch on non-technical challenges like effectively managing changing requirements, proactively gathering requirements, and taking the initiatives to closing the gaps in requirements and technical design. They may also touch on implementing agile practices, recognizing the importance of collaborative effort, following up with the business for clarification or convincing the business with simpler and more effective solutions to meet their requirements. For example, identified an intermittent database deadlock issue by emulating user experience under load, and fixed it by adding deadlock retry service interceptors to address intermittent database lockouts and service outages.]
Q8. Describe the types of teams you have worked in, and tell me what worked well and what did not?
[Hint: Team with generalists and specialists who complement each other to achieve a common goal. Team that engages relevant agile practices for better communication and corporation. Well balanced team with right technical skills and good soft skills. Team that hires good caliber people via rigorous screening process.
A team that blame each other, a team that does not communicate well with each other, a team that says “I did it” instead of “we did it”, etc ]
Q9. What was the hardest “sell” of an idea or method you have had to make to get it accepted?
[Hint: Adoption of open-source technologies and agile development practices. Quick win strategies to enhance user experience and website rankings. Convinced the business and the management to rewrite an application as opposed to providing a band-aid solution.
Good programmers are open to new ideas and constructive criticisms. Most importantly communicate their ideas effectively in simple terms with examples, mockups, demonstration, diagrams, and analogy]
Q10. Can you draw me a high level architecture of the system you were involved in your last or current position?
[Hint: Good candidates are careful to explain things well in simple terms that even a non-technical person can understand. They will start by drawing a simple box diagram of the architecture and elaborate it further based on their target audience – business goals achieved, design alternatives, design decisions, lessons learned, protocols & data formats used, concepts & patterns applied, development methods used, choice of frameworks, etc. ] Java integration styles & architecture Interview Q&As.
Q11. Explain how application you built added value to your business and what was the business problem that it solved?
[Hint: Better customer experience by fully automating a number of manual and partially automated systems. Less error-proneness and much shorter lead times leading to more loyal customers, and much happier support staff. ]
Q12. Tell me about an instance where you had to solve a complex design issue and how did you go about solving it?
[My experience: A customer order with a complex life cycle of state changes like pending, authorized, completed, canceled, amended, partially filled, rejected, purged, etc had to be managed properly by capturing the state changes. A state chart diagram was created to capture and clarify things. Broke the problem into more manageable tasks. Did my own research to get a better understanding and others’ perspectives on the problem. Used process flow, sequence, and state diagrams to get better clarity and presented it effectively to others to ensure that we are on the same page. Prepared a matrix highlighting all possible “what if” scenarios. Wrote down the possible solutions. Analyzed the pros and cons of each solution. Listed how my solution addressed each scenario. ]
Q13. Have you ever been assigned a task of optimizing an application, and how did you go about it?
[My experience: Complex online reports generation clogged up the application with high CPU usage. Converted the report generation process to be asynchronous by submitting the report requests captured via online GUI to a queue, and having a separate process pickup from the queue to generate the report asynchronously and make the report available either via emails or file downloads. The report generation failures are reported via emails.]
[Hint: Understand user behaviors and gather load requirements. Monitor the application and gather metrics. Identify and isolate any similar patterns or behaviors. Simulate the load in a non-production environment using tools like JMeter to gather benchmarks. Profile the application under simulated load. Identify the bottlenecks. Fix the bottlenecks through relevant design changes, configuration changes, and code changes. Run your simulated load tests again, and compare the results against the benchmarks. Document the results for future tuning and reference.]
Q14. What are the critical factors you look for in evaluating the work of others?
[Hint: Ability to look at the bigger picture and drill down to details. Ability to get things done methodically by keeping things simple and asking the right questions – what if an exception is thrown?, What if this method gets accessed by multiple-threads?, etc. Passion to write quality code by constantly improving on the “first-cut” or draft code with proper test cases. Motivation to use code quality and unit test coverage tools like Sonar. ] Ensuring code quality in Java Q&As.
Note: Remember the fact when you talk about others, the interviewers are thinking about your suitability.
Q15. Describe a situation in which you had to solve a problem without having all the information you needed – what did you do and what happened?
[Hint: In larger organizations, knowledge and expertise are scattered. Collaborate within and outside your team to gather relevant information. Organize meetings and send emails requesting for relevant documentation. Conduct work shops and brainstorming sessions to pick others’ brains. Come up with all possible causes. A cause effect diagram can come in handy for more complex problems. Identify and isolate possible causes, and try to reproduce it by emulating the real life scenarios with appropriate load.]
Latest posts by Arulkumaran Kumaraswamipillai (see all)
- 06a: ⏯ Spring 4 MVC RESTful POST method Video Tutorial - June 25, 2017
- 05a: ⏯ Spring 4 MVC RESTful Web Service Video Tutorial - June 25, 2017
- 06: Spring 4 MVC RESTful GET & POST methods Web Services Tutorial - June 25, 2017
- 05: Spring 4 MVC RESTful Web Service Beginner Tutorial step by step - June 24, 2017
- 04a: ⏯ Spring MVC with Thymeleaf beginner video tutorial - June 23, 2017