This is the 2nd post regarding my interview experience for Senior Java Software Engineer roles in the UK. Note that these are NOT copy-paste interview questions that I found on the internet but the actual ones asked during interviews.
As a senior developer, you are basically expected to convert a problem statement into a software design. You take the problem statement, e.g.: “As a user, I need to provide an API to a mobile service that does A, B, C, and D.”, and effectively you are given the responsibility of designing, implementing, and testing that service from start to finish. You are also expected to take that design and present it to interested stakeholders. Once you have agreement on design and implementation, you operate that system in production.
1. If there was a production problem in some of the places in your application, can you give me an example of an unexpected situation that you were able to debug, dive into it, and fixed?
Try to remember that kind of example in your career and write it down somewhere. I had similar questions such as “tell me a difficult problem that you solved”, and “is there any project that you are proud of or made an impact on?”.
2. How do you know if your services are operating normally?
The interviewer actually wanted to learn if I have experience with Kubernetes. If you have experience in other alternatives, you can mention it in the interview. Here are some links regarding Kubernetes alternatives:
3. If you start a new project that is low in documentation, how would you deal with that scenario? what would be your process? For instance, if you are asked to make a change to a service where there is not a lot of documentation, how would you tackle such a situation? (I think the interviewer wants to evaluate what level of support would you require in mentoring and onboarding)
I haven’t been asked that kind of question before. It is obvious that they are looking for someone who is willing to work in that kind of environment.
4. Are you familiar with any sort of communications between services other than REST, the different patterns in order to implement a service to process data? What other patterns would you use other than REST?
The interviewer refers to microservice communications. Chris Richardson’s website, Communication Patterns section, mentions communication mechanisms between services and their external clients:
- Remote Procedure Invocation – use an RPI-based protocol for inter-service communication
- Messaging – use asynchronous messaging for inter-service communication
- Domain-specific protocol – use a domain-specific protocol
- Idempotent Consumer – ensure that message consumers can cope with being invoked multiple times with the same message
There is also a nice article from Microsoft called Communication in a microservice architecture.
5. Can you name any AWS services to provide communication between services other than REST?
This was the follow-up question. Some of the examples are Amazon Managed Streaming for Apache Kafka (MSK), Amazon SQS, and Amazon Kinesis