1800-2200 #Software_Developer | Accra
You will be expected to know APIs, Object Oriented Design and Programming, how to test your code, as well as come up with corner cases and edge cases for code.
-1 interview this week or early next week with HIREghana
-1 interview and text with company’s owner soon after that.
How to apply?
send your 2-page Word (NO PDF file) CV to CV@ HIREgh. com – remove the empty spaces. Quote ‘Programmer’ in your email’s subject/ title line.
PS:here are instructions to prepare you for your 2nd interview
TECHNICAL INTERVIEW OVERVIEW
The technical interview is a white-boarding session that covers the
fundamentals of Computer Science. Interview topics may cover anything
on your resume, but will mostly involve coding questions, building and
developing complex algorithms and analyzing their performance
characteristics, logic problems, and core computer science principles such
• Data Structures
◦ Hash Tables
◦ Lists, etc
◦ Sort & Search Algorithms
◦ Binary Search
◦ Heap Sort
◦ Bubble sort
◦ Insertion sort, etc
• Complexity Analysis (Big-O analysis)
• Dynamic Programming & Memoization
• Iteration vs Recursion, etc
Applicants would be asked to design algorithms without using a
programming editor or compiler like (Intellij, Eclipse, etc). The editor that
applicants would be coding on will be https://codeshare.io/.
It is a blank sheet similar to Google Docs that offers minimal editing help.
So applicants should familiarize themselves coding on a blank sheet on
Google Docs or on the code-share app. Practice working on a small,
unfamiliar problem with no language reference, no API reference, no autocomplete and no error highlighting to get more comfortable for their
interview. This a hurdle applicants have to overcome to demonstrate that
they are good programmers independent of a programming language.
Applicants would be expected to demonstrate the ability to write a correct
10-20 line program body for 2-3 technical questions under time pressure
in their preferred object-oriented language.
TIPS AND RESOURCES
1. As a programmer your job is to talk to people and understand the
problem that your code is supposed to solve. So make sure you fully
understand the problem before you start coding.
1. To help you can rephrase the question and take down notes.
2. Ask the interviewer for clarity or their expectations. The
question may be deliberately open-ended to provide insight
into how you engage with the problem and your primary
method for solving it.
3. Think out loud and talk through the solution you have in mind
4. State any assumptions you make
5. Take an example and work through the solution to ensure you
have the right solution. This will help your interviewer correct
any confusions/ assumptions you have overlooked
6. Then after thinking through your solution in detail, the last step
would be to write down the code.
Remember: your interviewer is interested in knowing if you
understand the problem and can answer it.
1. Coding Language: You should know at least one objectoriented programming language really well, preferably C++,
APIs, Object Oriented Design and Programming, how to test
your code,as well as come up with corner cases and edge
cases for code. But refrain from relying on in-built functions for
the entire solution unless your interviewer tells you to.
Example, if asked to for an algorithm to reverse a String, when
coding in Java/Python/JS, etc you cannot assume to use the
inbuilt String.reverse() library function unless your interviewer
tells you to. The purpose of this interview is to see how you
would go about solving that problem. Note that we focus on
conceptual understanding rather than memorization.
2. Algorithms: Approach the problem with both bottom-up and
top-down algorithms. You will be expected to know the
complexity of an algorithm and how you can improve/change it.
Algorithms that are used to solve problems include sorting
(plus searching and binary search), divide-and-conquer,
dynamic programming/memoization, greediness, recursion or
algorithms linked to a specific data structure. Know Big-O
notations (e.g. run time, space complexity) and be ready to
discuss complex algorithms like Dijkstra and A*. We
recommend discussing or outlining the algorithm you have in
mind before writing code. Be prepared to explain the runningtime complexity of algorithms you know and are asked to
3. Sorting: Be familiar with common sorting functions and on
what kind of input data they efficient or not. Think about
efficiency means in terms of runtime and space used. For
example, in exceptional cases insertion-sort or radix-sort are
much better than the generic Quick Sort/Merge Sort/Heap Sort
4. Data Structures: You should study up on as many data
structures as possible. Data structures most frequently used
are arrays, linked lists, stacks, queues, hash-sets, hash-maps,
hash-tables, dictionary, trees and binary trees, heaps and
graphs. You should know the data structure inside out, and
what algorithms tend to go along with each data structure.
5. Graphs: Consider if a problem can be applied with graph
algorithms like distance, search, connectivity, cycle-detection,
etc. There are three basic ways to represent a graph in
memory (objects and pointers, matrix, and adjacency list) —
familiarize yourself with each representation and its pros and
cons. You should know the basic graph traversal algorithms,
breadth-first search and depth-first search. Know their
computational complexity, their trade-offs and how to
implement them in real code.
6. Recursion: Many coding problems involve thinking recursively
and potentially coding a recursive solution. Use recursion to
find more elegant solutions to problems that can be solved
7. When coding, choose a language you are very comfortable
with. Though you are not expected to write a perfect code, you
are expected to show proficiency in your language of choice
and your algorithm should not have obvious syntax errors. You
cannot also use pseudo-code.
3. Be aware of time and leave enough time for testing. Go over your
final code with an example and ensure your solution is clean, bugfree and properly handles edge-cases.
4. Finally, practice, practice, practice.