1800-2200 **#Software_Developer** | Accra

You should know at least one object-oriented programming language really well, preferably C++, Java, JavaScript, Python, or C.

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.

**Interview Process:**

-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.

Thank you,

Irene

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

as :-

• Data Structures

◦ Stacks

◦ Arrays

◦ Hash Tables

◦ Trees

◦ Lists, etc

• Algorithms

◦ 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.

2. Coding

1. Coding Language: You should know at least one objectoriented programming language really well, preferably C++,

Java, JavaScript, Python, or C. 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. 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

devise.

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

answers.

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

iteratively.

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.

## Be the first to post a comment.