## SDE1 Interview Questions

- 0of 0 votes
download all urls from 1000 hosts. Imagine all the urls are graph.

Requirement: Each host has bad internet connection among each other, Has to download url exacly once.

- 0of 0 votes
Last Monday phone interview of G.

Given a vector/list of doubly linked list pointers (a pointer is the directed linkage of two nodes), count how many independent blocks of linked lists there are for the pointers given.

- 0of 0 votes
Give you a robot and a room where you do not know where the robot is in the room and you do not know the size of the room, you have a remote control that allows the robot to walk around four directions. Here you give a move method: boolean move (int direction), direction: 0,1,2,3 that four directions. If it can move in that direction, return true, and if it cannot move in that direction, return false. Ask you determine how big this room is. the shape of the room can be any shape, so you cannot assume it is rectangle or square.

- 0of 0 votes
There are N gas stations along a circular route, where the amount of gas at station i is gas[i].

You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from station i to its next station (i+1). You can begin the journey with an empty tank at one of the gas stations.

Return ALL the starting gas station's index where you can travel around the circuit once

public List<Integer> canCompleteCircuit(int[] gas, int[] cost) {

}

- 0of 0 votes
Given n1, n2 is the number after removing one digit from n1. Example, n1 = 123, then n2 can be 12, 13 or 23.

If we know the sum of n1 + n2, and find the possible values of n1 and n2.

public List<List<Integer>> getNumber(int sum){

}

- 0of 0 votes
Design copy-on-write string class

e.g. stringclass s("abc");

stringclass s1 = s; // no copy

s = "bcd"; // copy

- 0of 0 votes
Given an ODD number, print diamond pattern of stars recursively.

`n = 5, Diamond shape is as follows: * *** ***** *** *`

void print(int n){

}

- 0of 0 votes
/From the input array, output a subset array with numbers part of a Fibonacci series.

// input: [4,2,8,5,20,1,40,13,23]

// output: [2,5,1,8,13]

public static List<Integer> getFibNumbers(int[] nums){}

- 0of 0 votes
Can multiple threads improve the time complexity to merge k sorted arrays? If so, how?

- 0of 0 votes
Gives an array of unsorted int (may have negative number),

rearrange the array such that the

num at the odd index is greater than the num at the even index.

example

giving 5, 2, 3, 4, 1, one of the expected result is 1,4,2,5,3,

please solve it in o(n) time, where n is the length of the array

public void rearrange(int[] nums){

}

- 0of 0 votes
`Given a string, find all possible combinations of the upper and lower case of each Alphabet char, keep the none Alphabet char as it is. example1 s = "ab", return: "Ab", "ab", "aB", "AB" example2 s = "a1b", return: "A1b", "a1b", "a1B", "A1B" public List<String> getPermutation(String s){ }`

- 0of 0 votes
For a given array, find the subarray (containing at least k number) which has the largest sum.

Example:

// [-4, -2, 1, -3], k = 2, return -1, and the subarray is [-2, 1]

// [1, 1, 1, 1, 1, 1], k = 3, return 6, and the subarray is [1, 1, 1, 1, 1, 1]

try to do it in O(n) time

Followup, if input is stream, how to solve it

public int maxSubArray(int[] nums, int k) {}

- 0of 0 votes
find maximum contiguous subarray sum with size (the number of the element in the subarray) <= k

a brute force method is very simple, can you do it better?

public int maxSum(int[] nums, int k){

}

- 0of 0 votes
// Read4K - Given a function which reads from a file or

// network stream up to 4k at a time, give a function which

// which can satisfy requests for arbitrary amounts of data

private int read4K(char[] buf) {

// GIVEN

}

// IMPLEMENT:

public int read(char[] buf, int toRead) { }

Due to network latency, if the read4K method return a value < 4k, it does not necessarily mean that we reach the End of File (EOF), in this case, you should continue to read the file until you reach toRead or EOF.

- 1of 1 vote
how to keep track of the sum in a sliding window for the data that are on disk

rather than memory

- 0of 0 votes
Insert a node in a complete binary tree efficiently.

it is not BST, it is just a regular binary tree

public TreeNode insert(TreeNode root, int val){

}

this my solution using bfs (O(n) time), is there any more efficient method?`import java.util.*; class TreeNode{ int val; TreeNode left; TreeNode right; public TreeNode(int val){ this.val = val; } } class Solution{ public TreeNode insertCompleteTree(TreeNode root, int val){ if(root == null){ return new TreeNode(val); } Queue<TreeNode> q = new LinkedList<>(); q.add(root); while(!q.isEmpty()){ int size = q.size(); for(int i = 0; i < size; i++){ TreeNode cur = q.remove(); if(cur.left == null){ cur.left = new TreeNode(val); return root; }else{ q.add(cur.left); } if(cur.right == null){ cur.right = new TreeNode(val); return root; }else{ q.add(cur.right); } } } return null; } public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<>(); if(root == null){ return res; } Queue<TreeNode> q = new LinkedList<>(); q.add(root); while(!q.isEmpty()){ int size = q.size(); List<Integer> list = new ArrayList<>(); for(int i = 0; i < size; i++){ TreeNode cur = q.remove(); list.add(cur.val); if(cur.left != null){ q.add(cur.left); } if(cur.right != null){ q.add(cur.right); } } res.add(list); } return res; } public static void main(String[] args){ Solution s = new Solution(); TreeNode root = null; int[] nums = {1, 2, 3, 4, 5, 6, 7}; for(int num : nums){ root = s.insertCompleteTree(root, num); System.out.println(s.levelOrder(root)); } } }`

- 0of 0 votes
A table has some number of balls at various positions on a line segment.

All are moving with same speed in one or the other direction.

Wherever a collision occurs they change direction.

A ball falls from the edges of the table.

Find the time when all balls fall of the table

given initial position of each ball and speeds

- 0of 0 votes
given a graph: example -> A company holds 10% of B company’s share,

B company holds 5% of C company’s share, A company holds 2% of C company’s share,

what percent of C company’s share does A company hold?

- 0of 0 votes
`// Design and implement key value system // // string -> string // Insert a key-value pair or modify a value void put(string key, string value); // Delete a key-value pair void delete(string key); // Gets a value given a snapshot string get(string key, Snapshot snap); // Take a snapshot Snapshot takeSnapshot(); // Delete a snapshot void deleteSnapshot(Snapshot snap); // put(k1,v1) // put(k2,v2) // put(k3,v3) // takeSnapshot -> snap1 { k1 -> v1, k2 -> v2, k3 -> v3 } // get(k1,snap1) -> v1 // put(k1,v4) // delete(k3) // takeSnapshot -> snap2 { k1 -> v4, k2 -> v2 } // get(k1,snap2) -> v4 // get(k1,snap1) -> v1 // get(k3,snap2) -> XX // deleteSnapshot(snap1) // get(k1,snap1) -> XX // Space efficient is more important than time efficient, thus please use as small space as possible.`

- 0of 0 votes
What is the cost / complexity of a String.indexof() function call in java?

- 0of 0 votes
Given a task sequence tasks such as ABBABBC, and an integer k, which is the cool down time between two same tasks. Assume the execution for each individual task is 1 unit.

rearrange the task sequence such that the execution time is minimal.

Example:

S = AAABBBCCC, K = 3

Result: ABCABCABC (all 'A's are 3 distance apart, similarly with B's and C's), thus return 9

S = AAABC, K=2

Result: ABCA_ _A, thus return 7

S = AAADBBCC, K = 2:

Result: ABCABCDA, thus return 8

public int rearrangeTasks(String tasks, int cooldown){

}

- 0of 0 votes
Given an array of n elements which contains elements from 0 to n-1, with any of these numbers appearing any number of times. Find these repeating numbers in O(n) and using only constant memory space.

Try to do it in one pass

example

[4, 2, 0, 5, 2, 0, 1] return: 0, 2

[1, 2, 3, 0, 0, 1, 3, 6, 6,6] return 0, 1, 3, 6

public List<Integer> findRepeat(int nums[]){

}

- 0of 0 votes
How to check the validity of a 4 digit credit card expiration date (mm/yy)

that still works 100 years from now.

public boolean isValid(String s){

}

- 0of 0 votes
`convert a ternary expression into a Binary tree structure. a?b:c a / \ b c a?b?c:d:e a / \ b e / \ c d class TreeNode{ char val; TreeNode left; TreeNode right; public TreeNode(char val){ this.val = val; } } public TreeNode build(String s){}`

try to do it in o(n) time complexity, n is the size of the string

- 0of 0 votes
`Suppose you have a 2-D grid. Each point is either land or water. There is also a start point and a goal. There are also keys that open up doors. Each key corresponds to one door. Implement a function that returns the shortest path from the start to the goal using land tiles, keys and open doors. Data Representation The board will be passed as an array of chars. A board can have the following tiles. 0 = Water 1 = Land 2 = Start 3 = Goal uppercase = door lowercase = key Example Maps (keys at each step are not required) `No doors` char[][] board1 = {{'0', '2', '1', '1', '1'}, {'0', '1', '0', '0', '1'}, {'0', '1', '0', '0', '3'}, {'0', '1', '0', '0', '1'}, {'0', '1', '1', '1', '1'}}; path : [0,1]->[0,2]->[0,3]->[0,4]->[1,4]->[2,4] `One door` char[][] board2 = {{'0', '2', '1', '1', '1'}, {'0', '1', 'a', '0', 'A'}, {'0', '1', '0', '0', '3'}, {'0', '1', '0', '0', '1'}, {'0', '1', '1', '1', '1'}}; path : [0,1]->[0,2]->[1,2]->[0,2]->[0,3]->[0,4]->[1,4]->[2,4]`

public List<int[]> solve(char[][] board) {

- 0of 0 votes
Group a list of words so that the same group of words have a common substring, and this common substring is also in the word lists,

example

[cow "," cold "," an "," co "], return [[" can "," an "], [" cow "," cold "," co "]]

["can", "cow", "cold"], return [["can"], ["cow"], ["cold"]]

["c", "ca", "can"], return [["c", "ca", "can"]]

public List<List<String>> groupWords(String[] s)

- 2of 2 votes
Our recommendation engine looks at the items that users buy together. For example, a user that buys Harry Potter 1 likely will buy Harry Potter 2.

Write a function that will output the largest item association given an input of item association pairs.

Example input:`[[Item1, Item2], [Item2, Item3], [Item2, Item4], [Item5, Item6]]`

Example output:

`[Item1, Item2, Item3, Item4]`

- 1of 1 vote
Write a function that returns true if the binary representation of an integer is a palindrome.

9 = 1001 = palindrome

8 = 1000 = not palindrome

- 0of 0 votes
Enter a two digit number, find the year closest to this year.

Example input 99, return 1999;

Input 15, return 2015.

public int getClosestYear(int input){

}

- -2of 4 votes
generate random number which differs from the number generated last time in the range of [min, max)

what is the best way to do it?

public int getNumber(int min, int max){

}