We're planting a tree for every job application! Click here to learn more

What to Learn Before your Junior Software Engineer Coding Interview

Adam Dangoor

29 Jan 2021

3 min read

What to Learn Before your Junior Software Engineer Coding Interview
  • Interview Questions

I'm Adam, an experienced software engineer and a professional interviewer. For over two years, I have been working with candidates in the software industry and other industries to improve their chances of landing a great offer. This article provides a few tips and tricks which I have used with candidates to help them to ace the interviews focused on live coding.

Interview content can vary greatly but my experience has shown me that having a good grip of the following concepts can be a big boost.

Basic data structures

An interviewer will not expect you to know every data structure, but if you know a few then you have the tools to solve most problems given to junior software engineers.

Those are: Strings, Arrays (also known as "Lists"), Hashmaps (also known as "Dictionaries"), and Sets.

Try to get to the point where you can create and interact with these data structures in your language of choice with ease.

For each of strings, arrays hashmaps and sets, you should be able to:

  • Create an empty one,
  • Add items,
  • Remove items,
  • Check if an item is contained,
  • Loop through the structure.

For strings, you should know how to split a string and how to add two strings together (also known as concatenation).

Know the difference between a set and a list. In particular, a list has duplicates and order, but a set does not. This allows some set operations to have better time and space complexities (which is up next!).

Time and space complexity

Time complexity is a way of describing the performance of an algorithm with relation to the size of its input(s). It allows you to say "The time taken to run this algorithm will roughly double in the worst case if the length of the input doubles" in a clear notation.

Some of the key time complexities include:

O(1), aka "constant": The time it takes to run the algorithm is not impacted by the length of the input.

def print_hello_world(my_ignored_input: str):
	print("hello world")

is a good example.

O(N): In the worst case, the time it takes to run the algorithm will grow proportionally with the size of the input.

For example:

def print_even_numbers_in_list(my_list: List[int]):
    for number in my_list:
        if number % 2 == 0:
			print(number)

Space complexity (sometimes known as "memory complexity") is a very similar concept. Instead of describing the performance in terms of computer operations needed, space complexity refers to the size your variables take in memory.

There are many great resources on time and space complexity. I recommend searching on Google or YouTube and finding one which explains it in a way which works for you.

In an interview, this typically comes up when an interviewer asks for you to describe the time and space complexities of a solution you have come up with. To do this you often need to know the time and space complexities of the operations I mentioned in "Basic data structures", so learn those too, as well as the concepts.

Basic algorithms

I recommend writing some code for the following algorithms as they often come up in interviews:

  • Depth First Search

    See this guide for a great explanation and example code. This involves recursion, and it is important to understand recursion before an interview, so this is a 2-for-1!

  • Sorting

    Choose any sorting algorithm and understand it.

There are so many algorithms which may come up, but knowing those two can go a long way.

Object-Oriented Programming

Know how to create a class and an object from that class. Know how to run a method with a parameter which accesses an instance variable. That may sound complex but it can be as simple as:

class Person:

	def __init__(self, name):
		self.name = name
	
	def shout_name(self):
		print(self.name.upper())

me = Person(name='Adam')
me.shout_name()

Practice

Keep practising! This can be on Leetcode, HackerRank, or using Pramp. Get used to writing code in a web-based text editor and know your language well. If possible, I recommend knowing Python or Ruby or another very high-level language. If you only know C++ or Java, you might have trouble in timed interviews because those languages do not shine in that kind of environment.

Best of luck!

Did you like this article?

Adam Dangoor

See other articles by Adam

Related jobs

See all

Title

The company

title

Remote

Title

The company

title

Remote

Title

The company

title

Remote

Title

The company

title

Remote

Related articles

JavaScript Functional Style Made Simple

JavaScript Functional Style Made Simple

Daniel Boros

12 Sep 2021

JavaScript Functional Style Made Simple

JavaScript Functional Style Made Simple

Daniel Boros

12 Sep 2021

WorksHub

CareersCompaniesSitemapFunctional WorksBlockchain WorksJavaScript WorksAI WorksGolang WorksJava WorksPython WorksRemote Works
email iconhello@works-hub.comUK flag

Ground Floor, Verse Building, 18 Brunswick Place, London, N1 6DZ

US flag

108 E 16th Street, New York, NY 10003

Subscribe to our newsletter

Join over 111,000 others and get access to exclusive content, job opportunities and more!

© 2022 WorksHub

Privacy PolicyDeveloped by WorksHub