Coding interviews are tough. But fortunately, there's a tried and proven method to get better at them. With a combination of studying, practicing questions and doing mock interviews, getting that dream job can become a reality.
* Decide on a programming language
* Study CS fundamentals
* Practice solving algorithm questions
* Internalize the Do's and Don'ts of interviews
* Know what signals and behaviours interviewers are looking out for
* Practice doing mock interviews
* Interview successfully to get the job
* Study CS fundamentals
* Practice solving algorithm questions
* Internalize the Do's and Don'ts of interviews
* Know what signals and behaviours interviewers are looking out for
* Practice doing mock interviews
* Interview successfully to get the job
Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
You can return the answer in any order.
Example 1:
Example 2:
Example 3:
Constraints:
Only one valid answer exists.
Solution will be provided tomorrow.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
You can return the answer in any order.
Example 1:
Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Output: Because nums[0] + nums[1] == 9, we return [0, 1].
Example 2:
Input: nums = [3,2,4], target = 6
Output: [1,2]
Example 3:
Input: nums = [3,3], target = 6
Output: [0,1]
Constraints:
2 <= nums.length <= 103
-109 <= nums[i] <= 109
-109 <= target <= 109
Only one valid answer exists.
Solution will be provided tomorrow.
Simple soution in Java:
Complexity Analysis
Time complexity : O(n^2). For each element, we try to find its complement by looping through the rest of array which takes O(n) time. Therefore, the time complexity is O(n^2).
Space complexity : O(1).
public int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] == target - nums[i]) {
return new int[] { i, j };
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
Complexity Analysis
Time complexity : O(n^2). For each element, we try to find its complement by looping through the rest of array which takes O(n) time. Therefore, the time complexity is O(n^2).
Space complexity : O(1).
Python interview questions (part 1):
What's the difference between a tuple and a list?
Both tuples and lists are data structures in Python and hold a list of values. Unlike lists, tuples are immutable - they can't be changed.
What is a dict and what's its most important limitation?
A dict is a structure akin a hash map. It stores key-value pairs, where keys are unique and it has O(1) access time. The most important limitation for a dict is that the keys must be hashable/immutable. Meaning, we can use a tuple as a key, but not a list.
What is pickling/unpickling?
Pickling is converting an object to a string representation in python. Generally used for caching and transferring objects between hosts/processes.
What's the difference between a tuple and a list?
Both tuples and lists are data structures in Python and hold a list of values. Unlike lists, tuples are immutable - they can't be changed.
What is a dict and what's its most important limitation?
A dict is a structure akin a hash map. It stores key-value pairs, where keys are unique and it has O(1) access time. The most important limitation for a dict is that the keys must be hashable/immutable. Meaning, we can use a tuple as a key, but not a list.
What is pickling/unpickling?
Pickling is converting an object to a string representation in python. Generally used for caching and transferring objects between hosts/processes.
This is a straight-to-the-point, distilled list of technical interview Do's and Don'ts, mainly for algorithmic interviews. Some of these may apply to only phone screens or whiteboard interviews, but most will apply to both.
During coding
✅ Explain what you are coding/typing to the interviewer, what you are trying to achieve.
✅ Practice good coding style. Clear variable names, consistent operator spacing, proper indentation, etc.
✅ Type/write at a reasonable speed.
✅ As much as possible, write actual compilable code, not pseudocode.
✅ Write in a modular fashion. Extract out chunks of repeated code into functions.
❌ Remain quiet the whole time.
❌Spend too much time writing comments.
❌ Use extremely verbose or single-character (unless they're common like i, n) variable names.
During coding
✅ Explain what you are coding/typing to the interviewer, what you are trying to achieve.
✅ Practice good coding style. Clear variable names, consistent operator spacing, proper indentation, etc.
✅ Type/write at a reasonable speed.
✅ As much as possible, write actual compilable code, not pseudocode.
✅ Write in a modular fashion. Extract out chunks of repeated code into functions.
❌ Remain quiet the whole time.
❌Spend too much time writing comments.
❌ Use extremely verbose or single-character (unless they're common like i, n) variable names.