Software Engineering Interview

While not all interviews are the same, there are some common features we have found reliably useful. We built this page because we want you to succeed, and hope this resource will give you some insight into what to expect on the day along with some suggestions on how to prepare.

We typically conduct interviews on site in our London office (located near Southwark tube station) or via Google meet . When we interview we are looking to assess excellence in your area of expertise and engagement in the challenges we face now, and might face in the future.

As with everything in our company, our interview process embodies the spirit of scientific investigation – so our process is always under review and being tweaked to ensure that great people get through.

The technical interview

Why?

Our focus right now is on ensuring that our plugin seamlessly delivers journal articles to researchers at thousands of academic institutions across the world. We need Kopernio to flawlessly integrate with many third-party services as our users navigate online research platforms. In practice, this means building systems that are more reliable, scalable and performant than their constituent parts. This means approaching problems creatively, pushing technologies to the limit and never forgetting the need to think practically about reliability, scale and performance.

The current needs of the product mean that you will need to understand the strengths and limitations of the programming languages, frameworks and tools you're using. You'll also need to have the ability to leverage your knowledge and experience to work around issues by asking questions like: "what's the optimum way to manage application state for our plugin?"

Structure

The typical technical interview structure is as follows:

  1. We will look at some code together and discuss the expected output and how it may be improved.
  2. If there are areas in which the programming language doesn't work as expected, we need you to be able to discuss some reasons as to why that behaviour is exhibited. These explanations often go beyond the surface level and touch on the fundamentals of computer science. A good example is 'unexpected' behaviour that might arise due to floating point arithmetic.
  3. We will ask you to "teach" an aspect of computer science that you're comfortable with to us.

What we're assessing

For senior engineering roles we expect to see four things:

  • A solid knowledge of the core aspects of the programming language you're strongest in.
  • Familiarity with computer science and how it applies to your craft.
  • The ability to communicate and discuss sophisticated ideas with the rest of the team.
  • Ability to provide mentorship, and to establish and promulgate engineering best practices by example.

We want to see how you approach problem solving and whether your style of problem solving would work well in our team.

How to prepare

  • Practice with sample coding questions from sites like LeetCode, CodeLab.
  • Have a read of "Cracking the Coding Interview" to brush up on CS.
  • Review "Refactoring" by Martin Fowler as a refresher on code quality.
  • Practice answering the obvious questions e.g. what do you know about Kopernio, what difficult problem have you solved, etc.

Other tips

  • Dress code: Casual is fine
  • Feel free to ask the people interviewing you for clarification on a question you don't understand.
  • We're keen to know how you get to solutions - so if you're solving a problem try talk it through.
  • Relax and enjoy